diff --git a/.eslintignore b/.eslintignore
index 3ad5a5de9..d0012dab7 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,6 +1,7 @@
src/Shopsys/ShopBundle/Resources/scripts/frontend/plugins/**
+src/Shopsys/ShopBundle/Resources/scripts/styleguide
node_modules/**
# eslint-check-diff runs check with provided files that could contain even javascripts from tests folder
-tests/**
\ No newline at end of file
+tests/**
diff --git a/app/Bootstrap.php b/app/Bootstrap.php
index 9a489fd54..dcabad829 100644
--- a/app/Bootstrap.php
+++ b/app/Bootstrap.php
@@ -15,6 +15,7 @@
require_once __DIR__ . '/autoload.php';
setlocale(LC_CTYPE, 'en_US.utf8');
+setlocale(LC_NUMERIC, 'en_US.utf8');
class Bootstrap
{
diff --git a/app/Resources/ShopsysFrameworkBundle/views/Admin/Layout/base.html.twig b/app/Resources/ShopsysFrameworkBundle/views/Admin/Layout/base.html.twig
index cac6736ed..7b5a7c767 100644
--- a/app/Resources/ShopsysFrameworkBundle/views/Admin/Layout/base.html.twig
+++ b/app/Resources/ShopsysFrameworkBundle/views/Admin/Layout/base.html.twig
@@ -1,8 +1,4 @@
-
-
-
-
@@ -10,9 +6,6 @@
-
{# bootstrap/tooltip.js must be imported before bootstrap/popover.js #}
{{ importJavascripts([
diff --git a/app/config/packages/security.yml b/app/config/packages/security.yml
index 00452dcd9..91fcfda8f 100644
--- a/app/config/packages/security.yml
+++ b/app/config/packages/security.yml
@@ -18,6 +18,7 @@ security:
# see Shopsys\FrameworkBundle\Model\Administrator\Security\AdministratorFrontSecurityFacade
administration:
pattern: ^/(%admin_url%/|efconnect|elfinder)
+ user_checker: Shopsys\FrameworkBundle\Model\Security\AdministratorChecker
anonymous: ~
provider: administrators
logout_on_user_change: true
diff --git a/app/config/packages/test/prezent_doctrine_translatable.yml b/app/config/packages/test/prezent_doctrine_translatable.yml
index 82c01b481..c5d292ffe 100644
--- a/app/config/packages/test/prezent_doctrine_translatable.yml
+++ b/app/config/packages/test/prezent_doctrine_translatable.yml
@@ -1,3 +1,3 @@
prezent_doctrine_translatable:
# in tests there is no default locale set
- fallback_locale: en
+ fallback_locale: "%locale%"
diff --git a/app/config/paths.yml b/app/config/paths.yml
index cfb184014..5a588df8b 100644
--- a/app/config/paths.yml
+++ b/app/config/paths.yml
@@ -1,8 +1,6 @@
parameters:
shopsys.content_dir_name: 'content'
shopsys.css_version_filepath: '%shopsys.web_dir%/assets/cssVersion'
- shopsys.data_fixtures.resource_customers_filepath: '%shopsys.data_fixtures.resources_dir%/demo-data-customers.csv'
- shopsys.data_fixtures.resource_products_filepath: '%shopsys.data_fixtures.resources_dir%/demo-data-products.csv'
shopsys.data_fixtures.resources_dir: '%shopsys.root_dir%/src/Shopsys/ShopBundle/DataFixtures/resources'
shopsys.default_db_schema_filepath: '%shopsys.framework.resources_dir%/database/schema.sql'
shopsys.domain_config_filepath: '%kernel.root_dir%/config/domains.yml'
diff --git a/app/config/routing_dev.yml b/app/config/routing_dev.yml
index 2f3480939..1bdef30bd 100644
--- a/app/config/routing_dev.yml
+++ b/app/config/routing_dev.yml
@@ -8,3 +8,7 @@ _profiler:
_main:
resource: routing.yml
+
+_styleguide:
+ path: /_styleguide/
+ defaults: { _controller: ShopsysShopBundle:Styleguide\Styleguide:styleguide }
diff --git a/build.xml b/build.xml
index 016d3a28d..d91540dac 100644
--- a/build.xml
+++ b/build.xml
@@ -7,9 +7,8 @@
-
-
+
diff --git a/composer.json b/composer.json
index 1bd541031..1ab99d800 100644
--- a/composer.json
+++ b/composer.json
@@ -66,20 +66,20 @@
"sensio/framework-extra-bundle": "^3.0.29",
"sensio/generator-bundle": "^3.1.7",
"shopsys/doctrine-orm": "^2.6.3",
- "shopsys/migrations": "^8.0",
- "shopsys/form-types-bundle": "^8.0",
- "shopsys/framework": "^8.0",
- "shopsys/plugin-interface": "^8.0",
+ "shopsys/migrations": "dev-master",
+ "shopsys/form-types-bundle": "dev-master",
+ "shopsys/framework": "dev-master",
+ "shopsys/plugin-interface": "dev-master",
"shopsys/postgres-search-bundle": "0.1",
- "shopsys/product-feed-heureka": "^8.0",
- "shopsys/product-feed-heureka-delivery": "^8.0",
- "shopsys/product-feed-zbozi": "^8.0",
- "shopsys/product-feed-google": "^8.0",
- "shopsys/read-model": "^8.0",
+ "shopsys/product-feed-heureka": "dev-master",
+ "shopsys/product-feed-heureka-delivery": "dev-master",
+ "shopsys/product-feed-zbozi": "dev-master",
+ "shopsys/product-feed-google": "dev-master",
+ "shopsys/read-model": "dev-master",
"snc/redis-bundle": "^2.1.8",
"stof/doctrine-extensions-bundle": "^1.3.0",
"symfony/assetic-bundle": "^2.8.2",
- "symfony/monolog-bundle": "^3.1.2",
+ "symfony/monolog-bundle": "~3.4.0",
"symfony/swiftmailer-bundle": "^3.2.2",
"symfony/symfony": "^3.4.8",
"symfony-cmf/routing": "^2.0.3",
@@ -95,11 +95,12 @@
"codeception/codeception": "^2.5.0",
"phpstan/phpstan": "^0.11",
"phpunit/phpunit": "^7.0",
- "shopsys/coding-standards": "^8.0",
- "shopsys/http-smoke-testing": "^8.0",
+ "shopsys/coding-standards": "dev-master",
+ "shopsys/http-smoke-testing": "dev-master",
"sspooky13/yaml-standards": "^4.2.5",
"phpstan/phpstan-doctrine": "^0.11.2",
- "phpstan/phpstan-phpunit": "^0.11.2"
+ "phpstan/phpstan-phpunit": "^0.11.2",
+ "zalas/phpunit-injector": "^1.2"
},
"conflict": {
"symfony/dependency-injection": "3.4.15|3.4.16"
diff --git a/composer.lock b/composer.lock
index 8b71f113f..340175b7b 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "8b0444cf5adaf27c1884414a81c0c844",
+ "content-hash": "0730b3813fcfb0fc5897a8cca2aff3e6",
"packages": [
{
"name": "arvenil/ninja-mutex",
@@ -3289,6 +3289,45 @@
],
"time": "2014-01-12T16:20:24+00:00"
},
+ {
+ "name": "jetbrains/phpstorm-stubs",
+ "version": "v2019.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/JetBrains/phpstorm-stubs.git",
+ "reference": "9e309771f362e979ecfb429303ad7a402c657234"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/JetBrains/phpstorm-stubs/zipball/9e309771f362e979ecfb429303ad7a402c657234",
+ "reference": "9e309771f362e979ecfb429303ad7a402c657234",
+ "shasum": ""
+ },
+ "require-dev": {
+ "nikic/php-parser": "v4.0.1",
+ "php": "^7.1",
+ "phpdocumentor/reflection-docblock": "^4.3",
+ "phpunit/phpunit": "7.1.4"
+ },
+ "type": "library",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "description": "PHP runtime & extensions header files for PhpStorm",
+ "homepage": "https://www.jetbrains.com/phpstorm",
+ "keywords": [
+ "autocomplete",
+ "code",
+ "inference",
+ "inspection",
+ "jetbrains",
+ "phpstorm",
+ "stubs",
+ "type"
+ ],
+ "time": "2019-03-25T16:59:23+00:00"
+ },
{
"name": "jms/metadata",
"version": "1.7.0",
@@ -4310,6 +4349,158 @@
],
"time": "2018-01-25T13:18:09+00:00"
},
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "time": "2017-09-11T18:02:19+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
+ "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0.0",
+ "phpdocumentor/type-resolver": "^0.4.0",
+ "webmozart/assert": "^1.0"
+ },
+ "require-dev": {
+ "doctrine/instantiator": "~1.0.5",
+ "mockery/mockery": "^1.0",
+ "phpunit/phpunit": "^6.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "time": "2019-04-30T17:48:53+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5 || ^7.0",
+ "phpdocumentor/reflection-common": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^5.2||^4.8.24"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "time": "2017-07-14T14:27:02+00:00"
+ },
{
"name": "presta/sitemap-bundle",
"version": "v1.7.0",
@@ -4943,6 +5134,109 @@
],
"time": "2019-01-07T21:25:54+00:00"
},
+ {
+ "name": "roave/better-reflection",
+ "version": "3.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Roave/BetterReflection.git",
+ "reference": "a93d26f6f08add54943d752dad1da64c464c2e69"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Roave/BetterReflection/zipball/a93d26f6f08add54943d752dad1da64c464c2e69",
+ "reference": "a93d26f6f08add54943d752dad1da64c464c2e69",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "jetbrains/phpstorm-stubs": "2019.1",
+ "nikic/php-parser": "^4.2.1",
+ "php": ">=7.2.0,<7.5.0",
+ "phpdocumentor/reflection-docblock": "^4.1.1",
+ "phpdocumentor/type-resolver": "^0.4.0",
+ "roave/signature": "^1.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "phpunit/phpunit": "^8.1.0"
+ },
+ "suggest": {
+ "composer/composer": "Required to use the ComposerSourceLocator"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Roave\\BetterReflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "James Titcumb",
+ "email": "james@asgrim.com",
+ "homepage": "https://github.com/asgrim"
+ },
+ {
+ "name": "Gary Hockin",
+ "email": "gary@roave.com",
+ "homepage": "https://github.com/geeh"
+ },
+ {
+ "name": "Jaroslav Hanslík",
+ "email": "kukulich@kukulich.cz",
+ "homepage": "https://github.com/kukulich"
+ },
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "description": "Better Reflection - an improved code reflection API",
+ "time": "2019-05-28T00:00:03+00:00"
+ },
+ {
+ "name": "roave/signature",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Roave/Signature.git",
+ "reference": "bed4ecbdd7f312ab6bb39561ac191f520bcee386"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Roave/Signature/zipball/bed4ecbdd7f312ab6bb39561ac191f520bcee386",
+ "reference": "bed4ecbdd7f312ab6bb39561ac191f520bcee386",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0|^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.6"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Roave\\Signature\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Sign and verify stuff",
+ "time": "2017-02-17T13:53:21+00:00"
+ },
{
"name": "robloach/component-installer",
"version": "0.2.3",
@@ -5395,16 +5689,16 @@
},
{
"name": "shopsys/form-types-bundle",
- "version": "v8.0.0",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/shopsys/form-types-bundle.git",
- "reference": "3559ff9e84fd7ea5c6542742b242b8963d467219"
+ "reference": "c9d3a7c0572a739f08eaa3cde0c21efc6c1c7d60"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/shopsys/form-types-bundle/zipball/3559ff9e84fd7ea5c6542742b242b8963d467219",
- "reference": "3559ff9e84fd7ea5c6542742b242b8963d467219",
+ "url": "https://api.github.com/repos/shopsys/form-types-bundle/zipball/c9d3a7c0572a739f08eaa3cde0c21efc6c1c7d60",
+ "reference": "c9d3a7c0572a739f08eaa3cde0c21efc6c1c7d60",
"shasum": ""
},
"require": {
@@ -5421,7 +5715,7 @@
"symfony/dependency-injection": "3.4.15|3.4.16"
},
"require-dev": {
- "shopsys/coding-standards": "8.0.0"
+ "shopsys/coding-standards": "dev-master"
},
"type": "library",
"autoload": {
@@ -5446,20 +5740,20 @@
"Shopsys Framework",
"form"
],
- "time": "2019-07-30T06:08:51+00:00"
+ "time": "2019-11-14T08:28:13+00:00"
},
{
"name": "shopsys/framework",
- "version": "v8.0.0",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/shopsys/framework.git",
- "reference": "afc3ecf06e8fec28671d91996c8d6c50ef087be8"
+ "reference": "d8b813e84e155822bf5ae6af78469f1f293a3bc9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/shopsys/framework/zipball/afc3ecf06e8fec28671d91996c8d6c50ef087be8",
- "reference": "afc3ecf06e8fec28671d91996c8d6c50ef087be8",
+ "url": "https://api.github.com/repos/shopsys/framework/zipball/d8b813e84e155822bf5ae6af78469f1f293a3bc9",
+ "reference": "d8b813e84e155822bf5ae6af78469f1f293a3bc9",
"shasum": ""
},
"require": {
@@ -5484,6 +5778,7 @@
"ext-bcmath": "*",
"ext-ctype": "*",
"ext-curl": "*",
+ "ext-dom": "*",
"ext-filter": "*",
"ext-gd": "*",
"ext-iconv": "*",
@@ -5516,13 +5811,14 @@
"prezent/doctrine-translatable-bundle": "^1.0.3",
"psr/log": "^1.0",
"ramsey/uuid": "^3.8",
+ "roave/better-reflection": "^3.5",
"sensio/distribution-bundle": "^5.0.21",
"sensio/framework-extra-bundle": "^3.0.29",
"shopsys/doctrine-orm": "^2.6.2",
- "shopsys/form-types-bundle": "8.0.0",
+ "shopsys/form-types-bundle": "dev-master",
"shopsys/jparser": "^0.1",
- "shopsys/migrations": "8.0.0",
- "shopsys/plugin-interface": "8.0.0",
+ "shopsys/migrations": "dev-master",
+ "shopsys/plugin-interface": "dev-master",
"shopsys/postgres-search-bundle": "^0.1",
"snc/redis-bundle": "^2.1.8",
"stof/doctrine-extensions-bundle": "^1.3.0",
@@ -5547,8 +5843,8 @@
"phpstan/phpstan-doctrine": "^0.11.2",
"phpstan/phpstan-phpunit": "^0.11.2",
"phpunit/phpunit": "^7.0",
- "shopsys/coding-standards": "8.0.0",
- "sspooky13/yaml-standards": "^4.2"
+ "shopsys/coding-standards": "dev-master",
+ "sspooky13/yaml-standards": "^4.2.5"
},
"suggest": {
"ext-pgsql": "Required for dumping the Postgres database in shopsys:database:dump command"
@@ -5570,7 +5866,7 @@
"proprietary"
],
"description": "Core of Shopsys Framework - open source framework for building large, scalable, fast-growing e-commerce projects based on Symfony",
- "time": "2019-07-30T06:08:51+00:00"
+ "time": "2019-12-02T15:41:04+00:00"
},
{
"name": "shopsys/jparser",
@@ -5614,16 +5910,16 @@
},
{
"name": "shopsys/migrations",
- "version": "v8.0.0",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/shopsys/migrations.git",
- "reference": "16ffc87a79bfcdfea46714f8aab1b1435d59e4f8"
+ "reference": "a060d0789be53c53018104c553f2b92f88b068c3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/shopsys/migrations/zipball/16ffc87a79bfcdfea46714f8aab1b1435d59e4f8",
- "reference": "16ffc87a79bfcdfea46714f8aab1b1435d59e4f8",
+ "url": "https://api.github.com/repos/shopsys/migrations/zipball/a060d0789be53c53018104c553f2b92f88b068c3",
+ "reference": "a060d0789be53c53018104c553f2b92f88b068c3",
"shasum": ""
},
"require": {
@@ -5646,7 +5942,7 @@
},
"require-dev": {
"phpunit/phpunit": "^7.0",
- "shopsys/coding-standards": "8.0.0"
+ "shopsys/coding-standards": "dev-master"
},
"type": "library",
"autoload": {
@@ -5673,20 +5969,20 @@
"orm",
"schema"
],
- "time": "2019-07-30T06:08:51+00:00"
+ "time": "2019-11-14T08:28:13+00:00"
},
{
"name": "shopsys/plugin-interface",
- "version": "v8.0.0",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/shopsys/plugin-interface.git",
- "reference": "04524439ab7b45a103c7dc24722f166a8bb8c6fa"
+ "reference": "bafc1abd9e70451b8d03e06d39630163bf5ce0f6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/shopsys/plugin-interface/zipball/04524439ab7b45a103c7dc24722f166a8bb8c6fa",
- "reference": "04524439ab7b45a103c7dc24722f166a8bb8c6fa",
+ "url": "https://api.github.com/repos/shopsys/plugin-interface/zipball/bafc1abd9e70451b8d03e06d39630163bf5ce0f6",
+ "reference": "bafc1abd9e70451b8d03e06d39630163bf5ce0f6",
"shasum": ""
},
"require": {
@@ -5694,7 +5990,7 @@
"symfony/monolog-bridge": "^3.0.0"
},
"require-dev": {
- "shopsys/coding-standards": "8.0.0"
+ "shopsys/coding-standards": "dev-master"
},
"type": "library",
"autoload": {
@@ -5718,7 +6014,7 @@
"Shopsys Framework",
"plugin"
],
- "time": "2019-07-30T06:08:51+00:00"
+ "time": "2019-11-14T08:28:13+00:00"
},
{
"name": "shopsys/postgres-search-bundle",
@@ -5768,16 +6064,16 @@
},
{
"name": "shopsys/product-feed-google",
- "version": "v8.0.0",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/shopsys/product-feed-google.git",
- "reference": "3e350ef03310b7ca524ea690e91f8739440f0d30"
+ "reference": "d75c280003eba683b261760e33d1cad65bd0ee1b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/shopsys/product-feed-google/zipball/3e350ef03310b7ca524ea690e91f8739440f0d30",
- "reference": "3e350ef03310b7ca524ea690e91f8739440f0d30",
+ "url": "https://api.github.com/repos/shopsys/product-feed-google/zipball/d75c280003eba683b261760e33d1cad65bd0ee1b",
+ "reference": "d75c280003eba683b261760e33d1cad65bd0ee1b",
"shasum": ""
},
"require": {
@@ -5787,10 +6083,10 @@
"ext-pdo": "*",
"php": "^7.2",
"shopsys/doctrine-orm": "^2.6.2",
- "shopsys/form-types-bundle": "8.0.0",
- "shopsys/framework": "8.0.0",
- "shopsys/migrations": "8.0.0",
- "shopsys/plugin-interface": "8.0.0",
+ "shopsys/form-types-bundle": "dev-master",
+ "shopsys/framework": "dev-master",
+ "shopsys/migrations": "dev-master",
+ "shopsys/plugin-interface": "dev-master",
"symfony/symfony": "^3.4.8"
},
"conflict": {
@@ -5799,7 +6095,7 @@
},
"require-dev": {
"phpunit/phpunit": "^7.0",
- "shopsys/coding-standards": "8.0.0",
+ "shopsys/coding-standards": "dev-master",
"twig/extensions": "^1.5.1",
"twig/twig": "^2.4.8"
},
@@ -5828,20 +6124,20 @@
"plugin",
"product feed"
],
- "time": "2019-07-30T06:08:51+00:00"
+ "time": "2019-11-14T08:28:13+00:00"
},
{
"name": "shopsys/product-feed-heureka",
- "version": "v8.0.0",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/shopsys/product-feed-heureka.git",
- "reference": "0d6962f7deccfc8c2e0c0fa90f340a53061a317a"
+ "reference": "b4ce7ada298481f8345f9f4df627bf0313964ce7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/shopsys/product-feed-heureka/zipball/0d6962f7deccfc8c2e0c0fa90f340a53061a317a",
- "reference": "0d6962f7deccfc8c2e0c0fa90f340a53061a317a",
+ "url": "https://api.github.com/repos/shopsys/product-feed-heureka/zipball/b4ce7ada298481f8345f9f4df627bf0313964ce7",
+ "reference": "b4ce7ada298481f8345f9f4df627bf0313964ce7",
"shasum": ""
},
"require": {
@@ -5854,10 +6150,10 @@
"ext-simplexml": "*",
"php": "^7.2",
"shopsys/doctrine-orm": "^2.6.2",
- "shopsys/form-types-bundle": "8.0.0",
- "shopsys/framework": "8.0.0",
- "shopsys/migrations": "8.0.0",
- "shopsys/plugin-interface": "8.0.0",
+ "shopsys/form-types-bundle": "dev-master",
+ "shopsys/framework": "dev-master",
+ "shopsys/migrations": "dev-master",
+ "shopsys/plugin-interface": "dev-master",
"symfony/symfony": "^3.4.8"
},
"conflict": {
@@ -5866,7 +6162,7 @@
},
"require-dev": {
"phpunit/phpunit": "^7.0",
- "shopsys/coding-standards": "8.0.0",
+ "shopsys/coding-standards": "dev-master",
"twig/extensions": "^1.5.1",
"twig/twig": "^2.4.8"
},
@@ -5895,29 +6191,29 @@
"plugin",
"product feed"
],
- "time": "2019-07-30T06:08:51+00:00"
+ "time": "2019-11-14T08:28:13+00:00"
},
{
"name": "shopsys/product-feed-heureka-delivery",
- "version": "v8.0.0",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/shopsys/product-feed-heureka-delivery.git",
- "reference": "8ac8c7840f4b688b6d3320b8f7f352003d0afb52"
+ "reference": "786729ac597fc77287650933f530b918eb4dc7a0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/shopsys/product-feed-heureka-delivery/zipball/8ac8c7840f4b688b6d3320b8f7f352003d0afb52",
- "reference": "8ac8c7840f4b688b6d3320b8f7f352003d0afb52",
+ "url": "https://api.github.com/repos/shopsys/product-feed-heureka-delivery/zipball/786729ac597fc77287650933f530b918eb4dc7a0",
+ "reference": "786729ac597fc77287650933f530b918eb4dc7a0",
"shasum": ""
},
"require": {
"php": "^7.2",
"shopsys/doctrine-orm": "^2.6.2",
- "shopsys/form-types-bundle": "8.0.0",
- "shopsys/framework": "8.0.0",
- "shopsys/migrations": "8.0.0",
- "shopsys/plugin-interface": "8.0.0",
+ "shopsys/form-types-bundle": "dev-master",
+ "shopsys/framework": "dev-master",
+ "shopsys/migrations": "dev-master",
+ "shopsys/plugin-interface": "dev-master",
"symfony/config": "^3.4",
"symfony/dependency-injection": "^3.4",
"symfony/framework-bundle": "^3.4",
@@ -5929,7 +6225,7 @@
},
"require-dev": {
"phpunit/phpunit": "^7.0",
- "shopsys/coding-standards": "8.0.0",
+ "shopsys/coding-standards": "dev-master",
"twig/extensions": "^1.5.1",
"twig/twig": "^2.4.8"
},
@@ -5958,20 +6254,20 @@
"plugin",
"product delivery feed"
],
- "time": "2019-07-30T06:08:51+00:00"
+ "time": "2019-11-14T08:28:13+00:00"
},
{
"name": "shopsys/product-feed-zbozi",
- "version": "v8.0.0",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/shopsys/product-feed-zbozi.git",
- "reference": "b6bcce1443831a8b9e27ca608c1e9cbfa5868620"
+ "reference": "12c6c48c4977db3dff3732f0dc66fe72533393df"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/shopsys/product-feed-zbozi/zipball/b6bcce1443831a8b9e27ca608c1e9cbfa5868620",
- "reference": "b6bcce1443831a8b9e27ca608c1e9cbfa5868620",
+ "url": "https://api.github.com/repos/shopsys/product-feed-zbozi/zipball/12c6c48c4977db3dff3732f0dc66fe72533393df",
+ "reference": "12c6c48c4977db3dff3732f0dc66fe72533393df",
"shasum": ""
},
"require": {
@@ -5981,10 +6277,10 @@
"ext-pdo": "*",
"php": "^7.2",
"shopsys/doctrine-orm": "^2.6.2",
- "shopsys/form-types-bundle": "8.0.0",
- "shopsys/framework": "8.0.0",
- "shopsys/migrations": "8.0.0",
- "shopsys/plugin-interface": "8.0.0",
+ "shopsys/form-types-bundle": "dev-master",
+ "shopsys/framework": "dev-master",
+ "shopsys/migrations": "dev-master",
+ "shopsys/plugin-interface": "dev-master",
"symfony/symfony": "^3.4.8"
},
"conflict": {
@@ -5993,7 +6289,7 @@
},
"require-dev": {
"phpunit/phpunit": "^7.0",
- "shopsys/coding-standards": "8.0.0",
+ "shopsys/coding-standards": "dev-master",
"twig/extensions": "^1.5.1",
"twig/twig": "^2.4.8"
},
@@ -6022,28 +6318,28 @@
"product feed",
"zbozi"
],
- "time": "2019-07-30T06:08:51+00:00"
+ "time": "2019-11-14T08:28:13+00:00"
},
{
"name": "shopsys/read-model",
- "version": "v8.0.0",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/shopsys/read-model.git",
- "reference": "e224f1f5341f7365b4a1965a02d3d708624b8d04"
+ "reference": "9f5130653a82253e139e2e19f633d54c90f2bc85"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/shopsys/read-model/zipball/e224f1f5341f7365b4a1965a02d3d708624b8d04",
- "reference": "e224f1f5341f7365b4a1965a02d3d708624b8d04",
+ "url": "https://api.github.com/repos/shopsys/read-model/zipball/9f5130653a82253e139e2e19f633d54c90f2bc85",
+ "reference": "9f5130653a82253e139e2e19f633d54c90f2bc85",
"shasum": ""
},
"require": {
"php": "^7.2",
- "shopsys/form-types-bundle": "8.0.0",
- "shopsys/framework": "8.0.0",
- "shopsys/migrations": "8.0.0",
- "shopsys/plugin-interface": "8.0.0",
+ "shopsys/form-types-bundle": "dev-master",
+ "shopsys/framework": "dev-master",
+ "shopsys/migrations": "dev-master",
+ "shopsys/plugin-interface": "dev-master",
"symfony/config": "^3.4",
"symfony/dependency-injection": "^3.4",
"symfony/http-kernel": "^3.4",
@@ -6051,7 +6347,7 @@
},
"require-dev": {
"phpunit/phpunit": "^7.0",
- "shopsys/coding-standards": "8.0.0"
+ "shopsys/coding-standards": "dev-master"
},
"type": "library",
"autoload": {
@@ -6075,7 +6371,7 @@
"Shopsys Framework",
"read model"
],
- "time": "2019-07-30T06:08:51+00:00"
+ "time": "2019-12-02T15:41:04+00:00"
},
{
"name": "snc/redis-bundle",
@@ -9391,158 +9687,6 @@
],
"time": "2018-02-15T16:58:55+00:00"
},
- {
- "name": "phpdocumentor/reflection-common",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
- "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.6"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": [
- "src"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jaap van Otterdijk",
- "email": "opensource@ijaap.nl"
- }
- ],
- "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
- "homepage": "http://www.phpdoc.org",
- "keywords": [
- "FQSEN",
- "phpDocumentor",
- "phpdoc",
- "reflection",
- "static analysis"
- ],
- "time": "2017-09-11T18:02:19+00:00"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "4.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
- "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
- "shasum": ""
- },
- "require": {
- "php": "^7.0",
- "phpdocumentor/reflection-common": "^1.0.0",
- "phpdocumentor/type-resolver": "^0.4.0",
- "webmozart/assert": "^1.0"
- },
- "require-dev": {
- "doctrine/instantiator": "~1.0.5",
- "mockery/mockery": "^1.0",
- "phpunit/phpunit": "^6.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": [
- "src/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- }
- ],
- "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "time": "2019-04-30T17:48:53+00:00"
- },
- {
- "name": "phpdocumentor/type-resolver",
- "version": "0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
- "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
- "shasum": ""
- },
- "require": {
- "php": "^5.5 || ^7.0",
- "phpdocumentor/reflection-common": "^1.0"
- },
- "require-dev": {
- "mockery/mockery": "^0.9.4",
- "phpunit/phpunit": "^5.2||^4.8.24"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": [
- "src/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- }
- ],
- "time": "2017-07-14T14:27:02+00:00"
- },
{
"name": "phpspec/prophecy",
"version": "1.8.1",
@@ -10745,16 +10889,16 @@
},
{
"name": "shopsys/coding-standards",
- "version": "v8.0.0",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/shopsys/coding-standards.git",
- "reference": "525bd8c29a59ea9cb074bbb46c644afbc90a38da"
+ "reference": "5985aa38d62b1903835cfc469fcaf5df2650a22d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/shopsys/coding-standards/zipball/525bd8c29a59ea9cb074bbb46c644afbc90a38da",
- "reference": "525bd8c29a59ea9cb074bbb46c644afbc90a38da",
+ "url": "https://api.github.com/repos/shopsys/coding-standards/zipball/5985aa38d62b1903835cfc469fcaf5df2650a22d",
+ "reference": "5985aa38d62b1903835cfc469fcaf5df2650a22d",
"shasum": ""
},
"require": {
@@ -10798,23 +10942,24 @@
"code quality",
"coding standards"
],
- "time": "2019-07-29T08:16:32+00:00"
+ "time": "2019-11-14T08:28:13+00:00"
},
{
"name": "shopsys/http-smoke-testing",
- "version": "v8.0.0",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/shopsys/http-smoke-testing.git",
- "reference": "7563c5e9b220c29a58e59dcceeefe594b842844a"
+ "reference": "8850345fae1da1a4b2340e8635213a000e72efa6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/shopsys/http-smoke-testing/zipball/7563c5e9b220c29a58e59dcceeefe594b842844a",
- "reference": "7563c5e9b220c29a58e59dcceeefe594b842844a",
+ "url": "https://api.github.com/repos/shopsys/http-smoke-testing/zipball/8850345fae1da1a4b2340e8635213a000e72efa6",
+ "reference": "8850345fae1da1a4b2340e8635213a000e72efa6",
"shasum": ""
},
"require": {
+ "doctrine/annotations": "^1.6",
"php": "^7.2",
"phpunit/phpunit": "^7.0",
"symfony/dependency-injection": "^3.4|^4.0",
@@ -10827,7 +10972,7 @@
},
"require-dev": {
"jakub-onderka/php-parallel-lint": "^0.9",
- "shopsys/coding-standards": "8.0.0"
+ "shopsys/coding-standards": "dev-master"
},
"type": "library",
"autoload": {
@@ -10853,7 +10998,7 @@
"symfony",
"testing"
],
- "time": "2019-07-30T06:08:51+00:00"
+ "time": "2019-11-14T08:28:13+00:00"
},
{
"name": "slam/php-cs-fixer-extensions",
@@ -11097,6 +11242,7 @@
"MIT"
],
"description": "Slim wrapper around phpstan/phpdoc-parser with format preserving printer",
+ "abandoned": "rector/rector",
"time": "2019-03-05T23:15:04+00:00"
},
{
@@ -11344,11 +11490,121 @@
],
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"time": "2019-06-13T22:48:21+00:00"
+ },
+ {
+ "name": "zalas/injector",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jakzal/injector.git",
+ "reference": "80b48ce4dee3b3389678823e2098719a9a3daacb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jakzal/injector/zipball/80b48ce4dee3b3389678823e2098719a9a3daacb",
+ "reference": "80b48ce4dee3b3389678823e2098719a9a3daacb",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2",
+ "phpdocumentor/reflection-docblock": "^4.0.1",
+ "psr/container": "^1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.0",
+ "zalas/phpunit-doubles": "^1.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Zalas\\Injector\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jakub Zalas",
+ "email": "jakub@zalas.pl"
+ }
+ ],
+ "description": "Injects services from a PSR-11 service container into objects",
+ "time": "2019-06-08T07:53:41+00:00"
+ },
+ {
+ "name": "zalas/phpunit-injector",
+ "version": "v1.2.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jakzal/phpunit-injector.git",
+ "reference": "8685a19a7cd90f7801830eeb8a9e4f4da1fabfc0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jakzal/phpunit-injector/zipball/8685a19a7cd90f7801830eeb8a9e4f4da1fabfc0",
+ "reference": "8685a19a7cd90f7801830eeb8a9e4f4da1fabfc0",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1",
+ "phpunit/phpunit": "^7.0",
+ "psr/container": "^1.0",
+ "zalas/injector": "^1.0"
+ },
+ "require-dev": {
+ "symfony/config": "^3.4 || ^4.0",
+ "symfony/dependency-injection": "^3.4 || ^4.0",
+ "symfony/framework-bundle": "^3.4||^4.0",
+ "symfony/http-kernel": "^3.4 || ^4.0",
+ "zalas/phpunit-globals": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Zalas\\Injector\\PHPUnit\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jakub Zalas",
+ "email": "jakub@zalas.pl"
+ }
+ ],
+ "description": "Injects services from a PSR-11 dependency injection container to PHPUnit test cases",
+ "time": "2018-07-25T22:54:30+00:00"
}
],
"aliases": [],
"minimum-stability": "stable",
- "stability-flags": [],
+ "stability-flags": {
+ "shopsys/migrations": 20,
+ "shopsys/form-types-bundle": 20,
+ "shopsys/framework": 20,
+ "shopsys/plugin-interface": 20,
+ "shopsys/product-feed-heureka": 20,
+ "shopsys/product-feed-heureka-delivery": 20,
+ "shopsys/product-feed-zbozi": 20,
+ "shopsys/product-feed-google": 20,
+ "shopsys/read-model": 20,
+ "shopsys/coding-standards": 20,
+ "shopsys/http-smoke-testing": 20
+ },
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
diff --git a/docker/conf/docker-compose-mac.yml.dist b/docker/conf/docker-compose-mac.yml.dist
index e0246bbb7..045085722 100644
--- a/docker/conf/docker-compose-mac.yml.dist
+++ b/docker/conf/docker-compose-mac.yml.dist
@@ -65,7 +65,7 @@ services:
- HUB_PORT_4444_TCP_PORT=4444
adminer:
- image: adminer:4.6
+ image: adminer:4.7
container_name: shopsys-framework-adminer
ports:
- "1100:8080"
diff --git a/docker/conf/docker-compose-win.yml.dist b/docker/conf/docker-compose-win.yml.dist
index 80ce63fdf..10687cda6 100644
--- a/docker/conf/docker-compose-win.yml.dist
+++ b/docker/conf/docker-compose-win.yml.dist
@@ -40,7 +40,6 @@ services:
- shopsys-framework-sync:/var/www/html
- shopsys-framework-vendor-sync:/var/www/html/vendor
- shopsys-framework-web-sync:/var/www/html/web
- - ./docker/php-fpm/php-ini-overrides.ini:/usr/local/etc/php/php.ini
ports:
- "35729:35729"
@@ -66,7 +65,7 @@ services:
- HUB_PORT_4444_TCP_PORT=4444
adminer:
- image: adminer:4.6
+ image: adminer:4.7
container_name: shopsys-framework-adminer
ports:
- "1100:8080"
diff --git a/docker/conf/docker-compose.yml.dist b/docker/conf/docker-compose.yml.dist
index 0370a4844..e86c1fdf0 100644
--- a/docker/conf/docker-compose.yml.dist
+++ b/docker/conf/docker-compose.yml.dist
@@ -40,6 +40,8 @@ services:
- .:/var/www/html
ports:
- "35729:35729"
+ environment:
+ - IGNORE_DEFAULT_ADMIN_PASSWORD_CHECK
redis:
image: redis:4.0-alpine
@@ -63,7 +65,7 @@ services:
- HUB_PORT_4444_TCP_PORT=4444
adminer:
- image: adminer:4.6
+ image: adminer:4.7
container_name: shopsys-framework-adminer
ports:
- "1100:8080"
diff --git a/docker/php-fpm/Dockerfile b/docker/php-fpm/Dockerfile
index 81456fade..943f8566f 100644
--- a/docker/php-fpm/Dockerfile
+++ b/docker/php-fpm/Dockerfile
@@ -1,8 +1,6 @@
FROM php:7.3-fpm-stretch as base
ARG project_root=.
-ENV REDIS_PREFIX=''
-ENV ELASTIC_SEARCH_INDEX_PREFIX=''
# install required tools
# git for computing diffs
diff --git a/easy-coding-standard.yml b/easy-coding-standard.yml
index 0b7d634d6..aa592a0bc 100644
--- a/easy-coding-standard.yml
+++ b/easy-coding-standard.yml
@@ -31,6 +31,10 @@ parameters:
- '*/tests/ShopBundle/Functional/Model/Product/ProductVisibilityRepositoryTest.php'
- '*/src/Shopsys/ShopBundle/DataFixtures/Demo/MultidomainOrderDataFixture.phpFixture.php'
- '*/src/Shopsys/ShopBundle/DataFixtures/Demo/OrderDataFixture.php'
+ - '*/src/Shopsys/ShopBundle/DataFixtures/Demo/ProductDataFixture.php'
+
+ PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics\CyclomaticComplexitySniff:
+ - '*/src/Shopsys/ShopBundle/DataFixtures/Demo/ProductDataFixture.php'
Shopsys\CodingStandards\Sniffs\ValidVariableNameSniff:
- '*/tests/ShopBundle/Functional/EntityExtension/EntityExtensionTest.php'
diff --git a/migrations-lock.yml b/migrations-lock.yml
index b5895b5ff..64f0e8d96 100644
--- a/migrations-lock.yml
+++ b/migrations-lock.yml
@@ -328,3 +328,12 @@
20190521071335:
class: Shopsys\FrameworkBundle\Migrations\Version20190521071335
skip: false
+20190823110846:
+ class: Shopsys\FrameworkBundle\Migrations\Version20190823110846
+ skip: false
+20191029123329:
+ class: Shopsys\FrameworkBundle\Migrations\Version20191029123329
+ skip: false
+20191029210140:
+ class: Shopsys\FrameworkBundle\Migrations\Version20191029210140
+ skip: false
diff --git a/package-lock.json b/package-lock.json
index dd1269843..3efdf0559 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -76,7 +76,8 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"ansi-escapes": {
"version": "3.2.0",
@@ -805,42 +806,6 @@
"boom": "2.x.x"
}
},
- "css": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/css/-/css-1.6.0.tgz",
- "integrity": "sha1-wG//CvuzE/zlvOBw12UxpsjTAKo=",
- "dev": true,
- "requires": {
- "css-parse": "1.7.0",
- "css-stringify": "1.4.1"
- }
- },
- "css-parse": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz",
- "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=",
- "dev": true
- },
- "css-stringify": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.4.1.tgz",
- "integrity": "sha1-JSzL8D9yOgCb3Ydw/n6ydBca/fo=",
- "dev": true,
- "requires": {
- "source-map": "~0.1.31"
- },
- "dependencies": {
- "source-map": {
- "version": "0.1.43",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
- "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
- "dev": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
- }
- }
- },
"csso": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/csso/-/csso-2.0.0.tgz",
@@ -987,12 +952,6 @@
"integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
"dev": true
},
- "deep-equal": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.0.0.tgz",
- "integrity": "sha1-mWedO70EcVb81FDT0B7rkGhpHoM=",
- "dev": true
- },
"deep-is": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
@@ -1049,12 +1008,6 @@
}
}
},
- "defined": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz",
- "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=",
- "dev": true
- },
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -2306,41 +2259,6 @@
"integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==",
"dev": true
},
- "grunt-legacssy": {
- "version": "github:shopsys/grunt-legacssy#41720f8f7d703c86f022ee86e3d5eba2b54ccdfc",
- "from": "github:shopsys/grunt-legacssy#v0.4.0-with-grunt1-support",
- "dev": true,
- "requires": {
- "chalk": "^0.4.0",
- "css": "~1.6.0",
- "maxmin": "^0.1.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
- "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=",
- "dev": true
- },
- "chalk": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
- "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
- "dev": true,
- "requires": {
- "ansi-styles": "~1.0.0",
- "has-color": "~0.1.0",
- "strip-ansi": "~0.1.0"
- }
- },
- "strip-ansi": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
- "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=",
- "dev": true
- }
- }
- },
"grunt-legacy-log": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz",
@@ -2484,16 +2402,6 @@
}
}
},
- "gzip-size": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-0.1.1.tgz",
- "integrity": "sha1-rjNIO2/IIk6DQilt4Qjvk3V/duA=",
- "dev": true,
- "requires": {
- "concat-stream": "^1.4.1",
- "zlib-browserify": "^0.0.3"
- }
- },
"handlebars": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz",
@@ -2566,12 +2474,6 @@
"ansi-regex": "^2.0.0"
}
},
- "has-color": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz",
- "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=",
- "dev": true
- },
"has-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
@@ -3363,42 +3265,6 @@
"object-visit": "^1.0.0"
}
},
- "maxmin": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-0.1.0.tgz",
- "integrity": "sha1-ldgcUonjqdMPf8fcVZwCTlAwydA=",
- "dev": true,
- "requires": {
- "chalk": "^0.4.0",
- "gzip-size": "^0.1.0",
- "pretty-bytes": "^0.1.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
- "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=",
- "dev": true
- },
- "chalk": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
- "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
- "dev": true,
- "requires": {
- "ansi-styles": "~1.0.0",
- "has-color": "~0.1.0",
- "strip-ansi": "~0.1.0"
- }
- },
- "strip-ansi": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
- "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=",
- "dev": true
- }
- }
- },
"memorystream": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
@@ -4380,12 +4246,6 @@
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
"dev": true
},
- "pretty-bytes": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-0.1.2.tgz",
- "integrity": "sha1-zZApTVihyk6KXQ+5yCJZmIgazwA=",
- "dev": true
- },
"pretty-ms": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz",
@@ -5617,17 +5477,6 @@
}
}
},
- "tape": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/tape/-/tape-0.2.2.tgz",
- "integrity": "sha1-ZMz6S37PSgBgAH5hcW1CR4FnFjc=",
- "dev": true,
- "requires": {
- "deep-equal": "~0.0.0",
- "defined": "~0.0.0",
- "jsonify": "~0.0.0"
- }
- },
"tar": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
@@ -6261,15 +6110,6 @@
"dev": true
}
}
- },
- "zlib-browserify": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/zlib-browserify/-/zlib-browserify-0.0.3.tgz",
- "integrity": "sha1-JAzNv9AgP6hCsTDe77FBQSLIzFA=",
- "dev": true,
- "requires": {
- "tape": "~0.2.2"
- }
}
}
}
diff --git a/package.json b/package.json
index 9e19f1cca..caaa0a12f 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,6 @@
"grunt-cli": "^1.2.0",
"grunt-contrib-less": "^1.4.0",
"grunt-contrib-watch": "^1.0.0",
- "grunt-legacssy": "github:shopsys/grunt-legacssy#v0.4.0-with-grunt1-support",
"grunt-postcss": "^0.8.0",
"grunt-spritesmith": "^6.6.3",
"grunt-webfont": "^1.6.0",
diff --git a/phpunit.xml b/phpunit.xml
index 913840285..102e7edf6 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -46,4 +46,7 @@
+
+
+
diff --git a/scripts/install.sh b/scripts/install.sh
index 7995fa9e3..14c8ac971 100755
--- a/scripts/install.sh
+++ b/scripts/install.sh
@@ -33,13 +33,21 @@ echo "Creating docker configuration.."
case "$operatingSystem" in
"1")
cp -f docker/conf/docker-compose.yml.dist docker-compose.yml
+
+ sed -i -r "s#www_data_uid: [0-9]+#www_data_uid: $(id -u)#" ./docker-compose.yml
+ sed -i -r "s#www_data_gid: [0-9]+#www_data_gid: $(id -g)#" ./docker-compose.yml
;;
"2")
cp -f docker/conf/docker-compose-mac.yml.dist docker-compose.yml
cp -f docker/conf/docker-sync.yml.dist docker-sync.yml
- echo "You will be asked to enter sudo password in case to allow second domain alias in your system config.."
- sudo ifconfig lo0 alias 127.0.0.2 up
+ sed -i '' -E "s#www_data_uid: [0-9]+#www_data_uid: $(id -u)#" ./docker-compose.yml
+ sed -i '' -E "s#www_data_gid: [0-9]+#www_data_gid: $(id -g)#" ./docker-compose.yml
+
+ if [[ $1 != --skip-aliasing ]]; then
+ echo "You will be asked to enter sudo password in case to allow second domain alias in your system config.."
+ sudo ifconfig lo0 alias 127.0.0.2 up
+ fi
mkdir -p var/postgres-data var/elasticsearch-data vendor
docker-sync start
@@ -59,9 +67,8 @@ docker-compose up -d --build
echo "Installing application inside a php-fpm container"
-docker-compose exec php-fpm composer install
-
-docker-compose exec php-fpm ./phing db-create test-db-create build-demo-dev-quick error-pages-generate
+docker-compose exec -T php-fpm composer install
+docker-compose exec -T php-fpm ./phing db-create test-db-create build-demo-dev-quick error-pages-generate
echo "Your application is now ready under http://127.0.0.1:8000 and second domain under http://127.0.0.2:8000"
echo "Administration is ready under http://127.0.0.1:8000/admin, you can log in using username 'admin' and password 'admin123'"
diff --git a/src/Shopsys/ShopBundle/Controller/Admin/AdministratorController.php b/src/Shopsys/ShopBundle/Controller/Admin/AdministratorController.php
index 05d586943..85468e9ce 100644
--- a/src/Shopsys/ShopBundle/Controller/Admin/AdministratorController.php
+++ b/src/Shopsys/ShopBundle/Controller/Admin/AdministratorController.php
@@ -9,6 +9,10 @@
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
+/**
+ * @property \Shopsys\ShopBundle\Model\Administrator\AdministratorFacade $administratorFacade
+ * @method __construct(\Shopsys\ShopBundle\Model\Administrator\AdministratorFacade $administratorFacade, \Shopsys\FrameworkBundle\Component\Grid\GridFactory $gridFactory, \Shopsys\FrameworkBundle\Model\AdminNavigation\BreadcrumbOverrider $breadcrumbOverrider, \Shopsys\FrameworkBundle\Model\Administrator\Activity\AdministratorActivityFacade $administratorActivityFacade, \Shopsys\FrameworkBundle\Model\Administrator\AdministratorDataFactoryInterface $administratorDataFactory)
+ */
class AdministratorController extends BaseAdministratorController
{
/**
diff --git a/src/Shopsys/ShopBundle/Controller/Admin/CustomerController.php b/src/Shopsys/ShopBundle/Controller/Admin/CustomerController.php
index c42fc3150..7e36473e8 100644
--- a/src/Shopsys/ShopBundle/Controller/Admin/CustomerController.php
+++ b/src/Shopsys/ShopBundle/Controller/Admin/CustomerController.php
@@ -66,7 +66,7 @@ class CustomerController extends BaseCustomerController
protected $customerFacade;
/**
- * @var \Shopsys\FrameworkBundle\Model\Customer\CustomerDataFactoryInterface
+ * @var \Shopsys\ShopBundle\Model\Customer\CustomerDataFactory
*/
protected $customerDataFactory;
@@ -106,7 +106,7 @@ class CustomerController extends BaseCustomerController
protected $breadcrumbOverrider;
/**
- * @var \Shopsys\FrameworkBundle\Model\Order\OrderFacade
+ * @var \Shopsys\ShopBundle\Model\Order\OrderFacade
*/
protected $orderFacade;
@@ -121,17 +121,17 @@ class CustomerController extends BaseCustomerController
private $domainContextSwitcher;
/**
- * @param \Shopsys\FrameworkBundle\Model\Customer\UserDataFactoryInterface $userDataFactory
+ * @param \Shopsys\ShopBundle\Model\Customer\UserDataFactory $userDataFactory
* @param \Shopsys\FrameworkBundle\Model\Customer\CustomerListAdminFacade $customerListAdminFacade
* @param \Shopsys\ShopBundle\Model\Customer\CustomerFacade $customerFacade
* @param \Shopsys\FrameworkBundle\Model\AdminNavigation\BreadcrumbOverrider $breadcrumbOverrider
* @param \Shopsys\FrameworkBundle\Model\Administrator\AdministratorGridFacade $administratorGridFacade
* @param \Shopsys\FrameworkBundle\Component\Grid\GridFactory $gridFactory
* @param \Shopsys\FrameworkBundle\Component\Domain\AdminDomainTabsFacade $adminDomainTabsFacade
- * @param \Shopsys\FrameworkBundle\Model\Order\OrderFacade $orderFacade
+ * @param \Shopsys\ShopBundle\Model\Order\OrderFacade $orderFacade
* @param \Shopsys\FrameworkBundle\Model\Security\LoginAsUserFacade $loginAsUserFacade
* @param \Shopsys\FrameworkBundle\Component\Router\DomainRouterFactory $domainRouterFactory
- * @param \Shopsys\FrameworkBundle\Model\Customer\CustomerDataFactoryInterface $customerDataFactory
+ * @param \Shopsys\ShopBundle\Model\Customer\CustomerDataFactory $customerDataFactory
* @param \Shopsys\ShopBundle\Model\Customer\BillingAddressFacade $billingAddressFacade
* @param \Shopsys\ShopBundle\Model\Customer\BillingAddressDataFactory $billingAddressDataFactory
* @param \Shopsys\FrameworkBundle\Model\Customer\UserFactory $userFactory
@@ -249,7 +249,7 @@ public function editAction(Request $request, $billingAddressId)
public function listAction(Request $request)
{
$administrator = $this->getUser();
- /* @var $administrator \Shopsys\FrameworkBundle\Model\Administrator\Administrator */
+ /* @var $administrator \Shopsys\ShopBundle\Model\Administrator\Administrator */
$quickSearchForm = $this->createForm(QuickSearchFormType::class, new QuickSearchFormData());
$quickSearchForm->handleRequest($request);
@@ -444,7 +444,7 @@ protected function processStandardCustomer(Request $request, BillingAddress $bil
}
/**
- * @param \Shopsys\FrameworkBundle\Model\Customer\User $user
+ * @param \Shopsys\ShopBundle\Model\Customer\User $user
* @return string
*/
protected function getSsoLoginAsUserUrl(User $user)
diff --git a/src/Shopsys/ShopBundle/Controller/Admin/LoginController.php b/src/Shopsys/ShopBundle/Controller/Admin/LoginController.php
index 679b89f89..979e65092 100644
--- a/src/Shopsys/ShopBundle/Controller/Admin/LoginController.php
+++ b/src/Shopsys/ShopBundle/Controller/Admin/LoginController.php
@@ -75,7 +75,7 @@ public function loginAction(Request $request)
public function ssoAction(Request $request, $originalDomainId)
{
$administrator = $this->getUser();
- /* @var $administrator \Shopsys\FrameworkBundle\Model\Administrator\Administrator */
+ /* @var $administrator \Shopsys\ShopBundle\Model\Administrator\Administrator */
$multidomainToken = $this->administratorLoginFacade->generateMultidomainLoginTokenWithExpiration($administrator);
$this->domainContextSwitcher->changeRouterContext((int)$originalDomainId);
diff --git a/src/Shopsys/ShopBundle/Controller/Front/BestsellingProductController.php b/src/Shopsys/ShopBundle/Controller/Front/BestsellingProductController.php
index 9352589da..65de7837f 100644
--- a/src/Shopsys/ShopBundle/Controller/Front/BestsellingProductController.php
+++ b/src/Shopsys/ShopBundle/Controller/Front/BestsellingProductController.php
@@ -23,14 +23,14 @@ class BestsellingProductController extends FrontBaseController
private $domain;
/**
- * @var \Shopsys\FrameworkBundle\Model\Customer\CurrentCustomer
+ * @var \Shopsys\ShopBundle\Model\Customer\CurrentCustomer
*/
private $currentCustomer;
/**
* @param \Shopsys\FrameworkBundle\Model\Product\BestsellingProduct\CachedBestsellingProductFacade $cachedBestsellingProductFacade
* @param \Shopsys\FrameworkBundle\Component\Domain\Domain $domain
- * @param \Shopsys\FrameworkBundle\Model\Customer\CurrentCustomer $currentCustomer
+ * @param \Shopsys\ShopBundle\Model\Customer\CurrentCustomer $currentCustomer
*/
public function __construct(
CachedBestsellingProductFacade $cachedBestsellingProductFacade,
@@ -43,7 +43,7 @@ public function __construct(
}
/**
- * @param \Shopsys\FrameworkBundle\Model\Category\Category $category
+ * @param \Shopsys\ShopBundle\Model\Category\Category $category
*/
public function listAction(Category $category)
{
diff --git a/src/Shopsys/ShopBundle/Controller/Front/CartController.php b/src/Shopsys/ShopBundle/Controller/Front/CartController.php
index 01241e98f..a8670c0dd 100644
--- a/src/Shopsys/ShopBundle/Controller/Front/CartController.php
+++ b/src/Shopsys/ShopBundle/Controller/Front/CartController.php
@@ -153,7 +153,7 @@ public function boxAction()
}
/**
- * @param \Shopsys\FrameworkBundle\Model\Product\Product $product
+ * @param \Shopsys\ShopBundle\Model\Product\Product $product
* @param string $type
*/
public function addProductFormAction(Product $product, $type = 'normal')
diff --git a/src/Shopsys/ShopBundle/Controller/Front/CategoryController.php b/src/Shopsys/ShopBundle/Controller/Front/CategoryController.php
index 499a16877..709abb0ed 100644
--- a/src/Shopsys/ShopBundle/Controller/Front/CategoryController.php
+++ b/src/Shopsys/ShopBundle/Controller/Front/CategoryController.php
@@ -34,7 +34,7 @@ class CategoryController extends FrontBaseController
private $topCategoryFacade;
/**
- * @var \Shopsys\FrameworkBundle\Model\Customer\CurrentCustomer
+ * @var \Shopsys\ShopBundle\Model\Customer\CurrentCustomer
*/
private $currentCustomer;
@@ -43,7 +43,7 @@ class CategoryController extends FrontBaseController
* @param \Shopsys\FrameworkBundle\Model\Category\CategoryFacade $categoryFacade
* @param \Shopsys\ShopBundle\Model\Category\CurrentCategoryResolver $currentCategoryResolver
* @param \Shopsys\FrameworkBundle\Model\Category\TopCategory\TopCategoryFacade $topCategoryFacade
- * @param \Shopsys\FrameworkBundle\Model\Customer\CurrentCustomer $currentCustomer
+ * @param \Shopsys\ShopBundle\Model\Customer\CurrentCustomer $currentCustomer
*/
public function __construct(
Domain $domain,
@@ -115,7 +115,7 @@ public function topAction()
}
/**
- * @param \Shopsys\FrameworkBundle\Model\Category\Category[] $categories
+ * @param \Shopsys\ShopBundle\Model\Category\Category[] $categories
* @param bool $showProductsCountByCategory
*/
public function categoryListAction(array $categories, $showProductsCountByCategory = true)
diff --git a/src/Shopsys/ShopBundle/Controller/Front/CustomerController.php b/src/Shopsys/ShopBundle/Controller/Front/CustomerController.php
index 8a77307d2..8583586fb 100644
--- a/src/Shopsys/ShopBundle/Controller/Front/CustomerController.php
+++ b/src/Shopsys/ShopBundle/Controller/Front/CustomerController.php
@@ -17,7 +17,7 @@
class CustomerController extends FrontBaseController
{
/**
- * @var \Shopsys\FrameworkBundle\Model\Customer\CustomerFacade
+ * @var \Shopsys\ShopBundle\Model\Customer\CustomerFacade
*/
private $customerFacade;
@@ -32,7 +32,7 @@ class CustomerController extends FrontBaseController
private $orderItemPriceCalculation;
/**
- * @var \Shopsys\FrameworkBundle\Model\Order\OrderFacade
+ * @var \Shopsys\ShopBundle\Model\Order\OrderFacade
*/
private $orderFacade;
@@ -42,17 +42,17 @@ class CustomerController extends FrontBaseController
private $loginAsUserFacade;
/**
- * @var \Shopsys\FrameworkBundle\Model\Customer\CustomerDataFactoryInterface
+ * @var \Shopsys\ShopBundle\Model\Customer\CustomerDataFactory
*/
private $customerDataFactory;
/**
- * @param \Shopsys\FrameworkBundle\Model\Customer\CustomerFacade $customerFacade
- * @param \Shopsys\FrameworkBundle\Model\Order\OrderFacade $orderFacade
+ * @param \Shopsys\ShopBundle\Model\Customer\CustomerFacade $customerFacade
+ * @param \Shopsys\ShopBundle\Model\Order\OrderFacade $orderFacade
* @param \Shopsys\FrameworkBundle\Component\Domain\Domain $domain
* @param \Shopsys\FrameworkBundle\Model\Order\Item\OrderItemPriceCalculation $orderItemPriceCalculation
* @param \Shopsys\FrameworkBundle\Model\Security\LoginAsUserFacade $loginAsUserFacade
- * @param \Shopsys\FrameworkBundle\Model\Customer\CustomerDataFactoryInterface $customerDataFactory
+ * @param \Shopsys\ShopBundle\Model\Customer\CustomerDataFactory $customerDataFactory
*/
public function __construct(
CustomerFacade $customerFacade,
@@ -115,7 +115,7 @@ public function ordersAction()
}
$user = $this->getUser();
- /* @var $user \Shopsys\FrameworkBundle\Model\Customer\User */
+ /* @var $user \Shopsys\ShopBundle\Model\Customer\User */
if ($user->getBillingAddress()->isCompanyWithMultipleUsers()) {
$users = $this->customerFacade->getUsersByBillingAddressAndDomain($user->getBillingAddress(), $user->getDomainId());
@@ -161,10 +161,10 @@ private function orderDetailAction($urlHash = null, $orderNumber = null)
try {
if ($user->getBillingAddress()->isCompanyWithMultipleUsers()) {
$order = $this->orderFacade->getByOrderNumberAndBillingAddress($orderNumber, $user->getBillingAddress());
- /* @var $order \Shopsys\FrameworkBundle\Model\Order\Order */
+ /* @var $order \Shopsys\ShopBundle\Model\Order\Order */
} else {
$order = $this->orderFacade->getByOrderNumberAndUser($orderNumber, $user);
- /* @var $order \Shopsys\FrameworkBundle\Model\Order\Order */
+ /* @var $order \Shopsys\ShopBundle\Model\Order\Order */
}
} catch (\Shopsys\FrameworkBundle\Model\Order\Exception\OrderNotFoundException $ex) {
$this->getFlashMessageSender()->addErrorFlash(t('Order not found'));
@@ -172,7 +172,7 @@ private function orderDetailAction($urlHash = null, $orderNumber = null)
}
} else {
$order = $this->orderFacade->getByUrlHashAndDomain($urlHash, $this->domain->getId());
- /* @var $order \Shopsys\FrameworkBundle\Model\Order\Order */
+ /* @var $order \Shopsys\ShopBundle\Model\Order\Order */
}
$orderItemTotalPricesById = $this->orderItemPriceCalculation->calculateTotalPricesIndexedById($order->getItems());
diff --git a/src/Shopsys/ShopBundle/Controller/Front/OrderController.php b/src/Shopsys/ShopBundle/Controller/Front/OrderController.php
index afe2d94fe..61cce0533 100644
--- a/src/Shopsys/ShopBundle/Controller/Front/OrderController.php
+++ b/src/Shopsys/ShopBundle/Controller/Front/OrderController.php
@@ -59,7 +59,7 @@ class OrderController extends FrontBaseController
private $orderDataMapper;
/**
- * @var \Shopsys\FrameworkBundle\Model\Order\OrderFacade
+ * @var \Shopsys\ShopBundle\Model\Order\OrderFacade
*/
private $orderFacade;
@@ -114,7 +114,7 @@ class OrderController extends FrontBaseController
private $newsletterFacade;
/**
- * @param \Shopsys\FrameworkBundle\Model\Order\OrderFacade $orderFacade
+ * @param \Shopsys\ShopBundle\Model\Order\OrderFacade $orderFacade
* @param \Shopsys\FrameworkBundle\Model\Cart\CartFacade $cartFacade
* @param \Shopsys\FrameworkBundle\Model\Order\Preview\OrderPreviewFactory $orderPreviewFactory
* @param \Shopsys\FrameworkBundle\Model\Transport\TransportPriceCalculation $transportPriceCalculation
@@ -123,7 +123,7 @@ class OrderController extends FrontBaseController
* @param \Shopsys\FrameworkBundle\Model\Transport\TransportFacade $transportFacade
* @param \Shopsys\FrameworkBundle\Model\Payment\PaymentFacade $paymentFacade
* @param \Shopsys\FrameworkBundle\Model\Pricing\Currency\CurrencyFacade $currencyFacade
- * @param \Shopsys\FrameworkBundle\Model\Order\OrderDataMapper $orderDataMapper
+ * @param \Shopsys\ShopBundle\Model\Order\OrderDataMapper $orderDataMapper
* @param \Shopsys\ShopBundle\Form\Front\Order\DomainAwareOrderFlowFactory $domainAwareOrderFlowFactory
* @param \Symfony\Component\HttpFoundation\Session\SessionInterface $session
* @param \Shopsys\FrameworkBundle\Model\Order\Watcher\TransportAndPaymentWatcher $transportAndPaymentWatcher
@@ -296,9 +296,9 @@ public function previewAction(Request $request)
}
/**
- * @param \Shopsys\FrameworkBundle\Model\Order\OrderData $orderData
+ * @param \Shopsys\ShopBundle\Model\Order\OrderData $orderData
* @param \Shopsys\FrameworkBundle\Model\Order\Preview\OrderPreview $orderPreview
- * @param \Shopsys\FrameworkBundle\Model\Transport\Transport[] $transports
+ * @param \Shopsys\ShopBundle\Model\Transport\Transport[] $transports
* @param \Shopsys\FrameworkBundle\Model\Payment\Payment[] $payments
*/
private function checkTransportAndPaymentChanges(
@@ -383,7 +383,7 @@ private function getTermsAndConditionsResponse()
}
/**
- * @param \Shopsys\FrameworkBundle\Model\Order\Order $order
+ * @param \Shopsys\ShopBundle\Model\Order\Order $order
*/
private function sendMail($order)
{
diff --git a/src/Shopsys/ShopBundle/Controller/Front/PersonalDataController.php b/src/Shopsys/ShopBundle/Controller/Front/PersonalDataController.php
index 031b8c8cb..8f0c44f8d 100644
--- a/src/Shopsys/ShopBundle/Controller/Front/PersonalDataController.php
+++ b/src/Shopsys/ShopBundle/Controller/Front/PersonalDataController.php
@@ -31,12 +31,12 @@ class PersonalDataController extends FrontBaseController
private $domain;
/**
- * @var \Shopsys\FrameworkBundle\Model\Customer\CustomerFacade
+ * @var \Shopsys\ShopBundle\Model\Customer\CustomerFacade
*/
private $customerFacade;
/**
- * @var \Shopsys\FrameworkBundle\Model\Order\OrderFacade
+ * @var \Shopsys\ShopBundle\Model\Order\OrderFacade
*/
private $orderFacade;
@@ -68,8 +68,8 @@ class PersonalDataController extends FrontBaseController
/**
* @param \Shopsys\FrameworkBundle\Component\Setting\Setting $setting
* @param \Shopsys\FrameworkBundle\Component\Domain\Domain $domain
- * @param \Shopsys\FrameworkBundle\Model\Customer\CustomerFacade $customerFacade
- * @param \Shopsys\FrameworkBundle\Model\Order\OrderFacade $orderFacade
+ * @param \Shopsys\ShopBundle\Model\Customer\CustomerFacade $customerFacade
+ * @param \Shopsys\ShopBundle\Model\Order\OrderFacade $orderFacade
* @param \Shopsys\FrameworkBundle\Model\Newsletter\NewsletterFacade $newsletterFacade
* @param \Shopsys\FrameworkBundle\Model\PersonalData\Mail\PersonalDataAccessMailFacade $personalDataAccessMailFacade
* @param \Shopsys\FrameworkBundle\Model\PersonalData\PersonalDataAccessRequestFacade $personalDataAccessRequestFacade
diff --git a/src/Shopsys/ShopBundle/Controller/Front/ProductController.php b/src/Shopsys/ShopBundle/Controller/Front/ProductController.php
index 03f06ea58..681a3b4ca 100644
--- a/src/Shopsys/ShopBundle/Controller/Front/ProductController.php
+++ b/src/Shopsys/ShopBundle/Controller/Front/ProductController.php
@@ -216,7 +216,7 @@ public function listByCategoryAction(Request $request, $id)
'productFilterCountData' => $productFilterCountData,
'category' => $category,
'filterForm' => $filterForm->createView(),
- 'filterFormSubmited' => $filterForm->isSubmitted(),
+ 'filterFormSubmitted' => $filterForm->isSubmitted(),
'visibleChildren' => $this->categoryFacade->getAllVisibleChildrenByCategoryAndDomainId($category, $this->domain->getId()),
'priceRange' => $productFilterConfig->getPriceRange(),
'discountCoeficient' => $this->currentCustomer->getDiscountCoeficient(),
@@ -312,7 +312,7 @@ public function searchAction(Request $request)
'paginationResult' => $paginationResult,
'productFilterCountData' => $productFilterCountData,
'filterForm' => $filterForm->createView(),
- 'filterFormSubmited' => $filterForm->isSubmitted(),
+ 'filterFormSubmitted' => $filterForm->isSubmitted(),
'searchText' => $searchText,
'SEARCH_TEXT_PARAMETER' => self::SEARCH_TEXT_PARAMETER,
'priceRange' => $productFilterConfig->getPriceRange(),
@@ -328,7 +328,7 @@ public function searchAction(Request $request)
}
/**
- * @param \Shopsys\FrameworkBundle\Model\Category\Category $category
+ * @param \Shopsys\ShopBundle\Model\Category\Category $category
* @return \Shopsys\FrameworkBundle\Model\Product\Filter\ProductFilterConfig
*/
private function createProductFilterConfigForCategory(Category $category)
@@ -355,7 +355,7 @@ private function createProductFilterConfigForSearch($searchText)
/**
* @param string|null $searchText
- * @return \Shopsys\FrameworkBundle\Model\Category\Category[]
+ * @return \Shopsys\ShopBundle\Model\Category\Category[]
*/
private function searchCategories($searchText)
{
diff --git a/src/Shopsys/ShopBundle/Controller/Front/RegistrationController.php b/src/Shopsys/ShopBundle/Controller/Front/RegistrationController.php
index b2f3cc503..e2fbcaf3b 100644
--- a/src/Shopsys/ShopBundle/Controller/Front/RegistrationController.php
+++ b/src/Shopsys/ShopBundle/Controller/Front/RegistrationController.php
@@ -9,6 +9,7 @@
use Shopsys\FrameworkBundle\Model\Customer\UserDataFactoryInterface;
use Shopsys\FrameworkBundle\Model\LegalConditions\LegalConditionsFacade;
use Shopsys\FrameworkBundle\Model\Security\Authenticator;
+use Shopsys\FrameworkBundle\Model\Security\Roles;
use Shopsys\ShopBundle\Form\Front\Registration\RegistrationFormType;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
@@ -16,12 +17,12 @@
class RegistrationController extends FrontBaseController
{
/**
- * @var \Shopsys\FrameworkBundle\Model\Customer\CustomerFacade
+ * @var \Shopsys\ShopBundle\Model\Customer\CustomerFacade
*/
private $customerFacade;
/**
- * @var \Shopsys\FrameworkBundle\Model\Customer\UserDataFactoryInterface
+ * @var \Shopsys\ShopBundle\Model\Customer\UserDataFactory
*/
private $userDataFactory;
@@ -42,8 +43,8 @@ class RegistrationController extends FrontBaseController
/**
* @param \Shopsys\FrameworkBundle\Component\Domain\Domain $domain
- * @param \Shopsys\FrameworkBundle\Model\Customer\UserDataFactoryInterface $userDataFactory
- * @param \Shopsys\FrameworkBundle\Model\Customer\CustomerFacade $customerFacade
+ * @param \Shopsys\ShopBundle\Model\Customer\UserDataFactory $userDataFactory
+ * @param \Shopsys\ShopBundle\Model\Customer\CustomerFacade $customerFacade
* @param \Shopsys\FrameworkBundle\Model\Security\Authenticator $authenticator
* @param \Shopsys\FrameworkBundle\Model\LegalConditions\LegalConditionsFacade $legalConditionsFacade
*/
@@ -77,6 +78,10 @@ public function existsEmailAction(Request $request)
*/
public function registerAction(Request $request)
{
+ if ($this->isGranted(Roles::ROLE_LOGGED_CUSTOMER)) {
+ return $this->redirectToRoute('front_homepage');
+ }
+
$userData = $this->userDataFactory->createForDomainId($this->domain->getId());
$form = $this->createForm(RegistrationFormType::class, $userData);
diff --git a/src/Shopsys/ShopBundle/Controller/Front/ScriptController.php b/src/Shopsys/ShopBundle/Controller/Front/ScriptController.php
index 1a74b3b23..2cdee1201 100644
--- a/src/Shopsys/ShopBundle/Controller/Front/ScriptController.php
+++ b/src/Shopsys/ShopBundle/Controller/Front/ScriptController.php
@@ -59,7 +59,7 @@ public function embedAllPagesGoogleTagManagerScriptAction()
}
/**
- * @param \Shopsys\FrameworkBundle\Model\Order\Order $order
+ * @param \Shopsys\ShopBundle\Model\Order\Order $order
*/
public function embedOrderSentPageScriptsAction(Order $order)
{
@@ -69,7 +69,7 @@ public function embedOrderSentPageScriptsAction(Order $order)
}
/**
- * @param \Shopsys\FrameworkBundle\Model\Order\Order $order
+ * @param \Shopsys\ShopBundle\Model\Order\Order $order
*/
public function embedOrderSentPageGoogleAnalyticsScriptAction(Order $order)
{
diff --git a/src/Shopsys/ShopBundle/Controller/Styleguide/StyleguideController.php b/src/Shopsys/ShopBundle/Controller/Styleguide/StyleguideController.php
new file mode 100644
index 000000000..b04d35efd
--- /dev/null
+++ b/src/Shopsys/ShopBundle/Controller/Styleguide/StyleguideController.php
@@ -0,0 +1,15 @@
+render('@ShopsysShop/Styleguide/styleguide.html.twig');
+ }
+}
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/AdministratorDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/AdministratorDataFixture.php
index bc7153236..c370663ec 100644
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/AdministratorDataFixture.php
+++ b/src/Shopsys/ShopBundle/DataFixtures/Demo/AdministratorDataFixture.php
@@ -16,7 +16,7 @@ class AdministratorDataFixture extends AbstractReferenceFixture
public const ADMINISTRATOR = 'administrator_administrator';
/**
- * @var \Shopsys\FrameworkBundle\Model\Administrator\AdministratorFacade
+ * @var \Shopsys\ShopBundle\Model\Administrator\AdministratorFacade
*/
protected $administratorFacade;
@@ -26,7 +26,7 @@ class AdministratorDataFixture extends AbstractReferenceFixture
private $administratorDataFactory;
/**
- * @param \Shopsys\FrameworkBundle\Model\Administrator\AdministratorFacade $administratorFacade
+ * @param \Shopsys\ShopBundle\Model\Administrator\AdministratorFacade $administratorFacade
* @param \Shopsys\FrameworkBundle\Model\Administrator\AdministratorDataFactoryInterface $administratorDataFactory
*/
public function __construct(AdministratorFacade $administratorFacade, AdministratorDataFactoryInterface $administratorDataFactory)
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/AdvertDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/AdvertDataFixture.php
index d8e74e170..4ad6ce4f4 100644
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/AdvertDataFixture.php
+++ b/src/Shopsys/ShopBundle/DataFixtures/Demo/AdvertDataFixture.php
@@ -6,6 +6,7 @@
use Doctrine\Common\Persistence\ObjectManager;
use Shopsys\FrameworkBundle\Component\DataFixture\AbstractReferenceFixture;
+use Shopsys\FrameworkBundle\Component\Domain\Domain;
use Shopsys\FrameworkBundle\Model\Advert\Advert;
use Shopsys\FrameworkBundle\Model\Advert\AdvertDataFactoryInterface;
use Shopsys\FrameworkBundle\Model\Advert\AdvertFacade;
@@ -38,12 +39,12 @@ public function __construct(AdvertFacade $advertFacade, AdvertDataFactoryInterfa
public function load(ObjectManager $manager)
{
$advertData = $this->advertDataFactory->create();
- $advertData->domainId = 1;
- $advertData->name = 'Demo advert';
+ $advertData->domainId = Domain::FIRST_DOMAIN_ID;
+ $advertData->name = t('Demo advert', [], 'dataFixtures');
$advertData->type = Advert::TYPE_CODE;
$advertData->hidden = false;
$advertData->positionName = 'leftSidebar';
- $advertData->code = '';
+ $advertData->code = '';
$this->advertFacade->create($advertData);
}
}
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/ArticleDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/ArticleDataFixture.php
index aba7eac9d..0aa3c57cc 100644
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/ArticleDataFixture.php
+++ b/src/Shopsys/ShopBundle/DataFixtures/Demo/ArticleDataFixture.php
@@ -14,9 +14,14 @@
class ArticleDataFixture extends AbstractReferenceFixture
{
- public const ARTICLE_TERMS_AND_CONDITIONS_1 = 'article_terms_and_conditions_1';
- public const ARTICLE_PRIVACY_POLICY_1 = 'article_privacy_policy_1';
- public const ARTICLE_COOKIES_1 = 'article_cookies_1';
+ public const ARTICLE_TERMS_AND_CONDITIONS = 'article_terms_and_conditions';
+ public const ARTICLE_PRIVACY_POLICY = 'article_privacy_policy';
+ public const ARTICLE_COOKIES = 'article_cookies';
+
+ protected const ATTRIBUTE_NAME_KEY = 'name';
+ protected const ATTRIBUTE_TEXT_KEY = 'text';
+ protected const ATTRIBUTE_PLACEMENT_KEY = 'placement';
+ protected const REFERENCE_NAME_KEY = 'referenceName';
/**
* @var \Shopsys\FrameworkBundle\Model\Article\ArticleFacade
@@ -24,69 +29,128 @@ class ArticleDataFixture extends AbstractReferenceFixture
protected $articleFacade;
/**
- * @var \Shopsys\FrameworkBundle\Model\Article\ArticleDataFactoryInterface
+ * @var \Shopsys\ShopBundle\Model\Article\ArticleDataFactory
*/
protected $articleDataFactory;
+ /**
+ * @var \Shopsys\FrameworkBundle\Component\Domain\Domain
+ */
+ protected $domain;
+
/**
* @param \Shopsys\FrameworkBundle\Model\Article\ArticleFacade $articleFacade
- * @param \Shopsys\FrameworkBundle\Model\Article\ArticleDataFactoryInterface $articleDataFactory
+ * @param \Shopsys\ShopBundle\Model\Article\ArticleDataFactory $articleDataFactory
+ * @param \Shopsys\FrameworkBundle\Component\Domain\Domain $domain
*/
- public function __construct(ArticleFacade $articleFacade, ArticleDataFactoryInterface $articleDataFactory)
- {
+ public function __construct(
+ ArticleFacade $articleFacade,
+ ArticleDataFactoryInterface $articleDataFactory,
+ Domain $domain
+ ) {
$this->articleFacade = $articleFacade;
$this->articleDataFactory = $articleDataFactory;
+ $this->domain = $domain;
}
/**
* @param \Doctrine\Common\Persistence\ObjectManager $manager
*/
public function load(ObjectManager $manager)
+ {
+ foreach ($this->domain->getAll() as $domainConfig) {
+ $data = $this->getDataForArticles($domainConfig->getLocale());
+ $this->createArticlesFromArray($data, $domainConfig->getId());
+ }
+
+ if ($this->domain->isMultidomain()) {
+ $this->changeDataForSecondDomain();
+ }
+ }
+
+ /**
+ * @param string $locale
+ * @return string[][]
+ */
+ protected function getDataForArticles(string $locale): array
+ {
+ return [
+ [
+ self::ATTRIBUTE_NAME_KEY => t('News', [], 'dataFixtures', $locale),
+ self::ATTRIBUTE_TEXT_KEY => t('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus felis nisi, tincidunt sollicitudin augue eu, laoreet blandit sem. Donec rutrum augue a elit imperdiet, eu vehicula tortor porta. Vivamus pulvinar sem non auctor dictum. Morbi eleifend semper enim, eu faucibus tortor posuere vitae. Donec tincidunt ipsum ullamcorper nisi accumsan tincidunt. Aenean sed velit massa. Nullam interdum eget est ut convallis. Vestibulum et mauris condimentum, rutrum sem congue, suscipit arcu.\nSed tristique vehicula ipsum, ut vulputate tortor feugiat eu. Vivamus convallis quam vulputate faucibus facilisis. Curabitur tincidunt pulvinar leo, eu dapibus augue lacinia a. Fusce sed tincidunt nunc. Morbi a nisi a odio pharetra laoreet nec eget quam. In in nisl tortor. Ut fringilla vitae lectus eu venenatis. Nullam interdum sed odio a posuere. Fusce pellentesque dui vel tortor blandit, a dictum nunc congue.', [], 'dataFixtures', $locale),
+ self::ATTRIBUTE_PLACEMENT_KEY => Article::PLACEMENT_TOP_MENU,
+ ], [
+ self::ATTRIBUTE_NAME_KEY => t('Shopping guide', [], 'dataFixtures', $locale),
+ self::ATTRIBUTE_TEXT_KEY => t('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus felis nisi, tincidunt sollicitudin augue eu, laoreet blandit sem. Donec rutrum augue a elit imperdiet, eu vehicula tortor porta. Vivamus pulvinar sem non auctor dictum. Morbi eleifend semper enim, eu faucibus tortor posuere vitae. Donec tincidunt ipsum ullamcorper nisi accumsan tincidunt. Aenean sed velit massa. Nullam interdum eget est ut convallis. Vestibulum et mauris condimentum, rutrum sem congue, suscipit arcu.\nSed tristique vehicula ipsum, ut vulputate tortor feugiat eu. Vivamus convallis quam vulputate faucibus facilisis. Curabitur tincidunt pulvinar leo, eu dapibus augue lacinia a. Fusce sed tincidunt nunc. Morbi a nisi a odio pharetra laoreet nec eget quam. In in nisl tortor. Ut fringilla vitae lectus eu venenatis. Nullam interdum sed odio a posuere. Fusce pellentesque dui vel tortor blandit, a dictum nunc congue.', [], 'dataFixtures', $locale),
+ self::ATTRIBUTE_PLACEMENT_KEY => Article::PLACEMENT_TOP_MENU,
+ ], [
+ self::ATTRIBUTE_NAME_KEY => t('Terms and conditions', [], 'dataFixtures', $locale),
+ self::ATTRIBUTE_TEXT_KEY => t('Morbi posuere mauris dolor, quis accumsan dolor ullamcorper eget. Phasellus at elementum magna, et pretium neque. Praesent tristique lorem mi, eget varius quam aliquam eget. Vivamus ultrices interdum nisi, sed placerat lectus fermentum non. Phasellus ac quam vitae nisi aliquam vestibulum. Sed rhoncus tortor a arcu sagittis placerat. Nulla lectus nunc, ultrices ac faucibus sed, accumsan nec diam. Nam auctor neque quis tincidunt tempus. Nunc eget risus tristique, lobortis metus vitae, pellentesque leo. Vivamus placerat turpis ac dolor vehicula tincidunt. Sed venenatis, ante id ultrices convallis, lacus elit porttitor dolor, non porta risus ipsum ac justo. Integer id pretium quam, id placerat nulla.', [], 'dataFixtures', $locale),
+ self::ATTRIBUTE_PLACEMENT_KEY => Article::PLACEMENT_FOOTER,
+ self::REFERENCE_NAME_KEY => self::ARTICLE_TERMS_AND_CONDITIONS,
+ ], [
+ self::ATTRIBUTE_NAME_KEY => t('Privacy policy', [], 'dataFixtures', $locale),
+ self::ATTRIBUTE_TEXT_KEY => t('Morbi posuere mauris dolor, quis accumsan dolor ullamcorper eget. Phasellus at elementum magna, et pretium neque. Praesent tristique lorem mi, eget varius quam aliquam eget. Vivamus ultrices interdum nisi, sed placerat lectus fermentum non. Phasellus ac quam vitae nisi aliquam vestibulum. Sed rhoncus tortor a arcu sagittis placerat. Nulla lectus nunc, ultrices ac faucibus sed, accumsan nec diam. Nam auctor neque quis tincidunt tempus. Nunc eget risus tristique, lobortis metus vitae, pellentesque leo. Vivamus placerat turpis ac dolor vehicula tincidunt. Sed venenatis, ante id ultrices convallis, lacus elit porttitor dolor, non porta risus ipsum ac justo. Integer id pretium quam, id placerat nulla.', [], 'dataFixtures', $locale),
+ self::ATTRIBUTE_PLACEMENT_KEY => Article::PLACEMENT_NONE,
+ self::REFERENCE_NAME_KEY => self::ARTICLE_PRIVACY_POLICY,
+ ], [
+ self::ATTRIBUTE_NAME_KEY => t('Information about cookies', [], 'dataFixtures', $locale),
+ self::ATTRIBUTE_TEXT_KEY => t('Morbi posuere mauris dolor, quis accumsan dolor ullamcorper eget. Phasellus at elementum magna, et pretium neque. Praesent tristique lorem mi, eget varius quam aliquam eget. Vivamus ultrices interdum nisi, sed placerat lectus fermentum non. Phasellus ac quam vitae nisi aliquam vestibulum. Sed rhoncus tortor a arcu sagittis placerat. Nulla lectus nunc, ultrices ac faucibus sed, accumsan nec diam. Nam auctor neque quis tincidunt tempus. Nunc eget risus tristique, lobortis metus vitae, pellentesque leo. Vivamus placerat turpis ac dolor vehicula tincidunt. Sed venenatis, ante id ultrices convallis, lacus elit porttitor dolor, non porta risus ipsum ac justo. Integer id pretium quam, id placerat nulla.', [], 'dataFixtures', $locale),
+ self::ATTRIBUTE_PLACEMENT_KEY => Article::PLACEMENT_NONE,
+ self::REFERENCE_NAME_KEY => self::ARTICLE_COOKIES,
+ ], [
+ self::ATTRIBUTE_NAME_KEY => t('Contact', [], 'dataFixtures', $locale),
+ self::ATTRIBUTE_TEXT_KEY => t('Donec at dolor mi. Nullam ornare, massa in cursus imperdiet, felis nisl auctor ante, vel aliquet tortor lacus sit amet ipsum. Proin ultrices euismod elementum. Integer sodales hendrerit tortor, vel semper turpis interdum eu. Phasellus quam tortor, feugiat vel condimentum vel, tristique et ipsum. Duis blandit lectus in odio cursus rutrum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam pulvinar massa at imperdiet venenatis. Maecenas convallis lobortis quam in fringilla. Mauris gravida turpis eget sapien imperdiet pulvinar. Nunc velit urna, fringilla nec est sit amet, accumsan varius nunc. Morbi sed tincidunt diam, sit amet laoreet nisl. Nulla tempus id lectus non lacinia.\n\nVestibulum interdum adipiscing iaculis. Nunc posuere pharetra velit. Nunc ac ante non massa scelerisque blandit sit amet vel velit. Integer in massa sed augue pulvinar malesuada. Pellentesque laoreet orci augue, in fermentum nisl feugiat ut. Nunc congue et nisi a interdum. Aenean mauris mi, interdum vel lacus et, placerat gravida augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed sagittis ipsum et consequat euismod. Praesent a ipsum dapibus, aliquet justo a, consectetur magna. Phasellus imperdiet tempor laoreet. Sed a accumsan lacus, accumsan faucibus dolor. Praesent euismod justo quis ipsum aliquam suscipit. Sed quis blandit urna.', [], 'dataFixtures', $locale),
+ self::ATTRIBUTE_PLACEMENT_KEY => Article::PLACEMENT_FOOTER,
+ ],
+ ];
+ }
+
+ /**
+ * @param array $articles
+ * @param int $domainId
+ */
+ protected function createArticlesFromArray(array $articles, int $domainId): void
+ {
+ foreach ($articles as $article) {
+ $this->createArticleFromArray($article, $domainId);
+ }
+ }
+
+ /**
+ * @param array $data
+ * @param int $domainId
+ */
+ protected function createArticleFromArray(array $data, int $domainId): void
{
$articleData = $this->articleDataFactory->create();
- $articleData->domainId = Domain::FIRST_DOMAIN_ID;
-
- $articleData->name = 'News';
- $articleData->text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus felis nisi, tincidunt sollicitudin augue eu, laoreet blandit sem. Donec rutrum augue a elit imperdiet, eu vehicula tortor porta. Vivamus pulvinar sem non auctor dictum. Morbi eleifend semper enim, eu faucibus tortor posuere vitae. Donec tincidunt ipsum ullamcorper nisi accumsan tincidunt. Aenean sed velit massa. Nullam interdum eget est ut convallis. Vestibulum et mauris condimentum, rutrum sem congue, suscipit arcu.\nSed tristique vehicula ipsum, ut vulputate tortor feugiat eu. Vivamus convallis quam vulputate faucibus facilisis. Curabitur tincidunt pulvinar leo, eu dapibus augue lacinia a. Fusce sed tincidunt nunc. Morbi a nisi a odio pharetra laoreet nec eget quam. In in nisl tortor. Ut fringilla vitae lectus eu venenatis. Nullam interdum sed odio a posuere. Fusce pellentesque dui vel tortor blandit, a dictum nunc congue.';
- $articleData->placement = Article::PLACEMENT_TOP_MENU;
- $articleData->hidden = false;
- $this->createArticle($articleData);
-
- $articleData->name = 'Shopping guide';
- $articleData->text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus felis nisi, tincidunt sollicitudin augue eu, laoreet blandit sem. Donec rutrum augue a elit imperdiet, eu vehicula tortor porta. Vivamus pulvinar sem non auctor dictum. Morbi eleifend semper enim, eu faucibus tortor posuere vitae. Donec tincidunt ipsum ullamcorper nisi accumsan tincidunt. Aenean sed velit massa. Nullam interdum eget est ut convallis. Vestibulum et mauris condimentum, rutrum sem congue, suscipit arcu.\nSed tristique vehicula ipsum, ut vulputate tortor feugiat eu. Vivamus convallis quam vulputate faucibus facilisis. Curabitur tincidunt pulvinar leo, eu dapibus augue lacinia a. Fusce sed tincidunt nunc. Morbi a nisi a odio pharetra laoreet nec eget quam. In in nisl tortor. Ut fringilla vitae lectus eu venenatis. Nullam interdum sed odio a posuere. Fusce pellentesque dui vel tortor blandit, a dictum nunc congue.';
- $articleData->placement = Article::PLACEMENT_TOP_MENU;
- $this->createArticle($articleData);
-
- $articleData->name = 'Terms and conditions';
- $articleData->text = 'Morbi posuere mauris dolor, quis accumsan dolor ullamcorper eget. Phasellus at elementum magna, et pretium neque. Praesent tristique lorem mi, eget varius quam aliquam eget. Vivamus ultrices interdum nisi, sed placerat lectus fermentum non. Phasellus ac quam vitae nisi aliquam vestibulum. Sed rhoncus tortor a arcu sagittis placerat. Nulla lectus nunc, ultrices ac faucibus sed, accumsan nec diam. Nam auctor neque quis tincidunt tempus. Nunc eget risus tristique, lobortis metus vitae, pellentesque leo. Vivamus placerat turpis ac dolor vehicula tincidunt. Sed venenatis, ante id ultrices convallis, lacus elit porttitor dolor, non porta risus ipsum ac justo. Integer id pretium quam, id placerat nulla.';
- $articleData->placement = Article::PLACEMENT_FOOTER;
- $this->createArticle($articleData, self::ARTICLE_TERMS_AND_CONDITIONS_1);
-
- $articleData->name = 'Privacy policy';
- $articleData->text = 'Morbi posuere mauris dolor, quis accumsan dolor ullamcorper eget. Phasellus at elementum magna, et pretium neque. Praesent tristique lorem mi, eget varius quam aliquam eget. Vivamus ultrices interdum nisi, sed placerat lectus fermentum non. Phasellus ac quam vitae nisi aliquam vestibulum. Sed rhoncus tortor a arcu sagittis placerat. Nulla lectus nunc, ultrices ac faucibus sed, accumsan nec diam. Nam auctor neque quis tincidunt tempus. Nunc eget risus tristique, lobortis metus vitae, pellentesque leo. Vivamus placerat turpis ac dolor vehicula tincidunt. Sed venenatis, ante id ultrices convallis, lacus elit porttitor dolor, non porta risus ipsum ac justo. Integer id pretium quam, id placerat nulla.';
- $articleData->placement = Article::PLACEMENT_NONE;
- $this->createArticle($articleData, self::ARTICLE_PRIVACY_POLICY_1);
-
- $articleData->name = 'Information about cookies';
- $articleData->text = 'Morbi posuere mauris dolor, quis accumsan dolor ullamcorper eget. Phasellus at elementum magna, et pretium neque. Praesent tristique lorem mi, eget varius quam aliquam eget. Vivamus ultrices interdum nisi, sed placerat lectus fermentum non. Phasellus ac quam vitae nisi aliquam vestibulum. Sed rhoncus tortor a arcu sagittis placerat. Nulla lectus nunc, ultrices ac faucibus sed, accumsan nec diam. Nam auctor neque quis tincidunt tempus. Nunc eget risus tristique, lobortis metus vitae, pellentesque leo. Vivamus placerat turpis ac dolor vehicula tincidunt. Sed venenatis, ante id ultrices convallis, lacus elit porttitor dolor, non porta risus ipsum ac justo. Integer id pretium quam, id placerat nulla.';
- $articleData->placement = Article::PLACEMENT_NONE;
- $this->createArticle($articleData, self::ARTICLE_COOKIES_1);
-
- $articleData->name = 'Contact';
- $articleData->text = 'Donec at dolor mi. Nullam ornare, massa in cursus imperdiet, felis nisl auctor ante, vel aliquet tortor lacus sit amet ipsum. Proin ultrices euismod elementum. Integer sodales hendrerit tortor, vel semper turpis interdum eu. Phasellus quam tortor, feugiat vel condimentum vel, tristique et ipsum. Duis blandit lectus in odio cursus rutrum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam pulvinar massa at imperdiet venenatis. Maecenas convallis lobortis quam in fringilla. Mauris gravida turpis eget sapien imperdiet pulvinar. Nunc velit urna, fringilla nec est sit amet, accumsan varius nunc. Morbi sed tincidunt diam, sit amet laoreet nisl. Nulla tempus id lectus non lacinia.\n\nVestibulum interdum adipiscing iaculis. Nunc posuere pharetra velit. Nunc ac ante non massa scelerisque blandit sit amet vel velit. Integer in massa sed augue pulvinar malesuada. Pellentesque laoreet orci augue, in fermentum nisl feugiat ut. Nunc congue et nisi a interdum. Aenean mauris mi, interdum vel lacus et, placerat gravida augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed sagittis ipsum et consequat euismod. Praesent a ipsum dapibus, aliquet justo a, consectetur magna. Phasellus imperdiet tempor laoreet. Sed a accumsan lacus, accumsan faucibus dolor. Praesent euismod justo quis ipsum aliquam suscipit. Sed quis blandit urna.';
- $articleData->placement = Article::PLACEMENT_FOOTER;
- $this->createArticle($articleData);
+ $articleData->domainId = $domainId;
+ $articleData->name = $data[self::ATTRIBUTE_NAME_KEY];
+ $articleData->text = $data[self::ATTRIBUTE_TEXT_KEY];
+ $articleData->placement = $data[self::ATTRIBUTE_PLACEMENT_KEY];
+
+ $this->createArticleFromArticleData($articleData, $data[self::REFERENCE_NAME_KEY] ?? null);
}
/**
- * @param \Shopsys\FrameworkBundle\Model\Article\ArticleData $articleData
+ * @param \Shopsys\ShopBundle\Model\Article\ArticleData $articleData
* @param string|null $referenceName
*/
- protected function createArticle(ArticleData $articleData, $referenceName = null)
+ protected function createArticleFromArticleData(ArticleData $articleData, ?string $referenceName = null): void
{
$article = $this->articleFacade->create($articleData);
if ($referenceName !== null) {
- $this->addReference($referenceName, $article);
+ $this->addReferenceForDomain($referenceName, $article, $articleData->domainId);
}
}
+
+ protected function changeDataForSecondDomain()
+ {
+ /** @var \Shopsys\ShopBundle\Model\Article\Article $cookiesArticle */
+ $cookiesArticle = $this->getReferenceForDomain(self::ARTICLE_COOKIES, Domain::SECOND_DOMAIN_ID);
+ $cookiesArticleData = $this->articleDataFactory->createFromArticle($cookiesArticle);
+ $cookiesArticleData->placement = Article::PLACEMENT_FOOTER;
+
+ $this->articleFacade->edit($cookiesArticle->getId(), $cookiesArticleData);
+ }
}
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/AvailabilityDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/AvailabilityDataFixture.php
index ba777f8d3..fcb346224 100644
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/AvailabilityDataFixture.php
+++ b/src/Shopsys/ShopBundle/DataFixtures/Demo/AvailabilityDataFixture.php
@@ -6,6 +6,7 @@
use Doctrine\Common\Persistence\ObjectManager;
use Shopsys\FrameworkBundle\Component\DataFixture\AbstractReferenceFixture;
+use Shopsys\FrameworkBundle\Component\Domain\Domain;
use Shopsys\FrameworkBundle\Component\Setting\Setting;
use Shopsys\FrameworkBundle\Model\Product\Availability\AvailabilityData;
use Shopsys\FrameworkBundle\Model\Product\Availability\AvailabilityDataFactoryInterface;
@@ -33,19 +34,27 @@ class AvailabilityDataFixture extends AbstractReferenceFixture
*/
protected $setting;
+ /**
+ * @var \Shopsys\FrameworkBundle\Component\Domain\Domain
+ */
+ protected $domain;
+
/**
* @param \Shopsys\FrameworkBundle\Model\Product\Availability\AvailabilityFacade $availabilityFacade
* @param \Shopsys\FrameworkBundle\Model\Product\Availability\AvailabilityDataFactoryInterface $availabilityDataFactory
* @param \Shopsys\FrameworkBundle\Component\Setting\Setting $setting
+ * @param \Shopsys\FrameworkBundle\Component\Domain\Domain $domain
*/
public function __construct(
AvailabilityFacade $availabilityFacade,
AvailabilityDataFactoryInterface $availabilityDataFactory,
- Setting $setting
+ Setting $setting,
+ Domain $domain
) {
$this->availabilityFacade = $availabilityFacade;
$this->availabilityDataFactory = $availabilityDataFactory;
$this->setting = $setting;
+ $this->domain = $domain;
}
/**
@@ -54,20 +63,33 @@ public function __construct(
public function load(ObjectManager $manager)
{
$availabilityData = $this->availabilityDataFactory->create();
- $availabilityData->name = ['cs' => 'Připravujeme', 'en' => 'Preparing', 'de' => '(DE) Preparing'];
+
+ foreach ($this->domain->getAllLocales() as $locale) {
+ $availabilityData->name[$locale] = t('Preparing', [], 'dataFixtures', $locale);
+ }
+
$availabilityData->dispatchTime = 14;
$this->createAvailability($availabilityData, self::AVAILABILITY_PREPARING);
- $availabilityData->name = ['cs' => 'Skladem', 'en' => 'In stock', 'de' => '(DE) In stock'];
+ foreach ($this->domain->getAllLocales() as $locale) {
+ $availabilityData->name[$locale] = t('In stock', [], 'dataFixtures', $locale);
+ }
+
$availabilityData->dispatchTime = 0;
$inStockAvailability = $this->createAvailability($availabilityData, self::AVAILABILITY_IN_STOCK);
$this->setting->set(Setting::DEFAULT_AVAILABILITY_IN_STOCK, $inStockAvailability->getId());
- $availabilityData->name = ['cs' => 'Na dotaz', 'en' => 'On request', 'de' => '(DE) On request'];
+ foreach ($this->domain->getAllLocales() as $locale) {
+ $availabilityData->name[$locale] = t('On request', [], 'dataFixtures', $locale);
+ }
+
$availabilityData->dispatchTime = 7;
$this->createAvailability($availabilityData, self::AVAILABILITY_ON_REQUEST);
- $availabilityData->name = ['cs' => 'Nedostupné', 'en' => 'Out of stock', 'de' => '(DE) Out of stock'];
+ foreach ($this->domain->getAllLocales() as $locale) {
+ $availabilityData->name[$locale] = t('Out of stock', [], 'dataFixtures', $locale);
+ }
+
$availabilityData->dispatchTime = null;
$this->createAvailability($availabilityData, self::AVAILABILITY_OUT_OF_STOCK);
}
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/BestsellingProductDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/BestsellingProductDataFixture.php
index c94afe2be..7f6311b03 100644
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/BestsellingProductDataFixture.php
+++ b/src/Shopsys/ShopBundle/DataFixtures/Demo/BestsellingProductDataFixture.php
@@ -12,16 +12,26 @@
class BestsellingProductDataFixture extends AbstractReferenceFixture implements DependentFixtureInterface
{
- /** @var \Shopsys\FrameworkBundle\Model\Product\BestsellingProduct\ManualBestsellingProductFacade */
+ /**
+ * @var \Shopsys\FrameworkBundle\Model\Product\BestsellingProduct\ManualBestsellingProductFacade
+ */
protected $manualBestsellingProductFacade;
+ /**
+ * @var \Shopsys\FrameworkBundle\Component\Domain\Domain
+ */
+ protected $domain;
+
/**
* @param \Shopsys\FrameworkBundle\Model\Product\BestsellingProduct\ManualBestsellingProductFacade $manualBestsellingProductFacade
+ * @param \Shopsys\FrameworkBundle\Component\Domain\Domain $domain
*/
public function __construct(
- ManualBestsellingProductFacade $manualBestsellingProductFacade
+ ManualBestsellingProductFacade $manualBestsellingProductFacade,
+ Domain $domain
) {
$this->manualBestsellingProductFacade = $manualBestsellingProductFacade;
+ $this->domain = $domain;
}
/**
@@ -29,15 +39,23 @@ public function __construct(
*/
public function load(ObjectManager $manager)
{
- $this->manualBestsellingProductFacade->edit(
- $this->getReference(CategoryDataFixture::CATEGORY_PHOTO),
- Domain::FIRST_DOMAIN_ID,
- [
- 0 => $this->getReference(ProductDataFixture::PRODUCT_PREFIX . '7'),
- 2 => $this->getReference(ProductDataFixture::PRODUCT_PREFIX . '8'),
- 8 => $this->getReference(ProductDataFixture::PRODUCT_PREFIX . '5'),
- ]
- );
+ foreach ($this->domain->getAll() as $domainConfig) {
+ $domainId = $domainConfig->getId();
+ if ($domainId !== Domain::SECOND_DOMAIN_ID) {
+ $productsIndexedByPosition = [
+ 0 => $this->getReference(ProductDataFixture::PRODUCT_PREFIX . '7'),
+ 2 => $this->getReference(ProductDataFixture::PRODUCT_PREFIX . '8'),
+ 8 => $this->getReference(ProductDataFixture::PRODUCT_PREFIX . '5'),
+ ];
+ } else {
+ $productsIndexedByPosition = [$this->getReference(ProductDataFixture::PRODUCT_PREFIX . '7')];
+ }
+ $this->manualBestsellingProductFacade->edit(
+ $this->getReference(CategoryDataFixture::CATEGORY_PHOTO),
+ $domainId,
+ $productsIndexedByPosition
+ );
+ }
}
/**
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/BrandDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/BrandDataFixture.php
index 2f314a68e..8591ee2ac 100644
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/BrandDataFixture.php
+++ b/src/Shopsys/ShopBundle/DataFixtures/Demo/BrandDataFixture.php
@@ -6,6 +6,7 @@
use Doctrine\Common\Persistence\ObjectManager;
use Shopsys\FrameworkBundle\Component\DataFixture\AbstractReferenceFixture;
+use Shopsys\FrameworkBundle\Component\Domain\Domain;
use Shopsys\FrameworkBundle\Model\Product\Brand\BrandDataFactoryInterface;
use Shopsys\FrameworkBundle\Model\Product\Brand\BrandFacade;
@@ -42,14 +43,21 @@ class BrandDataFixture extends AbstractReferenceFixture
/** @var \Shopsys\FrameworkBundle\Model\Product\Brand\BrandDataFactoryInterface */
protected $brandDataFactory;
+ /**
+ * @var \Shopsys\FrameworkBundle\Component\Domain\Domain
+ */
+ protected $domain;
+
/**
* @param \Shopsys\FrameworkBundle\Model\Product\Brand\BrandFacade $brandFacade
* @param \Shopsys\FrameworkBundle\Model\Product\Brand\BrandDataFactoryInterface $brandDataFactory
+ * @param \Shopsys\FrameworkBundle\Component\Domain\Domain $domain
*/
- public function __construct(BrandFacade $brandFacade, BrandDataFactoryInterface $brandDataFactory)
+ public function __construct(BrandFacade $brandFacade, BrandDataFactoryInterface $brandDataFactory, Domain $domain)
{
$this->brandFacade = $brandFacade;
$this->brandDataFactory = $brandDataFactory;
+ $this->domain = $domain;
}
/**
@@ -61,10 +69,10 @@ public function load(ObjectManager $manager)
foreach ($this->getBrandNamesIndexedByBrandConstants() as $brandConstant => $brandName) {
$brandData->name = $brandName;
- $brandData->descriptions = [
- 'cs' => 'Toto je popis značky ' . $brandData->name . '.',
- 'en' => 'This is description of brand ' . $brandData->name . '.',
- ];
+
+ foreach ($this->domain->getAllLocales() as $locale) {
+ $brandData->descriptions[$locale] = t('This is description of brand %brandName%.', ['%brandName%' => $brandData->name], 'dataFixtures', $locale);
+ }
$brand = $this->brandFacade->create($brandData);
$this->addReference($brandConstant, $brand);
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/CategoryDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/CategoryDataFixture.php
index e7e7bf76f..4b5bd477f 100644
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/CategoryDataFixture.php
+++ b/src/Shopsys/ShopBundle/DataFixtures/Demo/CategoryDataFixture.php
@@ -31,7 +31,7 @@ class CategoryDataFixture extends AbstractReferenceFixture
protected $categoryFacade;
/**
- * @var \Shopsys\FrameworkBundle\Model\Category\CategoryDataFactoryInterface
+ * @var \Shopsys\ShopBundle\Model\Category\CategoryDataFactory
*/
protected $categoryDataFactory;
@@ -42,7 +42,7 @@ class CategoryDataFixture extends AbstractReferenceFixture
/**
* @param \Shopsys\FrameworkBundle\Model\Category\CategoryFacade $categoryFacade
- * @param \Shopsys\FrameworkBundle\Model\Category\CategoryDataFactoryInterface $categoryDataFactory
+ * @param \Shopsys\ShopBundle\Model\Category\CategoryDataFactory $categoryDataFactory
* @param \Shopsys\FrameworkBundle\Component\Domain\Domain $domain
*/
public function __construct(
@@ -63,197 +63,125 @@ public function load(ObjectManager $manager)
/**
* Root category is created in database migration.
* @see \Shopsys\FrameworkBundle\Migrations\Version20180603135345
+ * @var \Shopsys\ShopBundle\Model\Category\Category
*/
$rootCategory = $this->categoryFacade->getRootCategory();
$categoryData = $this->categoryDataFactory->create();
- $emptyDescriptionsForAllDomains = $this->createDomainKeyedArray();
- $categoryData->name = [
- 'cs' => 'Elektro',
- 'en' => 'Electronics',
- 'de' => '(DE) Electronics',
- ];
- $categoryData->descriptions = array_merge(
- $emptyDescriptionsForAllDomains,
- [
- Domain::FIRST_DOMAIN_ID => 'Our electronics include devices used for entertainment (flat screen TVs, DVD players, DVD movies, iPods, '
- . 'video games, remote control cars, etc.), communications (telephones, cell phones, e-mail-capable laptops, etc.) '
- . 'and home office activities (e.g., desktop computers, printers, paper shredders, etc.).',
- ]
- );
+ foreach ($this->domain->getAll() as $domainConfig) {
+ $locale = $domainConfig->getLocale();
+ $categoryData->name[$locale] = t('Electronics', [], 'dataFixtures', $locale);
+ $categoryData->descriptions[$domainConfig->getId()] = t('Our electronics include devices used for entertainment (flat screen TVs, DVD players, DVD movies, iPods, '
+ . 'video games, remote control cars, etc.), communications (telephones, cell phones, email-capable laptops, etc.) '
+ . 'and home office activities (e.g., desktop computers, printers, paper shredders, etc.).', [], 'dataFixtures', $locale);
+ }
$categoryData->parent = $rootCategory;
$this->createCategory($categoryData, self::CATEGORY_ELECTRONICS);
- $categoryData->name = [
- 'cs' => 'Televize, audio',
- 'en' => 'TV, audio',
- 'de' => '(DE) TV, audio',
- ];
- $categoryData->descriptions = array_merge(
- $emptyDescriptionsForAllDomains,
- [
- Domain::FIRST_DOMAIN_ID => 'Television or TV is a telecommunication medium used for transmitting sound with moving images in monochrome '
- . '(black-and-white), or in color, and in two or three dimensions',
- ]
- );
- $categoryData->parent = $this->getReference(self::CATEGORY_ELECTRONICS);
+ foreach ($this->domain->getAll() as $domainConfig) {
+ $locale = $domainConfig->getLocale();
+ $categoryData->name[$locale] = t('TV, audio', [], 'dataFixtures', $locale);
+ $categoryData->descriptions[$domainConfig->getId()] = t('Television or TV is a telecommunication medium used for transmitting sound with moving images in monochrome '
+ . '(black-and-white), or in color, and in two or three dimensions', [], 'dataFixtures', $locale);
+ }
+ $categoryElectronics = $this->getReference(self::CATEGORY_ELECTRONICS);
+ $categoryData->parent = $categoryElectronics;
$this->createCategory($categoryData, self::CATEGORY_TV);
- $categoryData->name = [
- 'cs' => 'Fotoaparáty',
- 'en' => 'Cameras & Photo',
- 'de' => '(DE) Cameras & Photo',
- ];
- $categoryData->descriptions = array_merge(
- $emptyDescriptionsForAllDomains,
- [
- Domain::FIRST_DOMAIN_ID => 'A camera is an optical instrument for recording or capturing images, which may be stored locally, '
- . 'transmitted to another location, or both.',
- ]
- );
+ foreach ($this->domain->getAll() as $domainConfig) {
+ $locale = $domainConfig->getLocale();
+ $categoryData->name[$locale] = t('Cameras & Photo', [], 'dataFixtures', $locale);
+ $categoryData->descriptions[$domainConfig->getId()] = t('A camera is an optical instrument for recording or capturing images, which may be stored locally, '
+ . 'transmitted to another location, or both.', [], 'dataFixtures', $locale);
+ }
$this->createCategory($categoryData, self::CATEGORY_PHOTO);
- $categoryData->name = [
- 'cs' => 'Tiskárny',
- 'en' => 'Printers',
- 'de' => '(DE) Printers',
- ];
- $categoryData->descriptions = array_merge(
- $emptyDescriptionsForAllDomains,
- [
- Domain::FIRST_DOMAIN_ID => 'A printer is a peripheral which makes a persistent human readable representation of graphics or text on paper '
- . 'or similar physical media.',
- ]
- );
+ foreach ($this->domain->getAll() as $domainConfig) {
+ $locale = $domainConfig->getLocale();
+ $categoryData->name[$locale] = t('Printers', [], 'dataFixtures', $locale);
+ $categoryData->descriptions[$domainConfig->getId()] = t('A printer is a peripheral which makes a persistent human readable representation of graphics or text on paper '
+ . 'or similar physical media.', [], 'dataFixtures', $locale);
+ }
$this->createCategory($categoryData, self::CATEGORY_PRINTERS);
- $categoryData->name = [
- 'cs' => 'Počítače & příslušenství',
- 'en' => 'Personal Computers & accessories',
- 'de' => '(DE) Personal Computers & accessories',
- ];
- $categoryData->descriptions = array_merge(
- $emptyDescriptionsForAllDomains,
- [
- Domain::FIRST_DOMAIN_ID => 'A personal computer (PC) is a general-purpose computer whose size, capabilities, and original sale price '
+ foreach ($this->domain->getAll() as $domainConfig) {
+ $locale = $domainConfig->getLocale();
+ $categoryData->name[$locale] = t('Personal Computers & accessories', [], 'dataFixtures', $locale);
+ $categoryData->descriptions[$domainConfig->getId()] = t('A personal computer (PC) is a general-purpose computer whose size, capabilities, and original sale price '
. 'make it useful for individuals, and is intended to be operated directly by an end-user with no intervening computer '
. 'time-sharing models that allowed larger, more expensive minicomputer and mainframe systems to be used by many people, '
- . 'usually at the same time.',
- ]
- );
+ . 'usually at the same time.', [], 'dataFixtures', $locale);
+ }
$this->createCategory($categoryData, self::CATEGORY_PC);
- $categoryData->name = [
- 'cs' => 'Mobilní telefony',
- 'en' => 'Mobile Phones',
- 'de' => '(DE) Mobile Phones',
- ];
- $categoryData->descriptions = array_merge(
- $emptyDescriptionsForAllDomains,
- [
- Domain::FIRST_DOMAIN_ID => 'A telephone is a telecommunications device that permits two or more users to conduct a conversation when they are '
+ foreach ($this->domain->getAll() as $domainConfig) {
+ $locale = $domainConfig->getLocale();
+ $categoryData->name[$locale] = t('Mobile Phones', [], 'dataFixtures', $locale);
+ $categoryData->descriptions[$domainConfig->getId()] = t('A telephone is a telecommunications device that permits two or more users to conduct a conversation when they are '
. 'too far apart to be heard directly. A telephone converts sound, typically and most efficiently the human voice, '
. 'into electronic signals suitable for transmission via cables or other transmission media over long distances, '
- . 'and replays such signals simultaneously in audible form to its user.',
- ]
- );
+ . 'and replays such signals simultaneously in audible form to its user.', [], 'dataFixtures', $locale);
+ }
$this->createCategory($categoryData, self::CATEGORY_PHONES);
- $categoryData->name = [
- 'cs' => 'Kávovary',
- 'en' => 'Coffee Machines',
- 'de' => '(DE) Coffee Machines',
- ];
- $categoryData->descriptions = array_merge(
- $emptyDescriptionsForAllDomains,
- [
- Domain::FIRST_DOMAIN_ID => 'Coffeemakers or coffee machines are cooking appliances used to brew coffee. While there are many different types '
+ foreach ($this->domain->getAll() as $domainConfig) {
+ $locale = $domainConfig->getLocale();
+ $categoryData->name[$locale] = t('Coffee Machines', [], 'dataFixtures', $locale);
+ $categoryData->descriptions[$domainConfig->getId()] = t('Coffeemakers or coffee machines are cooking appliances used to brew coffee. While there are many different types '
. 'of coffeemakers using a number of different brewing principles, in the most common devices, coffee grounds '
. 'are placed in a paper or metal filter inside a funnel, which is set over a glass or ceramic coffee pot, '
- . 'a cooking pot in the kettle family. Cold water is poured into a separate chamber, which is then heated up to the '
- . 'boiling point, and directed into the funnel.',
- ]
- );
+ . 'a cooking pot in the kettle family. Cold water is poured into a separate chamber, which is than heated up to the '
+ . 'boiling point, and directed into the funnel.', [], 'dataFixtures', $locale);
+ }
$this->createCategory($categoryData, self::CATEGORY_COFFEE);
- $categoryData->name = [
- 'cs' => 'Knihy',
- 'en' => 'Books',
- 'de' => '(DE) Books',
- ];
- $categoryData->descriptions = array_merge(
- $emptyDescriptionsForAllDomains,
- [
- Domain::FIRST_DOMAIN_ID => 'A book is a set of written, printed, illustrated, or blank sheets, made of ink, paper, parchment, or other '
+ foreach ($this->domain->getAll() as $domainConfig) {
+ $locale = $domainConfig->getLocale();
+ $categoryData->name[$locale] = t('Books', [], 'dataFixtures', $locale);
+ $categoryData->descriptions[$domainConfig->getId()] = t('A book is a set of written, printed, illustrated, or blank sheets, made of ink, paper, parchment, or other '
. 'materials, fastened together to hinge at one side. A single sheet within a book is a leaf, and each side of a leaf '
. 'is a page. A set of text-filled or illustrated pages produced in electronic format is known as an electronic book, '
- . 'or e-book.',
- ]
- );
+ . 'or e-book.', [], 'dataFixtures', $locale);
+ }
$categoryData->parent = $rootCategory;
$this->createCategory($categoryData, self::CATEGORY_BOOKS);
- $categoryData->name = [
- 'cs' => 'Hračky a další',
- 'en' => 'Toys',
- 'de' => '(DE) Toys',
- ];
- $categoryData->descriptions = array_merge(
- $emptyDescriptionsForAllDomains,
- [
- Domain::FIRST_DOMAIN_ID => 'A toy is an item that can be used for play. Toys are generally played with by children and pets. '
+ foreach ($this->domain->getAll() as $domainConfig) {
+ $locale = $domainConfig->getLocale();
+ $categoryData->name[$locale] = t('Toys', [], 'dataFixtures', $locale);
+ $categoryData->descriptions[$domainConfig->getId()] = t('A toy is an item that can be used for play. Toys are generally played with by children and pets. '
. 'Playing with toys is an enjoyable means of training young children for life in society. Different materials are '
- . 'used to make toys enjoyable to all ages. ',
- ]
- );
+ . 'used to make toys enjoyable to all ages.', [], 'dataFixtures', $locale);
+ }
$this->createCategory($categoryData, self::CATEGORY_TOYS);
- $categoryData->name = [
- 'cs' => 'Zahradní náčiní',
- 'en' => 'Garden tools',
- 'de' => '(DE) Garden tools',
- ];
- $categoryData->descriptions = array_merge(
- $emptyDescriptionsForAllDomains,
- [
- Domain::FIRST_DOMAIN_ID => 'A garden tool is any one of many tools made for gardens and gardening and overlaps with the range of tools '
- . 'made for agriculture and horticulture. Garden tools can also be hand tools and power tools.',
- ]
- );
+ foreach ($this->domain->getAll() as $domainConfig) {
+ $locale = $domainConfig->getLocale();
+ $categoryData->name[$locale] = t('Garden tools', [], 'dataFixtures', $locale);
+ $categoryData->descriptions[$domainConfig->getId()] = t('A garden tool is any one of many tools made for gardens and gardening and overlaps with the range of tools '
+ . 'made for agriculture and horticulture. Garden tools can also be hand tools and power tools.', [], 'dataFixtures', $locale);
+ }
$this->createCategory($categoryData, self::CATEGORY_GARDEN_TOOLS);
- $categoryData->name = [
- 'cs' => 'Jídlo',
- 'en' => 'Food',
- 'de' => '(DE) Food',
- ];
- $categoryData->descriptions = array_merge(
- $this->createDomainKeyedArray(),
- [
- Domain::FIRST_DOMAIN_ID => 'Food is any substance consumed to provide nutritional support for the body. It is usually of plant or '
- . 'animal origin, and contains essential nutrients, such as fats, proteins, vitamins, or minerals. The substance '
- . 'is ingested by an organism and assimilated by the organism\'s cells to provide energy, maintain life, '
- . 'or stimulate growth.',
- ]
- );
+ foreach ($this->domain->getAll() as $domainConfig) {
+ $locale = $domainConfig->getLocale();
+ $categoryData->name[$locale] = t('Food', [], 'dataFixtures', $locale);
+ $categoryData->descriptions[$domainConfig->getId()] = t('Food is any substance consumed to provide nutritional support for the body. It is usually of plant or '
+ . 'animal origin, and contains essential nutrients, such as fats, proteins, vitamins, or minerals. The substance '
+ . 'is ingested by an organism and assimilated by the organism\'s cells to provide energy, maintain life, '
+ . 'or stimulate growth.', [], 'dataFixtures', $locale);
+ }
$this->createCategory($categoryData, self::CATEGORY_FOOD);
}
/**
- * @return null[]
- */
- protected function createDomainKeyedArray(): array
- {
- return array_fill_keys($this->domain->getAllIds(), null);
- }
-
- /**
- * @param \Shopsys\FrameworkBundle\Model\Category\CategoryData $categoryData
+ * @param \Shopsys\ShopBundle\Model\Category\CategoryData $categoryData
* @param string|null $referenceName
- * @return \Shopsys\FrameworkBundle\Model\Category\Category
+ * @return \Shopsys\ShopBundle\Model\Category\Category
*/
protected function createCategory(CategoryData $categoryData, $referenceName = null)
{
+ /** @var \Shopsys\ShopBundle\Model\Category\Category $category */
$category = $this->categoryFacade->create($categoryData);
if ($referenceName !== null) {
$this->addReference($referenceName, $category);
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/CountryDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/CountryDataFixture.php
index a7d637149..732e35c58 100644
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/CountryDataFixture.php
+++ b/src/Shopsys/ShopBundle/DataFixtures/Demo/CountryDataFixture.php
@@ -6,6 +6,7 @@
use Doctrine\Common\Persistence\ObjectManager;
use Shopsys\FrameworkBundle\Component\DataFixture\AbstractReferenceFixture;
+use Shopsys\FrameworkBundle\Component\Domain\Domain;
use Shopsys\FrameworkBundle\Model\Country\CountryData;
use Shopsys\FrameworkBundle\Model\Country\CountryDataFactoryInterface;
use Shopsys\FrameworkBundle\Model\Country\CountryFacade;
@@ -25,14 +26,21 @@ class CountryDataFixture extends AbstractReferenceFixture
*/
protected $countryDataFactory;
+ /**
+ * @var \Shopsys\FrameworkBundle\Component\Domain\Domain
+ */
+ protected $domain;
+
/**
* @param \Shopsys\FrameworkBundle\Model\Country\CountryFacade $countryFacade
* @param \Shopsys\FrameworkBundle\Model\Country\CountryDataFactoryInterface $countryDataFactory
+ * @param \Shopsys\FrameworkBundle\Component\Domain\Domain $domain
*/
- public function __construct(CountryFacade $countryFacade, CountryDataFactoryInterface $countryDataFactory)
+ public function __construct(CountryFacade $countryFacade, CountryDataFactoryInterface $countryDataFactory, Domain $domain)
{
$this->countryFacade = $countryFacade;
$this->countryDataFactory = $countryDataFactory;
+ $this->domain = $domain;
}
/**
@@ -41,20 +49,20 @@ public function __construct(CountryFacade $countryFacade, CountryDataFactoryInte
public function load(ObjectManager $manager): void
{
$countryData = $this->countryDataFactory->create();
- $countryData->names = [
- 'cs' => 'Česká republika',
- 'en' => 'Czech republic',
- 'de' => 'Tschechische Republik',
- ];
+
+ foreach ($this->domain->getAllLocales() as $locale) {
+ $countryData->names[$locale] = t('Czech republic', [], 'dataFixtures', $locale);
+ }
+
$countryData->code = 'CZ';
$this->createCountry($countryData, self::COUNTRY_CZECH_REPUBLIC);
$countryData = $this->countryDataFactory->create();
- $countryData->names = [
- 'cs' => 'Slovenská republika',
- 'en' => 'Slovakia',
- 'de' => 'Slowakei',
- ];
+
+ foreach ($this->domain->getAllLocales() as $locale) {
+ $countryData->names[$locale] = t('Slovakia', [], 'dataFixtures', $locale);
+ }
+
$countryData->code = 'SK';
$this->createCountry($countryData, self::COUNTRY_SLOVAKIA);
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/CurrencyDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/CurrencyDataFixture.php
index 7e109029e..d9a7d04ae 100644
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/CurrencyDataFixture.php
+++ b/src/Shopsys/ShopBundle/DataFixtures/Demo/CurrencyDataFixture.php
@@ -6,6 +6,7 @@
use Doctrine\Common\Persistence\ObjectManager;
use Shopsys\FrameworkBundle\Component\DataFixture\AbstractReferenceFixture;
+use Shopsys\FrameworkBundle\Component\Domain\Domain;
use Shopsys\FrameworkBundle\Model\Pricing\Currency\Currency;
use Shopsys\FrameworkBundle\Model\Pricing\Currency\CurrencyDataFactoryInterface;
use Shopsys\FrameworkBundle\Model\Pricing\Currency\CurrencyFacade;
@@ -25,16 +26,24 @@ class CurrencyDataFixture extends AbstractReferenceFixture
*/
protected $currencyDataFactory;
+ /**
+ * @var \Shopsys\FrameworkBundle\Component\Domain\Domain
+ */
+ protected $domain;
+
/**
* @param \Shopsys\FrameworkBundle\Model\Pricing\Currency\CurrencyFacade $currencyFacade
* @param \Shopsys\FrameworkBundle\Model\Pricing\Currency\CurrencyDataFactoryInterface $currencyDataFactory
+ * @param \Shopsys\FrameworkBundle\Component\Domain\Domain $domain
*/
public function __construct(
CurrencyFacade $currencyFacade,
- CurrencyDataFactoryInterface $currencyDataFactory
+ CurrencyDataFactoryInterface $currencyDataFactory,
+ Domain $domain
) {
$this->currencyFacade = $currencyFacade;
$this->currencyDataFactory = $currencyDataFactory;
+ $this->domain = $domain;
}
/**
@@ -47,13 +56,21 @@ public function load(ObjectManager $manager)
* @see \Shopsys\FrameworkBundle\Migrations\Version20180603135342
*/
$currencyCzk = $this->currencyFacade->getById(1);
+ $currencyData = $this->currencyDataFactory->createFromCurrency($currencyCzk);
+ $currencyData->minFractionDigits = Currency::DEFAULT_MIN_FRACTION_DIGITS;
+ $currencyData->roundingType = Currency::ROUNDING_TYPE_INTEGER;
+ $currencyCzk = $this->currencyFacade->edit($currencyCzk->getId(), $currencyData);
$this->addReference(self::CURRENCY_CZK, $currencyCzk);
- $currencyData = $this->currencyDataFactory->create();
- $currencyData->name = 'Euro';
- $currencyData->code = Currency::CODE_EUR;
- $currencyData->exchangeRate = 25;
- $currencyEuro = $this->currencyFacade->create($currencyData);
- $this->addReference(self::CURRENCY_EUR, $currencyEuro);
+ if (count($this->domain->getAll()) > 1) {
+ $currencyData = $this->currencyDataFactory->create();
+ $currencyData->name = 'Euro';
+ $currencyData->code = Currency::CODE_EUR;
+ $currencyData->exchangeRate = '25';
+ $currencyData->minFractionDigits = Currency::DEFAULT_MIN_FRACTION_DIGITS;
+ $currencyData->roundingType = Currency::ROUNDING_TYPE_HUNDREDTHS;
+ $currencyEuro = $this->currencyFacade->create($currencyData);
+ $this->addReference(self::CURRENCY_EUR, $currencyEuro);
+ }
}
}
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/FlagDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/FlagDataFixture.php
index 825a503c7..64bb0c6e2 100644
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/FlagDataFixture.php
+++ b/src/Shopsys/ShopBundle/DataFixtures/Demo/FlagDataFixture.php
@@ -6,6 +6,7 @@
use Doctrine\Common\Persistence\ObjectManager;
use Shopsys\FrameworkBundle\Component\DataFixture\AbstractReferenceFixture;
+use Shopsys\FrameworkBundle\Component\Domain\Domain;
use Shopsys\FrameworkBundle\Model\Product\Flag\FlagData;
use Shopsys\FrameworkBundle\Model\Product\Flag\FlagDataFactoryInterface;
use Shopsys\FrameworkBundle\Model\Product\Flag\FlagFacade;
@@ -26,16 +27,24 @@ class FlagDataFixture extends AbstractReferenceFixture
*/
protected $flagDataFactory;
+ /**
+ * @var \Shopsys\FrameworkBundle\Component\Domain\Domain
+ */
+ protected $domain;
+
/**
* @param \Shopsys\FrameworkBundle\Model\Product\Flag\FlagFacade $flagFacade
* @param \Shopsys\FrameworkBundle\Model\Product\Flag\FlagDataFactoryInterface $flagDataFactory
+ * @param \Shopsys\FrameworkBundle\Component\Domain\Domain $domain
*/
public function __construct(
FlagFacade $flagFacade,
- FlagDataFactoryInterface $flagDataFactory
+ FlagDataFactoryInterface $flagDataFactory,
+ Domain $domain
) {
$this->flagFacade = $flagFacade;
$this->flagDataFactory = $flagDataFactory;
+ $this->domain = $domain;
}
/**
@@ -45,17 +54,26 @@ public function load(ObjectManager $manager)
{
$flagData = $this->flagDataFactory->create();
- $flagData->name = ['cs' => 'Novinka', 'en' => 'New', 'de' => '(DE) New'];
+ foreach ($this->domain->getAllLocales() as $locale) {
+ $flagData->name[$locale] = t('New [noun]', [], 'dataFixtures', $locale);
+ }
+
$flagData->rgbColor = '#efd6ff';
$flagData->visible = true;
$this->createFlag($flagData, self::FLAG_NEW_PRODUCT);
- $flagData->name = ['cs' => 'Nejprodávanější', 'en' => 'TOP', 'de' => '(DE) TOP'];
+ foreach ($this->domain->getAllLocales() as $locale) {
+ $flagData->name[$locale] = t('TOP', [], 'dataFixtures', $locale);
+ }
+
$flagData->rgbColor = '#d6fffa';
$flagData->visible = true;
$this->createFlag($flagData, self::FLAG_TOP_PRODUCT);
- $flagData->name = ['cs' => 'Akce', 'en' => 'Action', 'de' => '(DE) Action'];
+ foreach ($this->domain->getAllLocales() as $locale) {
+ $flagData->name[$locale] = t('Action', [], 'dataFixtures', $locale);
+ }
+
$flagData->rgbColor = '#f9ffd6';
$flagData->visible = true;
$this->createFlag($flagData, self::FLAG_ACTION_PRODUCT);
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/ImageDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/ImageDataFixture.php
index 9a42915ec..7c3c51cbc 100644
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/ImageDataFixture.php
+++ b/src/Shopsys/ShopBundle/DataFixtures/Demo/ImageDataFixture.php
@@ -32,7 +32,7 @@ class ImageDataFixture extends AbstractReferenceFixture implements DependentFixt
protected $targetDomainImagesDirectory;
/**
- * @var string
+ * @var \League\Flysystem\FilesystemInterface
*/
protected $filesystem;
@@ -138,8 +138,8 @@ protected function processBrandsImages()
];
foreach ($brandsImagesData as $imageId => $brandName) {
+ /** @var \Shopsys\FrameworkBundle\Model\Product\Brand\Brand $brand */
$brand = $this->getReference($brandName);
- /* @var $brand \Shopsys\FrameworkBundle\Model\Product\Brand\Brand */
$this->saveImageIntoDb($brand->getId(), 'brand', $imageId);
}
@@ -162,8 +162,8 @@ protected function processCategoriesImages()
];
foreach ($categoriesImagesData as $imageId => $categoryName) {
+ /** @var \Shopsys\ShopBundle\Model\Category\Category $category */
$category = $this->getReference($categoryName);
- /* @var $category \Shopsys\FrameworkBundle\Model\Category\Category */
$this->saveImageIntoDb($category->getId(), 'category', $imageId);
}
@@ -178,8 +178,8 @@ protected function processPaymentsImages()
];
foreach ($paymentsImagesData as $imageId => $paymentName) {
+ /** @var \Shopsys\FrameworkBundle\Model\Payment\Payment $payment */
$payment = $this->getReference($paymentName);
- /* @var $payment \Shopsys\FrameworkBundle\Model\Payment\Payment */
$this->saveImageIntoDb($payment->getId(), 'payment', $imageId);
}
@@ -194,8 +194,8 @@ protected function processTransportsImages()
];
foreach ($transportsImagesData as $imageId => $transportName) {
+ /** @var \Shopsys\ShopBundle\Model\Transport\Transport $transport */
$transport = $this->getReference($transportName);
- /* @var $transport \Shopsys\FrameworkBundle\Model\Transport\Transport */
$this->saveImageIntoDb($transport->getId(), 'transport', $imageId);
}
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/MailTemplateDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/MailTemplateDataFixture.php
index 366d4ec55..7e455520b 100644
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/MailTemplateDataFixture.php
+++ b/src/Shopsys/ShopBundle/DataFixtures/Demo/MailTemplateDataFixture.php
@@ -14,11 +14,6 @@
class MailTemplateDataFixture extends AbstractReferenceFixture
{
- /**
- * @var \Shopsys\FrameworkBundle\Component\Domain\Domain
- */
- protected $domain;
-
/**
* @var \Shopsys\FrameworkBundle\Model\Mail\MailTemplateFactoryInterface
*/
@@ -30,18 +25,23 @@ class MailTemplateDataFixture extends AbstractReferenceFixture
protected $mailTemplateDataFactory;
/**
- * @param \Shopsys\FrameworkBundle\Component\Domain\Domain $domain
+ * @var \Shopsys\FrameworkBundle\Component\Domain\Domain
+ */
+ protected $domain;
+
+ /**
* @param \Shopsys\FrameworkBundle\Model\Mail\MailTemplateFactoryInterface $mailTemplateFactory
* @param \Shopsys\FrameworkBundle\Model\Mail\MailTemplateDataFactoryInterface $mailTemplateDataFactory
+ * @param \Shopsys\FrameworkBundle\Component\Domain\Domain $domain
*/
public function __construct(
- Domain $domain,
MailTemplateFactoryInterface $mailTemplateFactory,
- MailTemplateDataFactoryInterface $mailTemplateDataFactory
+ MailTemplateDataFactoryInterface $mailTemplateDataFactory,
+ Domain $domain
) {
- $this->domain = $domain;
$this->mailTemplateFactory = $mailTemplateFactory;
$this->mailTemplateDataFactory = $mailTemplateDataFactory;
+ $this->domain = $domain;
}
/**
@@ -49,337 +49,116 @@ public function __construct(
*/
public function load(ObjectManager $manager)
{
- $domainUrl = $this->domain->getDomainConfigById(Domain::FIRST_DOMAIN_ID)->getUrl();
-
$mailTemplateData = $this->mailTemplateDataFactory->create();
$mailTemplateData->sendMail = true;
- $mailTemplateData->subject = 'Thank you for your order no. {number} placed at {date}';
- $mailTemplateData->body = '
-
-
-
-
-
-
Dear customer,
- Thank you for your order. Your order number {number} has been placed successfully. You can view the order status here. You will be contacted when the order state changes.
-
-
-
-
-
Shipping:
-
{transport}
-
-
-
Payment:
-
{payment}
-
-
-
Total price including VAT:
-
{total_price}
-
-
-
Note:
-
{note}
-
-
-
{products}
-
-
-
{transport_instructions}
-
-
-
{payment_instructions}
-
-
-
-
- Thank your for your purchase.
-
- Regards,
- Team Demoshop
';
-
- $this->createMailTemplate($manager, 'order_status_2', $mailTemplateData);
-
- $mailTemplateData->subject = 'Order status has changed';
- $mailTemplateData->body = '
-
-
-
-
-
-
Dear customer,
- Processing your order {number} has been finished. Thank you for your purchase.
-
- We will again look forward to your visit to {url}
-
-
- Regards,
- Team Demoshop
+ based on your email {email}, we are sending you a link to your personal details. By clicking on the link below, you will be taken to a page listing all the
+ personal details which we have in evidence in our online store {domain}.
+
+ To overview your personal information please click here - {url}
+ The link is valid for next 24 hours.
+ Best Regards
+ team of {domain}', [], 'dataFixtures', $locale);
+
+ $this->createMailTemplate($manager, MailTemplate::PERSONAL_DATA_ACCESS_NAME, $mailTemplateData, $domainId);
+
+ $mailTemplateData->subject = t('Personal information export - {domain}', [], 'dataFixtures', $locale);
+ $mailTemplateData->body = t('Dear customer,
+based on your email {email}, we are sending you a link where you can download your personal details registered on our online store in readable format. Clicking on the link will take you to a page where you’ll be able to download these informations, which we have in evidence in our online store {domain}.
+
+To download your personal information please click here - {url}
+The link is valid for next 24 hours.
+
+Best regards
+team of {domain}
+', [], 'dataFixtures', $locale);
+
+ $this->createMailTemplate($manager, MailTemplate::PERSONAL_DATA_EXPORT_NAME, $mailTemplateData, $domainId);
+ }
}
/**
- * @param \Doctrine\Common\Persistence\ObjectManager $manager
+ * @param \Shopsys\FrameworkBundle\Component\EntityExtension\EntityManagerDecorator $manager
* @param mixed $name
* @param \Shopsys\FrameworkBundle\Model\Mail\MailTemplateData $mailTemplateData
+ * @param int $domainId
*/
- private function createMailTemplate(
+ protected function createMailTemplate(
ObjectManager $manager,
$name,
- MailTemplateData $mailTemplateData
+ MailTemplateData $mailTemplateData,
+ int $domainId
) {
$repository = $manager->getRepository(MailTemplate::class);
$mailTemplate = $repository->findOneBy([
'name' => $name,
- 'domainId' => Domain::FIRST_DOMAIN_ID,
+ 'domainId' => $domainId,
]);
if ($mailTemplate === null) {
- $mailTemplate = $this->mailTemplateFactory->create($name, Domain::FIRST_DOMAIN_ID, $mailTemplateData);
+ $mailTemplate = $this->mailTemplateFactory->create($name, $domainId, $mailTemplateData);
} else {
$mailTemplate->edit($mailTemplateData);
}
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/MultidomainArticleDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/MultidomainArticleDataFixture.php
deleted file mode 100644
index 3316e0fae..000000000
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/MultidomainArticleDataFixture.php
+++ /dev/null
@@ -1,122 +0,0 @@
-articleFacade = $articleFacade;
- $this->articleDataFactory = $articleDataFactory;
- $this->domain = $domain;
- }
-
- /**
- * @param \Doctrine\Common\Persistence\ObjectManager $manager
- */
- public function load(ObjectManager $manager)
- {
- foreach ($this->domain->getAllIdsExcludingFirstDomain() as $domainId) {
- $this->loadForDomain($domainId);
- }
- }
-
- /**
- * @param int $domainId
- */
- protected function loadForDomain(int $domainId)
- {
- $articleData = $this->articleDataFactory->create();
-
- $articleData->domainId = $domainId;
- $articleData->name = 'Novinky';
- $articleData->text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus felis nisi, tincidunt sollicitudin augue eu, laoreet blandit sem. Donec rutrum augue a elit imperdiet, eu vehicula tortor porta. Vivamus pulvinar sem non auctor dictum. Morbi eleifend semper enim, eu faucibus tortor posuere vitae. Donec tincidunt ipsum ullamcorper nisi accumsan tincidunt. Aenean sed velit massa. Nullam interdum eget est ut convallis. Vestibulum et mauris condimentum, rutrum sem congue, suscipit arcu.\nSed tristique vehicula ipsum, ut vulputate tortor feugiat eu. Vivamus convallis quam vulputate faucibus facilisis. Curabitur tincidunt pulvinar leo, eu dapibus augue lacinia a. Fusce sed tincidunt nunc. Morbi a nisi a odio pharetra laoreet nec eget quam. In in nisl tortor. Ut fringilla vitae lectus eu venenatis. Nullam interdum sed odio a posuere. Fusce pellentesque dui vel tortor blandit, a dictum nunc congue.';
- $articleData->placement = Article::PLACEMENT_TOP_MENU;
- $this->createArticle($articleData);
-
- $articleData->name = 'Jak nakupovat';
- $articleData->text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus felis nisi, tincidunt sollicitudin augue eu, laoreet blandit sem. Donec rutrum augue a elit imperdiet, eu vehicula tortor porta. Vivamus pulvinar sem non auctor dictum. Morbi eleifend semper enim, eu faucibus tortor posuere vitae. Donec tincidunt ipsum ullamcorper nisi accumsan tincidunt. Aenean sed velit massa. Nullam interdum eget est ut convallis. Vestibulum et mauris condimentum, rutrum sem congue, suscipit arcu.\nSed tristique vehicula ipsum, ut vulputate tortor feugiat eu. Vivamus convallis quam vulputate faucibus facilisis. Curabitur tincidunt pulvinar leo, eu dapibus augue lacinia a. Fusce sed tincidunt nunc. Morbi a nisi a odio pharetra laoreet nec eget quam. In in nisl tortor. Ut fringilla vitae lectus eu venenatis. Nullam interdum sed odio a posuere. Fusce pellentesque dui vel tortor blandit, a dictum nunc congue.';
- $articleData->placement = Article::PLACEMENT_TOP_MENU;
- $this->createArticle($articleData);
-
- $articleData->name = 'Obchodní podmínky';
- $articleData->text = 'Morbi posuere mauris dolor, quis accumsan dolor ullamcorper eget. Phasellus at elementum magna, et pretium neque. Praesent tristique lorem mi, eget varius quam aliquam eget. Vivamus ultrices interdum nisi, sed placerat lectus fermentum non. Phasellus ac quam vitae nisi aliquam vestibulum. Sed rhoncus tortor a arcu sagittis placerat. Nulla lectus nunc, ultrices ac faucibus sed, accumsan nec diam. Nam auctor neque quis tincidunt tempus. Nunc eget risus tristique, lobortis metus vitae, pellentesque leo. Vivamus placerat turpis ac dolor vehicula tincidunt. Sed venenatis, ante id ultrices convallis, lacus elit porttitor dolor, non porta risus ipsum ac justo. Integer id pretium quam, id placerat nulla.';
- $articleData->placement = Article::PLACEMENT_FOOTER;
- $this->createArticle($articleData, self::ARTICLE_TERMS_AND_CONDITIONS);
-
- $articleData->name = 'Zásady ochrany osobních údajů';
- $articleData->text = 'Morbi posuere mauris dolor, quis accumsan dolor ullamcorper eget. Phasellus at elementum magna, et pretium neque. Praesent tristique lorem mi, eget varius quam aliquam eget. Vivamus ultrices interdum nisi, sed placerat lectus fermentum non. Phasellus ac quam vitae nisi aliquam vestibulum. Sed rhoncus tortor a arcu sagittis placerat. Nulla lectus nunc, ultrices ac faucibus sed, accumsan nec diam. Nam auctor neque quis tincidunt tempus. Nunc eget risus tristique, lobortis metus vitae, pellentesque leo. Vivamus placerat turpis ac dolor vehicula tincidunt. Sed venenatis, ante id ultrices convallis, lacus elit porttitor dolor, non porta risus ipsum ac justo. Integer id pretium quam, id placerat nulla.';
- $articleData->placement = Article::PLACEMENT_NONE;
- $this->createArticle($articleData, self::ARTICLE_PRIVACY_POLICY);
-
- $articleData->name = 'Informace o cookies';
- $articleData->text = 'Morbi posuere mauris dolor, quis accumsan dolor ullamcorper eget. Phasellus at elementum magna, et pretium neque. Praesent tristique lorem mi, eget varius quam aliquam eget. Vivamus ultrices interdum nisi, sed placerat lectus fermentum non. Phasellus ac quam vitae nisi aliquam vestibulum. Sed rhoncus tortor a arcu sagittis placerat. Nulla lectus nunc, ultrices ac faucibus sed, accumsan nec diam. Nam auctor neque quis tincidunt tempus. Nunc eget risus tristique, lobortis metus vitae, pellentesque leo. Vivamus placerat turpis ac dolor vehicula tincidunt. Sed venenatis, ante id ultrices convallis, lacus elit porttitor dolor, non porta risus ipsum ac justo. Integer id pretium quam, id placerat nulla.';
- $articleData->placement = Article::PLACEMENT_FOOTER;
- $this->createArticle($articleData, self::ARTICLE_COOKIES);
-
- $articleData->name = 'Kontakty';
- $articleData->text = 'Donec at dolor mi. Nullam ornare, massa in cursus imperdiet, felis nisl auctor ante, vel aliquet tortor lacus sit amet ipsum. Proin ultrices euismod elementum. Integer sodales hendrerit tortor, vel semper turpis interdum eu. Phasellus quam tortor, feugiat vel condimentum vel, tristique et ipsum. Duis blandit lectus in odio cursus rutrum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam pulvinar massa at imperdiet venenatis. Maecenas convallis lobortis quam in fringilla. Mauris gravida turpis eget sapien imperdiet pulvinar. Nunc velit urna, fringilla nec est sit amet, accumsan varius nunc. Morbi sed tincidunt diam, sit amet laoreet nisl. Nulla tempus id lectus non lacinia.\n\nVestibulum interdum adipiscing iaculis. Nunc posuere pharetra velit. Nunc ac ante non massa scelerisque blandit sit amet vel velit. Integer in massa sed augue pulvinar malesuada. Pellentesque laoreet orci augue, in fermentum nisl feugiat ut. Nunc congue et nisi a interdum. Aenean mauris mi, interdum vel lacus et, placerat gravida augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed sagittis ipsum et consequat euismod. Praesent a ipsum dapibus, aliquet justo a, consectetur magna. Phasellus imperdiet tempor laoreet. Sed a accumsan lacus, accumsan faucibus dolor. Praesent euismod justo quis ipsum aliquam suscipit. Sed quis blandit urna.';
- $articleData->placement = Article::PLACEMENT_FOOTER;
- $this->createArticle($articleData);
- }
-
- /**
- * @param \Shopsys\FrameworkBundle\Model\Article\ArticleData $articleData
- * @param string|null $referenceName
- */
- protected function createArticle(ArticleData $articleData, ?string $referenceName = null)
- {
- $article = $this->articleFacade->create($articleData);
- if ($referenceName !== null) {
- $this->addReferenceForDomain($referenceName, $article, $articleData->domainId);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDependencies()
- {
- return [
- ArticleDataFixture::class,
- ];
- }
-}
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/MultidomainBestsellingProductDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/MultidomainBestsellingProductDataFixture.php
deleted file mode 100644
index ba4719244..000000000
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/MultidomainBestsellingProductDataFixture.php
+++ /dev/null
@@ -1,68 +0,0 @@
-manualBestsellingProductFacade = $manualBestsellingProductFacade;
- $this->domain = $domain;
- }
-
- /**
- * @param \Doctrine\Common\Persistence\ObjectManager $manager
- */
- public function load(ObjectManager $manager)
- {
- foreach ($this->domain->getAllIdsExcludingFirstDomain() as $domainId) {
- $this->loadForDomain($domainId);
- }
- }
-
- /**
- * @param int $domainId
- */
- protected function loadForDomain(int $domainId)
- {
- $this->manualBestsellingProductFacade->edit(
- $this->getReference(DemoCategoryDataFixture::CATEGORY_PHOTO),
- $domainId,
- [$this->getReference(DemoProductDataFixture::PRODUCT_PREFIX . '7')]
- );
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDependencies()
- {
- return [
- BestsellingProductDataFixture::class,
- ];
- }
-}
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/MultidomainCategoryDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/MultidomainCategoryDataFixture.php
deleted file mode 100644
index 262a2474c..000000000
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/MultidomainCategoryDataFixture.php
+++ /dev/null
@@ -1,179 +0,0 @@
-categoryFacade = $categoryFacade;
- $this->categoryDataFacade = $categoryDataFacade;
- $this->domain = $domain;
- }
-
- /**
- * @param \Doctrine\Common\Persistence\ObjectManager $manager
- */
- public function load(ObjectManager $manager)
- {
- foreach ($this->domain->getAllIdsExcludingFirstDomain() as $domainId) {
- $this->loadForDomain($domainId);
- }
- }
-
- /**
- * @param int $domainId
- */
- protected function loadForDomain(int $domainId)
- {
- $this->editCategoryOnDomain(
- DemoCategoryDataFixture::CATEGORY_ELECTRONICS,
- $domainId,
- 'Spotřební elektronika zahrnuje elektronická zařízení každodenního (nebo alespoň častého)'
- . ' použití pro komunikaci, v kanceláři i doma.'
- );
-
- $this->editCategoryOnDomain(
- DemoCategoryDataFixture::CATEGORY_TV,
- $domainId,
- 'Televize (z řeckého tele – daleko a latinského vize – vidět) je široce používané'
- . ' jednosměrné dálkové plošné vysílání (tzv. broadcasting) a individuální přijímání televizního vysílání'
- . ' – obrazu a zvuku do televizoru. Výrazně přispívá k celkové socializaci lidí takřka po celém světě.'
- );
-
- $this->editCategoryOnDomain(
- DemoCategoryDataFixture::CATEGORY_PHOTO,
- $domainId,
- 'Fotoaparát je zařízení sloužící k pořizování a zaznamenání fotografií. Každý fotoaparát'
- . ' je v principu světlotěsně uzavřená komora s malým otvorem (nebo nějakou složitější optickou soustavou –'
- . ' objektivem), jímž dovnitř vstupuje světlo, a nějakým druhem světlocitlivé záznamové vrstvy na druhé straně'
- . ', na níž dopadající světlo kreslí obraz.'
- );
-
- $this->editCategoryOnDomain(
- DemoCategoryDataFixture::CATEGORY_PRINTERS,
- $domainId,
- 'Tiskárna je periferní výstupní zařízení, které slouží k přenosu dat uložených v'
- . ' elektronické podobě na papír nebo jiné médium (fotopapír, kompaktní disk apod.). Tiskárnu připojujeme'
- . ' k počítači, ale může fungovat i samostatně.'
- );
-
- $this->editCategoryOnDomain(
- DemoCategoryDataFixture::CATEGORY_PC,
- $domainId,
- 'Počítač je zařízení a výpočetní technika, která zpracovává data pomocí předem'
- . ' vytvořeného programu. Současný počítač je elektronický a skládá se z hardwaru, který představuje fyzické'
- . ' části počítače (mikroprocesor, klávesnice, monitor atd.) a ze softwaru (operační systém a programy). Počítač'
- . ' je zpravidla ovládán uživatelem, který poskytuje počítači data ke zpracování prostřednictvím jeho vstupních'
- . ' zařízení a počítač výsledky prezentuje pomocí výstupních zařízení. V současnosti jsou počítače využívány'
- . ' téměř ve všech oborech lidské činnosti.'
- );
-
- $this->editCategoryOnDomain(
- DemoCategoryDataFixture::CATEGORY_PHONES,
- $domainId,
- 'Mobilní telefony umožňují nejen komunikaci v rámci mobilní sítě, ale i spojení s pevnou'
- . ' telefonní sítí přímo volbou telefonního čísla na vestavěné klávesnici a poskytují širokou škálu dalších'
- . ' telekomunikačních služeb, jako jsou SMS, MMS, WAP a připojení na Internet. Protože patří k nejrozšířenějším'
- . ' elektronickým zařízením, výrobci je vybavují také dalšími funkcemi.'
- );
-
- $this->editCategoryOnDomain(
- DemoCategoryDataFixture::CATEGORY_COFFEE,
- $domainId,
- 'Kávovar je stroj určený pro výrobu kávy takovým způsobem, aby se voda nemusela vařit'
- . ' v oddělené nádobě. Existuje obrovské množství kávovarů, nicméně princip přípravy kávy je vždy stejný: do'
- . ' kovového či papírového filtru se vloží rozemletá káva. Filtr s kávou se vloží do kávovaru, kde se přes něj'
- . ' (většinou pod tlakem) nechá přetéct horká voda vytékající do připravené nádoby na kávu (hrnek, sklenici apod.).'
- );
-
- $this->editCategoryOnDomain(
- DemoCategoryDataFixture::CATEGORY_BOOKS,
- $domainId,
- 'Kniha je sešitý nebo slepený svazek listů nebo skládaný arch papíru, kartonu, pergamenu'
- . ' nebo jiného materiálu, popsaný, potištěný nebo prázdný s vazbou a opatřený přebalem.'
- );
-
- $this->editCategoryOnDomain(
- DemoCategoryDataFixture::CATEGORY_TOYS,
- $domainId,
- 'Hračka je předmět používaný ke hře dětí, ale někdy i dospělých. Slouží k upoutání'
- . ' pozornosti dítěte, jeho zabavení, ale také k rozvíjení jeho motorických a psychických schopností. Hračky'
- . ' existují již po tisíce let. Panenky, zvířátka, vojáčci a miniatury nástrojů dospělých jsou nacházeny'
- . ' v archeologických vykopávkách od nepaměti.'
- );
-
- $this->editCategoryOnDomain(
- DemoCategoryDataFixture::CATEGORY_GARDEN_TOOLS,
- $domainId,
- 'Oddělení zahradního náčiní je jedno z největších oddělení v naší nabídce. Za pozornost'
- . ' stojí zejména naše filtry různých druhů nečistot, avšak doporučujeme popatřit zrakem i na naše boční držáky'
- . ' plechů.'
- );
-
- $this->editCategoryOnDomain(
- DemoCategoryDataFixture::CATEGORY_FOOD,
- $domainId,
- 'Potravina je výrobek nebo látka určená pro výživu lidí a konzumovaná ústy v nezměněném'
- . ' nebo upraveném stavu. Potraviny se dělí na poživatiny a pochutiny. Potraviny mohou být rostlinného, živočišného'
- . ' nebo jiného původu.'
- );
- }
-
- /**
- * @param string $referenceName
- * @param int $domainId
- * @param string $description
- */
- protected function editCategoryOnDomain(string $referenceName, int $domainId, string $description)
- {
- $category = $this->getReference($referenceName);
- /* @var $category \Shopsys\FrameworkBundle\Model\Category\Category */
- $categoryData = $this->categoryDataFacade->createFromCategory($category);
- $categoryData->descriptions[$domainId] = $description;
- $this->categoryFacade->edit($category->getId(), $categoryData);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDependencies()
- {
- return [
- CategoryDataFixture::class,
- ];
- }
-}
diff --git a/src/Shopsys/ShopBundle/DataFixtures/Demo/MultidomainMailTemplateDataFixture.php b/src/Shopsys/ShopBundle/DataFixtures/Demo/MultidomainMailTemplateDataFixture.php
deleted file mode 100644
index 1732b9651..000000000
--- a/src/Shopsys/ShopBundle/DataFixtures/Demo/MultidomainMailTemplateDataFixture.php
+++ /dev/null
@@ -1,399 +0,0 @@
-domain = $domain;
- $this->mailTemplateFacade = $mailTemplateFacade;
- $this->mailTemplateDataFactory = $mailTemplateDataFactory;
- }
-
- /**
- * @param \Doctrine\Common\Persistence\ObjectManager $manager
- */
- public function load(ObjectManager $manager)
- {
- $domainUrl = $this->domain->getDomainConfigById(self::DOMAIN_ID)->getUrl();
-
- $mailTemplateData = $this->mailTemplateDataFactory->create();
- $mailTemplateData->name = 'order_status_1';
- $mailTemplateData->sendMail = true;
- $mailTemplateData->subject = 'Děkujeme za objednávku č. {number} ze dne {date}';
- $mailTemplateData->body = '
-
-
-
-
-
-
Dobrý den,
- Vaše objednávka byla úspěšně vytvořena. Stav objednávky můžete sledovat na tomto odkaze. O změně stavu objednávky Vás budeme informovat.
-
-
-
-
-
Doprava:
-
{transport}
-
-
-
Platba:
-
{payment}
-
-
-
Celková cena s DPH:
-
{total_price}
-
-
-
Pozámka:
-
{note}
-
-
-
{products}
-
-
-
{transport_instructions}
-
-
-
{payment_instructions}
-
-
-
-
- Děkujeme za Váš nákup.
-
- S pozdravem,
- Tým Demoshop
Vážený zákazníku,
- zpracování objednávky {number} bylo dokončeno. Děkujeme za Váš nákup.
-
- Budeme se opět těšit na Vaši návštěvu na {url}
-
- S pozdravem,
- Tým Demoshop
Vážený zákazníku,
-
- tento email byl zaslán na základě Vaší žádosti o změnu hesla. Na tomto odkaze můžete nastavit nové heslo: {new_password_url}.
-
- S pozdravem,
- Tým Demoshop
Vážený zákazníku,
- na základě vašeho zadaného emailu {e-mail}, Vám zasíláme odkaz na zobrazení osobních údajů. Klikem na odkaz níže se dostanete na stránku s přehledem všech osobních údajů, které k Vašemu e-mailu evidujeme na našem e-shopu {domain}.
-
- Pro zobrazení osobních údajů klikněte zde.
- Odkaz je platný 24 hodin.
-
- S pozdravem
- Tým Demoshop
Vážený zákazníku,
- na základě vašeho zadaného emailu {e-mail}, Vám zasíláme odkaz ke stažení Vašich
- údajů evidovaných na našem internetovém obchodě ve strojově čitelném formátu.
- Klikem na odkaz se dostanete na stránku s možností stažení těchto informací, které k
- Vašemu e-mailu evidujeme na našem eshopu {domain}.
-
- Pro přechod na stažení údajů, prosím, klikněte zde .
- Odkaz je platný 24 hodin.
-
- S pozdravem
- Tým Demoshop
Meet the latest generation of LED TVs Philips, which include the thinSmart TV running Android. Gets you a fine painting, innovative technologies, including image processing Ambilight and honest materials used in production. It features cutting-edge design structures with an eye for detail that fits into modern interiors. Like basis was inclined central pedestal that represents the geometric pun. On TV it will always look nice even when switched off.
The main advantages:
Ambilight backlighting - projecting a glow on the wall
Sharp and smooth image
Android operating system with applications
Internet connection
Remote control with keyboard
Superior picture
Ambilight backlighting will forever change your perception of television. This is a unique technology that expands the display area outside the boundaries of the panel itself. 2 Sided glow lit from two sides of the screen to the surrounding walls and creates a breathtaking effect. Natural Motion technology ensures smooth and crisp moving images without blur by increasing the number of frames per second to double. It\'s handy for example when movie action scenes or sports broadcasts.
Micro Dimming Pro conveys a realistic visual experience day and night. It uses a light sensor and a special software to optimize the contrast of the screen on the basis of light conditions in the environment. The image is analyzed 6400 in different zones, thereby providing authentic and undisturbed experience. Sharp moving images with breathtaking contrast, detail and depth ensure Pixel Precise HD.
Android - richer television viewing experience
Built-in WiFi module, and an Ethernet port expands the possibilities of television. Are you tired of watching okoukaných series? Then drop into online content. Waiting for you Archives TV stations, social networks, YouTube and other corners of the Internet via a web browser. Smart TV is based on Android OS 5.0 (Lollipop), has pre-installed applications and more can be found at Google Play. Use remote control with keyboard for easy typing text or even voice control. Advantage based on Android is also always up to date firmware. And all of you will be taken without waiting for a nimble run television is not only the old operating system, but also 2jádrový processor.
Saving operation
Manufacturer did not forget to decent connective equipment. It includes a quartet of HDMI connectors, one Scart and a trio of USB connectors for recording or playback of content by connecting USB disks. There is also support for HbbTV function or even suspend broadcasts EPG 8 days. Tuners are represented DVB-T / T2 / C and television unequivocal advantage of the economic operation. The TV comes to energy class A +, and for a very decent cuts only 45 kWh.
Additional information:
Picture Enhancement: Natural Motion 500Hz Perfect Motion Rate Pixel Precise HD Micro Dimming Pro
Smart TV: User interaction - multiroom Client and Server, SimplyShare, certified Wi-Fi Certified Miracast Interactive television - HbbTV Program - Suspension of television broadcasting, USB recording Applications SmartTV - Online video store, open an Internet browser, Social TV service, Spotify, TV on Demand, YouTube Easy Installation - Automatic detection equipment Philips Connection Wizard equipment, Network Setup Wizard, the Setup Wizard Easy to use - Universal Smart Menu button, on-screen User Guide Firmware upgradeable - Guide cars. update, Firmware upgradeable via USB, Firmware Update online Screen Format Adjustments - Basic - Fill Screen, Fit to Screen, Advanced - Pan, Zoom, Stretch Philips TV Remote - Applications Channels, Control, NowOnTV, TV guide, Video on demand Remote control - Keyboard
Ambilight: Versions of Ambilight - 2 pages Ambilight - The adaptation of the color of walls, Lounge Mode, Game Mode, Ambilight + hue
Multimedia applications: Video playback formats - Containers: AVI, MKV, H264 / MPEG-4 AVC, MPEG-1, MPEG-2, MPEG-4, WMV9 / VC1, HEVC Format Support subtitles - .SMI, .SRT, .ssa, .SUB, .TXT, .ass Play music formats - AAC, MP3, WAV, WMA (v2 to v9.2), PRO-WMA (v9 and v10) Picture Playback Formats - JPEG, BMP, GIF, JPS, PNG, PNS, BMS, MIT
Connectivity:4 x HDMI1 x Scart (RGB / CVBS)3 x USBWireless Dual Band Wi-Fi Direct, Integrated Wi-Fi 11n 2 × 2Other connections: Antenna IEC75, Common Interface Plus (CI +), Ethernet-LAN ??RJ-45, Digital audio output (optical), Audio L / R, Audio Input (DVI), Headphone out, Service connector, the connector SatelliteHDMI features - Audio Return ChannelEasyLink (HDMI-CEC) - Pass the remote control signal, System audio control, System standby, One touch play
Supplied Remote control 2 x AAA Batteries Table top stand Power cable Quick start guide use Brochure Legal and safety information
> Luxury TV from the South Korean company LG bears 47LA790S . At first glance its beautiful design That pleases the eye of every lover of pure and precise shapes. Inside the TV is hidden except M13 dual-core processor number of extra features. I so belong to the energy class A + . Micro Pixel Control function is performed local dimming backlight and thus significantly reduces up to 64 W. This is so gigantic screen with really great.
This TV is considerate to your eyes because of the image eliminates the annoying flicker caused by conventional 3D glasses, and you so you can enjoy long evenings of film without fatigue and eye pain . User-friendly environment allows adjust the 3D depth effect and yourself, you can choose whether you prefer comfort or deeper experience when watching 3D content. You could very well happen that while watching a football match flips the ball right into your living room Because special functions for image conversion improve any broadcasting the third dimension .
Avid gamers will appreciate the Dual Play When television broadcasts two separate 2D images and each player using glasses to see their part to the full screen area. No more worry when a split screen. Intel WiDi (Wireless Display), respectively. wireless transmission of video and audio, allows quick and easy connection of TVs and laptops without cables or an Internet connection. It is very convenient and fast you\'ll love this feature.', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('47 "LG 47LA790V Luxury TV from the South Korean company LG bears 47LA790S. At first glance its beautiful design that pleases the eye of every lover of pure and precise shapes.', [], 'dataFixtures', $domain->getLocale());
+
+ $i = 0;
+ $this->addParameterTranslations($parameterTranslations, t('Screen size', [], 'dataFixtures', $locale), t('47"', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Technology', [], 'dataFixtures', $locale), t('LED', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Resolution', [], 'dataFixtures', $locale), t('1920×1080 (Full HD)', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('USB', [], 'dataFixtures', $locale), t('Yes', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('HDMI', [], 'dataFixtures', $locale), t('No', [], 'dataFixtures', $locale), $locale, $i);
+ }
+
+ $this->setParametersByTranslations($productData, $parameterTranslations);
+
+ $this->setPriceForAllPricingGroups($productData, '17843');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '14.1.2000');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 800;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_ELECTRONICS, CategoryDataFixture::CATEGORY_TV]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, BrandDataFixture::BRAND_LG);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '5960453';
+ $productData->partno = 'X-710BK';
+ $productData->ean = '8845781245923';
+
+ $parameterTranslations = [];
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->descriptions[$domain->getId()] = t('
A4tech X710BK
Playing computer mouse has five buttons and scrolovacím button for easier browsing documents or Internet pages. News is a key 3XFire that in one pressing regulating a triple clicks. The mouse has five options to set up the sensor sensitivity and in steps 400, 600, 1200, 1600 and 2000 DPI. The mouse has an ergonomic design, it connects via high-speed USB interface and is equipped with 16 Kb internal memory that is possible with the Oscar Mouse Editor to record scripts to control your favorite games. It is fully compatible with all modern operating systems including Windows Vista.
Hand printing adhesive labels Brother especially suitable for easy marking in warehouses, offices and wherever it is required records or quickly usable labels. The printer boasts a very easy to use, ensuring a perfect look label width from 3.5 mm to 18 mm. You can create labels, barcodes, labels for folders, address and shipping labels, or labels on CD and DVD media. Everything can be created by using the keyboard directly to the printer manual.
The printer is in addition to ease of use and versatility also very fast. It can print up to 2 cm plate for one second. Very please direct thermal printing technology, which reduces the cost of toner and ink. The printer can be powered by AC adapter, rechargeable battery or alkaline batteries 6 x AA.
Additional information:
Print technology: Thermal
Width TZ tapes: 3.5/6/9/12/18 (mm) Display: 16 characters x 2 lines Print speed: 20 mm/s Odsřih: handmade Font style: 14
Symbols: 617
Characters in mind: 2800
Other features: vertical printing, barcode printing
Possible sources of supply: AC adapter AD-E001 - (not included) rechargeable battery BA-E001 - (not included) Alkaline Batteries 6 x AA - (not included) Package Contents: Printer PT-H300 starting tape TZe-241 (18 mm black on white, length 4 m) documentation
High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm.', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('Canon EH-22L. High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D. ', [], 'dataFixtures', $domain->getLocale());
+
+ $i = 0;
+ $this->addParameterTranslations($parameterTranslations, t('Color', [], 'dataFixtures', $locale), t('black', [], 'dataFixtures', $locale), $locale, $i);
+ }
+
+ $this->setParametersByTranslations($productData, $parameterTranslations);
+
+ $this->setPriceForAllPricingGroups($productData, '1110.54896');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '3.8.1999');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 100;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_OUT_OF_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_PHOTO]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, BrandDataFixture::BRAND_CANON);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '5964034';
+ $productData->partno = '8596B047';
+ $productData->ean = '8845781245912';
+
+ $parameterTranslations = [];
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('Canon EOS 700D', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light, even without a flash. Automatic smart scene mode analyzes the scene and automatically selects the best settings for the camera. View images, focus, or even pictures can be taken using a 3 "touch screen TFT Clear View II with a whopping resolution of 1.04 million pixels and a vari-angle. With this camera out of you in a moment become a professional cameraman. It makes it possible to shoot stunning movies in Full HD 1080p. Hybrid AF technology enables continuous focus during movie shooting and using the built-in microphone ozvučíme your images are high quality stereo sound. Autofocus system comprising nine cross-type AF points to capture fast-moving objects without any blurring. Thanks to continuous shooting at up to 5 frames per second, you\'ll never miss a crucial moment for getting the best picture possible.The HDR Backlight Control mode, the camera takes three different exposures and combines them into one, in order to preserve details in shadows and areas with high brightness. In Night Scene mode, the camera takes the hand of multiple images at high shutter speeds and combining them together and thus prevents blurring. Captured images and videos simply adding it to an SD Memory Card, SDHC and SDXC, thanks to the integrated connector is miniHDMI you can conveniently viewed on your LCD or plasma TV. The camera can buy a wide range of lenses, flashes and accessories that are compatible with the EOS system.', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light', [], 'dataFixtures', $domain->getLocale());
+
+ $i = 0;
+ $this->addParameterTranslations($parameterTranslations, t('Camera type', [], 'dataFixtures', $locale), t('SLR', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Resolution', [], 'dataFixtures', $locale), t('9 Mpix', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Power supply', [], 'dataFixtures', $locale), t('battery', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Viewfinder type', [], 'dataFixtures', $locale), t('optical', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Sensitivity (ISO)', [], 'dataFixtures', $locale), t('1800', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Display size', [], 'dataFixtures', $locale), t('3“', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Weight', [], 'dataFixtures', $locale), t('580 g', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('USB', [], 'dataFixtures', $locale), t('Yes', [], 'dataFixtures', $locale), $locale, $i);
+ }
+
+ $this->setParametersByTranslations($productData, $parameterTranslations);
+
+ $this->setPriceForAllPricingGroups($productData, '24990');
+
+ $this->setVat($productData, VatDataFixture::VAT_ZERO);
+ $this->setSellingFrom($productData, '3.2.2013');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 100;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_ON_REQUEST);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_PHOTO]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, BrandDataFixture::BRAND_CANON);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '9184535';
+ $productData->partno = '8331B006';
+ $productData->ean = '8845781245938';
+
+ $parameterTranslations = [];
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('Canon MG3550', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('
Canon PIXMA MG3350 black
Features of modern and elegantly prepared MFPs s new wireless capabilities. Function automatic two-sided printing printing on both sides, which saves paper while producing professional looking documents. The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridgesThat provide easy user service and stable print quality throughout the life. You reach for XL FINE cartridges provide printing multiple pages significantly between individual ink replacement. This is ideal if you often print.
Do smart device application download Canon PIXMA Printing Solutions a straight print or scan. In addition, you can check the printer status and ink levels. They also supported services Apple AirPrint and access to the Internet and Google Cloud Print. Software My Image Garden has a solution for organizing and printing photos, scanning, and access to online services. Due to advanced features such as face detection, you will always find exactly what you\'re looking for.
Additional information:
Print: Technology: 4-ink (in 2 packs) ChromaLife100 system, the head of FINE (2 pl) Borderless printing: A4, Letter, 20 x 25 cm, 13 x 18 cm, 10 x 15 cm Automatic two-sided printing: A4, A5, B5, Letter Printing from Application PIXMA Printing Solutions, Google Cloud Print, Apple AirPrint
Stylish and affordable, accessible multifunction devices for the home. Easy printing, scanning and copying in one device will take much less space and you\'ll save money than buying individual components. The printing machine uses an innovative print FINE technology Which guarantee excellent print quality. The printer has a system of four ink colors hidden in two ink cartridges, which provide easy user service and stable print quality throughout the life. You can reach the XL cartridges FINE, which provide significantly greater number of print pages between ink replacement. This is ideal if you are printing large volumes.
Software My Image Garden will reveal the full range of functions PIXMA printers. It offers solutions for the layout and printing photos, scanning, and access to online services. Due to advanced features such as face detection, it will scan all the pictures on your computer (even those long forgotten), and compile them into great designs to print. Service CREATIVE PARK PREMIUM you can download and print photos, images and artwork from internationally recognized photographers and artists. Create greeting cards, calendars or stunning 3D paper products, such as the space shuttle Endeavour.
The switch provides a cost-effective way to create a small network or extend existing ones. Connect not only computers, but also a number of network devices such as IP cameras, network printers and more. The switch is equipped with five Gigabit Ethernet ports with auto-sensing speeds, so you shall always have the best performance. To communicate without delay and smooth video streaming has integrated QoS optimization .
Switch functions quickly and easily without complicated setting. But consistently low power detect used ports, and if stopping traffic enters Sleep mode. Rugged metal body is sufficient for cooling without fan . Together with its small size you can find a place almost anywhere. Also available is a set of wall mounting and it can also protect against theft Kensington.', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('The switch provides a cost-effective way to create a small network or extend existing ones. Connect not only computers, but also a number of network devices such as IP cameras, network printers and more.', [], 'dataFixtures', $domain->getLocale());
+ }
+
+ $this->setPriceForAllPricingGroups($productData, '2891.7');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '4.1.2000');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = false;
+ $productData->stockQuantity = 0;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_ON_REQUEST);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_PC]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, BrandDataFixture::BRAND_DLINK);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '5990008';
+ $productData->partno = '65480';
+ $productData->ean = '8845781245945';
+
+ $parameterTranslations = [];
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('Defender 2.0 SPK-480', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('
Defender SPK-480
Defender SPK 480, two portable and practical 2" broadband speakers. They have 4 watt output and are powered by USB. They\'re made of durable plastic and their compact size is portable and easy to fit into any bag or backpack. The speakers connect to notebooks or portable music players via the built-in 3.5 mm jack. Each speaker features its own volume control, and they can be placed near monitors without disturbing image quality due to their magnetic shielding. The silver and black design is simple and modern.', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('Defender SPK-480, easy to fit into any bag or backpack', [], 'dataFixtures', $domain->getLocale());
+
+ $i = 0;
+ $this->addParameterTranslations($parameterTranslations, t('Dimensions', [], 'dataFixtures', $locale), t('80x70x70 mm', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Overall performance', [], 'dataFixtures', $locale), t('4 W', [], 'dataFixtures', $locale), $locale, $i);
+ }
+
+ $this->setParametersByTranslations($productData, $parameterTranslations);
+
+ $this->setPriceForAllPricingGroups($productData, '98.3');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '31.1.2014');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 220;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_TV, CategoryDataFixture::CATEGORY_PC]);
+ $productData->categoriesByDomainId[Domain::SECOND_DOMAIN_ID] = [];
+ $productData->categoriesByDomainId[Domain::SECOND_DOMAIN_ID][] = $this->persistentReferenceFacade->getReference(CategoryDataFixture::CATEGORY_TV);
+
+ $this->setFlags($productData, [FlagDataFixture::FLAG_NEW_PRODUCT]);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, BrandDataFixture::BRAND_DEFENDER);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '9771339';
+ $productData->partno = 'ECAM 44.660 B';
+ $productData->ean = '8845781245934';
+
+ $parameterTranslations = [];
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('DeLonghi ECAM 44.660 B Eletta Plus', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('
DéLonghi ECAM 44.660.B
Start the morning with your favorite drink with the DeLonghi ECAM 44.660.B Eletta automatic coffee maker. A built in special hot steam/water jet automatically prepares a thick milk froth for cappuccino and tea. Drip coffee lovers can also press their own coffee.
Magic Milk Menu button
A special function is the Milk Menu button, which gives you a choice of milk-based beverages. In addition to the classic cappuccino, latte macchiato, or Latte, you can prepare rare drinks such as Espresso macchiato and a flat white. For a quick and easy treat, you can prepare hot cocoa or a cup of frothed milk, and the size of the beverage can be adjusted based on the cup.
', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('DéLonghi ECAM 44.660.B. Start the morning with your favorite drink with the DeLonghi ECAM 44.660.B Eletta automatic coffee maker', [], 'dataFixtures', $domain->getLocale());
+
+ $i = 0;
+ $this->addParameterTranslations($parameterTranslations, t('Pressure', [], 'dataFixtures', $locale), t('15 bar', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Water reservoir capacity', [], 'dataFixtures', $locale), t('2 l', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Milk reservoir capacity', [], 'dataFixtures', $locale), t('600 ml', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Magazine capacity for beans', [], 'dataFixtures', $locale), t('400 g', [], 'dataFixtures', $locale), $locale, $i);
+ }
+
+ $this->setParametersByTranslations($productData, $parameterTranslations);
+
+ $this->setPriceForAllPricingGroups($productData, '19743.6');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '20.1.2014');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 140;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_COFFEE]);
+ $this->setFlags($productData, [FlagDataFixture::FLAG_NEW_PRODUCT]);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, BrandDataFixture::BRAND_DELONGHI);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '5962199';
+ $productData->partno = '';
+ $productData->ean = '8845781245958';
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('Pot holder, black', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('This pot holder is used to hold pots. No more burnt kitchen tables!', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('This pot holder is used to hold pots. No more burnt kitchen tables!', [], 'dataFixtures', $domain->getLocale());
+ }
+
+ $this->setPriceForAllPricingGroups($productData, '3');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '13.2.2014');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = false;
+ $productData->stockQuantity = 0;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_OUT_OF_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_BOOKS]);
+ $this->setFlags($productData, [FlagDataFixture::FLAG_NEW_PRODUCT]);
+
+ $productData->sellingDenied = true;
+ $this->setBrand($productData, null);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '5960139';
+ $productData->partno = '31011039100';
+ $productData->ean = '8845781245924';
+
+ $parameterTranslations = [];
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('Genius NetScroll 310 silver', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('Simple Genius Mouse NetScroll 310 offers the most widely used functional elements of a basic ergonomics. It has an optical sensor with a resolution of 800 DPI, which can handle work on a large number of standard surfaces. There are two classic buttons and the third with the paging function wheel. Genius NetScroll 310 is equipped with modern USB interface and finds use in conserving ambidextrous or in an office environment. Specifications: Supported OS: Microsoft Windows 7, Vista, XP, 2003, 2000, 98SE Mac OS 8.6 or later ', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('Simple Genius Mouse NetScroll 310 offers the most widely used functional elements of a basic ergonomics. It has an optical sensor with a resolution of 800 DPI, which can handle work on a large number of standard surfaces. ', [], 'dataFixtures', $domain->getLocale());
+
+ $i = 0;
+ $this->addParameterTranslations($parameterTranslations, t('Technology', [], 'dataFixtures', $locale), t('Optical', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Interface', [], 'dataFixtures', $locale), t('Wired', [], 'dataFixtures', $locale), $locale, $i);
+ }
+
+ $this->setParametersByTranslations($productData, $parameterTranslations);
+
+ $this->setPriceForAllPricingGroups($productData, '90.1');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '10.1.2000');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 300;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_PC]);
+ $this->setFlags($productData, [FlagDataFixture::FLAG_ACTION_PRODUCT]);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, BrandDataFixture::BRAND_GENIUS);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '5960550';
+ $productData->partno = '31730946108';
+ $productData->ean = '8845781245946';
+
+ $parameterTranslations = [];
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('Genius repro SP-M120 black', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('
GENIUS SP-M120 black
Sleek and compact stereo speakers in combination of black and metallic surface. Speakers provide basic computer sound system with an output of 2 W RMS. On the front is virtually placed in a large volume control, but not forgotten even the popular headphone jack. Specifications: Performance: 2 x 1 W RMS Frequency Range: 100 Hz - 20KHz Signal/noise ratio: 75 db Dimensions: 50 x 90 mm
GENIUS LuxeMate I222 is a stylish black keyboard, which at first glance invites you to use your Apple design. It will decorate your desk at home or in the office. In addition to the standard layout will delight and a large variety of function keys that enhance control of the internet, email and also a multimedia player. Low profile you use for long periods still feel comfortable. The computer keyboard GENIUS LuxeMate I222 connects via USB interface.
Compact Speakers Genius SP-HF150 are the perfect accessory for portable computers. It is powered only by the USB port. Yet they can generate high power 4 W RMS. The sound of the smaller 2.5 "drives is airy, yet does not lack sufficient bass fundament. All of the elegant veneer finish imitating a hidden volume control. Specifications:
Sound characteristics: Power: 2 x 2 W RMS Drivers: 2.5 "(širokpásmové) Frequency range: 200 to 20 000 Hz Signal-to-Noise Ratio: 70 db
Quality set keyboard and optical mouse from Gigabyte. Both components are color-matched to the sleek glossy black color. The keyboard has 15 multimedia keys for quick access to the Internet, email and other applications. The multimedia keys also used for various tasks (volume control, ...). Optical mouse has a sensor with a resolution of 500 to 1000 DPI resolution can be switched. Mouse fits both the left and the right hand. Wireless communication provides a miniature USB receiver for keyboard and mouse. This set will contrast nicely on any desk.
Hewlett-Packard was founded in the difficult times of the Great Depression. The founders were a pair of friends whose name the company still proudly bears. They started their business in an unobtrusive garage near the city of Palo Alto. It is now a national monument. HP’s success lay not in copying existing products, but in the ability and courage to come up with something new.
The first commercial triumph was an oscillator that surpassed all competition in quality, yet sold at a quarter of the price. In 1968, HP released their first desktop computer - a desktop calculator. The company currently manufactures products primarily related to computer technology - computers and laptops, printers, scanners, digital cameras, servers, and last but not least, calculators.
Unless otherwise indicated in the product description, packaging does not contain a USB interface cable.
', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('Hewlett-Packard was founded in the difficult times of the Great Depression. The founders were a pair of friends whose name the company still proudly bears. ', [], 'dataFixtures', $domain->getLocale());
+
+ $i = 0;
+ $this->addParameterTranslations($parameterTranslations, t('Print technology', [], 'dataFixtures', $locale), t('inkjet', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Maximum size', [], 'dataFixtures', $locale), t('A3', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('LCD', [], 'dataFixtures', $locale), t('No', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Print resolution', [], 'dataFixtures', $locale), t('2400x600', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Color printing', [], 'dataFixtures', $locale), t('Yes', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('USB', [], 'dataFixtures', $locale), t('Yes', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('WiFi', [], 'dataFixtures', $locale), t('Yes', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Weight', [], 'dataFixtures', $locale), t('3.5 kg', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Dimensions', [], 'dataFixtures', $locale), t('449x304x152 mm', [], 'dataFixtures', $locale), $locale, $i);
+ }
+
+ $this->setParametersByTranslations($productData, $parameterTranslations);
+
+ $this->setPriceForAllPricingGroups($productData, '1238');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '23.1.2014');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = false;
+ $productData->stockQuantity = 0;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_PRINTERS]);
+ $this->setFlags($productData, [FlagDataFixture::FLAG_NEW_PRODUCT]);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, BrandDataFixture::BRAND_HP);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '9511043';
+ $productData->partno = '99HZS017';
+ $productData->ean = '8845781245955';
+
+ $parameterTranslations = [];
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('HTC Desire 816 White', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('Photographer\'s dream. Main camera with 13-megapixel front camera and a 5 megapixel guarantee photos in high definition on each side. Thanks to the built-in tools for editing and sharing can capture moving images in HD and combine the results to show from multiple angles. Incredible design, giant 5,5palcový display with HD resolution, two front stereo speakers, customized channels with real-time information and a quad-core processor - all combine to form one of the best smartphones in the world.', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('Photographer\'s dream. Main camera with 13-megapixel front camera and a 5 megapixel guarantee photos in high definition on each side. Thanks to the built-in tools for editing and sharing can capture moving images in HD and combine the results to show from multiple angles.', [], 'dataFixtures', $domain->getLocale());
+
+ $i = 0;
+ $this->addParameterTranslations($parameterTranslations, t('Display Size', [], 'dataFixtures', $locale), t('5.5"', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Display type', [], 'dataFixtures', $locale), t('Super LCD', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Resolution of rear camera', [], 'dataFixtures', $locale), t('13 Mpx', [], 'dataFixtures', $locale), $locale, $i);
+ }
+
+ $this->setParametersByTranslations($productData, $parameterTranslations);
+
+ $this->setPriceForAllPricingGroups($productData, '8421.5');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '10.2.2014');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = false;
+ $productData->stockQuantity = 0;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_OUT_OF_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_PHONES]);
+ $this->setFlags($productData, [FlagDataFixture::FLAG_NEW_PRODUCT, FlagDataFixture::FLAG_TOP_PRODUCT]);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, BrandDataFixture::BRAND_HTC);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '9772572';
+ $productData->partno = 'JURA Impressa J9 TFT Carbon';
+ $productData->ean = '8845781245933';
+
+ $parameterTranslations = [];
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('JURA Impressa J9 TFT Carbon', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('
JURA IMPRESSA Z9 One Touch TFT Pianoblack
Luxury automatic coffee machine Jura Impressa Z9 One Touch packed with Swiss precision and elegance, which sets new standards. This machine brings you jeich on several levels, such as coffee quality, easy to use and attractive design. The purpose is always the most advanced technology to achieve real, authentic results. The powerful device has intuitive controls and except large 3.5 "TFT color display. Together with rotary dial allows you to choose between 11 specialties and goes to prepare any coffee you can think of. With the coffee a la carte, allowing you to quickly change settings according to your needs, your options are almost limitless.
For an authentic experience and to ensure optimal conditions for coffee are two Thermoblocks. The first coffee and hot water, the second is intended to couple. With every cup of coffee is also possible to set the correct brewing temperature, amount of water and grind. Mill technology + Aroma is quiet and up to twice faster than previously used. Grains of coffee while grinding so much heat and so there is no negative influence of taste of coffee.
Foam crown in drinks Latte macchiato, cappuccino and other specialty are the world extremely popular. Automatic coffee machine in the model IMPRESSA Z9 One Touch is a distinctive design with a combination of pure luxury and sophistication. But technology also has a soft foam that each of trendy coffee specialties will adjust fluffy crown. S cappuccino outlets, which can be adjusted up to 153 mm, there is no problem to use a glass or a latte macchiato. Formed with Swiss precision and elegance with which you prepare the perfect espresso, cappuccino or caffe latte.
You will enjoy a very low power consumption. If the espresso is separated from the mains power switch, patented innovation JURY Zero Energy Switch (zero energy consumption) will remove any energy at all. Before turning off the espresso is automatically purged and cleansed, which provides him with long life. The unique geometry with finer teeth grinding and new technology supports the lower noise machine when grinding coffee.
CD/DVD/Blu-ray/HD-DVDis an affordable program for burning CD/DVD/Blu-ray/HD-DVD media. Intuitive operation with its easy to handle even a novice in this field. Another big advantage is the use of technology burning "on the fly", which is spared not only your time but also the capacity of the disk, because the process does not create any storage (temporary) files on your hard disk.
Worth mentioning is also the fact that for its operation baking does not use any components of Windows or other manufacturers. Its functionality is not needed any external libraries or DLL. This makes the software provides high stability, even if your system is corrupted Windows. This gives you the ability to backup before reinstalling Broken System. The program is completely in the Czech language.
Modern stereo speakers in a stylish black design, with an output of 2.3 W, suitable only for desktops and laptops, but also for CD or MP3 players, and other devices. They are connected via standard stereo jack 3,5 mm. The speakers have a frequency response of 50 Hz to 20 kHz. Easily accessible controls are located on the side of the right speaker with headphone outlet.
Specifications: Performance: 2.3 W (2 x 1.15 W RMS)
Reasons to opt just for telescopic cooker hood Concept OPV-3260:
Performance is the most important parameter hoods and should be at least equal to ten times the volume of the room. Telescopic cooker hood Brand Concept OPV-3260 will surprise you output of 198 m3 per hour .
Model AL-3260 is equipped with two mA practical metal grease filters, whose maintenance is very easy and unlimited lifespan. If you can not pay out of steam, you can choose instead of exhaust classic recirculation system using two carbon filters, which can be bought (kat.číslo: 61990005).
Specifications:
Height: 175 mm
Width: 600 mm
Depth: 310-470 mm
Accessories: backflow preventer
Stainless steel front bar
Ability to upper exhaust or recirculation
Rocker Switch
2 power levels
Max. Performance 198 m3 / h.
Max.hlučnost the highest level of 66 db (A)
The bulb 40 W
2x the grease filter
diameter: 120 mm
Detailed description:
Optional Accessories: 2x carbon filter 61990005
1 motor / fan
Minimum distance from electric hob 650 mm
Minimum distance from gas hob: 750 mm
Dimensions for installation (HxWxD): 133 x 560 x 272 mm
The minimum space requirements excels sub-mounting range hood OPP-2060th Suitable for very small kitchens. Metal buttons provide ease of use and precise adjustment of the corresponding stage performance.
Reasons to choose just the sub-mounting range hood Concept OPP-2060:
Performance is the most important parameter hoods and should be at least equal to ten times the volume of the room. The sub-mounting range hood brand Concept OPP-2060 will surprise performance 186 m3 per hour .
Very practical is the ability to select 4 Ways exhaust .
Model OPP-2060 is equipped with a practical metal grease filter , its maintenance is very easy and unlimited lifespan. If you can not pay out of steam, you can choose instead of exhaust classic recirculation system using a carbon filter, which can be bought.', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('The minimum space requirements excels sub-mounting range hood OPP-2060th', [], 'dataFixtures', $domain->getLocale());
+ }
+
+ $this->setPriceForAllPricingGroups($productData, '2990');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '19.1.2014');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 48;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_GARDEN_TOOLS]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, null);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '61990002';
+ $productData->partno = '8594049737383';
+ $productData->ean = '8845781246008';
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('OPK44xx carbon filter / OPK-5690 / OPK5790 / OPO55xx', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('295 x 240 x 15 mm cartridge with active carbon', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('295 x 240 x 15 mm cartridge with active carbon', [], 'dataFixtures', $domain->getLocale());
+ }
+
+ $this->setPriceForAllPricingGroups($productData, '499');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '5.1.2000');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 489;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_GARDEN_TOOLS]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, null);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = 'POScook_book_CZ';
+ $productData->partno = 'POScook_book_CZ';
+ $productData->ean = '8845781246009';
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('POS cookbook_steam oven GB', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('
Cookbook
What can be cooked in a steam oven? Using a steamer Concept is surprisingly versatile. It can be used to prepare appetizers, soups, meat, fish, vegetables, vegetarian dishes, dumplings, rice, fruit and desserts. 75 pages of cookbooks Concept - cook healthy steamed - contains recipes with practical procedures. Each recipe includes:
It is safe for you to your loved ones as important as us? In that case, you will appreciate with hob SDV-3460 feature residual heat indicators - H that you and your loved ones will protect against nasty burns. The residual heat indicator signals a residual temperature of the cooking zone even after power off.
Reasons to opt just for built-in ceramic plate Concept SDV-3460:
The built-in ceramic hob SDV-3460 you will be astonished handy touch controls .
Special radiators cooking zones HI-LIGHT are able to warm up to a maximum of a few seconds.
The residual heat indicator H - protects you against nasty burns. Indicates residual temperature of the cooking zone even after power off.
If you want to directly select the time that you want to cook, be sure to take the opportunity of the off-delay .
Specifications:
Height: 60 mm
Width: 590 mm
Depth: 520 mm
Glass ceramics
Accessories cleaning scraper
Touch control
The residual heat indicator - H
Without frame, angled edges Grounded
4 cooking zones
Auto-off function - EXTRA SECURE
The off-delay
Beep
Control Panel front center
Child lock
The ON state
Details:
Dimensions for installation (HxWxD): 50 x 560 x 490 mm
Steam iron Concept ZN8009 wattage 2200 Watt security system AUTO - SHUT OFF lets much easier and more convenient ironing.
Its other advantage is easy operation and many other practical functions and features, such as 3 m long supply cable through which you will not have to move ironing. Specifications:
Stainless steel soleplate
Even steam dosage: 20 g / min
Auto-off function AUTO SHUT-OFF Audible : turn off after 30 seconds in horizontal position and after 8 minutes in the vertical position irons
A perfectly clean glass ceramic cooktop without leaving stains and does not endanger the environment.
remove leftover food, grease, nicotine coating and many other impurities
does not harm rubber and plastics
does not AOX - Adsorbable organic halogens
biologically degradable by OECD
', [], 'dataFixtures', $domain->getLocale());
+ }
+
+ $this->setPriceForAllPricingGroups($productData, '499');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '3.2.2014');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 8;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_GARDEN_TOOLS]);
+ $this->setFlags($productData, []);
- /** @var \Shopsys\ShopBundle\DataFixtures\ProductDataFixtureReferenceInjector */
- protected $referenceInjector;
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, null);
- /** @var \Shopsys\FrameworkBundle\Component\DataFixture\PersistentReferenceFacade */
- protected $persistentReferenceFacade;
+ $this->createProduct($productData);
- /** @var \Shopsys\ShopBundle\DataFixtures\Demo\ProductDataFixtureCsvReader */
- protected $productDataFixtureCsvReader;
+ $productData = $this->productDataFactory->create();
- /** @var \Shopsys\FrameworkBundle\Model\Product\ProductFacade */
- protected $productFacade;
+ $productData->catnum = '61990030';
+ $productData->partno = '8594049737543';
+ $productData->ean = '8845781246037';
- /** @var \Shopsys\FrameworkBundle\Model\Product\ProductVariantFacade */
- protected $productVariantFacade;
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('The filter carbon OPK-7790', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('295 x 245 x 15 mm cartridge with active carbon', [], 'dataFixtures', $domain->getLocale());
+ }
+
+ $this->setPriceForAllPricingGroups($productData, '369');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '15.1.2000');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 9;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_GARDEN_TOOLS]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, null);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '44290823';
+ $productData->partno = '8594049736584';
+ $productData->ean = '8845781246038';
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('HEPA filter VP-9241', [], 'dataFixtures', $locale);
+ }
+
+ $this->setPriceForAllPricingGroups($productData, '199');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '15.1.2000');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 879;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_GARDEN_TOOLS]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, null);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '44291542';
+ $productData->partno = '';
+ $productData->ean = '8845781246039';
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('Crevice nozzle VP-4290', [], 'dataFixtures', $locale);
+ }
+
+ $this->setPriceForAllPricingGroups($productData, '89');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '14.1.2000');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 98;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_GARDEN_TOOLS]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, null);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '44291543';
+ $productData->partno = '';
+ $productData->ean = '8845781246040';
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('Nozzle with brush VP-4290', [], 'dataFixtures', $locale);
+ }
+
+ $this->setPriceForAllPricingGroups($productData, '138');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '14.1.2000');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 654;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_GARDEN_TOOLS]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, null);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '44290845';
+ $productData->partno = '';
+ $productData->ean = '8845781246041';
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('Hose VP-9241', [], 'dataFixtures', $locale);
+ }
+
+ $this->setPriceForAllPricingGroups($productData, '289');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '14.1.2000');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 3524;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_GARDEN_TOOLS]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, null);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '44290872';
+ $productData->partno = '';
+ $productData->ean = '8845781246042';
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('Telescopic metal pipes VP-9161', [], 'dataFixtures', $locale);
+ }
+
+ $this->setPriceForAllPricingGroups($productData, '299');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '14.1.2000');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 78;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_GARDEN_TOOLS]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, null);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = 'ts9170';
+ $productData->partno = '';
+ $productData->ean = '8845781246043';
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('TS-9170 replacement bag for textile VP-9171', [], 'dataFixtures', $locale);
+ }
+
+ $this->setPriceForAllPricingGroups($productData, '169');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '14.1.2000');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 789;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_GARDEN_TOOLS]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, null);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '44290851';
+ $productData->partno = '8594049736591';
+ $productData->ean = '8845781246044';
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('HEPA filter CN-9240 (VP-9241)', [], 'dataFixtures', $locale);
+ }
+
+ $this->setPriceForAllPricingGroups($productData, '199');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '14.1.2000');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 564;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_GARDEN_TOOLS]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, null);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = 'ns9310';
+ $productData->partno = '8594049736645';
+ $productData->ean = '8845781246045';
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('NS-9310 Infant replacement bags of paper for the VP-9310', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('Spare paper bags for vacuum cleaners CONCEPT INFANT VP 9310th Package: 5 pieces of bags + 2.', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('Spare paper bags for vacuum cleaners CONCEPT INFANT VP 9310th Package: 5 pieces of bags + 2.', [], 'dataFixtures', $domain->getLocale());
+ }
+
+ $this->setPriceForAllPricingGroups($productData, '119');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '14.1.2000');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 456;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_GARDEN_TOOLS]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, null);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = 'sms9170';
+ $productData->partno = '8594049736638';
+ $productData->ean = '8845781246046';
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('SMS-9170 SMS IQ SPACE spare bags', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('fits into VP812x VP9520', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('fits into VP812x VP9520', [], 'dataFixtures', $domain->getLocale());
+ }
+
+ $this->setPriceForAllPricingGroups($productData, '149');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '14.1.2000');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 456;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_GARDEN_TOOLS]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, null);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '44290852';
+ $productData->partno = '8594049736639';
+ $productData->ean = '8845781246047';
+
+ $parameterTranslations = [];
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('Canon PIXMA iP7250', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('Powerful color inkjet printer A4 size, quality photo printing, high resolution up to 9600 x 2400dpi, the rate of up to 15 st. / Min in monochrome and up to 10 st. / Min in color, duplex printing, tray for up to 125 sheets, USB 2.0, WiFi 802.11b / g / n, possibility of printing discs. Canon PIXMA iP7250 is a compact portable printer for home or office thous. This is a quality color inkjet printer up to A4 with gentle tiskem.Má stylish and compact design with a hinged upper portion serving as a feeder print media. It is intended primarily for use as a small family or a printer portable printer - especially for printing photographs. It allows users to print documents and fotografií.Je equipped with precision 1 picolitre FINE for printing with tiny particles. It allows you to achieve resolutions up to 9600 x 2400dpi. The printer has five individual ink tanks with the ChromaLife100 + .Tiskárna can print borderless photos. Maximum print speed is 15 pages per minute in black and white or 10 in color. E.g. print borderless 10 x 15 cm photo takes about 21 seconds. The printer also offers direct disc printing and automatic two-sided tisk.Připojení to the computer is done via the USB 2.0 port or through a wireless interface, WiFi 802.11b / g / n. The printer has the dimensions 451 x 368 x 128 mm and weighs 6.6 kg. The included software for easy photo printing My Image Garden.', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('Powerful color inkjet printer A4 size, quality photo printing', [], 'dataFixtures', $domain->getLocale());
+
+ $i = 0;
+ $this->addParameterTranslations($parameterTranslations, t('Print technology', [], 'dataFixtures', $locale), t('inkjet', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Maximum size', [], 'dataFixtures', $locale), t('A3', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('LCD', [], 'dataFixtures', $locale), t('Yes', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Print resolution', [], 'dataFixtures', $locale), t('2400x600', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Color printing', [], 'dataFixtures', $locale), t('Yes', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('USB', [], 'dataFixtures', $locale), t('Yes', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('WiFi', [], 'dataFixtures', $locale), t('Yes', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Weight', [], 'dataFixtures', $locale), t('3.5 kg', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Dimensions', [], 'dataFixtures', $locale), t('449x304x152 mm', [], 'dataFixtures', $locale), $locale, $i);
+ }
+
+ $this->setParametersByTranslations($productData, $parameterTranslations);
+
+ $this->setPriceForAllPricingGroups($productData, '19990');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '14.1.2001');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 457;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_PRINTERS]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, BrandDataFixture::BRAND_CANON);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '44290853';
+ $productData->partno = '8594049736639';
+ $productData->ean = '8845781246047';
+
+ $parameterTranslations = [];
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('Canon PIXMA iP7350', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('Powerful color inkjet printer A4 size, quality photo printing, high resolution up to 9600 x 2400dpi, the rate of up to 15 st. / Min in monochrome and up to 10 st. / Min in color, duplex printing, tray for up to 125 sheets, USB 2.0, WiFi 802.11b / g / n, possibility of printing discs. Canon PIXMA iP7250 is a compact portable printer for home or office thous. This is a quality color inkjet printer up to A4 with gentle tiskem.Má stylish and compact design with a hinged upper portion serving as a feeder print media. It is intended primarily for use as a small family or a printer portable printer - especially for printing photographs. It allows users to print documents and fotografií.Je equipped with precision 1 picolitre FINE for printing with tiny particles. It allows you to achieve resolutions up to 9600 x 2400dpi. The printer has five individual ink tanks with the ChromaLife100 +. Printer can print borderless photos. Maximum print speed is 15 pages per minute in black and white or 10 in color. E.g. print borderless 10 x 15 cm photo takes about 21 seconds. The printer also offers direct disc printing and automatic two-sided tisk.Připojení to the computer is done via the USB 2.0 port or through a wireless interface, WiFi 802.11b / g / n. The printer has the dimensions 451 x 368 x 128 mm and weighs 6.6 kg. The included software for easy photo printing My Image Garden.', [], 'dataFixtures', $domain->getLocale());
+ $productData->shortDescriptions[$domain->getId()] = t('Powerful color inkjet printer A4 size, quality photo printing', [], 'dataFixtures', $domain->getLocale());
+
+ $i = 0;
+ $this->addParameterTranslations($parameterTranslations, t('Print technology', [], 'dataFixtures', $locale), t('inkjet', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Maximum size', [], 'dataFixtures', $locale), t('A4', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('LCD', [], 'dataFixtures', $locale), t('No', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Print resolution', [], 'dataFixtures', $locale), t('2400x600', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Color printing', [], 'dataFixtures', $locale), t('Yes', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('USB', [], 'dataFixtures', $locale), t('Yes', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('WiFi', [], 'dataFixtures', $locale), t('Yes', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Weight', [], 'dataFixtures', $locale), t('3.5 kg', [], 'dataFixtures', $locale), $locale, $i);
+ $this->addParameterTranslations($parameterTranslations, t('Dimensions', [], 'dataFixtures', $locale), t('449x304x152 mm', [], 'dataFixtures', $locale), $locale, $i);
+ }
+
+ $this->setParametersByTranslations($productData, $parameterTranslations);
+
+ $this->setPriceForAllPricingGroups($productData, '19990');
+
+ $this->setVat($productData, VatDataFixture::VAT_HIGH);
+ $this->setSellingFrom($productData, '14.1.2001');
+ $this->setSellingTo($productData, null);
+ $productData->usingStock = true;
+ $productData->stockQuantity = 457;
+ $productData->outOfStockAction = Product::OUT_OF_STOCK_ACTION_HIDE;
+
+ $this->setUnit($productData, UnitDataFixture::UNIT_PIECES);
+ $this->setAvailability($productData, AvailabilityDataFixture::AVAILABILITY_IN_STOCK);
+ $this->setCategoriesForAllDomains($productData, [CategoryDataFixture::CATEGORY_PRINTERS]);
+ $this->setFlags($productData, []);
+
+ $productData->sellingDenied = false;
+ $this->setBrand($productData, BrandDataFixture::BRAND_CANON);
+
+ $this->createProduct($productData);
+
+ $productData = $this->productDataFactory->create();
+
+ $productData->catnum = '9184536';
+ $productData->partno = '8331B006';
+ $productData->ean = '8845781245938';
+
+ $parameterTranslations = [];
+
+ foreach ($this->domain->getAllIncludingDomainConfigsWithoutDataCreated() as $domain) {
+ $locale = $domain->getLocale();
+ $productData->name[$locale] = t('Canon MG3650', [], 'dataFixtures', $locale);
+ $productData->descriptions[$domain->getId()] = t('
Canon PIXMA MG3350 black
Features of modern and elegantly prepared MFPs s new wireless capabilities. Function automatic two-sided printing printing on both sides, which saves paper while producing professional looking documents. The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridgesThat provide easy user service and stable print quality throughout the life. You reach for XL FINE cartridges provide printing multiple pages significantly between individual ink replacement. This is ideal if you often print.
Do smart device application download Canon PIXMA Printing Solutions a straight print or scan. In addition, you can check the printer status and ink levels. They also supported services Apple AirPrint and access to the Internet and Google Cloud Print. Software My Image Garden has a solution for organizing and printing photos, scanning, and access to online services. Due to advanced features such as face detection, you will always find exactly what you\'re looking for. Additional information: Print: Technology: 4-ink (in 2 packs) ChromaLife100 system, the head of FINE (2 pl) Borderless printing: A4, Letter, 20 x 25 cm, 13 x 18 cm, 10 x 15 cm Automatic two-sided printing: A4, A5, B5, Letter Printing from Application PIXMA Printing Solutions, Google Cloud Print, Apple AirPrint
Stylish and affordable, accessible multifunction devices for the home. Easy printing, scanning and copying in one device will take much less space and you\'ll save money than buying individual components. The printing machine uses an innovative print FINE technology Which guarantee excellent print quality. The printer has a system of four ink colors hidden in two ink cartridges, which provide easy user service and stable print quality throughout the life. You can reach the XL cartridges FINE, which provide significantly greater number of print pages between ink replacement. This is ideal if you are printing large volumes.
Software My Image Garden will reveal the full range of functions PIXMA printers. It offers solutions for the layout and printing photos, scanning, and access to online services. Due to advanced features such as face detection, it will scan all the pictures on your computer (even those long forgotten), and compile them into great designs to print. Service CREATIVE PARK PREMIUM you can download and print photos, images and artwork from internationally recognized photographers and artists. Create greeting cards, calendars or stunning 3D paper products, such as the space shuttle Endeavour.
Hewlett-Packard was founded in the difficult times of the Great Depression. The founders were a pair of friends whose name the company still proudly bears. They started their business in an unobtrusive garage near the city of Palo Alto. It is now a national monument. HP’s success lay not in copying existing products, but in the ability and courage to come up with something new.
The first commercial triumph was an oscillator that surpassed all competition in quality, yet sold at a quarter of the price. In 1968, HP released their first desktop computer - a desktop calculator. The company currently manufactures products primarily related to computer technology - computers and laptops, printers, scanners, digital cameras, servers, and last but not least, calculators.
Unless otherwise indicated in the product description, packaging does not contain a USB interface cable.
Sencor SLE 22F46DM4 Hello Kitty je televizor LED pro ty, kte hledaj pro sv dti nco, co maj rdi a co by je potilo . Televizor s motivy populrn Hello Kity a provedenm v rov barv vae dtko urit zaujme!
hlopka 55 cm (21,5")
LED podsvcen displeje
Integrovan DVD/DivX pehrva
Nahrvn na USB disk (formt TS) / pehrvn z USB disku (PVR)
Timeshift (asov posun)
rozlien displeje 1920x1080 bod
Vestavn HD DVB-T/C MPEG4 tuner
USB port (pehrvn z externho disku)
Pipojen: HDMI, SCART, AV vstup, YPbPr, VGA kabel, PC Audio vstup, USB 2.0
Podporovan formty: DivX, XviD, MP3,WMA, JPEG
Kontrast 1000:1 Jas 250 cd/m2 Rychlost odezvy 5 ms Progressive Scan PAL, SECAM BG/DK/A2/NICAM, AV vstup i NTSC 4,43 irok pozorovac hel 170°/160° Elektronick programov prvodce (EPG) Teletext Vcejazyn menu Obvody pro zlepen obrazu (DNR) Digitln hebenov filtr (DCF 3D) AVL ZOOM Ekvalizr Hodiny asova vypnut Dtsk pojistka Jednoduch hotelov md. Sencor SLE 22F46DM4 Hello Kitty je televizor LED pro ty, kte hledaj pro sv dti nco, co maj rdi a co by je potilo . Televizor s motivy populrn Hello Kity a provedenm v rov barv vae dtko urit zaujme! LED televize Sencor SLE 22F46DM4 HELLO KITTY LED Full HD televizor hlopka 55 cm (21,5") LED podsvcen displeje Integrovan DVD/DivX pehrva Nahrvn na USB disk (formt TS) / pehrvn z USB disku (PVR) Timeshift (asov posun) na pipojen USB disk Full HD rozlien displeje 1920x1080 bod Vestavn HD DVB-T/C MPEG4 tuner USB port (pehrvn z externho disku) Podporovan formty: DivX, XviD, MP3,WMA, JPEG Kontrast 1000:1 Jas 250 cd/m2 Rychlost odezvy 5 ms Progressive Scan PAL, SECAM BG/DK/A2/NICAM, AV vstup i NTSC 4,43 irok pozorovac hel 170°/160° Elektronick programov prvodce (EPG) Teletext Vcejazyn menu Obvody pro zlepen obrazu (DNR) Digitln hebenov filtr (DCF 3D) AVL ZOOM Ekvalizr Hodiny asova vypnut Dtsk pojistka Jednoduch hotelov md
";Television LED, 55 cm diagonal, 1920x1080 Full HD, DVB-T MPEG4 tuner with USB recording and playback (DivX, XviD, MP3, WMA, JPEG), HDMI, SCART, VGA, pink execution, energ. Class B;(DE) Television LED, 55 cm diagonal, 1920x1080 Full HD, DVB-T MPEG4 tuner with USB recording and playback (DivX, XviD, MP3, WMA, JPEG), HDMI, SCART, VGA, pink execution, energ. Class B;Sencor SLE 22F46DM4 Hello Kitty je televizor LED pro ty, kte hledaj pro sv dti nco, co maj rdi a co by je potilo . Televizor s motivy populrn Hello Kity a provedenm v rov barv vae dtko urit zaujme!;Television LED, 55 cm diagonal, 1920x1080 Full HD, DVB-T MPEG4 tuner with USB recording and playback;(DE) Television LED, 55 cm diagonal, 1920x1080 Full HD, DVB-T MPEG4 tuner with USB recording and playback;"ordinary_domain_1=2891.7;partner_domain_1=2891.7;vip_domain_1=2891.7";"ordinary_domain_2=115.668;vip_domain_2=115.668";"ordinary_domain_1=2891.7;partner_domain_1=2891.7;vip_domain_1=2891.7";high;16.1.2000;;300;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:27"",en:27""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:19201080 (Full HD),en:19201080 (Full HD)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ano,en:Yes]";"electronics;tv";"electronics;tv;books";"electronics;tv";"top;action";FALSE;sencor;
-"32"" Philips 32PFL4308";"32"" Philips 32PFL4308";"(DE) 32"" Philips 32PFL4308";9176508;32PFL4308H;8845781245929;"
Televize PHILIPS 32PFL4308 3D LED TV 4300 series
32"(81 cm)
Full HD
200PMR
DVB-T/C
HDMI
USB
Full HD LED TV
Na kvalit obrazu zle.
Obyejn televizory HDTV pinej kvalitu,ale vy oekvte to nejlep. Pedstavte si chvatn ostr detaily ve spojen s vysokm jasem,neuvitelnm kontrastem,ostrm vykreslenm pohybu,realistickmi barvami a vrnm obrazem - a tak se snenou spotebou energie. Tak u nemuste dle hledat. Televizor Full HD LED vm poskytne vce detail ne standardn televizory HDTV. A vce detail obrazu pro vs znamen intenzivnj zitek ze sledovn. 200 Hz PMR Spolenost Philips vytvoila technologii PMR pro zobrazen pohybu,kter je pesn,plynul a pirozen. PMR je standard pro men ostrosti pohyblivho obrazu. Technologie Perfect Motion Rate je vsledkem spojen jedinenho zpracovn obrazu,potu snmk za sekundu a obnovovac frekvence jednotlivch snmk,dokonalch funkc stmvn a technologie podsvcen. Vy slo PMR pispv k vtmu kontrastu a zetelnjmu obrazu - co pro vs znamen obraz vynikajc kvality.
Pixel Plus HD
Pokroil technologie pro zpracovn digitlnho obrazu zvyuje poet dk a pixel. Vsledek znamen vdy obraz ostr jako bitva s neuvitelnmi detaily a hloubkou z jakhokoli zdroje. Sluba Pause TV a nahrvn na zazen USB Potebujete si udlat pestvku a pokraovat ve sledovn televize pozdji? Funkce pozastaven znamen,e u nikdy nebudete muset ekat na reklamu - nebo ji sledovat! Chcete si nahrt iv digitln televizn vysln a sledovat je,a se vm to bude hodit? Najdte sv oblben programy pomoc Elektronickho programovho prvodce (EPG) a mete snadno naplnovat nahrvn. Jednoduchm pipojenm pevnho disku USB k televizoru se vysln pohodln ulo,abyste je mohli shldnout pozdji. Televize PHILIPS 32PFL4308 3D LED TV 4300 series, 32"(81 cm), Full HD, 200PMR, DVB-T/C, HDMI,USB Full HD LED TV Na kvalit obrazu zle. Obyejn televizory HDTV pinej kvalitu,ale vy oekvte to nejlep. Pedstavte si chvatn ostr detaily ve spojen s vysokm jasem,neuvitelnm kontrastem,ostrm vykreslenm pohybu,realistickmi barvami a vrnm obrazem - a tak se snenou spotebou energie. Tak u nemuste dle hledat. Televizor Full HD LED vm poskytne vce detail ne standardn televizory HDTV. A vce detail obrazu pro vs znamen intenzivnj zitek ze sledovn. 200 Hz PMR Spolenost Philips vytvoila technologii PMR pro zobrazen pohybu,kter je pesn,plynul a pirozen. PMR je standard pro men ostrosti pohyblivho obrazu. Technologie Perfect Motion Rate je vsledkem spojen jedinenho zpracovn obrazu,potu snmk za sekundu a obnovovac frekvence jednotlivch snmk,dokonalch funkc stmvn a technologie podsvcen. Vy slo PMR pispv k vtmu kontrastu a zetelnjmu obrazu - co pro vs znamen obraz vynikajc kvality. Pixel Plus HD Pokroil technologie pro zpracovn digitlnho obrazu zvyuje poet dk a pixel. Vsledek znamen vdy obraz ostr jako bitva s neuvitelnmi detaily a hloubkou z jakhokoli zdroje.
Sluba Pause TV a nahrvn na zazen USB
Potebujete si udlat pestvku a pokraovat ve sledovn televize pozdji? Funkce pozastaven znamen,e u nikdy nebudete muset ekat na reklamu - nebo ji sledovat! Chcete si nahrt iv digitln televizn vysln a sledovat je,a se vm to bude hodit? Najdte sv oblben programy pomoc Elektronickho programovho prvodce (EPG) a mete snadno naplnovat nahrvn. Jednoduchm pipojenm pevnho disku USB k televizoru se vysln pohodln ulo,abyste je mohli shldnout pozdji.
";"
Meet the latest generation of LED TVs Philips, which include the thinSmart TV running Android. Gets you a fine painting, innovative technologies, including image processing Ambilight and honest materials used in production. It features cutting-edge design structures with an eye for detail that fits into modern interiors. Like basis was inclined central pedestal that represents the geometric pun. On TV it will always look nice even when switched off.
The main advantages:
Ambilight backlighting - projecting a glow on the wall
Sharp and smooth image
Android operating system with applications
Internet connection
Remote control with keyboard
Superior picture
Ambilight backlighting will forever change your perception of television. This is a unique technology that expands the display area outside the boundaries of the panel itself. 2 Sided glow lit from two sides of the screen to the surrounding walls and creates a breathtaking effect. Natural Motion technology ensures smooth and crisp moving images without blur by increasing the number of frames per second to double. It's handy for example when movie action scenes or sports broadcasts.
Micro Dimming Pro conveys a realistic visual experience day and night. It uses a light sensor and a special software to optimize the contrast of the screen on the basis of light conditions in the environment. The image is analyzed 6400 in different zones, thereby providing authentic and undisturbed experience. Sharp moving images with breathtaking contrast, detail and depth ensure Pixel Precise HD.
Android - richer television viewing experience
Built-in WiFi module, and an Ethernet port expands the possibilities of television. Are you tired of watching okoukanch series? Then drop into online content. Waiting for you Archives TV stations, social networks, YouTube and other corners of the Internet via a web browser. Smart TV is based on Android OS 5.0 (Lollipop), has pre-installed applications and more can be found at Google Play. Use remote control with keyboard for easy typing text or even voice control. Advantage based on Android is also always up to date firmware. And all of you will be taken without waiting for a nimble run television is not only the old operating system, but also 2jdrov processor.
Saving operation
Manufacturer did not forget to decent connective equipment. It includes a quartet of HDMI connectors, one Scart and a trio of USB connectors for recording or playback of content by connecting USB disks. There is also support for HbbTV function or even suspend broadcasts EPG 8 days. Tuners are represented DVB-T / T2 / C and television unequivocal advantage of the economic operation. The TV comes to energy class A +, and for a very decent cuts only 45 kWh.
Additional information:
Picture Enhancement: Natural Motion 500Hz Perfect Motion Rate Pixel Precise HD Micro Dimming Pro
Smart TV: User interaction - multiroom Client and Server, SimplyShare, certified Wi-Fi Certified Miracast Interactive television - HbbTV Program - Suspension of television broadcasting, USB recording Applications SmartTV - Online video store, open an Internet browser, Social TV service, Spotify, TV on Demand, YouTube Easy Installation - Automatic detection equipment Philips Connection Wizard equipment, Network Setup Wizard, the Setup Wizard Easy to use - Universal Smart Menu button, on-screen User Guide Firmware upgradeable - Guide cars. update, Firmware upgradeable via USB, Firmware Update online Screen Format Adjustments - Basic - Fill Screen, Fit to Screen, Advanced - Pan, Zoom, Stretch Philips TV Remote - Applications Channels, Control, NowOnTV, TV guide, Video on demand Remote control - Keyboard
Ambilight: Versions of Ambilight - 2 pages Ambilight - The adaptation of the color of walls, Lounge Mode, Game Mode, Ambilight + hue
Multimedia applications: Video playback formats - Containers: AVI, MKV, H264 / MPEG-4 AVC, MPEG-1, MPEG-2, MPEG-4, WMV9 / VC1, HEVC Format Support subtitles - .SMI, .SRT, .ssa, .SUB, .TXT, .ass Play music formats - AAC, MP3, WAV, WMA (v2 to v9.2), PRO-WMA (v9 and v10) Picture Playback Formats - JPEG, BMP, GIF, JPS, PNG, PNS, BMS, MIT
Connectivity:4 x HDMI1 x Scart (RGB / CVBS)3 x USBWireless Dual Band Wi-Fi Direct, Integrated Wi-Fi 11n 2 2Other connections: Antenna IEC75, Common Interface Plus (CI +), Ethernet-LAN ??RJ-45, Digital audio output (optical), Audio L / R, Audio Input (DVI), Headphone out, Service connector, the connector SatelliteHDMI features - Audio Return ChannelEasyLink (HDMI-CEC) - Pass the remote control signal, System audio control, System standby, One touch play
Supplied Remote control 2 x AAA Batteries Table top stand Power cable Quick start guide use Brochure Legal and safety information
";"(DE)
Meet the latest generation of LED TVs Philips, which include the thinSmart TV running Android. Gets you a fine painting, innovative technologies, including image processing Ambilight and honest materials used in production. It features cutting-edge design structures with an eye for detail that fits into modern interiors. Like basis was inclined central pedestal that represents the geometric pun. On TV it will always look nice even when switched off.
The main advantages:
Ambilight backlighting - projecting a glow on the wall
Sharp and smooth image
Android operating system with applications
Internet connection
Remote control with keyboard
Superior picture
Ambilight backlighting will forever change your perception of television. This is a unique technology that expands the display area outside the boundaries of the panel itself. 2 Sided glow lit from two sides of the screen to the surrounding walls and creates a breathtaking effect. Natural Motion technology ensures smooth and crisp moving images without blur by increasing the number of frames per second to double. It's handy for example when movie action scenes or sports broadcasts.
Micro Dimming Pro conveys a realistic visual experience day and night. It uses a light sensor and a special software to optimize the contrast of the screen on the basis of light conditions in the environment. The image is analyzed 6400 in different zones, thereby providing authentic and undisturbed experience. Sharp moving images with breathtaking contrast, detail and depth ensure Pixel Precise HD.
Android - richer television viewing experience
Built-in WiFi module, and an Ethernet port expands the possibilities of television. Are you tired of watching okoukan??ch series? Then drop into online content. Waiting for you Archives TV stations, social networks, YouTube and other corners of the Internet via a web browser. Smart TV is based on Android OS 5.0 (Lollipop), has pre-installed applications and more can be found at Google Play. Use remote control with keyboard for easy typing text or even voice control. Advantage based on Android is also always up to date firmware. And all of you will be taken without waiting for a nimble run television is not only the old operating system, but also 2j??drov?? processor.
Saving operation
Manufacturer did not forget to decent connective equipment. It includes a quartet of HDMI connectors, one Scart and a trio of USB connectors for recording or playback of content by connecting USB disks. There is also support for HbbTV function or even suspend broadcasts EPG 8 days. Tuners are represented DVB-T / T2 / C and television unequivocal advantage of the economic operation. The TV comes to energy class A +, and for a very decent cuts only 45 kWh.
Additional information:
Picture Enhancement: Natural Motion 500Hz Perfect Motion Rate Pixel Precise HD Micro Dimming Pro
Smart TV: User interaction - multiroom Client and Server, SimplyShare, certified Wi-Fi Certified Miracast Interactive television - HbbTV Program - Suspension of television broadcasting, USB recording Applications SmartTV - Online video store, open an Internet browser, Social TV service, Spotify, TV on Demand, YouTube Easy Installation - Automatic detection equipment Philips Connection Wizard equipment, Network Setup Wizard, the Setup Wizard Easy to use - Universal Smart Menu button, on-screen User Guide Firmware upgradeable - Guide cars. update, Firmware upgradeable via USB, Firmware Update online Screen Format Adjustments - Basic - Fill Screen, Fit to Screen, Advanced - Pan, Zoom, Stretch Philips TV Remote - Applications Channels, Control, NowOnTV, TV guide, Video on demand Remote control - Keyboard
Ambilight: Versions of Ambilight - 2 pages Ambilight - The adaptation of the color of walls, Lounge Mode, Game Mode, Ambilight + hue
Multimedia applications: Video playback formats - Containers: AVI, MKV, H264 / MPEG-4 AVC, MPEG-1, MPEG-2, MPEG-4, WMV9 / VC1, HEVC Format Support subtitles - .SMI, .SRT, .ssa, .SUB, .TXT, .ass Play music formats - AAC, MP3, WAV, WMA (v2 to v9.2), PRO-WMA (v9 and v10) Picture Playback Formats - JPEG, BMP, GIF, JPS, PNG, PNS, BMS, MIT
Connectivity:4 x HDMI1 x Scart (RGB / CVBS)3 x USBWireless Dual Band Wi-Fi Direct, Integrated Wi-Fi 11n 2 ? 2Other connections: Antenna IEC75, Common Interface Plus (CI +), Ethernet-LAN ??RJ-45, Digital audio output (optical), Audio L / R, Audio Input (DVI), Headphone out, Service connector, the connector SatelliteHDMI features - Audio Return ChannelEasyLink (HDMI-CEC) - Pass the remote control signal, System audio control, System standby, One touch play
Supplied Remote control 2 x AAA Batteries Table top stand Power cable Quick start guide use Brochure Legal and safety information
";Televize PHILIPS 32PFL4308 3D LED TV 4300 series, 81 cm, Full HD, 200PMR, DVB-T/C, HDMI, USB, Full HD LED TV, Na kvalit obrazu zle;Meet the latest generation of LED TVs Philips, which include the thin Smart TV running Android.;(DE) Meet the latest generation of LED TVs Philips, which include the thin Smart TV running Android.;"ordinary_domain_1=8173.5;partner_domain_1=8173.5;vip_domain_1=8173.5";"ordinary_domain_2=326.94;vip_domain_2=326.94";"ordinary_domain_1=8173.5;partner_domain_1=8173.5;vip_domain_1=8173.5";high;15.1.2000;;200;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:30"",en:30""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:19201080 (Full HD),en:19201080 (Full HD)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ne,en:No]";"electronics;tv";"electronics;tv";"electronics;tv";top;FALSE;philips;
-"47"" LG 47LA790V (FHD)";"47"" LG 47LA790V (FHD)";"(DE) 47"" LG 47LA790V (FHD)";5965879P;47LA790V;8845781245928;"
Cinema 3D Smart TV LG 47LA790V se Cinema 3D Screen Designem je 3D televizor s technologi LG Cinema 3D a hlopkou 47", kter urit spln vae oekvn. Oplv vekerou modern obrazovou technologi LG, kter je zrukou vjimen kvality obrazu s vysokou vrnost barev a hlubm kontrastem vetn konverze z 2D na 3D, kter vm umon sledovat bn televizn vysln ve 3D prostorovm obrazu.
Pjemnm pekvapenm pro vae dti bude tak funkce Dual Play umoujc hran her ve dvou lidech bez rozdlen obrazovky televize. Tento model Cinema 3D LED TV poskytuje krom snen spoteby energie tak rzn monost konektivity, disponuje integrovanmi DVB-T/C/S2 tunery a technologi Smart Energy Saving. Oproti nim adm je vybaven lepm dvoujdrovm procesorem a Magickm stojanem a lze k nmu dokoupit TV kameru AN-VC500. Poznejte bohat a stle se roziujc svt 3D zbavy, kter mte na dosah ruky - sta jen pout Magick dlkov ovlada Karta Svt 3D v menu LG TV nabz nekonen mnostv 3D obsahu, kter zahrnuje filmy, sport, hudbu, videa, vzdlvac poady a mnoho dalho!
FLICKER FREE - 3D OBRAZ BEZ BLIKN
Uvejte si 3D TV, jej sledovn je mnohem pjemnj pro Vae oi, protoe obraz vbec neblik. Na rozdl od bnch 3D TV, LG CINEMA 3D Smart TV vbec neblik a 3D obraz je mnohem jasnj. To je mnohem pjemnj pro Vae oi a obraz je ist a ostej, take Vm pijde, jako by vystupoval pln z obrazovky. Cinema 3D Smart TV LG 47LA790V se Cinema 3D Screen Designem je 3D televizor s technologi LG Cinema 3D a hlopkou 47", kter urit spln vae oekvn. Oplv vekerou modern obrazovou technologi LG, kter je zrukou vjimen kvality obrazu s vysokou vrnost barev a hlubm kontrastem vetn konverze z 2D na 3D, kter vm umon sledovat bn televizn vysln ve 3D prostorovm obrazu. Pjemnm pekvapenm pro vae dti bude tak funkce Dual Play umoujc hran her ve dvou lidech bez rozdlen obrazovky televize. Tento model Cinema 3D LED TV poskytuje krom snen spoteby energie tak rzn monost konektivity, disponuje integrovanmi DVB-T/C/S2 tunery a technologi Smart Energy Saving. Oproti nim adm je vybaven lepm dvoujdrovm procesorem a Magickm stojanem a lze k nmu dokoupit TV kameru AN-VC500. Poznejte bohat a stle se roziujc svt 3D zbavy, kter mte na dosah ruky - sta jen pout Magick dlkov ovlada Karta Svt 3D v menu LG TV nabz nekonen mnostv 3D obsahu, kter zahrnuje filmy, sport, hudbu, videa, vzdlvac poady a mnoho dalho!
";"
47 ""LG 47LA790V
> Luxury TV from the South Korean company LG bears 47LA790S . At first glance its beautiful design That pleases the eye of every lover of pure and precise shapes. Inside the TV is hidden except M13 dual-core processor number of extra features. I so belong to the energy class A + . Micro Pixel Control function is performed local dimming backlight and thus significantly reduces up to 64 W. This is so gigantic screen with really great.
This TV is considerate to your eyes because of the image eliminates the annoying flicker caused by conventional 3D glasses, and you so you can enjoy long evenings of film without fatigue and eye pain . User-friendly environment allows adjust the 3D depth effect and yourself, you can choose whether you prefer comfort or deeper experience when watching 3D content. You could very well happen that while watching a football match flips the ball right into your living room Because special functions for image conversion improve any broadcasting the third dimension .
Avid gamers will appreciate the Dual Play When television broadcasts two separate 2D images and each player using glasses to see their part to the full screen area. No more worry when a split screen. Intel WiDi (Wireless Display), respectively. wireless transmission of video and audio, allows quick and easy connection of TVs and laptops without cables or an Internet connection. It is very convenient and fast you'll love this feature.";"(DE)
47 ""LG 47LA790V
> Luxury TV from the South Korean company LG bears 47LA790S . At first glance its beautiful design That pleases the eye of every lover of pure and precise shapes. Inside the TV is hidden except M13 dual-core processor number of extra features. I so belong to the energy class A + . Micro Pixel Control function is performed local dimming backlight and thus significantly reduces up to 64 W. This is so gigantic screen with really great.
This TV is considerate to your eyes because of the image eliminates the annoying flicker caused by conventional 3D glasses, and you so you can enjoy long evenings of film without fatigue and eye pain . User-friendly environment allows adjust the 3D depth effect and yourself, you can choose whether you prefer comfort or deeper experience when watching 3D content. You could very well happen that while watching a football match flips the ball right into your living room Because special functions for image conversion improve any broadcasting the third dimension .
Avid gamers will appreciate the Dual Play When television broadcasts two separate 2D images and each player using glasses to see their part to the full screen area. No more worry when a split screen. Intel WiDi (Wireless Display), respectively. wireless transmission of video and audio, allows quick and easy connection of TVs and laptops without cables or an Internet connection. It is very convenient and fast you'll love this feature.";"Cinema 3D Smart TV LG 47LA790V se Cinema 3D Screen Designem je 3D televizor s technologi LG Cinema 3D a hlopkou 47", kter urit spln vae oekvn. Oplv vekerou modern obrazovou technologi LG, kter je zrukou vjimen kvality obrazu s vysokou vrnost barev a hlubm kontrastem vetn konverze z 2D na 3D, kter vm umon sledovat bn televizn vysln ve 3D prostorovm obrazu.";"47 ""LG 47LA790V Luxury TV from the South Korean company LG bears 47LA790S. At first glance its beautiful design that pleases the eye of every lover of pure and precise shapes.";"(DE) 47 ""LG 47LA790V Luxury TV from the South Korean company LG bears 47LA790S. At first glance its beautiful design that pleases the eye of every lover of pure and precise shapes.";"ordinary_domain_1=17843;partner_domain_1=17843;vip_domain_1=17843";"ordinary_domain_2=713.72;vip_domain_2=713.72";"ordinary_domain_1=17843;partner_domain_1=17843;vip_domain_1=17843";high;14.1.2000;;800;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:47"",en:47""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:19201080 (Full HD),en:19201080 (Full HD)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ne,en:No]";"electronics;tv";"electronics;tv";"electronics;tv";;FALSE;lg;
-A4tech my X-710BK, OSCAR Game, 2000DPI, ern;A4tech mouse X-710BK, OSCAR Game, 2000DPI, black,;(DE) A4tech mouse X-710BK, OSCAR Game, 2000DPI, black,;5960453;X-710BK;8845781245923;"
Hern potaov my A4Tech X-710BK s pti tlatky a scrolovacm kolekem pro snadnj ovldn dokument, i prohlen internetovch strnek.
Novinkou u tto srie je 3XFire tlatko, kter pi jednom zmknut reaguje jako troj-klik. Dal inovac je 5 DPI zmna citlivosti snme a to v krocch 400/600/1200/1600/2000 DPI. My je pohodln tvarovan a pipojuje se pomoc USB rozhran. Novinkou je 16KB intern pam do kter je mon pomoc programu Oskar Mouse Editor nahrvat scripty na Vae oblben hry. A4tech X710BK Hern potaov my vybaven pti tlatky a scrolovacm tlatkem pro snadnj ovldn dokument nebo prohlen internetovch strnek. Novinkou je pak tlatko 3XFire, kter pi jednom zmknut reguje jako trojit kliknut. My disponuje monost nastavit a pt citlivost snmae a to v krocch 400, 600, 1200, 1600 a 2000 DPI. My m ergonomick design, pipojuje se pes vysokorychlostn USB rozhran a je vybavena 16 Kb intern pamti, do kter je mon pomoc programu Oscar Mouse Editor nahrvat scripty pro ovldn vaich oblbench her.
Je pln kompatibiln se vemi modernmi operanmi systmy vetn Windows Vista.
Parametry a specifikace:
Rozhran: USB 2.0
Redukce do PS/2
Kompatibilita OS: Microsoft Windows 2000/XP/2003/Vista.
";
A4tech X710BK
Playing computer mouse has five buttons and scrolovacm button for easier browsing documents or Internet pages. News is a key 3XFire that in one pressing regulating a triple clicks. The mouse has five options to set up the sensor sensitivity and in steps 400, 600, 1200, 1600 and 2000 DPI. The mouse has an ergonomic design, it connects via high-speed USB interface and is equipped with 16 Kb internal memory that is possible with the Oscar Mouse Editor to record scripts to control your favorite games. It is fully compatible with all modern operating systems including Windows Vista.
Specifications:
Interface: USB 2.0 Reduction in PS/2
OS Compatibility: Microsoft Windows 2000/XP/2003/Vista;(DE)
A4tech X710BK
Playing computer mouse has five buttons and scrolovac?m button for easier browsing documents or Internet pages. News is a key 3XFire that in one pressing regulating a triple clicks. The mouse has five options to set up the sensor sensitivity and in steps 400, 600, 1200, 1600 and 2000 DPI. The mouse has an ergonomic design, it connects via high-speed USB interface and is equipped with 16 Kb internal memory that is possible with the Oscar Mouse Editor to record scripts to control your favorite games. It is fully compatible with all modern operating systems including Windows Vista.
Specifications:
Interface: USB 2.0 Reduction in PS/2
OS Compatibility: Microsoft Windows 2000/XP/2003/Vista;Hern potaov my A4Tech X-710BK s pti tlatky a scrolovacm kolekem pro snadnj ovldn dokument, i prohlen internetovch strnek.;A4tech X710BK Playing computer mouse has five buttons and scrolovacm button for easier browsing documents or Internet pages.;(DE) A4tech X710BK Playing computer mouse has five buttons and scrolovac?m button for easier browsing documents or Internet pages.;"ordinary_domain_1=263.6;partner_domain_1=263.6;vip_domain_1=263.6";"ordinary_domain_2=10.544;vip_domain_2=10.544";"ordinary_domain_1=263.6;partner_domain_1=263.6;vip_domain_1=263.6";high;9.1.2000;;;pcs;in-stock;"[cs:Hern my,en:Gaming mouse]=[cs:Ano,en:Yes];[cs:Ergonomie,en:Ergonomics]=[cs:Pravoruk,en:Right-handed];[cs:Podporovan OS,en:Supported OS]=[cs:Windows 2000/XP/Vista/7,en:Windows 2000/XP/Vista/7];[cs:Poet tlatek,en:Number of buttons]=[cs:5,en:5]";"electronics;pc";"electronics;pc";"electronics;pc";;FALSE;a4tech;
-Apple iPhone 5S 64GB, zlat;Apple iPhone 5S 64GB, gold;(DE) Apple iPhone 5S 64GB, gold;9510261;ME440CS;8845781245956;"
Apple iPhone 5S je smyslupln vymylen. Peliv zven. Precizn zpracovan. Nen jen tm, co je technologicky mon. Ale tm, co je technologicky uiten. Nen tm, co pijde. Ale tm, co by mlo pijt. Inovovan a opt o hodn vylepen smartphone od spolenosti Apple, to je iPhone 5S.
Vkonnj procesor, vkonnj grafick jdro, vt snmac ip fotoapartu, video se sekvenc 120fps, to jsou jen ve zkratce hlavn vylepen oproti modelu iPhone 5. Hlavnmi vylepenmi je nov operan systm iOS 7, procesor A7 s 64bitovou technologi a pomocnm procesorem M7 pro vpoty na pozad (akcelerometr, kompas, gyroskop apod), pro vt bezpenost integrovan snma otisk prst v odemykacm tlatku, o 15% vt snma fotoapartu, dvojit LED dioda pro relnj barvy pi pouit blesku. Procesor A7 je prvn mobiln procesor s 64bitovou technologi, Dky tomu doke zpracovat vce proces najednou vyut tak plnohodnotn nov iOS 7. Navc se u iPhonu 5S objevuje pomocn procesor M7, kter obstarv vpoty na pozad a nechv tak hlavn procesor fungovat pro dleit procesy a vpoty. Optika fotoapartu je sloena z osmi oek a m svtelnost f2,2, snma je o 15% vt oproti iPhonu 5 ale zachoval si rozlien 8Mpx a m tedy fyzicky vt pixely co zajiuje lep dopad svtla a tedy i kvalitnj fotografie. Ve spojen s novm dvojitm LED diodovm bleskem, kter pomoc 1000 odstn, doke fotografii focenou s bleskem doladit do relnch a ivch barev. Novinkou je tak zznam v takzvanm burst mdu, dky ktermu lze bhem 2 sekund zaznamenat 20 snmk.
Apple iPhone 5S nat video ve Full HD rozlien s 30 snmky za sekundu a nov se 120 snmky v rozlien 1280x720pix v takzvanm SloMo mdu. Bezpenost Vaeho iPhonu 5S je nyn na nejvy rovni dky novmu rozpoznn otisku prstu Touch ID. Snma se skrv v "HomeButton" tlatku a dky senzoru s rozlienm 500pixel je ten otisku velmi pesn. Nvod v eskm jazyce naleznete zde Zazen je ureno pro eskou republiku. Vztahuje se na nj plnohodnotn zruka a podpora autorizovanho servisu v R. Apple iPhone 5S je smyslupln vymylen. Peliv zven. Precizn zpracovan. Nen jen tm, co je technologicky mon. Ale tm, co je technologicky uiten. Nen tm, co pijde. Ale tm, co by mlo pijt. Inovovan a opt o hodn vylepen smartphone od spolenosti Apple, to je iPhone 5S. Vkonnj procesor, vkonnj grafick jdro, vt snmac ip fotoapartu, video se sekvenc 120fps, to jsou jen ve zkratce hlavn vylepen oproti modelu iPhone 5. Hlavnmi vylepenmi je nov operan systm iOS 7, procesor A7 s 64bitovou technologi a pomocnm procesorem M7 pro vpoty na pozad (akcelerometr, kompas, gyroskop apod), pro vt bezpenost integrovan snma otisk prst v odemykacm tlatku, o 15% vt snma fotoapartu, dvojit LED dioda pro relnj barvy pi pouit blesku. Procesor A7 je prvn mobiln procesor s 64bitovou technologi, Dky tomu doke zpracovat vce proces najednou vyut tak plnohodnotn nov iOS 7. Navc se u iPhonu 5S objevuje pomocn procesor M7, kter obstarv vpoty na pozad a nechv tak hlavn procesor fungovat pro dleit procesy a vpoty. Optika fotoapartu je sloena z osmi oek a m svtelnost f2,2, snma je o 15% vt oproti iPhonu 5 ale zachoval si rozlien 8Mpx a m tedy fyzicky vt pixely co zajiuje lep dopad svtla a tedy i kvalitnj fotografie. Ve spojen s novm dvojitm LED diodovm bleskem, kter pomoc 1000 odstn, doke fotografii focenou s bleskem doladit do relnch a ivch barev. Novinkou je tak zznam v takzvanm burst mdu, dky ktermu lze bhem 2 sekund zaznamenat 20 snmk. Apple iPhone 5S nat video ve Full HD rozlien s 30 snmky za sekundu a nov se 120 snmky v rozlien 1280x720pix v takzvanm SloMo mdu. Bezpenost Vaeho iPhonu 5S je nyn na nejvy rovni dky novmu rozpoznn otisku prstu Touch ID. Snma se skrv v "HomeButton" tlatku a dky senzoru s rozlienm 500pixel je ten otisku velmi pesn. Nvod v eskm jazyce naleznete zde Zazen je ureno pro eskou republiku. Vztahuje se na nj plnohodnotn zruka a podpora autorizovanho servisu v R. Apple iPhone 5S je smyslupln vymylen. Peliv zven. Precizn zpracovan. Nen jen tm, co je technologicky mon. Ale tm, co je technologicky uiten. Nen tm, co pijde. Ale tm, co by mlo pijt. Inovovan a opt o hodn vylepen smartphone od spolenosti Apple, to je iPhone 5S. Vkonnj procesor, vkonnj grafick jdro, vt snmac ip fotoapartu, video se sekvenc 120fps, to jsou jen ve zkratce hlavn vylepen oproti modelu iPhone 5. Hlavnmi vylepenmi je nov operan systm iOS 7, procesor A7 s 64bitovou technologi a pomocnm procesorem M7 pro vpoty na pozad (akcelerometr, kompas, gyroskop apod), pro vt bezpenost integrovan snma otisk prst v odemykacm tlatku, o 15% vt snma fotoapartu, dvojit LED dioda pro relnj barvy pi pouit blesku. Procesor A7 je prvn mobiln procesor s 64bitovou technologi, Dky tomu doke zpracovat vce proces najednou vyut tak plnohodnotn nov iOS 7. Navc se u iPhonu 5S objevuje pomocn procesor M7, kter obstarv vpoty na pozad a nechv tak hlavn procesor fungovat pro dleit procesy a vpoty. Optika fotoapartu je sloena z osmi oek a m svtelnost f2,2, snma je o 15% vt oproti iPhonu 5 ale zachoval si rozlien 8Mpx a m tedy fyzicky vt pixely co zajiuje lep dopad svtla a tedy i kvalitnj fotografie. Ve spojen s novm dvojitm LED diodovm bleskem, kter pomoc 1000 odstn, doke fotografii focenou s bleskem doladit do relnch a ivch barev. Novinkou je tak zznam v takzvanm burst mdu, dky ktermu lze bhem 2 sekund zaznamenat 20 snmk. Apple iPhone 5S nat video ve Full HD rozlien s 30 snmky za sekundu a nov se 120 snmky v rozlien 1280x720pix v takzvanm SloMo mdu. Bezpenost Vaeho iPhonu 5S je nyn na nejvy rovni dky novmu rozpoznn otisku prstu Touch ID. Snma se skrv v "HomeButton" tlatku a dky senzoru s rozlienm 500pixel je ten otisku velmi pesn. Nvod v eskm jazyce naleznete zde Zazen je ureno pro eskou republiku. Vztahuje se na nj plnohodnotn zruka a podpora autorizovanho servisu v R.
Recenze uivatel
Pokud hodnotm tento mobil z pohledu inovovanch funkc a revolunch novinek, jsem zcela spokojen. Touch ID, iOS 7 a 64 bitov procesor jsou super novinky. Pokud ale beru v potaz teba design, ten je u podle mne celkem okoukan - stle ale krsn. Otzkou zstv, jestli opravdu nen lep zachovvat star funkn design, kter prost funguje. Podle mho ano.
Nejsem zastnce Applu, ale iPhone je zkrtka iPhone. Je to mj prvn telefon od Applu, dve jsem mla telefon od Samsungu a od HTC, ale iPhonu se zkrtka nic neme rovnat. Otzkou je, zda jste ochotni investovat do telefonu tolik penz - cena je toti samozejm pemrtn, za m osobn mi to ale stlo za to. Telefon je krsn, rychl, za 3 msce intenzivnho pouvn se mi ani jednou nesekl, ovldn je intuitivn a tvrci skuten mysl na ve - nemu si pomoct, ale kdy to porovnm, pipad mi, e Android m v tom prost "bordel", jak v aplikacch, tak v ovldn. Kdy si zvyknete na iPhone, u nikdy nebudete chtt nic jinho. Urit doporuuji - stoj to za to. ;)
nevm jak vy, ale pipad mi, e tento model je opt krok pozadu oproti vvoji. Tvrce zejm nepochopil, e vechno nov nemus bt vdy lep a tento apple je toho plnm pkladem, kdo ekal, e bude tento vrobek zamen konen na praktitj pouit, opt musel bt zklaman, protoe se takka vbec neli od svch pedchdc a dosahuje dokonce jet horch vsledk. pod jsou tu chybu, se ktermi se potkme neustle: pi krjen masa nedoke rovn rozznout vechny pltky, pi vhozen do misky s ovocem nefunguje reim mixr a ovoce se vm vrt "OHLODAN" jen ne namixovan. rovn pi pdu z letadla nevydr a rozbije se. Tento vrobek je pro mne obrovskm zklamnm a proto ho rozhodn nedoporuuji
";"Mobile phone - Apple A7 with 64-bit architecture, 4"" Retina Touch display 1136x640, 32GB internal memory, WiFi 802.11a/b/g/n, Bluetooth 4.0, 8 Mpx camera with LED flash, GPS, Fingerprint sensor, iOS 7";"(DE) Mobile phone - Apple A7 with 64-bit architecture, 4"" Retina Touch display 1136x640, 32GB internal memory, WiFi 802.11a/b/g/n, Bluetooth 4.0, 8 Mpx camera with LED flash, GPS, Fingerprint sensor, iOS 7";Apple iPhone 5S je smyslupln vymylen. Peliv zven. Precizn zpracovan. Nen jen tm, co je technologicky mon. Ale tm, co je technologicky uiten. Nen tm, co pijde. Ale tm, co by mlo pijt. Inovovan a opt o hodn vylepen smartphone od spolenosti Apple, to je iPhone 5S.;"Mobile phone - Apple A7 with 64-bit architecture, 4"" Retina Touch display 1136x640, 32GB internal memory, WiFi 802.11a/b/g/n, Bluetooth 4.0, 8 Mpx camera with LED flash, GPS, Fingerprint sensor, iOS 7";"(DE) Mobile phone - Apple A7 with 64-bit architecture, 4"" Retina Touch display 1136x640, 32GB internal memory, WiFi 802.11a/b/g/n, Bluetooth 4.0, 8 Mpx camera with LED flash, GPS, Fingerprint sensor, iOS 7";"ordinary_domain_1=19000;partner_domain_1=19000;vip_domain_1=19000";"ordinary_domain_2=760;vip_domain_2=760";"ordinary_domain_1=19000;partner_domain_1=19000;vip_domain_1=19000";high;11.2.2014;;;pcs;out-of-stock;"[cs:Hmotnost,en:Weight]=[cs:112 g,en:112 g];[cs:Rozmry,en:Dimensions]=[cs:123.8x58.6 mm,en:123.8x58.6 mm];[cs:Monost pamtov karty,en:Memory card support]=[cs:Ne,en:No];[cs:Pam RAM,en:RAM]=[cs:1024 MB,en:1024 MB];[cs:Poet barev,en:Number of colors]=[cs:16mil.,en:16mil.];[cs:Frekvence procesoru,en:Processor frequency]=[cs:1.7GHz,en:1.7GHz];[cs:Poet jader procesoru,en:Number of processor cores]=[cs:2,en:2];[cs:Bluetooth,en:Bluetooth]=[cs:Ano,en:Yes];[cs:NFC,en:NFC]=[cs:Ne,en:No];[cs:GPS modul,en:GPS module]=[cs:Ne,en:No]";phones;phones;phones;"new;action;top";FALSE;apple;
-BROTHER PT-H300;BROTHER PT-H300;(DE) BROTHER PT-H300;5966179;PTH300;8845781245939;tiskrna samolepcch ttk, run, rychlost tisku 20 mm/s, klvesnice QWERTZ, grafick podsvcen displej, tisk na ttky 6, 9, 12 a 18mm, tisk rovch kd, pouze TZE psky, napjen 6x AA baterie;
Hand printing adhesive labels Brother especially suitable for easy marking in warehouses, offices and wherever it is required records or quickly usable labels. The printer boasts a very easy to use, ensuring a perfect look label width from 3.5 mm to 18 mm. You can create labels, barcodes, labels for folders, address and shipping labels, or labels on CD and DVD media. Everything can be created by using the keyboard directly to the printer manual.
The printer is in addition to ease of use and versatility also very fast. It can print up to 2 cm plate for one second. Very please direct thermal printing technology, which reduces the cost of toner and ink. The printer can be powered by AC adapter, rechargeable battery or alkaline batteries 6 x AA.
Additional information:
Print technology: Thermal
Width TZ tapes: 3.5/6/9/12/18 (mm) Display: 16 characters x 2 lines Print speed: 20 mm/s Odsih: handmade Font style: 14
Symbols: 617
Characters in mind: 2800
Other features: vertical printing, barcode printing
Possible sources of supply: AC adapter AD-E001 - (not included) rechargeable battery BA-E001 - (not included) Alkaline Batteries 6 x AA - (not included) Package Contents: Printer PT-H300 starting tape TZe-241 (18 mm black on white, length 4 m) documentation
;(DE)
Hand printing adhesive labels Brother especially suitable for easy marking in warehouses, offices and wherever it is required records or quickly usable labels. The printer boasts a very easy to use, ensuring a perfect look label width from 3.5 mm to 18 mm. You can create labels, barcodes, labels for folders, address and shipping labels, or labels on CD and DVD media. Everything can be created by using the keyboard directly to the printer manual.
The printer is in addition to ease of use and versatility also very fast. It can print up to 2 cm plate for one second. Very please direct thermal printing technology, which reduces the cost of toner and ink. The printer can be powered by AC adapter, rechargeable battery or alkaline batteries 6 x AA.
Additional information:
Print technology: Thermal
Width TZ tapes: 3.5/6/9/12/18 (mm) Display: 16 characters x 2 lines Print speed: 20 mm/s Ods?ih: handmade Font style: 14
Symbols: 617
Characters in mind: 2800
Other features: vertical printing, barcode printing
Possible sources of supply: AC adapter AD-E001 - (not included) rechargeable battery BA-E001 - (not included) Alkaline Batteries 6 x AA - (not included) Package Contents: Printer PT-H300 starting tape TZe-241 (18 mm black on white, length 4 m) documentation
;tiskrna samolepcch ttk, run, rychlost tisku 20 mm/s, klvesnice QWERTZ, grafick podsvcen displej;Hand printing adhesive labels Brother especially suitable for easy marking in warehouses, offices and wherever it is required records or quickly usable labels. The printer boasts a very easy to us;(DE) Hand printing adhesive labels Brother especially suitable for easy marking in warehouses, offices and wherever it is required records or quickly usable labels. The printer boasts a very easy to us;"ordinary_domain_1=1295;partner_domain_1=1295;vip_domain_1=1295";"ordinary_domain_2=51.8;vip_domain_2=51.8";"ordinary_domain_1=1295;partner_domain_1=1295;vip_domain_1=1295";high;25.1.2014;;30;pcs;in-stock;"[cs:Displej,en:Display]=[cs:LCD,en:LCD];[cs:Paraleln port,en:Parallel port]=[cs:Ne,en:No]";"electronics;pc";"electronics;pc";"electronics;pc";new;TRUE;brother;
-Canon EH-22L;Canon EH-22L;(DE) Canon EH-22L;532564;6758B001;8845781245914;Canon EH-22L - pouzdro pro EOS 650D;
Canon EH-22L
High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm.;(DE)
Canon EH-22L
High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm.;Canon EH-22L - pouzdro pro EOS 650D;Canon EH-22L. High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D.;(DE) Canon EH-22L. High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D.;"ordinary_domain_1=1110.54896;partner_domain_1=1110.54896;vip_domain_1=1110.54896";"ordinary_domain_2=44.4219584;vip_domain_2=44.4219584";"ordinary_domain_1=1110.54896;partner_domain_1=1110.54896;vip_domain_1=1110.54896";high;3.8.1999;;100;pcs;out-of-stock;[cs:Barva,en:Color]=[cs:ern,en:black];photo;photo;photo;;FALSE;canon;
-Canon EOS 700D;Canon EOS 700D;(DE) Canon EOS 700D;5964034;8596B047;8845781245912;"Canon EOS 700D + EF-S 18-55mm DC III + 75-300mm DC III Kvalitn digitln zrcadlovka s CMOS snmaem s rozlienm 18 megapixel, se kterou podte pikov fotografie v profesionlnm stylu. Inovovan procesor DIGIC 5 pin vkonn zpracovn obrazu v jakkoli situaci. Vysok rozsah citlivosti a do 12 800 ISO vm umon poizovat skvl snmky i za slabho osvtlen, a to i bez pouit blesku. Automatick inteligentn scnick reim analyzuje scnu a automaticky vybr nejvhodnj nastaven pro fotoapart. Prohlet snmky, zaostovat nebo dokonce fotografovat mete pomoc 3"" dotykovho displeje TFT Clear View II s rozlienm neskutench 1 040 000 obrazovch bod a variabilnm hlem natoen. S tmto fotoapartem se z vs bhem chvle stane profesionln kameraman. Umouje toti natet chvatn videozznamy ve Full HD rozlien 1080p. Technologie Hybrid AF umouje prbn zaostovat pi poizovn filmu a pomoc vestavnho mikrofonu ozvute vae snmky kvalitnm stereo zvukem. Systm automatickho zaostovn obsahujc 9 kovch AF bod umon zachytit rychle se pohybujc objekty bez zbytenho rozmazn. Zsluhou kontinulnho snmn rychlost a 5 snmk za vteinu ji nikdy nezmekte rozhodujc okamik pro pozen nejlep mon fotografie. V reimu ovldn HDR podsvtlen fotoapart poizuje ti rzn expozice a spojuje je v jednu, aby zachoval detaily ve stnech a oblastech s vysokm jasem. V reimu Non scna z ruky fotoapart poizuje vce snmk pi vysokch rychlostech zvrky a spojuje je dohromady, a tm zabrauje rozmazn. Pozen snmky a videa jednodue ulote na pamov karty typu SD, SDHC a SDXC, dky integrovanho konektoru miniHDMI si je mete pohodln prohldnout na va LCD nebo plazmov televizi. K fotoapartu je mon dokoupit velkou adu objektiv, psluenstv a blesk, kter jsou kompatibiln se systmem EOS.";"Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light, even without a flash. Automatic smart scene mode analyzes the scene and automatically selects the best settings for the camera. View images, focus, or even pictures can be taken using a 3 ""touch screen TFT Clear View II with a whopping resolution of 1.04 million pixels and a vari-angle. With this camera out of you in a moment become a professional cameraman. It makes it possible to shoot stunning movies in Full HD 1080p. Hybrid AF technology enables continuous focus during movie shooting and using the built-in microphone ozvume your images are high quality stereo sound. Autofocus system comprising nine cross-type AF points to capture fast-moving objects without any blurring. Thanks to continuous shooting at up to 5 frames per second, you'll never miss a crucial moment for getting the best picture possible.The HDR Backlight Control mode, the camera takes three different exposures and combines them into one, in order to preserve details in shadows and areas with high brightness. In Night Scene mode, the camera takes the hand of multiple images at high shutter speeds and combining them together and thus prevents blurring. Captured images and videos simply adding it to an SD Memory Card, SDHC and SDXC, thanks to the integrated connector is miniHDMI you can conveniently viewed on your LCD or plasma TV. The camera can buy a wide range of lenses, flashes and accessories that are compatible with the EOS system.";"(DE) Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light, even without a flash. Automatic smart scene mode analyzes the scene and automatically selects the best settings for the camera. View images, focus, or even pictures can be taken using a 3 ""touch screen TFT Clear View II with a whopping resolution of 1.04 million pixels and a vari-angle. With this camera out of you in a moment become a professional cameraman. It makes it possible to shoot stunning movies in Full HD 1080p. Hybrid AF technology enables continuous focus during movie shooting and using the built-in microphone ozvu??me your images are high quality stereo sound. Autofocus system comprising nine cross-type AF points to capture fast-moving objects without any blurring. Thanks to continuous shooting at up to 5 frames per second, you'll never miss a crucial moment for getting the best picture possible.The HDR Backlight Control mode, the camera takes three different exposures and combines them into one, in order to preserve details in shadows and areas with high brightness. In Night Scene mode, the camera takes the hand of multiple images at high shutter speeds and combining them together and thus prevents blurring. Captured images and videos simply adding it to an SD Memory Card, SDHC and SDXC, thanks to the integrated connector is miniHDMI you can conveniently viewed on your LCD or plasma TV. The camera can buy a wide range of lenses, flashes and accessories that are compatible with the EOS system.";Canon EOS 700D + EF-S 18-55mm DC III + 75-300mm DC III Kvalitn digitln zrcadlovka s CMOS snmaem s rozlienm 18 megapixel, se kterou podte pikov fotografie v profesionlnm stylu. Inovovan procesor DIGIC 5 pin vkonn zpracovn obrazu v jakkoli situaci.;Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light;(DE) Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light;"ordinary_domain_1=24990;partner_domain_1=24990;vip_domain_1=24990";"ordinary_domain_2=999.6;vip_domain_2=999.6";"ordinary_domain_1=24990;partner_domain_1=24990;vip_domain_1=24990";zero;3.2.2013;;100;pcs;on-request;"[cs:Typ fotoapartu,en:Camera type]=[cs:zrcadlovky,en:SLR];[cs:Rozlien,en:Resolution]=[cs:9 Mpix,en:9 Mpix];[cs:Napjen,en:Power supply]=[cs:akumultor,en:battery];[cs:Typ hledku,en:Viewfinder type]=[cs:optick,en:optical];[cs:Citlivost (ISO),en:Sensitivity (ISO)]=[cs:1800,en:1800];[cs:Velikost displeje,en:Display size]=[cs:3,en:3];[cs:Hmotnost,en:Weight]=[cs:580 g,en:580 g];[cs:USB,en:USB]=[cs:Ano,en:Yes]";photo;photo;photo;;FALSE;canon;
-Canon MG3550;Canon MG3550;(DE) Canon MG3550;9184535;8331B006;8845781245938;Stylov kompaktn multifunkn zazen s Wi-Fi a snadnm mobilnm tiskem. Stylov kompaktn multifunkn zazen s Wi-Fi pro sdlen a pouvn odkudkoli v domcnosti. Nabz rychl, vysoce kvalitn tisk, koprovn a skenovn a podporuje sluby Google Cloud Print a Apple AirPrint. ;
Canon PIXMA MG3350 black
Features of modern and elegantly prepared MFPs s new wireless capabilities. Function automatic two-sided printing printing on both sides, which saves paper while producing professional looking documents. The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridgesThat provide easy user service and stable print quality throughout the life. You reach for XL FINE cartridges provide printing multiple pages significantly between individual ink replacement. This is ideal if you often print.
Do smart device application download Canon PIXMA Printing Solutions a straight print or scan. In addition, you can check the printer status and ink levels. They also supported services Apple AirPrint and access to the Internet and Google Cloud Print. Software My Image Garden has a solution for organizing and printing photos, scanning, and access to online services. Due to advanced features such as face detection, you will always find exactly what you're looking for.
Additional information:
Print: Technology: 4-ink (in 2 packs) ChromaLife100 system, the head of FINE (2 pl) Borderless printing: A4, Letter, 20 x 25 cm, 13 x 18 cm, 10 x 15 cm Automatic two-sided printing: A4, A5, B5, Letter Printing from Application PIXMA Printing Solutions, Google Cloud Print, Apple AirPrint
;(DE)
Canon PIXMA MG3350 black
Features of modern and elegantly prepared MFPs s new wireless capabilities. Function automatic two-sided printing printing on both sides, which saves paper while producing professional looking documents. The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridgesThat provide easy user service and stable print quality throughout the life. You reach for XL FINE cartridges provide printing multiple pages significantly between individual ink replacement. This is ideal if you often print.
Do smart device application download Canon PIXMA Printing Solutions a straight print or scan. In addition, you can check the printer status and ink levels. They also supported services Apple AirPrint and access to the Internet and Google Cloud Print. Software My Image Garden has a solution for organizing and printing photos, scanning, and access to online services. Due to advanced features such as face detection, you will always find exactly what you're looking for.
Additional information:
Print: Technology: 4-ink (in 2 packs) ChromaLife100 system, the head of FINE (2 pl) Borderless printing: A4, Letter, 20 x 25 cm, 13 x 18 cm, 10 x 15 cm Automatic two-sided printing: A4, A5, B5, Letter Printing from Application PIXMA Printing Solutions, Google Cloud Print, Apple AirPrint
;Stylov kompaktn multifunkn zazen s Wi-Fi a snadnm mobilnm tiskem.;Features of modern and elegantly prepared MFPs with new wireless capabilities. Function automatic two-sided printing;(DE) Features of modern and elegantly prepared MFPs with new wireless capabilities. Function automatic two-sided printing;"ordinary_domain_1=1314.1;partner_domain_1=1314.1;vip_domain_1=1314.1";"ordinary_domain_2=52.564;vip_domain_2=52.564";"ordinary_domain_1=1314.1;partner_domain_1=1314.1;vip_domain_1=1314.1";high;24.1.2014;;;pcs;in-stock;"[cs:Technologie tisku,en:Print technology]=[cs:inkoustov,en:inkjet];[cs:Maximln formt,en:Maximum size]=[cs:A3,en:A3];[cs:LCD,en:LCD]=[cs:Ano,en:Yes];[cs:Rozlien tisku,en:Print resolution]=[cs:4800x1200,en:4800x1200];[cs:Barevn tisk,en:Color printing]=[cs:Ano,en:Yes];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:WiFi,en:WiFi]=[cs:Ano,en:Yes];[cs:Rozmry,en:Dimensions]=[cs:449x304x152 mm,en:449x304x152 mm];[cs:Hmotnost,en:Weight]=[cs:5.4 kg,en:5.4 kg]";printers;photo;printers;"new;top";FALSE;canon;
-Canon PIXMA MG2450;Canon PIXMA MG2450;(DE) Canon PIXMA MG2450;9184449;8328B006;8845781245936;Multifunkn tiskrna CANON PIXMA MG2450, A4, print/scan/copy, USB, Vysoce kvalitn tisk s a 4 800 dpi a technologi kazet FINE, software pro inteligentn tisk z web;
Canon PIXMA MG2450
Stylish and affordable, accessible multifunction devices for the home. Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components. The printing machine uses an innovative print FINE technology Which guarantee excellent print quality. The printer has a system of four ink colors hidden in two ink cartridges, which provide easy user service and stable print quality throughout the life. You can reach the XL cartridges FINE, which provide significantly greater number of print pages between ink replacement. This is ideal if you are printing large volumes.
Software My Image Garden will reveal the full range of functions PIXMA printers. It offers solutions for the layout and printing photos, scanning, and access to online services. Due to advanced features such as face detection, it will scan all the pictures on your computer (even those long forgotten), and compile them into great designs to print. Service CREATIVE PARK PREMIUM you can download and print photos, images and artwork from internationally recognized photographers and artists. Create greeting cards, calendars or stunning 3D paper products, such as the space shuttle Endeavour.
;(DE)
Canon PIXMA MG2450
Stylish and affordable, accessible multifunction devices for the home. Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components. The printing machine uses an innovative print FINE technology Which guarantee excellent print quality. The printer has a system of four ink colors hidden in two ink cartridges, which provide easy user service and stable print quality throughout the life. You can reach the XL cartridges FINE, which provide significantly greater number of print pages between ink replacement. This is ideal if you are printing large volumes.
Software My Image Garden will reveal the full range of functions PIXMA printers. It offers solutions for the layout and printing photos, scanning, and access to online services. Due to advanced features such as face detection, it will scan all the pictures on your computer (even those long forgotten), and compile them into great designs to print. Service CREATIVE PARK PREMIUM you can download and print photos, images and artwork from internationally recognized photographers and artists. Create greeting cards, calendars or stunning 3D paper products, such as the space shuttle Endeavour.
;Multifunkn tiskrna CANON PIXMA MG2450, A4, print/scan/copy, USB, Vysoce kvalitn tisk s a 4 800 dpi a technologi kazet FINE; Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components. The printing machine uses an innovative print FINE technology Which guarantee excellent print quality.;(DE) Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components. The printing machine uses an innovative print FINE technology Which guarantee excellent print quality.;"ordinary_domain_1=818;partner_domain_1=818;vip_domain_1=818";"ordinary_domain_2=32.72;vip_domain_2=32.72";"ordinary_domain_1=818;partner_domain_1=818;vip_domain_1=818";high;22.1.2014;;;pcs;in-stock;"[cs:Technologie tisku,en:Print technology]=[cs:inkoustov,en:inkjet];[cs:Maximln formt,en:Maximum size]=[cs:A3,en:A3];[cs:LCD,en:LCD]=[cs:Ano,en:Yes];[cs:Rozlien tisku,en:Print resolution]=[cs:4800x1200,en:4800x1200];[cs:Barevn tisk,en:Color printing]=[cs:Ano,en:Yes];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:WiFi,en:WiFi]=[cs:Ano,en:Yes];[cs:Hmotnost,en:Weight]=[cs:3.5 kg,en:3.5 kg];[cs:Rozmry,en:Dimensions]=[cs:449x304x152 mm,en:449x304x152 mm]";printers;photo;printers;new;FALSE;canon;
-CD-R VERBATIM 210MB;CD-R VERBATIM 210MB;(DE) CD-R VERBATIM 210MB;5960105;43266;8845781245920;mdium 210MB, 24min., rychlost zpisu 24x, slim box;media 210MB, 24min., writing speed 24x, slim box;(DE) media 210MB, 24min., writing speed 24x, slim box;mdium 210MB, 24min., rychlost zpisu 24x, slim box;media 210MB, 24min., writing speed 24x, slim box;(DE) media 210MB, 24min., writing speed 24x, slim box;"ordinary_domain_1=5;partner_domain_1=5;vip_domain_1=5";"ordinary_domain_2=0.2;vip_domain_2=0.2";"ordinary_domain_1=5;partner_domain_1=5;vip_domain_1=5";high;6.1.2000;;100;pcs;in-stock;"[cs:Typ mdia,en:Media type]=[cs:Mini CD-R 8 cm,en:Mini CD-R 8 cm];[cs:Barva,en:Color]=[cs:bl,en:white];[cs:kapacita,en:Capacity]=[cs:210 MB,en:210 MB];[cs:WiFi,en:WiFi]=[cs:Ano,en:Yes]";pc;pc;pc;;FALSE;verbatim;
-D-Link;D-Link;(DE) D-Link;176948;DNS-327L;8845781245918;
Prvni
Druha
Treti
;
D-Link DGS-105/E
The switch provides a cost-effective way to create a small network or extend existing ones. Connect not only computers, but also a number of network devices such as IP cameras, network printers and more. The switch is equipped with five Gigabit Ethernet ports with auto-sensing speeds, so you shall always have the best performance. To communicate without delay and smooth video streaming has integrated QoS optimization .
Switch functions quickly and easily without complicated setting. But consistently low power detect used ports, and if stopping traffic enters Sleep mode. Rugged metal body is sufficient for cooling without fan . Together with its small size you can find a place almost anywhere. Also available is a set of wall mounting and it can also protect against theft Kensington.;(DE)
D-Link DGS-105/E
The switch provides a cost-effective way to create a small network or extend existing ones. Connect not only computers, but also a number of network devices such as IP cameras, network printers and more. The switch is equipped with five Gigabit Ethernet ports with auto-sensing speeds, so you shall always have the best performance. To communicate without delay and smooth video streaming has integrated QoS optimization .
Switch functions quickly and easily without complicated setting. But consistently low power detect used ports, and if stopping traffic enters Sleep mode. Rugged metal body is sufficient for cooling without fan . Together with its small size you can find a place almost anywhere. Also available is a set of wall mounting and it can also protect against theft Kensington.;Prvni, Druha, Treti;The switch provides a cost-effective way to create a small network or extend existing ones. Connect not only computers, but also a number of network devices such as IP cameras, network printers and more.;(DE) The switch provides a cost-effective way to create a small network or extend existing ones. Connect not only computers, but also a number of network devices such as IP cameras, network printers and more.;"ordinary_domain_1=2891.7;partner_domain_1=2891.7;vip_domain_1=2891.7";"ordinary_domain_2=115.668;vip_domain_2=115.668";"ordinary_domain_1=2891.7;partner_domain_1=2891.7;vip_domain_1=2891.7";high;4.1.2000;;0;pcs;on-request;;pc;pc;pc;;FALSE;dlink;
-Defender 2.0 SPK-480;Defender 2.0 SPK-480;(DE) Defender 2.0 SPK-480;5990008;65480;8845781245945;reproduktory 2.0, jednopsmov, vkon 2x2W RMS, 90Hz a 20kHz, USB napjen;"
Defender SPK-480
Defender SPK 480, two portable and practical 2"" broadband speakers. They have 4 watt output and are powered by USB. They're made of durable plastic and their compact size is portable and easy to fit into any bag or backpack. The speakers connect to notebooks or portable music players via the built-in 3.5 mm jack. Each speaker features its own volume control, and they can be placed near monitors without disturbing image quality due to their magnetic shielding. The silver and black design is simple and modern.";"(DE)
Defender SPK-480
Defender SPK 480, two portable and practical 2"" broadband speakers. They have 4 watt output and are powered by USB. They're made of durable plastic and their compact size is portable and easy to fit into any bag or backpack. The speakers connect to notebooks or portable music players via the built-in 3.5 mm jack. Each speaker features its own volume control, and they can be placed near monitors without disturbing image quality due to their magnetic shielding. The silver and black design is simple and modern.";reproduktory 2.0, jednopsmov, vkon 2x2W RMS, 90Hz a 20kHz, USB napjen;Defender SPK-480, easy to fit into any bag or backpack;(DE) Defender SPK-480, easy to fit into any bag or backpack;"ordinary_domain_1=98.3;partner_domain_1=98.3;vip_domain_1=98.3";"ordinary_domain_2=3.932;vip_domain_2=3.932";"ordinary_domain_1=98.3;partner_domain_1=98.3;vip_domain_1=98.3";high;31.1.2014;;220;pcs;in-stock;"[cs:Rozmry,en:Dimensions]=[cs:80x70x70 mm,en:80x70x70 mm];[cs:Celkov vkon,en:Overall performance]=[cs:4 W,en:4 W]";"tv;pc";tv;"tv;pc";new;FALSE;defender;
-DeLonghi ECAM 44.660 B Eletta Plus;DeLonghi ECAM 44.660 B Eletta Plus;(DE) DeLonghi ECAM 44.660 B Eletta Plus;9771339;ECAM 44.660 B;8845781245934;DeLonghi ECAM 44.660 B Luxusn plnoautomatick kvovar Eletta Plus v ern barv s nerezovmi stmi,1450 W;"
DLonghi ECAM 44.660.B
Start the morning with your favorite drink with the DeLonghi ECAM 44.660.B Eletta automatic coffee maker. A built in special hot steam/water jet automatically prepares a thick milk froth for cappuccino and tea. Drip coffee lovers can also press their own coffee.
Magic Milk Menu button
A special function is the Milk Menu button, which gives you a choice of milk-based beverages. In addition to the classic cappuccino, latte macchiato, or Latte, you can prepare rare drinks such as Espresso macchiato and a flat white. For a quick and easy treat, you can prepare hot cocoa or a cup of frothed milk, and the size of the beverage can be adjusted based on the cup.
";(DE)
D?Longhi ECAM 44.660.B
Start the morning with your favorite drink with the DeLonghi ECAM 44.660.B Eletta automatic coffee maker. A built in special hot steam/water jet automatically prepares a thick milk froth for cappuccino and tea. Drip coffee lovers can also press their own coffee.
Magic Milk Menu button
A special function is the Milk Menu button, which gives you a choice of milk-based beverages. In addition to the classic cappuccino, latte macchiato, or Latte, you can prepare rare drinks such as Espresso macchiato and a flat white. For a quick and easy treat, you can prepare hot cocoa or a cup of frothed milk, and the size of the beverage can be adjusted based on the cup.
;DeLonghi ECAM 44.660 B Luxusn plnoautomatick kvovar Eletta Plus v ern barv s nerezovmi stmi,1450 W;DLonghi ECAM 44.660.B. Start the morning with your favorite drink with the DeLonghi ECAM 44.660.B Eletta automatic coffee maker;(DE) D?Longhi ECAM 44.660.B. Start the morning with your favorite drink with the DeLonghi ECAM 44.660.B Eletta automatic coffee maker;"ordinary_domain_1=19743.6;partner_domain_1=19743.6;vip_domain_1=19743.6";"ordinary_domain_2=789.744;vip_domain_2=789.744";"ordinary_domain_1=19743.6;partner_domain_1=19743.6;vip_domain_1=19743.6";high;20.1.2014;;140;pcs;in-stock;"[cs:Tlak,en:Pressure]=[cs:15 bar,en:15 bar];[cs:Objem zsobnku na vodu,en:Water reservoir capacity]=[cs:2 l,en:2 l];[cs:Objem zsobnku na mlko,en:Milk reservoir capacity]=[cs:600 ml,en:600 ml];[cs:Kapacita zsobnku na zrna,en:Magazine capacity for beans]=[cs:400 g,en:400 g]";coffee;coffee;coffee;new;FALSE;delonghi;
-Drk na hrnce, ern;Pot holder, black;(DE) Pot holder, black;5962199;;8845781245958;V kuchyni se Vm urit ji nkolikrt stalo, e jste si potebovali nkam odloit hrnec a najednou nebylo kam. Dky tomuto drku na hrnce ve tvaru postaviky se Vm to ji nikdy nestane. Konec nemotornmu odkldn hrnc na novou kuchyskou linku nebo na prknko uren ke krjen zeleniny. Usnadnte tmto drkem partnerovi vaen.;This pot holder is used to hold pots. No more burnt kitchen tables!;(DE) This pot holder is used to hold pots. No more burnt kitchen tables!;Konec nemotornmu odkldn hrnc na novou kuchyskou linku nebo na prknko uren ke krjen zeleniny. Usnadnte tmto drkem partnerovi vaen.;This pot holder is used to hold pots. No more burnt kitchen tables!;(DE) This pot holder is used to hold pots. No more burnt kitchen tables!;"ordinary_domain_1=3;partner_domain_1=3;vip_domain_1=3";"ordinary_domain_2=0.12;vip_domain_2=0.12";"ordinary_domain_1=3;partner_domain_1=3;vip_domain_1=3";high;13.2.2014;;;pcs;out-of-stock;;books;books;books;new;TRUE;;
-Genius NetScroll 310 stbrn;Genius NetScroll 310 silver;(DE) Genius NetScroll 310 silver;5960139;31011039100;8845781245924;my optick, konektor USB, 1200dpi, vhodn pro notebooky;Simple Genius Mouse NetScroll 310 offers the most widely used functional elements of a basic ergonomics. It has an optical sensor with a resolution of 800 DPI, which can handle work on a large number of standard surfaces. There are two classic buttons and the third with the paging function wheel. Genius NetScroll 310 is equipped with modern USB interface and finds use in conserving ambidextrous or in an office environment. Specifications: Supported OS: Microsoft Windows 7, Vista, XP, 2003, 2000, 98SE Mac OS 8.6 or later;(DE) Simple Genius Mouse NetScroll 310 offers the most widely used functional elements of a basic ergonomics. It has an optical sensor with a resolution of 800 DPI, which can handle work on a large number of standard surfaces. There are two classic buttons and the third with the paging function wheel. Genius NetScroll 310 is equipped with modern USB interface and finds use in conserving ambidextrous or in an office environment. Specifications: Supported OS: Microsoft Windows 7, Vista, XP, 2003, 2000, 98SE Mac OS 8.6 or later;my optick, konektor USB, 1200dpi, vhodn pro notebooky;Simple Genius Mouse NetScroll 310 offers the most widely used functional elements of a basic ergonomics. It has an optical sensor with a resolution of 800 DPI, which can handle work on a large number of standard surfaces.;(DE) Simple Genius Mouse NetScroll 310 offers the most widely used functional elements of a basic ergonomics. It has an optical sensor with a resolution of 800 DPI, which can handle work on a large number of standard surfaces.;"ordinary_domain_1=90.1;partner_domain_1=90.1;vip_domain_1=90.1";"ordinary_domain_2=3.604;vip_domain_2=3.604";"ordinary_domain_1=90.1;partner_domain_1=90.1;vip_domain_1=90.1";high;10.1.2000;;300;pcs;in-stock;[cs:Technologie,en:Technology]=[cs:Optick,en:Optical],[cs:Rozhran,en:Interface]=[cs:Drtov,en:Wired];pc;pc;pc;action;FALSE;genius;
-Genius repro SP-M120 ern;Genius repro SP-M120 black;(DE) Genius repro SP-M120 black;5960550;31730946108;8845781245946;Jednopsmov stereo reproduktory SP-M120 s celkovm hudebnm vkonem 2 W, ernm lesklm povrchem a elegantnm kovovm krytem. Pedn panel obsahuje 2 ovldac prvky (ovldn hlasitosti, zapnut/vypnut) a vstup pro sluchtka.;"
GENIUS SP-M120 black
Sleek and compact stereo speakers in combination of black and metallic surface. Speakers provide basic computer sound system with an output of 2 W RMS. On the front is virtually placed in a large volume control, but not forgotten even the popular headphone jack. Specifications: Performance: 2 x 1 W RMS Frequency Range: 100 Hz - 20KHz Signal/noise ratio: 75 db Dimensions: 50 x 90 mm
";"(DE)
GENIUS SP-M120 black
Sleek and compact stereo speakers in combination of black and metallic surface. Speakers provide basic computer sound system with an output of 2 W RMS. On the front is virtually placed in a large volume control, but not forgotten even the popular headphone jack. Specifications: Performance: 2 x 1 W RMS Frequency Range: 100 Hz - 20KHz Signal/noise ratio: 75 db Dimensions: 50 x 90 mm
";Jednopsmov stereo reproduktory SP-M120 s celkovm hudebnm vkonem 2 W, ernm lesklm povrchem a elegantnm kovovm krytem.;Sleek and compact stereo speakers in combination of black and metallic surface.;(DE) Sleek and compact stereo speakers in combination of black and metallic surface.;"ordinary_domain_1=164.5;partner_domain_1=164.5;vip_domain_1=164.5";"ordinary_domain_2=6.58;vip_domain_2=6.58";"ordinary_domain_1=164.5;partner_domain_1=164.5;vip_domain_1=164.5";high;1.2.2014;;220;pcs;in-stock;"[cs:Typ soustavy,en:System type]=[cs:2.0,en:2.0];[cs:Aktivn/Pasivn,en:Active/Passive]=[cs:Aktivn,en:Active];[cs:Celkov vkon,en:Overall performance]=[cs:2 W,en:2W]";"tv;pc";tv;"tv;pc";new;FALSE;genius;
-Genius SlimStar i820;Genius SlimStar i820;(DE) Genius SlimStar i820;5960549;31340021118;8845781245925;klvesnice s my, bezdrtov, ultratenk, nano pijma s konektorem USB, s bezdrtovou optickou my s turborolovnm, dosah a 10m, klvesnice obsahuje esk znaky;
Genius SlimStar i222 CZ+SK Black
GENIUS LuxeMate I222 is a stylish black keyboard, which at first glance invites you to use your Apple design. It will decorate your desk at home or in the office. In addition to the standard layout will delight and a large variety of function keys that enhance control of the internet, email and also a multimedia player. Low profile you use for long periods still feel comfortable. The computer keyboard GENIUS LuxeMate I222 connects via USB interface.
Specifications:
Type: conduction Layout: Czech Interface: USB Design: Apple design;(DE)
Genius SlimStar i222 CZ+SK Black
GENIUS LuxeMate I222 is a stylish black keyboard, which at first glance invites you to use your Apple design. It will decorate your desk at home or in the office. In addition to the standard layout will delight and a large variety of function keys that enhance control of the internet, email and also a multimedia player. Low profile you use for long periods still feel comfortable. The computer keyboard GENIUS LuxeMate I222 connects via USB interface.
Specifications:
Type: conduction Layout: Czech Interface: USB Design: Apple design;klvesnice s my, bezdrtov, ultratenk, nano pijma s konektorem USB, s bezdrtovou optickou my s turborolovnm, dosah a 10m, klvesnice obsahuje esk znaky;GENIUS LuxeMate I222 is a stylish black keyboard, which at first glance invites you to use your Apple design.;(DE) GENIUS LuxeMate I222 is a stylish black keyboard, which at first glance invites you to use your Apple design.;"ordinary_domain_1=437.2;partner_domain_1=437.2;vip_domain_1=437.2";"ordinary_domain_2=17.488;vip_domain_2=17.488";"ordinary_domain_1=437.2;partner_domain_1=437.2;vip_domain_1=437.2";high;11.1.2000;;100;pcs;in-stock;"[cs:Lokalizace,en:Localization]=[cs:esk,en:Czech];[cs:Uspodn prvk,en:Element arrangement]=[cs:klasick,en:classic];[cs:Enter,en:Enter]=[cs:jednodkov,en:one-slotted]";pc;pc;pc;;FALSE;genius;
-Genius SP-U150X ernozelen;Genius SP-U150X black-green;(DE) Genius SP-U150X black-green;8456655;31730992101;8845781245947;REPRO Genius SP-U150X ernozelen 4W 2.0;"
Genius SP-HF150 Black
Compact Speakers Genius SP-HF150 are the perfect accessory for portable computers. It is powered only by the USB port. Yet they can generate high power 4 W RMS. The sound of the smaller 2.5 ""drives is airy, yet does not lack sufficient bass fundament. All of the elegant veneer finish imitating a hidden volume control. Specifications:
Sound characteristics: Power: 2 x 2 W RMS Drivers: 2.5 ""(irokpsmov) Frequency range: 200 to 20 000 Hz Signal-to-Noise Ratio: 70 db
Connectors: 3.5 mm audio USB for power";"(DE)
Genius SP-HF150 Black
Compact Speakers Genius SP-HF150 are the perfect accessory for portable computers. It is powered only by the USB port. Yet they can generate high power 4 W RMS. The sound of the smaller 2.5 ""drives is airy, yet does not lack sufficient bass fundament. All of the elegant veneer finish imitating a hidden volume control. Specifications:
Sound characteristics: Power: 2 x 2 W RMS Drivers: 2.5 ""(??irokp??smov?) Frequency range: 200 to 20 000 Hz Signal-to-Noise Ratio: 70 db
Connectors: 3.5 mm audio USB for power";REPRO Genius SP-U150X ernozelen 4W 2.0;Compact Speakers Genius SP-HF150 are the perfect accessory for portable computers.;(DE) Compact Speakers Genius SP-HF150 are the perfect accessory for portable computers.;"ordinary_domain_1=180;partner_domain_1=180;vip_domain_1=180";"ordinary_domain_2=7.2;vip_domain_2=7.2";"ordinary_domain_1=180;partner_domain_1=180;vip_domain_1=180";high;2.2.2014;;220;pcs;in-stock;"[cs:Typ soustavy,en:System type]=[cs:2.0,en:2.0];[cs:Aktivn/Pasivn,en:Active/Passive]=[cs:Aktivn,en:Active];[cs:Celkov vkon,en:Overall performance]=[cs:2 W,en:2W]";"tv;pc";tv;"tv;pc";new;FALSE;genius;
-GIGABYTE KM7580 CZ;GIGABYTE KM7580 CZ;(DE) GIGABYTE KM7580 CZ;5960598;GK-KM7580;8845781245926;klvesnice s my, multimediln, bezdrtov rdiov 2.4GHz, nano pijma na USB, 15 multimedilnch klves, dosah a 5m, napjen klvesnice a myi 4x AAA, hmotnost 518 a 60 gram, klvesnice obsahuje esk znaky;
GIGABYTE GK-KM7580 Black
Quality set keyboard and optical mouse from Gigabyte. Both components are color-matched to the sleek glossy black color. The keyboard has 15 multimedia keys for quick access to the Internet, email and other applications. The multimedia keys also used for various tasks (volume control, ...). Optical mouse has a sensor with a resolution of 500 to 1000 DPI resolution can be switched. Mouse fits both the left and the right hand. Wireless communication provides a miniature USB receiver for keyboard and mouse. This set will contrast nicely on any desk.
Specifications:
Multimedia keys: 15 hotkeys
Interface: USB receiver
Communication: wireless, 2.4 GHz band
Power: Keyboard: 2x AAA Mouse: 2x AAA;(DE)
GIGABYTE GK-KM7580 Black
Quality set keyboard and optical mouse from Gigabyte. Both components are color-matched to the sleek glossy black color. The keyboard has 15 multimedia keys for quick access to the Internet, email and other applications. The multimedia keys also used for various tasks (volume control, ...). Optical mouse has a sensor with a resolution of 500 to 1000 DPI resolution can be switched. Mouse fits both the left and the right hand. Wireless communication provides a miniature USB receiver for keyboard and mouse. This set will contrast nicely on any desk.
Specifications:
Multimedia keys: 15 hotkeys
Interface: USB receiver
Communication: wireless, 2.4 GHz band
Power: Keyboard: 2x AAA Mouse: 2x AAA;klvesnice s my, multimediln, bezdrtov rdiov 2.4GHz, nano pijma na USB, 15 multimedilnch klves, dosah a 5m, napjen klvesnice a myi 4x AAA, hmotnost 518 a 60 gram, klvesnice obsahuje esk znaky;Quality set keyboard and optical mouse from Gigabyte. Both components are color-matched to the sleek glossy black color. ;(DE) Quality set keyboard and optical mouse from Gigabyte. Both components are color-matched to the sleek glossy black color.;"ordinary_domain_1=429.8;partner_domain_1=429.8;vip_domain_1=429.8";"ordinary_domain_2=17.192;vip_domain_2=17.192";"ordinary_domain_1=429.8;partner_domain_1=429.8;vip_domain_1=429.8";high;12.1.2000;;80;pcs;in-stock;"[cs:Lokalizace,en:Localization]=[cs:esk,en:Czech];[cs:Uspodn prvk,en:Element arrangement]=[cs:klasick,en:classic];[cs:Enter,en:Enter]=[cs:jednodkov,en:one-slotted]";pc;pc;pc;;TRUE;gigabyte;
-HP Deskjet Ink Advantage 1515 (B2L57C);HP Deskjet Ink Advantage 1515 (B2L57C);(DE) HP Deskjet Ink Advantage 1515 (B2L57C);718253;B2L57C;8845781245937;S touto jednoduchou a cenov dostupnou multifunkn tiskrnou HP Deskjet mete tisknout, skenovat i koprovat. Tisknte vce za mn penz s levnmi inkousty. Uetete msto dky kompaktnmu proveden, kter lze umstit kamkoli, a zante pracovat bhem pr okamik dky rychl a jednoduch instalaci. ;
Hewlett-Packard was founded in the difficult times of the Great Depression. The founders were a pair of friends whose name the company still proudly bears. They started their business in an unobtrusive garage near the city of Palo Alto. It is now a national monument. HPs success lay not in copying existing products, but in the ability and courage to come up with something new.
The first commercial triumph was an oscillator that surpassed all competition in quality, yet sold at a quarter of the price. In 1968, HP released their first desktop computer - a desktop calculator. The company currently manufactures products primarily related to computer technology - computers and laptops, printers, scanners, digital cameras, servers, and last but not least, calculators.
Unless otherwise indicated in the product description, packaging does not contain a USB interface cable.
;(DE)
Hewlett-Packard was founded in the difficult times of the Great Depression. The founders were a pair of friends whose name the company still proudly bears. They started their business in an unobtrusive garage near the city of Palo Alto. It is now a national monument. HP’s success lay not in copying existing products, but in the ability and courage to come up with something new.
The first commercial triumph was an oscillator that surpassed all competition in quality, yet sold at a quarter of the price. In 1968, HP released their first desktop computer - a desktop calculator. The company currently manufactures products primarily related to computer technology - computers and laptops, printers, scanners, digital cameras, servers, and last but not least, calculators.
Unless otherwise indicated in the product description, packaging does not contain a USB interface cable.
;S touto jednoduchou a cenov dostupnou multifunkn tiskrnou HP Deskjet mete tisknout, skenovat i koprovat.;Hewlett-Packard was founded in the difficult times of the Great Depression. The founders were a pair of friends whose name the company still proudly bears. ;(DE) Hewlett-Packard was founded in the difficult times of the Great Depression. The founders were a pair of friends whose name the company still proudly bears.;"ordinary_domain_1=1238;partner_domain_1=1238;vip_domain_1=1238";"ordinary_domain_2=49.52;vip_domain_2=49.52";"ordinary_domain_1=1238;partner_domain_1=1238;vip_domain_1=1238";high;23.1.2014;;;pcs;in-stock;"[cs:Technologie tisku,en:Print technology]=[cs:inkoustov,en:inkjet];[cs:Maximln formt,en:Maximum size]=[cs:A3,en:A3];[cs:LCD,en:LCD]=[cs:Ne,en:No];[cs:Rozlien tisku,en:Print resolution]=[cs:2400x600,en:2400x600];[cs:Barevn tisk,en:Color printing]=[cs:Ano,en:Yes];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:WiFi,en:WiFi]=[cs:Ano,en:Yes];[cs:Hmotnost,en:Weight]=[cs:3.5 kg,en:3.5 kg];[cs:Rozmry,en:Dimensions]=[cs:449x304x152 mm,en:449x304x152 mm]";printers;printers;printers;new;FALSE;hp;
-HTC Desire 816 White;HTC Desire 816 White;(DE) HTC Desire 816 White;9511043;99HZS017;8845781245955;Fotografv sen. Hlavn fotoapart s 13 megapixely a pedn fotoapart s 5 megapixely zaruuj fotky ve vysokm rozlien z kad strany. Dky vestavnm nstrojm pro pravu a sdlen mete zachytit pohybliv obrzky v HD kvalit a kombinovat vsledky do zobrazen z vce hl. Neuviteln design, ob 5,5palcov displej s HD rozlienm, dva pedn stereo reproduktory, pizpsoben kanly s informacemi v relnm ase a tyjdrov procesor to ve dohromady tvo jeden z nejvhodnjch smartphon na svt.;Photographer's dream. Main camera with 13-megapixel front camera and a 5 megapixel guarantee photos in high definition on each side. Thanks to the built-in tools for editing and sharing can capture moving images in HD and combine the results to show from multiple angles. Incredible design, giant 5,5palcov display with HD resolution, two front stereo speakers, customized channels with real-time information and a quad-core processor - all combine to form one of the best smartphones in the world.;(DE) Photographer's dream. Main camera with 13-megapixel front camera and a 5 megapixel guarantee photos in high definition on each side. Thanks to the built-in tools for editing and sharing can capture moving images in HD and combine the results to show from multiple angles. Incredible design, giant 5,5palcov?? display with HD resolution, two front stereo speakers, customized channels with real-time information and a quad-core processor - all combine to form one of the best smartphones in the world.;Fotografv sen. Hlavn fotoapart s 13 megapixely a pedn fotoapart s 5 megapixely zaruuj fotky ve vysokm rozlien z kad strany. Dky vestavnm nstrojm pro pravu a sdlen mete zachytit pohybliv obrzky v HD kvalit a kombinovat vsledky do zobrazen z vce hl.;Photographer's dream. Main camera with 13-megapixel front camera and a 5 megapixel guarantee photos in high definition on each side. Thanks to the built-in tools for editing and sharing can capture moving images in HD and combine the results to show from multiple angles.;(DE) Photographer's dream. Main camera with 13-megapixel front camera and a 5 megapixel guarantee photos in high definition on each side. Thanks to the built-in tools for editing and sharing can capture moving images in HD and combine the results to show from multiple angles.;"ordinary_domain_1=8421.5;partner_domain_1=8421.5;vip_domain_1=8421.5";"ordinary_domain_2=336.86;vip_domain_2=336.86";"ordinary_domain_1=8421.5;partner_domain_1=8421.5;vip_domain_1=8421.5";high;10.2.2014;;;pcs;out-of-stock;"[cs:hlopka displeje,en:Display Size]=[cs:5.5"",en:5.5""];[cs:Typ displeje,en:Display type]=[cs:Super LCD,en:Super LCD];[cs:Rozlien standardn zadn kamery,en:Resolution of rear camera]=[cs:13 Mpx,en:13 Mpx]";phones;phones;phones;"new;top";FALSE;htc;
-JURA Impressa J9 TFT Carbon;JURA Impressa J9 TFT Carbon;(DE) JURA Impressa J9 TFT Carbon;9772572;JURA Impressa J9 TFT Carbon;8845781245933;JURA Impressa J9 TFT Carbon Automatick kvovar/espresso,barevn LCD;"
JURA IMPRESSA Z9 One Touch TFT Pianoblack
Luxury automatic coffee machine Jura Impressa Z9 One Touch packed with Swiss precision and elegance, which sets new standards. This machine brings you jeich on several levels, such as coffee quality, easy to use and attractive design. The purpose is always the most advanced technology to achieve real, authentic results. The powerful device has intuitive controls and except large 3.5 ""TFT color display. Together with rotary dial allows you to choose between 11 specialties and goes to prepare any coffee you can think of. With the coffee a la carte, allowing you to quickly change settings according to your needs, your options are almost limitless.
For an authentic experience and to ensure optimal conditions for coffee are two Thermoblocks. The first coffee and hot water, the second is intended to couple. With every cup of coffee is also possible to set the correct brewing temperature, amount of water and grind. Mill technology + Aroma is quiet and up to twice faster than previously used. Grains of coffee while grinding so much heat and so there is no negative influence of taste of coffee.
Foam crown in drinks Latte macchiato, cappuccino and other specialty are the world extremely popular. Automatic coffee machine in the model IMPRESSA Z9 One Touch is a distinctive design with a combination of pure luxury and sophistication. But technology also has a soft foam that each of trendy coffee specialties will adjust fluffy crown. S cappuccino outlets, which can be adjusted up to 153 mm, there is no problem to use a glass or a latte macchiato. Formed with Swiss precision and elegance with which you prepare the perfect espresso, cappuccino or caffe latte.
You will enjoy a very low power consumption. If the espresso is separated from the mains power switch, patented innovation JURY Zero Energy Switch (zero energy consumption) will remove any energy at all. Before turning off the espresso is automatically purged and cleansed, which provides him with long life. The unique geometry with finer teeth grinding and new technology supports the lower noise machine when grinding coffee.
";"(DE)
JURA IMPRESSA Z9 One Touch TFT Pianoblack
Luxury automatic coffee machine Jura Impressa Z9 One Touch packed with Swiss precision and elegance, which sets new standards. This machine brings you jeich on several levels, such as coffee quality, easy to use and attractive design. The purpose is always the most advanced technology to achieve real, authentic results. The powerful device has intuitive controls and except large 3.5 ""TFT color display. Together with rotary dial allows you to choose between 11 specialties and goes to prepare any coffee you can think of. With the coffee a la carte, allowing you to quickly change settings according to your needs, your options are almost limitless.
For an authentic experience and to ensure optimal conditions for coffee are two Thermoblocks. The first coffee and hot water, the second is intended to couple. With every cup of coffee is also possible to set the correct brewing temperature, amount of water and grind. Mill technology + Aroma is quiet and up to twice faster than previously used. Grains of coffee while grinding so much heat and so there is no negative influence of taste of coffee.
Foam crown in drinks Latte macchiato, cappuccino and other specialty are the world extremely popular. Automatic coffee machine in the model IMPRESSA Z9 One Touch is a distinctive design with a combination of pure luxury and sophistication. But technology also has a soft foam that each of trendy coffee specialties will adjust fluffy crown. S cappuccino outlets, which can be adjusted up to 153 mm, there is no problem to use a glass or a latte macchiato. Formed with Swiss precision and elegance with which you prepare the perfect espresso, cappuccino or caffe latte.
You will enjoy a very low power consumption. If the espresso is separated from the mains power switch, patented innovation JURY Zero Energy Switch (zero energy consumption) will remove any energy at all. Before turning off the espresso is automatically purged and cleansed, which provides him with long life. The unique geometry with finer teeth grinding and new technology supports the lower noise machine when grinding coffee.
";JURA Impressa J9 TFT Carbon Automatick kvovar/espresso,barevn LCD;Luxury automatic coffee machine Jura Impressa Z9 One Touch packed with Swiss precision and elegance, which sets new standards. This machine brings you jeich on several levels, such as coffee quality, easy to use and attractive design.;(DE) Luxury automatic coffee machine Jura Impressa Z9 One Touch packed with Swiss precision and elegance, which sets new standards. This machine brings you jeich on several levels, such as coffee quality, easy to use and attractive design.;"ordinary_domain_1=49587.5;partner_domain_1=49587.5;vip_domain_1=49587.5";"ordinary_domain_2=1983.5;vip_domain_2=1983.5";"ordinary_domain_1=49587.5;partner_domain_1=49587.5;vip_domain_1=49587.5";high;19.1.2014;;111;pcs;in-stock;"[cs:Tlak,en:Pressure]=[cs:15 bar,en:15 bar];[cs:Objem zsobnku na vodu,en:Water reservoir capacity]=[cs:2 l,en:2 l];[cs:Objem zsobnku na mlko,en:Milk reservoir capacity]=[cs:600 ml,en:600 ml];[cs:Kapacita zsobnku na zrna,en:Magazine capacity for beans]=[cs:400 g,en:400 g]";coffee;coffee;coffee;new;FALSE;jura;
-Kabel HDMI A - HDMI A M/M 2m zlacene konektory High Speed HD;Kabel HDMI A - HDMI A M/M 2m gold-plated connectors High Speed HD;(DE) Kabel HDMI A - HDMI A M/M 2m gold-plated connectors High Speed HD;2565636;0;8845781245919;Kabel HDMI A - HDMI A M/M 2m zlacene konektory High Speed HDMI kabel s Ethernetem 1.4 podpora 1080p FULL HD;A cable HDMI - HDMI AM / M 2 m gold-plated connector High Speed HDMI Cable with Ethernet 1.4 support 1080p FULL HD;(DE) A cable HDMI - HDMI AM / M 2 m gold-plated connector High Speed HDMI Cable with Ethernet 1.4 support 1080p FULL HD;Kabel HDMI A - HDMI A M/M 2m zlacene konektory High Speed HDMI kabel s Ethernetem 1.4 podpora 1080p FULL HD;A cable HDMI - HDMI AM / M 2 m gold-plated connector High Speed HDMI Cable with Ethernet 1.4 support 1080p FULL HD;(DE) A cable HDMI - HDMI AM / M 2 m gold-plated connector High Speed HDMI Cable with Ethernet 1.4 support 1080p FULL HD;"ordinary_domain_1=98;partner_domain_1=98;vip_domain_1=98";"ordinary_domain_2=3.92;vip_domain_2=3.92";"ordinary_domain_1=98;partner_domain_1=98;vip_domain_1=98";high;5.1.2000;;150;pcs;in-stock;;pc;pc;pc;;FALSE;;
-Kniha 55 nejlepch program pro vypalovn CD a DVD;Book 55 best programs for burning CDs and DVDs;(DE) Book 55 best programs for burning CDs and DVDs;9890478;9788025117125;8845781245941;Existuj stovky program pro vypalovn, avak vyznat se v nich nen ani pro zkuenho uivatele vbec jednoduch. Prv proto jsme pro vs s autorem eskch bestseller pipravili 2. aktualizovan vydn tto spn publikace. S knihou zskte nejen prvodce nejrznjm vypalovnm na CD a DVD, ale vechny programy a aplikace si mete okamit vyzkouet, nebo je obsahuje piloen DVD.;"
CD/DVD/Blu-ray/HD-DVDis an affordable program for burning CD/DVD/Blu-ray/HD-DVD media. Intuitive operation with its easy to handle even a novice in this field. Another big advantage is the use of technology burning ""on the fly"", which is spared not only your time but also the capacity of the disk, because the process does not create any storage (temporary) files on your hard disk.
Worth mentioning is also the fact that for its operation baking does not use any components of Windows or other manufacturers. Its functionality is not needed any external libraries or DLL. This makes the software provides high stability, even if your system is corrupted Windows. This gives you the ability to backup before reinstalling Broken System. The program is completely in the Czech language.
";"(DE)
CD/DVD/Blu-ray/HD-DVDis an affordable program for burning CD/DVD/Blu-ray/HD-DVD media. Intuitive operation with its easy to handle even a novice in this field. Another big advantage is the use of technology burning ""on the fly"", which is spared not only your time but also the capacity of the disk, because the process does not create any storage (temporary) files on your hard disk.
Worth mentioning is also the fact that for its operation baking does not use any components of Windows or other manufacturers. Its functionality is not needed any external libraries or DLL. This makes the software provides high stability, even if your system is corrupted Windows. This gives you the ability to backup before reinstalling Broken System. The program is completely in the Czech language.
";Existuj stovky program pro vypalovn, avak vyznat se v nich nen ani pro zkuenho uivatele vbec jednoduch. Prv proto jsme pro vs s autorem eskch bestseller pipravili 2. aktualizovan vydn tto spn publikace. S knihou zskte nejen prvodce nejrznjm vypalovnm na CD a DVD, ale vechny programy a aplikace si mete okamit vyzkouet, nebo je obsahuje piloen DVD.;"Intuitive operation with its easy to handle even a novice in this field. Another big advantage is the use of technology burning ""on the fly"", which is spared not only your time but also the capacity of the disk, because the process does not create any storage (temporary) files on your hard disk.";"(DE) Intuitive operation with its easy to handle even a novice in this field. Another big advantage is the use of technology burning ""on the fly"", which is spared not only your time but also the capacity of the disk, because the process does not create any storage (temporary) files on your hard disk.";"ordinary_domain_1=37;partner_domain_1=37;vip_domain_1=37";"ordinary_domain_2=1.48;vip_domain_2=1.48";"ordinary_domain_1=37;partner_domain_1=37;vip_domain_1=37";high;27.1.2014;;500;pcs;in-stock;"[cs:Poet strnek,en:Pages count]=[cs:55,en:55];[cs:Hmotnost,en:Weight]=[cs:50 g,en:50 g];[cs:Pebal,en:Cover]=[cs:pevn,en:hardcover]";books;"pc;books";books;new;FALSE;;
-Kniha Bodov systm a pravidla silninho provozu;Book scoring system and traffic regulations;(DE) Book scoring system and traffic regulations;9831504;9788072267361;8845781245942;Prostudujte si nov pravidla silninho provozu platn od 1. ervence 2006!;New driving rules and tips just for you!;(DE) New driving rules and tips just for you!;Prostudujte si nov pravidla silninho provozu platn od 1. ervence 2006!;New driving rules and tips just for you!;(DE) New driving rules and tips just for you!;"ordinary_domain_1=37;partner_domain_1=37;vip_domain_1=37";"ordinary_domain_2=1.48;vip_domain_2=1.48";"ordinary_domain_1=37;partner_domain_1=37;vip_domain_1=37";high;28.1.2014;;100;pcs;in-stock;"[cs:Poet strnek,en:Pages count]=[cs:50,en:50];[cs:Hmotnost,en:Weight]=[cs:150 g,en:150 g];[cs:Pebal,en:Cover]=[cs:papr,en:paper]";books;books;books;new;FALSE;;
-Kniha Jak na pota Digitln fotografie II;Book Computer for Dummies Digital Photography II;(DE) Book Computer for Dummies Digital Photography II;9890274;9788025107805;8845781245943;Mte ji za sebou prvn krky s digitlnm fotoapartem? Chcete proniknout do tajemstv pknch snmk? V tto knece se dozvte, na co si dt ped zmknutm spout pozor, aby vae fotografie netrpla typickmi chybami zatenk, jak se fotografuj rzn typy objekt (portrt, krajina, mometky aj.) a jak snmky doladit v potai, aby vsledn dojem byl dokonal.;Discover the secret of people with us.;(DE) Discover the secret of people with us.;Mte ji za sebou prvn krky s digitlnm fotoapartem? Chcete proniknout do tajemstv pknch snmk? V tto knece se dozvte, na co si dt ped zmknutm spout pozor, aby vae fotografie netrpla typickmi chybami zatenk, jak se fotografuj rzn typy objekt (portrt, krajina, mometky aj.) a jak snmky doladit v potai, aby vsledn dojem byl dokonal.;Discover the secret of people with us.;(DE) Discover the secret of people with us.;"ordinary_domain_1=44;partner_domain_1=44;vip_domain_1=44";"ordinary_domain_2=1.76;vip_domain_2=1.76";"ordinary_domain_1=44;partner_domain_1=44;vip_domain_1=44";high;29.1.2014;;450;pcs;in-stock;"[cs:Poet strnek,en:Pages count]=[cs:250,en:250];[cs:Hmotnost,en:Weight]=[cs:250 g,en:250 g];[cs:Pebal,en:Cover]=[cs:papr,en:paper]";books;books;books;new;FALSE;;
-Kniha Kemlek a Vochomrka;Book of traditional Czech fairy tales;(DE) Book of traditional Czech fairy tales;9197872;9788000026336;8845781245944;Prohlejte obrzky a vyprvjte si s dtmi pbhy veselch muk, Kemlka a Vochomrky! Leporelo s ilustracemi Zdeka Smetany a texty podle knky V. tvrtka pot nejen dti, ale jejich rodie a prarodie.;Collection of classical Czech fairy tales.;(DE) Collection of classical Czech fairy tales.;Prohlejte obrzky a vyprvjte si s dtmi pbhy veselch muk, Kemlka a Vochomrky!;Collection of classical Czech fairy tales.;(DE) Collection of classical Czech fairy tales.;"ordinary_domain_1=56;partner_domain_1=56;vip_domain_1=56";"ordinary_domain_2=2.24;vip_domain_2=2.24";"ordinary_domain_1=56;partner_domain_1=56;vip_domain_1=56";high;30.1.2014;;650;pcs;in-stock;"[cs:Poet strnek,en:Pages count]=[cs:48,en:48];[cs:Hmotnost,en:Weight]=[cs:50 g,en:50 g];[cs:Pebal,en:Cover]=[cs:papr,en:paper]";books;books;books;new;FALSE;;
-Kniha Postup p zvldn dopravn nehody;Book of procedures for dealing with traffic accidents;(DE) Book of procedures for dealing with traffic accidents;9198277;9788025133484;8845781245940;Karta je vyrobena z odolnho materilu a obsahuje pehledn nvod na poskytnut prvn pomoci. Prostednictvm jednoduchch obrzk a vstinch text nzorn popisuje, jak m zachrnce poskytnout prvn pomoc zrannm osobm pi dopravn nehod. Karta obsahuje informace potebn pro zastaven krvcen, uvolnn dchacch cest, mas srdce, dchn z st do st a uloen zrannho do stabilizovan polohy.;Have you ever experienced an accident and didn't know how to react? Or are you going to? This book is just for you!;(DE) Have you ever experienced an accident and didn't know how to react? Or are you going to? This book is just for you!;Karta je vyrobena z odolnho materilu a obsahuje pehledn nvod na poskytnut prvn pomoci;Have you ever experienced an accident and didn't know how to react? Or are you going to? This book is just for you!;(DE) Have you ever experienced an accident and didn't know how to react? Or are you going to? This book is just for you!;"ordinary_domain_1=28;partner_domain_1=28;vip_domain_1=28";"ordinary_domain_2=1.12;vip_domain_2=1.12";"ordinary_domain_1=28;partner_domain_1=28;vip_domain_1=28";high;26.1.2014;;200;pcs;in-stock;;books;books;books;new;FALSE;;
-LG E410 Optimus L1 II White;LG E410 Optimus L1 II White;(DE) LG E410 Optimus L1 II White;8981018;8808992086758;8845781245951;Model LG E410 Optimus L1 II zaujme uivatele elegatnm vzhledem ady L style a praktickou velikost. Optimus L1 II nabz kapacitn TFT LCD displej s hlopkou 3 palce a monosti zobrazen 262 tisc barev v rozlien 240 320 pixel. Za zmnku stoj tak intern pam. Pro uivatelsk data slou intern loist s kapacitou 4GB, kter je mon rozit pomoc microSDHC karet a do veliskoti 32GB. Lkadlem pro bn uivatele je digitln fotoapart o rozlien 2MPx, s monost zznamu VGA videa. Mobil je pohnn jednojdrovm procesorem Qualcomm MSM7225A o frekvenci 1GHz, operan pamt 512MB RAM a grafickm ipem Adreno 200. Operan systm je Google Android ve verzi 4.1 Jelly Bean, kter nabz mnoho funkc i v zkladu pedinstalovanch aplikac. Model E410 zaujme tak podporou socilnch st, a GPS navigace. Nechyb zde tak rychl datov penosy Wi-Fi, GPRS, EDGE, BlueTooth a pro synchronizaci s PC lze vyut microUSB konektor. Aktivn posluchai hudby ocen audio konektor 3,5mm, dky ktermu mohou pipojit sv oblben sluchtka.;"Mobile phone 4.7"" 720x1280, procesor 1,5GHz, internal memory 16GB, camera 8mpx, GPS, WiFi, Bluetooth, 3G, FM, microSD, micro USB, Android 4.0";"(DE) Mobile phone 4.7"" 720x1280, procesor 1,5GHz, internal memory 16GB, camera 8mpx, GPS, WiFi, Bluetooth, 3G, FM, microSD, micro USB, Android 4.0";Model LG E410 Optimus L1 II zaujme uivatele elegatnm vzhledem ady L style a praktickou velikost.;"Mobile phone 4.7"" 720x1280, procesor 1,5GHz, internal memory 16GB, camera 8mpx, GPS, WiFi, Bluetooth, 3G, FM, microSD, micro USB, Android 4.0";"(DE) Mobile phone 4.7"" 720x1280, procesor 1,5GHz, internal memory 16GB, camera 8mpx, GPS, WiFi, Bluetooth, 3G, FM, microSD, micro USB, Android 4.0";"ordinary_domain_1=1644;partner_domain_1=1644;vip_domain_1=1644";"ordinary_domain_2=65.76;vip_domain_2=65.76";"ordinary_domain_1=1644;partner_domain_1=1644;vip_domain_1=1644";high;6.2.2014;;440;pcs;on-request;"[cs:Hmotnost,en:Weight]=[cs:112 g,en:112 g];[cs:Rozmry,en:Dimensions]=[cs:123.8x58.6x7.6mm,en:123.8x58.6 mm];[cs:Monost pamtov karty,en:Memory card support]=[cs:Ne,en:No];[cs:Pam RAM,en:RAM]=[cs:1024 MB,en:1024 MB];[cs:Poet barev,en:Number of colors]=[cs:16mil.,en:16mil.];[cs:Frekvence procesoru,en:Processor frequency]=[cs:1.7GHz,en:1.7GHz];[cs:Poet jader procesoru,en:Number of processor cores]=[cs:2,en:2];[cs:Bluetooth,en:Bluetooth]=[cs:Ano,en:Yes];[cs:NFC,en:NFC]=[cs:Ne,en:No];[cs:GPS modul,en:GPS module]=[cs:Ne,en:No]";phones;phones;phones;new;FALSE;lg;
-Logitech S120 black;Logitech S120 black;(DE) Logitech S120 black;9680315;980-000010;8845781245949;Standardn sterefonn reproduktory, kter jsou svou velikost vhodn nap. k notebookm.;
Logitech S-120 Speaker System
Modern stereo speakers in a stylish black design, with an output of 2.3 W, suitable only for desktops and laptops, but also for CD or MP3 players, and other devices. They are connected via standard stereo jack 3,5 mm. The speakers have a frequency response of 50 Hz to 20 kHz. Easily accessible controls are located on the side of the right speaker with headphone outlet.
Specifications: Performance: 2.3 W (2 x 1.15 W RMS)
Frequency response: 50 Hz to 20 kHz ;(DE)
Logitech S-120 Speaker System
Modern stereo speakers in a stylish black design, with an output of 2.3 W, suitable only for desktops and laptops, but also for CD or MP3 players, and other devices. They are connected via standard stereo jack 3,5 mm. The speakers have a frequency response of 50 Hz to 20 kHz. Easily accessible controls are located on the side of the right speaker with headphone outlet.
Specifications: Performance: 2.3 W (2 x 1.15 W RMS)
Frequency response: 50 Hz to 20 kHz ;Standardn sterefonn reproduktory, kter jsou svou velikost vhodn nap. k notebookm.;Modern stereo speakers in a stylish black design, with an output of 2.3 W, suitable only for desktops and laptops, but also for CD or MP3 players.;(DE) Modern stereo speakers in a stylish black design, with an output of 2.3 W, suitable only for desktops and laptops, but also for CD or MP3 players.;"ordinary_domain_1=263.6;partner_domain_1=263.6;vip_domain_1=263.6";"ordinary_domain_2=10.544;vip_domain_2=10.544";"ordinary_domain_1=263.6;partner_domain_1=263.6;vip_domain_1=263.6";high;4.2.2014;;200;pcs;on-request;"[cs:Typ soustavy,en:System type]=[cs:2.0,en:2.0];[cs:Aktivn/Pasivn,en:Active/Passive]=[cs:Aktivn,en:Active];[cs:Celkov vkon,en:Overall performance]=[cs:2 W,en:2W]";"tv;pc";tv;"tv;pc";new;FALSE;logitech;
-Microsoft Basic Optical Mouse, ern;Microsoft Basic Optical Mouse, black;(DE) Microsoft Basic Optical Mouse, black;5960072;P58-00059;8845781245922;Tato USB my funguje spolehliv na tm libovolnm povrchu a je uzpsoben pro ovldn pravou i levou rukou.;Practical and stylish optical mouse ideal for everyday office use.With its ergonomic shape fits perfect and is suitable for left and for right-handers.Using an optical sensor with high sensitivity is move the cursor on the screen fast and smooth.Benefits are also programmable buttons to help with easy access to the programs and documents you use most often.The computer mouse simply connect using a cable with a USB connector and the support Plug and Play, no need to install drivers and you can immediately get to work. ;(DE) Practical and stylish optical mouse ideal for everyday office use.With its ergonomic shape fits perfect and is suitable for left and for right-handers.Using an optical sensor with high sensitivity is move the cursor on the screen fast and smooth.Benefits are also programmable buttons to help with easy access to the programs and documents you use most often.The computer mouse simply connect using a cable with a USB connector and the support Plug and Play, no need to install drivers and you can immediately get to work.;Tato USB my funguje spolehliv na tm libovolnm povrchu a je uzpsoben pro ovldn pravou i levou rukou.;Practical and stylish optical mouse ideal for everyday office use.With its ergonomic shape fits perfect and is suitable for left and for right-handers.;(DE) Practical and stylish optical mouse ideal for everyday office use.With its ergonomic shape fits perfect and is suitable for left and for right-handers.;"ordinary_domain_1=231.5;partner_domain_1=231.5;vip_domain_1=231.5";"ordinary_domain_2=9.26;vip_domain_2=9.26";"ordinary_domain_1=231.5;partner_domain_1=231.5;vip_domain_1=231.5";high;8.1.2000;;400;pcs;in-stock;"[cs:Hern my,en:Gaming mouse]=[cs:Ano,en:Yes];[cs:Ergonomie,en:Ergonomics]=[cs:Pravoruk,en:Right-handed];[cs:Podporovan OS,en:Supported OS]=[cs:Windows 2000/XP/Vista/7,en:Windows 2000/XP/Vista/7];[cs:Poet tlatek,en:Number of buttons]=[cs:5,en:5]";pc;pc;pc;;TRUE;microsoft;
-Milionov toalek euro;Million-euro toilet paper;(DE) Million-euro toilet paper;5961383;6932011296018;8845781245959;toalek s potiskem bankovek EURO, pocit z pouit tohoto toaletnho papru d zapomenout na jakkoliv trable spojen s finann kriz;Toilet paper with Euro pictures. Even you can feel rich now!;(DE) Toilet paper with Euro pictures. Even you can feel rich now!;toalek s potiskem bankovek EURO, pocit z pouit tohoto toaletnho papru d zapomenout na jakkoliv trable spojen s finann kriz;Toilet paper with Euro pictures. Even you can feel rich now!;(DE) Toilet paper with Euro pictures. Even you can feel rich now!;"ordinary_domain_1=10;partner_domain_1=10;vip_domain_1=10";"ordinary_domain_2=0.4;vip_domain_2=0.4";"ordinary_domain_1=10;partner_domain_1=10;vip_domain_1=10";high;14.2.2014;;;pcs;out-of-stock;;books;books;books;"new;action;top";FALSE;;
-"MIO Cyclo 100, cyklopota na jzdn kolo, 1,8""";"MIO Cyclo 100, bicycle computer, 1,8""";"(DE) MIO Cyclo 100, bicycle computer, 1,8""";5961384;;8845781245916;"Cyklocomputer - cyklonavigace s pedinstalovanmi mapami silnic a cyklotras, barevn dotykov displej 3"", pedinstalovan body zjmu, vodotsnost (IPX7), bezdrtov penos ANT+, trninkov programy, spravovn dat pomoc aplikace Mio Share, snma rychlosti a kadence, monitor srdenho tepu, WiFi";"Cyklocomputer cyklonavigation with preset maps, color display 3"", training programmes, WiFi";"(DE) Cyklocomputer – cyklonavigation with preset maps, color display 3"", training programmes, WiFi";"Cyklocomputer - cyklonavigace s pedinstalovanmi mapami silnic a cyklotras, barevn dotykov displej 3"".";"Cyklocomputer cyklonavigation with preset maps, color display 3"", training programmes, WiFi";"(DE) Cyklocomputer – cyklonavigation with preset maps, color display 3"", training programmes, WiFi";"ordinary_domain_1=0;partner_domain_1=0;vip_domain_1=0";"ordinary_domain_2=0;vip_domain_2=0";"ordinary_domain_1=0;partner_domain_1=0;vip_domain_1=0";high;2.1.2000;;200;pcs;in-stock;;pc;pc;pc;;FALSE;;
-OKI MC861cdxn+ (01318206);OKI MC861cdxn+ (01318206);(DE) OKI MC861cdxn+ (01318206);8980681;1318206;8845781245935;OKI MC861cdxn+, barevn A3 34/26 ppm ProQ2400 dpi PCL/PS,USB 2.0,LPT,LAN (Print/Scan/Copy/Fax) - MC861cdxn+ - duplexn jednotka, sov karta, 2. a 3. zsobnk, nzk kabinet;Toner for MC861/ 851, 7000 pages;(DE) Toner for MC861/ 851, 7000 pages;OKI MC861cdxn+, barevn A3 34/26 ppm ProQ2400 dpi PCL/PS,USB 2.0,LPT,LAN (Print/Scan/Copy/Fax) - MC861cdxn+ - duplexn jednotka, sov karta, 2. a 3. zsobnk, nzk kabinet;Toner for MC861/ 851, 7000 pages;(DE) Toner for MC861/ 851, 7000 pages;"ordinary_domain_1=67771.9;partner_domain_1=67771.9;vip_domain_1=67771.9";"ordinary_domain_2=2710.876;vip_domain_2=2710.876";"ordinary_domain_1=67771.9;partner_domain_1=67771.9;vip_domain_1=67771.9";high;21.1.2014;;200;pcs;in-stock;"[cs:Technologie tisku,en:Print technology]=[cs:inkoustov,en:inkjet];[cs:Maximln formt,en:Maximum size]=[cs:A3,en:A3];[cs:LCD,en:LCD]=[cs:Ano,en:Yes];[cs:Rozlien tisku,en:Print resolution]=[cs:4800x1200,en:4800x1200];[cs:Barevn tisk,en:Color printing]=[cs:Ano,en:Yes];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:WiFi,en:WiFi]=[cs:Ne,en:No];[cs:Rozmry,en:Dimensions]=[cs:426x306x145 mm,en:426x306x145 mm];[cs:Hmotnost,en:Weight]=[cs:3.5 kg,en:3.5 kg]";printers;printers;printers;new;FALSE;;
-OLYMPUS ME-34 Kompaktn smrov mikrofon vhodn pro zznam pednek;OLYMPUS ME-34 Compact directional microphone suitable for recording lectures;(DE) OLYMPUS ME-34 Compact directional microphone suitable for recording lectures;539888;V4571510E000;8845781245915;Stoln smrov mikrofon vhodn pro zznam pednek, prodluovac kabel o dlce 1m;Digital Voice Reco.rder Olympus VN-733PC is profiled primarily intuitive operation and long battery life . Its user offers 4 gigabytes internal memory and a new slot for microSD cards. O capacity certainly will not be a shortage in power saving mode, LP handle record up to 1600 hours of recording;(DE) Digital Voice Reco.rder Olympus VN-733PC is profiled primarily intuitive operation and long battery life . Its user offers 4 gigabytes internal memory and a new slot for microSD cards. O capacity certainly will not be a shortage in power saving mode, LP handle record up to 1600 hours of recording;Stoln smrov mikrofon vhodn pro zznam pednek, prodluovac kabel o dlce 1m;Digital Voice Reco.rder Olympus VN-733PC is profiled primarily intuitive operation and long battery lif.;(DE) Digital Voice Reco.rder Olympus VN-733PC is profiled primarily intuitive operation and long battery lif.;"ordinary_domain_1=1268.7;partner_domain_1=1268.7;vip_domain_1=1268.7";"ordinary_domain_2=50.748;vip_domain_2=50.748";"ordinary_domain_1=1268.7;partner_domain_1=1268.7;vip_domain_1=1268.7";high;1.1.2000;;800;pcs;in-stock;;"tv;pc";"tv;pc";"tv;pc";;TRUE;olympus;
-OLYMPUS VH-520;OLYMPUS VH-520;(DE) OLYMPUS VH-520;5402881;V108060WE000;8845781245910;Hledte fotoapart, se kterm zachytte kadodenn radosti i strasti vaeho ivota? Pak pivtejte elegantn kompaktn fotoapart VH-520 s jedinenmi fotografickmi schopnostmi! I pes extrmn kompaktn rozmry je VH-520 vybaven nejmodernjmi technologickmi prvky, vetn 14 megapixelovho CMOS senzoru, vkonnho obrazovho procesoru a technologi zpracovn obrazu iHS, kter produkuje dokonale jasn a ostr fotky s vrnm barevnm podnm.';"Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB";"(DE) Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB";Hledte fotoapart, se kterm zachytte kadodenn radosti i strasti vaeho ivota? Pak pivtejte elegantn kompaktn fotoapart VH-520 s jedinenmi fotografickmi schopnostmi!;"Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB";"(DE) Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB";"ordinary_domain_1=2783;partner_domain_1=2783;vip_domain_1=2783";"ordinary_domain_2=111.32;vip_domain_2=111.32";"ordinary_domain_1=2783;partner_domain_1=2783;vip_domain_1=2783";high;1.1.2013;;200;pcs;in-stock;"[cs:Typ fotoapartu,en:Camera type]=[cs:zrcadlovky,en:SLR];[cs:Rozlien,en:Resolution]=[cs:18 Mpix,en:18 Mpix];[cs:Napjen,en:Power supply]=[cs:akumultor,en:battery];[cs:Typ hledku,en:Viewfinder type]=[cs:optick,en:optical];[cs:Citlivost (ISO),en:Sensitivity (ISO)]=[cs:12800,en:12800];[cs:Velikost displeje,en:Display size]=[cs:5,en:5];[cs:Hmotnost,en:Weight]=[cs:580 g,en:580 kg];[cs:USB,en:USB]=[cs:Ano,en:Yes]";photo;photo;photo;;FALSE;olympus;
-PANASONIC DMC FT5EP;PANASONIC DMC FT5EP;(DE) PANASONIC DMC FT5EP;5965907;DMC FT5EP-K;8845781245911;Panasonic DMC-FT5 je pikov odoln fotoapart pro vechny venkovn aktivity. Model DMC-FT5 je vodotsn do hloubky 13 m a prachotsn podle standard IPX8 a IP6X. Je odoln vi nrazm, nap. vi pdu a ze 2 m, mrazuvzdorn do -10C a sn tlak do 0.107 kg/cm. Nov je vybaven sklem proti zamlen zpsobenm vodn prou. Vezmte fotoapart s sebou na ryby, na tboen, potpn, surfovn, horolezeck vstup, lyovn nebo na snowboard - DMC-FT5 vs me doprovzet po cel rok a znamenat chvatn okamiky.;"Digital Camera - Waterproof, shockproof, freezeproof, 16.1 Mpx CCD, 4x zoom (29-108 mm), 2.7"" LCD display, Li-Ion, HD video, SD/SDHC/SDXC, time lapse recording, stabilizer";"(DE) Digital Camera - Waterproof, shockproof, freezeproof, 16.1 Mpx CCD, 4x zoom (29-108 mm), 2.7"" LCD display, Li-Ion, HD video, SD/SDHC/SDXC, time lapse recording, stabilizer";Panasonic DMC-FT5 je pikov odoln fotoapart pro vechny venkovn aktivity.;"Digital Camera - Waterproof, shockproof, freezeproof, 16.1 Mpx CCD, 4x zoom (29-108 mm), 2.7"" LCD display, Li-Ion, HD video, SD/SDHC/SDXC, time lapse recording, stabilizer";"(DE) Digital Camera - Waterproof, shockproof, freezeproof, 16.1 Mpx CCD, 4x zoom (29-108 mm), 2.7"" LCD display, Li-Ion, HD video, SD/SDHC/SDXC, time lapse recording, stabilizer";"ordinary_domain_1=8385;partner_domain_1=8385;vip_domain_1=8385";"ordinary_domain_2=335.4;vip_domain_2=335.4";"ordinary_domain_1=8385;partner_domain_1=8385;vip_domain_1=8385";low;1.2.2013;;500;pcs;out-of-stock;"[cs:Typ fotoapartu,en:Camera type]=[cs:zrcadlovky,en:SLR];[cs:Rozlien,en:Resolution]=[cs:12 Mpix,en:12 Mpix];[cs:Napjen,en:Power supply]=[cs:akumultor,en:battery];[cs:Typ hledku,en:Viewfinder type]=[cs:optick,en:optical];[cs:Citlivost (ISO),en:Sensitivity (ISO)]=[cs:12800,en:12800];[cs:Velikost displeje,en:Display size]=[cs:4,en:4];[cs:Hmotnost,en:Weight]=[cs:250 g,en:250 g];[cs:USB,en:USB]=[cs:Ano,en:Yes]";photo;photo;photo;;FALSE;;
-PRIMECOOLER PC-AD2 3D brle;PRIMECOOLER PC-AD2 3D glasses;(DE) PRIMECOOLER PC-AD2 3D glasses;5960585;PC-AD23DGLASS;8845781245927;paprov brle rovo-zelen pro prohlen 3D obrzk nebo sledovn 3D film;Red and green paper glasses for watching ;(DE) Red and green paper glasses for watching;paprov brle rovo-zelen pro prohlen 3D obrzk nebo sledovn 3D film;Red and green paper glasses for watching ;(DE) Red and green paper glasses for watching;"ordinary_domain_1=15.7;partner_domain_1=15.7;vip_domain_1=15.7";"ordinary_domain_2=0.628;vip_domain_2=0.628";"ordinary_domain_1=15.7;partner_domain_1=15.7;vip_domain_1=15.7";high;13.1.2000;;600;pcs;in-stock;;books;books;books;action;FALSE;;
-Reflexn pska pro bezpen pohyb na cest;Reflective tape for safe movement on the road;(DE) Reflective tape for safe movement on the road;9624190;8595159809694;8845781245957;Svtc reflexn pska pro bezpen pohyb na cest, kter zajist jet vt viditelnost bruslam, cyklistm nebo chodcm za snen viditelnosti. Pska je uren pro upevnn na ruku, nohu, jzdn kolo, korek apod. Dky zavinovac pruine se pska lehce pizpsob kadmu tvaru;This luminiscent tape might prevent you from dying.;(DE) This luminiscent tape might prevent you from dying.;Svtc reflexn pska pro bezpen pohyb na cest, kter zajist jet vt viditelnost bruslam, cyklistm nebo chodcm za snen viditelnosti.;This luminiscent tape might prevent you from dying.;(DE) This luminiscent tape might prevent you from dying.;"ordinary_domain_1=2;partner_domain_1=2;vip_domain_1=2";"ordinary_domain_2=0.08;vip_domain_2=0.08";"ordinary_domain_1=2;partner_domain_1=2;vip_domain_1=2";high;12.2.2014;;;pcs;out-of-stock;;books;books;books;"new;action";FALSE;;
-ROCCAT Kone Pure Optical Gaming Mouse;ROCCAT Kone Pure Optical Gaming Mouse;(DE) ROCCAT Kone Pure Optical Gaming Mouse;4125523;ROC-11-710;8845781245921;Optick my od Roccat je to prav pro opravdov hre. Skvle padne dky ergonomickmu tvaru a o 9 % menm rozmrm oproti klasick Roccat Kone. O minimln odezvu se star 32bit procesor spolu s kabelovm pipojenm. My m vlastn pam pro vechny hern profily a makra. Oproti konkurenci je vybavena 7 programovatelnmi tlatky, co je optimln mnostv jak pro hran, tak bezmylenkov ovldn.;Mouse game, 8200dpi laser sensor, 7 programmable buttons + 2D wheel 12000fps, 1ms response, EasyShift, USB, LED backlight, Turbo Core V2, Black;(DE) Mouse game, 8200dpi laser sensor, 7 programmable buttons + 2D wheel 12000fps, 1ms response, EasyShift, USB, LED backlight, Turbo Core V2, Black;Optick my od Roccat je to prav pro opravdov hre. Skvle padne dky ergonomickmu tvaru a o 9 % menm rozmrm oproti klasick. Roccat Kone;Mouse game, 8200dpi laser sensor, 7 programmable buttons + 2D wheel 12000fps, 1ms response, EasyShift, USB, LED backlight, Turbo Core V2, Black;(DE) Mouse game, 8200dpi laser sensor, 7 programmable buttons + 2D wheel 12000fps, 1ms response, EasyShift, USB, LED backlight, Turbo Core V2, Black;"ordinary_domain_1=1562;partner_domain_1=1562;vip_domain_1=1562";"ordinary_domain_2=62.48;vip_domain_2=62.48";"ordinary_domain_1=1562;partner_domain_1=1562;vip_domain_1=1562";high;7.1.2000;;;pcs;in-stock;"[cs:Hern my,en:Gaming mouse]=[cs:Ano,en:Yes];[cs:Ergonomie,en:Ergonomics]=[cs:Pravoruk,en:Right-handed];[cs:Podporovan OS,en:Supported OS]=[cs:Windows 2000/XP/Vista/7,en:Windows 2000/XP/Vista/7];[cs:Poet tlatek,en:Number of buttons]=[cs:5,en:5]";pc;pc;pc;;FALSE;;
-Samsung Galaxy Core 2 (SM-G355) - ern;Samsung Galaxy Core 2 (SM-G355) - black;(DE) Samsung Galaxy Core 2 (SM-G355) - black;8981612;SM-G355HZKNETL;8845781245953;"Smartphone, Quad core 1,2 GHz, 4,5"" WVGA, rozlien 480x800, 4GB ROM, 512MB RAM, A-GPS, GLONASS, Wi-Fi 802.11 b/g/n, Bluetooth 3.0, MicroUSB 2.0 (11pin), 3.5mm jack, micro SD (a 64GB), NFC, baterie 2000mAh, hmotnost 138g, barva ern";"Mobile phone 4.5 ""800x480, processor, Quad-Core 1.2GHz, RAM 768 megabytes internal memory of 4GB, microSD up to 64GB, 5 megapixel camera, GPS, WiFi, Bluetooth 4.0, NFC, 3G, microUSB, Li-Ion 2000 mAh, Android 4.4";"(DE) Mobile phone 4.5 ""800x480, processor, Quad-Core 1.2GHz, RAM 768 megabytes internal memory of 4GB, microSD up to 64GB, 5 megapixel camera, GPS, WiFi, Bluetooth 4.0, NFC, 3G, microUSB, Li-Ion 2000 mAh, Android 4.4";"Smartphone, Quad core 1,2 GHz, 4,5"" WVGA, rozlien 480x800, 4GB ROM, 512MB RAM, A-GPS, GLONASS";;(DE);"ordinary_domain_1=4124;partner_domain_1=4124;vip_domain_1=4124";"ordinary_domain_2=164.96;vip_domain_2=164.96";"ordinary_domain_1=4124;partner_domain_1=4124;vip_domain_1=4124";high;8.2.2014;;;pcs;on-request;"[cs:hlopka displeje,en:Display Size]=[cs:4.5"",en:4.5""];[cs:Rozlien,en:Resolution]=[cs:800 480 px,en:800 480 px];[cs:Ron spoteba energie,en:Annual energy consumption ]=[cs:250 kWh/rok,en:250 kWh/year];[cs:Typ displeje,en:Display type]=[cs:TFT,en:TFT];[cs:Rozlien standardn zadn kamery,en:Resolution of rear camera]=[cs:5 Mpx,en:5 Mpx]";phones;phones;phones;new;FALSE;samsung;
-Samsung Galaxy Core Plus (SM-G350) - bl;Samsung Galaxy Core Plus (SM-G350) - white;(DE) Samsung Galaxy Core Plus (SM-G350) - white;8981055;G3500ZWAETL;8845781245952;"Smartphone,1.2GHz DC, Android 4.2, BT4.0, A-GPS, Wi-Fi 802.11b/g/n, 5Mpx kam., HSDPA/EDGE, GSM Quad-Band, 4GB flash, 768MB RAM, microSDHC slot, kapacitn 4.3"" TFT LCD 480x800, Li-Ion 1800mAh, NFC, CZ";"Mobile phone 4.5 ""800x480, processor, Quad-Core 1.2GHz, RAM 768 megabytes internal memory of 4GB, microSD up to 64GB, 5 megapixel camera, GPS, WiFi, Bluetooth 4.0, NFC, 3G, microUSB, Li-Ion 2000 mAh, Android 4.4";"(DE) Mobile phone 4.5 ""800x480, processor, Quad-Core 1.2GHz, RAM 768 megabytes internal memory of 4GB, microSD up to 64GB, 5 megapixel camera, GPS, WiFi, Bluetooth 4.0, NFC, 3G, microUSB, Li-Ion 2000 mAh, Android 4.4";Smartphone,1.2GHz DC, Android 4.2, BT4.0, A-GPS;"Mobile phone 4.5 ""800x480, processor, Quad-Core 1.2GHz, RAM 768 megabytes internal memory of 4GB";"(DE) Mobile phone 4.5 ""800x480, processor, Quad-Core 1.2GHz, RAM 768 megabytes internal memory of 4GB";"ordinary_domain_1=3876;partner_domain_1=3876;vip_domain_1=3876";"ordinary_domain_2=155.04;vip_domain_2=155.04";"ordinary_domain_1=3876;partner_domain_1=3876;vip_domain_1=3876";high;7.2.2014;;;pcs;on-request;"[cs:hlopka displeje,en:Display Size]=[cs:4.5"",en:4.5""];[cs:Rozlien,en:Resolution]=[cs:800 480 px,en:800 480 px];[cs:Typ displeje,en:Display type]=[cs:TFT,en:TFT];[cs:Ron spoteba energie,en:Annual energy consumption ]=[cs:275 kWh/rok,en:275 kWh/year];[cs:Rozlien standardn zadn kamery,en:Resolution of rear camera]=[cs:5 Mpx,en:5 Mpx]";phones;phones;phones;new;FALSE;samsung;
-Samsung UE75HU7500 (UHD);Samsung UE75HU7500 (UHD);(DE) Samsung UE75HU7500 (UHD);9773676;UE75HU7500;8845781245932;Dky technologii Color Brilliance uvidte vechno pesn tak, jak to proda zamlela. Televizor podv barevn odstny s ohromujc pesnost jako byste byli soust dje. Vechno, co vidte na obrazovce, je jasn a syt. Barvy ovaj v ndhern intenzit a obraz vypad pirozen a vrn. Nyn se mete ponoit do mimodn ivho obrazu UHD, kter je skuten brilantn.;Television SMART 3D LED, 189 cm diagonal, CMR 1000 4K Ultra HD 3840x2160, DVB-S2 / T2 / C, 4x HDMI, 3x USB, CI +, LAN, WiFi, DLNA, MHL, HbbTV, Tizen OS, energ. Class A;(DE) Television SMART 3D LED, 189 cm diagonal, CMR 1000 4K Ultra HD 3840x2160, DVB-S2 / T2 / C, 4x HDMI, 3x USB, CI +, LAN, WiFi, DLNA, MHL, HbbTV, Tizen OS, energ. Class A;Dky technologii Color Brilliance uvidte vechno pesn tak, jak to proda zamlela.;Television SMART 3D LED, 189 cm diagonal.;(DE) Television SMART 3D LED, 189 cm diagonal.;"ordinary_domain_1=140486.8;partner_domain_1=140486.8;vip_domain_1=140486.8";"ordinary_domain_2=5619.472;vip_domain_2=5619.472";"ordinary_domain_1=140486.8;partner_domain_1=140486.8;vip_domain_1=140486.8";high;18.1.2014;;550;pcs;in-stock;"[cs:Tda energetick innosti ,en:Energy efficiency class]=[cs:A,en:A];[cs:Ron spoteba energie,en:Annual energy consumption ]=[cs:275 kWh/rok,en:275 kWh/year];[cs:hlopka,en:Screen size]=[cs:75"",en:75""]";tv;tv;tv;new;FALSE;samsung;
-Sencor SDB 4002M4 (HDMI);Sencor SDB 4002M4;(DE) Sencor SDB 4002M4;9178302;4002M4;8845781245931;Kompaktn DVB-T pijma (Set Top Box) Sencor SDB 4002M4 pro pozemn digitln vysln neplacench digitlnch program (FTA) pes vnitn nebo venkovn antnu. Monost pipojen k televizoru pes SCART kabel.;DVB-T Receiver HD - MPEG4, MPEG2, USB recording, timeshift, EPG, HDMI 1.3, USB, SCART, coaxial output, power antenna 5V/50mA;(DE) DVB-T Receiver HD - MPEG4, MPEG2, USB recording, timeshift, EPG, HDMI 1.3, USB, SCART, coaxial output, power antenna 5V/50mA;Kompaktn DVB-T pijma (Set Top Box) Sencor SDB 4002M4 pro pozemn digitln vysln neplacench digitlnch program (FTA);DVB-T Receiver HD - MPEG4, MPEG2, USB recording, timeshift;(DE) DVB-T Receiver HD - MPEG4, MPEG2, USB recording, timeshift;"ordinary_domain_1=577.7;partner_domain_1=577.7;vip_domain_1=577.7";"ordinary_domain_2=23.108;vip_domain_2=23.108";"ordinary_domain_1=577.7;partner_domain_1=577.7;vip_domain_1=577.7";high;17.1.2000;;400;pcs;in-stock;"[cs:Tuner,en:Tuner]=[cs:DVB-T,en:DVB-T];[cs:Zznam na,en:Recording on]=[cs:flash disk,en:flash disk];[cs:Multimdia,en:Multimedia]=[cs:Video,en:Video];[cs:Ron spoteba energie,en:Annual energy consumption ]=[cs:250 kWh/rok,en:250 kWh/year]";tv;tv;tv;"action;top";FALSE;sencor;
-Sennheiser HD 700;Sennheiser HD 700;(DE) Sennheiser HD 700;5963470;;8845781245950;Pokraujc inovace v nabdce pikovch sluchtek firmy Sennheiser zrodila nejnovj high-end model - HD 700. Tato oteven, dynamick sluchtka s circum-aurln konstrukc sluchtkov mule vyuvaj poznatk z vvoje vlajkov lodi HD 800. Inovovan, rozmrn, speciln vytvarovan membrna je doplnna o uniktn ventilan otvory v magnetu, kter zamezuj nevhodnm turbulencm vzduchu a umouj zcela voln pohyb. Vsledkem je mimodn pirozen, na frekvenn rozsah a mnostv akustickch detail velmi bohat, pesn definovan a vrn zvuk, kter ocenila i mezinrodn organizace odbornch novin EISA a vyhlsila model HD 700 za Evropsk hifi sluchtka 2012 - 2013. Pestoe jsou vyrobena z kvalitn oceli a dalch high-tech materil je jejich hmotnost velmi nzk a jejich noen pjemn i pi dletrvajcm poslechu. Nunky jsou vytvoeny ze speciln tkaniny z mikrovlkna s lehkou drbou. Kabel je symetrick z postben OFC mdi se tymi samostatnmi vodii ve spolenm kvalitnm opleten.;HQ speakers from well known brand.;(DE) HQ speakers from well known brand.;Pokraujc inovace v nabdce pikovch sluchtek firmy Sennheiser zrodila nejnovj high-end model - HD 700.;HQ speakers from well known brand.;(DE) HQ speakers from well known brand.;"ordinary_domain_1=14537;partner_domain_1=14537;vip_domain_1=14537";"ordinary_domain_2=581.48;vip_domain_2=581.48";"ordinary_domain_1=14537;partner_domain_1=14537;vip_domain_1=14537";high;5.2.2014;;300;pcs;on-request;"[cs:Uloen - Ear coupling,en:Ear Coupling]=[cs:Okolo u - Circumaurln,en:Circumaural];[cs:Konstrukce,en:Construction]=[cs:Oteven,en:Open];[cs:Skldn,en:Fold-up]=[cs:Pevn,en:Other];[cs:Uren,en:Determination]=[cs:Domc poslech,en:Home Listening]";"tv;pc";"tv;pc";"tv;pc";new;FALSE;;
-Solrn epice s ventiltorkem, bl;Cap with solar-powered fan, white;(DE) Cap with solar-powered fan, white;9142035;561392;8845781245961;Kiltovka s ventiltorem se bude hodit kadmu, kdo ocen geniln npady pro zpjemnn horkch dn. Zajist vm nepetrit osven vtrkem, napjenm ze solrnho lnku, naitho na vrku epice. Velikost epice lze nastavit podle ky hlavy. S touto epic rozhodn vzbudte zjem a v horkch dnech i zvist ostatnch.;Cap with air conditioning, convenient for hot days.;(DE) Cap with air conditioning, convenient for hot days.;Kiltovka s ventiltorem se bude hodit kadmu, kdo ocen geniln npady pro zpjemnn horkch dn.;Cap with air conditioning, convenient for hot days.;(DE) Cap with air conditioning, convenient for hot days.;"ordinary_domain_1=136.9;partner_domain_1=136.9;vip_domain_1=136.9";"ordinary_domain_2=5.476;vip_domain_2=5.476";"ordinary_domain_1=136.9;partner_domain_1=136.9;vip_domain_1=136.9";high;16.2.2014;;;pcs;in-stock;;books;books;books;new;TRUE;;
-SONY DSCRX100;SONY DSCRX100;(DE) SONY DSCRX100;5964356;DSCRX100.CEE8;8845781245913;A cestujete kamkoli, vyuijte 20,2megapixelov snma, kreativn ovldn a kompaktn design na maximum. Zskejte vsledky jako profesionlov. Kdy to spojte s vysoce vkonnm procesorem BIONZ, zskte jeden z nejvkonnjch kompakt, jak je dnes na trhu.;"Digital Camera CMOS Exmor R1 20.2 megapixel, 3.6x zoom (28-100 mm F1.8), Full HD video (1920 x 1080) 50p, 3 ""LCD, Li-Ion, MS DUO + \u200b\u200bSD/SDHC/SDXC, Face Detection, Intelligent stabilizer";"(DE) Digital Camera CMOS Exmor R1 20.2 megapixel, 3.6x zoom (28-100 mm F1.8), Full HD video (1920 x 1080) 50p, 3 ""LCD, Li-Ion, MS DUO + \u200b\u200bSD/SDHC/SDXC, Face Detection, Intelligent stabilizer";A cestujete kamkoli, vyuijte 20,2megapixelov snma, kreativn ovldn a kompaktn design na maximum.;Digital Camera CMOS Exmor R1 20.2 megapixel, 3.6x zoom;(DE) Digital Camera CMOS Exmor R1 20.2 megapixel, 3.6x zoom;"ordinary_domain_1=12989;partner_domain_1=12989;vip_domain_1=12989";"ordinary_domain_2=519.56;vip_domain_2=519.56";"ordinary_domain_1=12989;partner_domain_1=12989;vip_domain_1=12989";high;2.6.2000;;700;pcs;in-stock;;photo;photo;photo;;FALSE;sony;
-SONY Xperia SP C5303;SONY Xperia SP C5303;(DE) SONY Xperia SP C5303;9882324P;1272-2537;8845781245954;Mobiln telefon pochz z oficiln esk distribuce, m esk menu a eskou dokumentaci a je na nj poskytovna pln zruka jak u na firmy, tak u vrobce. Vce info na http://tsblog.cz/informace-pro-zakazniky/co-je-sedy-dovoz-a-proc-je-nebezpecny.html;"Mobile phone 4.6 ""1280x720, Qualcomm MSM8960Pro 1.7 GHz, 1GB RAM, 8GB 8MPx camera, GPS, WiFi, Bluetooth, FM, micro USB, Android 4.1";"(DE) Mobile phone 4.6 ""1280x720, Qualcomm MSM8960Pro 1.7 GHz, 1GB RAM, 8GB 8MPx camera, GPS, WiFi, Bluetooth, FM, micro USB, Android 4.1";Mobiln telefon pochz z oficiln esk distribuce, m esk menu a eskou dokumentaci a je na nj poskytovna pln zruka;"Mobile phone 4.6 ""1280x720, Qualcomm MSM8960Pro 1.7 GHz";"(DE) Mobile phone 4.6 ""1280x720, Qualcomm MSM8960Pro 1.7 GHz";"ordinary_domain_1=4371.9;partner_domain_1=4371.9;vip_domain_1=4371.9";"ordinary_domain_2=174.876;vip_domain_2=174.876";"ordinary_domain_1=4371.9;partner_domain_1=4371.9;vip_domain_1=4371.9";high;9.2.2014;;200;pcs;in-stock;;phones;phones;phones;new;FALSE;sony;
-Svtc tkaniky zelen;Fluorescent laces, green;(DE) Fluorescent laces, green;5961201;;8845781245960;Svtc tkaniky zelen. Najdete je i potm.;Fluorescent green laces. Visible at any condition.;(DE) Fluorescent green laces. Visible at any condition.;Svtc tkaniky zelen. Najdete je i potm.;Fluorescent green laces. Visible at any condition.;(DE) Fluorescent green laces. Visible at any condition.;"ordinary_domain_1=15;partner_domain_1=15;vip_domain_1=15";"ordinary_domain_2=0.6;vip_domain_2=0.6";"ordinary_domain_1=15;partner_domain_1=15;vip_domain_1=15";high;15.2.2014;;;pcs;in-stock;;books;books;books;"new;action";FALSE;;
-"VERBATIM 1TB extern disk 2,5"" USB 3.0 GT SuperSpeed erven";"VERBATIM 1TB external HDD 2,5"" USB 3.0 GT SuperSpeed red";"(DE) VERBATIM 1TB external HDD 2,5"" USB 3.0 GT SuperSpeed red";4122531;53082;8845781245917;Penosn pevn disk GT SuperSpeed USB 3.0 se inspiruje dlouhou histori sportovnch voz, a proto jej zdob znm bl zvodn pruhy, kter jsou obvykl na zvodnch okruzch po celm svt. erven kontrolky LED na jeho zadn stran pispvaj ke vzhledu podobnmu zvodnm vozm.Dky lehkosti a kombinaci velk kapacity s atraktivnm vzhledem je disk GT SuperSpeed ideln k noen a dod vaemu pracoviti styl a spolehlivost a u je to kdekoli. Disk GT SuperSpeed je napjen pes sbrnici USB 3.0 a nevyaduje dn extern napjen. Sta jej jednodue zapojit a ihned jej mete zat pouvat. Je tak naformtovn systmem FAT32, take jej mete pouvat v operanch systmech Windows i Mac. Penosn pevn disk GT SuperSpeed USB 3.0 se dodv spolen s bohatm pedinstalovanm softwarovm balkem. Tento balek zahrnuje software Nero Backup, software pro sporu energie Grey Button, software pro formtovn a uivatelsk pruky. Pepna ochrany proti zpisu na zadn stran disku je nov funkce umoujc ochranu ped nemyslnm odstrannm dat. Funguje na stejnm principu jako pepna ochrany proti zpisu na disketch nebo kartch SD.;
This product is not an independently functional unit and may require professional installation.
;(DE)
This product is not an independently functional unit and may require professional installation.
;Penosn pevn disk GT SuperSpeed USB 3.0 se inspiruje dlouhou histori sportovnch voz;This product is not an independently functional unit and may require professional installation.;(DE) This product is not an independently functional unit and may require professional installation.;"ordinary_domain_1=1268.7;partner_domain_1=1268.7;vip_domain_1=1268.7";"ordinary_domain_2=50.748;vip_domain_2=50.748";"ordinary_domain_1=1268.7;partner_domain_1=1268.7;vip_domain_1=1268.7";high;3.1.2000;;140;pcs;in-stock;;pc;pc;pc;top;FALSE;verbatim;
-YENKEE YSP 1005WH bl;YENKEE YSP 1005WH white;(DE) YENKEE YSP 1005WH white;9771195;1005WH;8845781245948;Kapesn reproduktor pro MP3 pehrvae, mobiln telefony, potae, notebooky, tablety atd. Sta vybalit, zapojit a spustit pehrvn. S tmto reproduktorem zskte 360 zvukov zitek na cestch.;Speakers 2 x 3W RMS, 2.0 stereo, portable, volume control, frequency range of 150Hz-20kHz, sensitivity 80dB, 4Ohm impedance, power supply via USB, 3.5 mm audio jack, dimensions 85x85x107mm, weight 550 g;(DE) Speakers 2 x 3W RMS, 2.0 stereo, portable, volume control, frequency range of 150Hz-20kHz, sensitivity 80dB, 4Ohm impedance, power supply via USB, 3.5 mm audio jack, dimensions 85x85x107mm, weight 550 g;Kapesn reproduktor pro MP3 pehrvae, mobiln telefony, potae, notebooky, tablety atd.;Speakers 2 x 3W RMS, 2.0 stereo, portable, volume control, frequency range of 150Hz-20kHz, sensitivity 80dB;(DE) Speakers 2 x 3W RMS, 2.0 stereo, portable, volume control, frequency range of 150Hz-20kHz, sensitivity 80dB;"ordinary_domain_1=189.3;partner_domain_1=189.3;vip_domain_1=189.3";"ordinary_domain_2=7.572;vip_domain_2=7.572";"ordinary_domain_1=189.3;partner_domain_1=189.3;vip_domain_1=189.3";high;3.2.2014;;100;pcs;on-request;;"tv;pc";"tv;pc";"tv;pc";new;FALSE;;
-"36"" Philips 32PFL4308";"36"" Philips 32PFL4308";"(DE) 36"" Philips 32PFL4308";9176544;32PFL4308I;8845781243205;Televize LED, 100Hz, hlopka 80cm, 100Hz, Full HD 19201080, DVB-T/C, 2x HDMI, USB, CI+, VGA, SCART, repro 16W, energ. tda A+;TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;(DE) TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;Televize LED, 100Hz, hlopka 80cm, 100Hz, Full HD 19201080, DVB-T/C, 2x HDMI, USB, CI+, VGA, SCART, repro 16W, energ. tda A+;TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;(DE) TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;"ordinary_domain_1=9173.5;partner_domain_1=9173.5;vip_domain_1=9173.5";"ordinary_domain_2=366.94;vip_domain_2=366.94";"ordinary_domain_1=9173.5;partner_domain_1=9173.5;vip_domain_1=9173.5";high;15.1.2000;;200;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:36"",en:36""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:1366768 (HD Ready),en:1366768 (HD Ready)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ne,en:No]";tv;tv;tv;top;FALSE;philips;9176544M
-"54"" Philips 32PFL4308";"54"" Philips 32PFL4308";"(DE) 54"" Philips 32PFL4308";9176588;32PFL4308J;8845781243205;Televize LED, 100Hz, hlopka 80cm, 100Hz, Full HD 19201080, DVB-T/C, 2x HDMI, USB, CI+, VGA, SCART, repro 16W, energ. tda A+;TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;(DE) TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;Televize LED, 100Hz, hlopka 80cm, 100Hz, Full HD 19201080, DVB-T/C, 2x HDMI, USB, CI+, VGA, SCART, repro 16W, energ. tda A+;TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;(DE) TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;"ordinary_domain_1=10173.5;partner_domain_1=10173.5;vip_domain_1=10173.5";"ordinary_domain_2=406.94;vip_domain_2=406.94";"ordinary_domain_1=10173.5;partner_domain_1=10173.5;vip_domain_1=10173.5";high;15.1.2000;;200;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:54"",en:54""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:1366768 (HD Ready),en:1366768 (HD Ready)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ne,en:No]";tv;tv;tv;top;FALSE;philips;9176544M
-LG 47LA790W (FHD);LG 47LA790W (FHD);(DE) LG 47LA790W (FHD);5965879B;47LA790W;8845781245928;Televize Cinema 3D SMART LED, hlopka 119cm, MCI 700, FullHD 1920x1080, DVB-S/S2/T/T2/C, 3x HDMI, 3x USB, CI, SCART, MHL, LAN, HbbTV, WiFi, Miracast/WiDi, WebOS, webov prohle, Dual Core, 2ks 3D brle AG-F310, magick ovlada, energ. tda A+;TV Cinema 3D LED SMART diagonal 119 cm, 700 MCI, 1920x1080 Full HD, DVB-S / S2 / T / T2 / C, 3x HDMI, 3x USB, CI, SCART, MHL, LAN, HbbTV, WiFi, Miracast / WiDi, WebOS, Web browser, Dual Core, 2 pieces 3D glasses AG-F310, magical driver energ. Class A +;(DE) TV Cinema 3D LED SMART diagonal 119 cm, 700 MCI, 1920x1080 Full HD, DVB-S / S2 / T / T2 / C, 3x HDMI, 3x USB, CI, SCART, MHL, LAN, HbbTV, WiFi, Miracast / WiDi, WebOS, Web browser, Dual Core, 2 pieces 3D glasses AG-F310, magical driver energ. Class A +;Televize Cinema 3D SMART LED, hlopka 119cm, MCI 700, FullHD 1920x1080;TV Cinema 3D LED SMART diagonal 119 cm, 700 MCI, 1920x1080 Full HD;(DE) TV Cinema 3D LED SMART diagonal 119 cm, 700 MCI, 1920x1080 Full HD;"ordinary_domain_1=19843;partner_domain_1=19843;vip_domain_1=19843";"ordinary_domain_2=793.72;vip_domain_2=793.72";"ordinary_domain_1=19843;partner_domain_1=19843;vip_domain_1=19843";high;14.1.2000;;80;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:60"",en:60""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:1366768 (HD Ready),en:1366768 (HD Ready)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ne,en:No]";tv;tv;tv;;FALSE;lg;
-Orava LT-823 C82B;Orava LT-823 C82B;(DE) Orava LT-823 C82B;9774523;LT-823 C82B;8845781245929;Televize LED, hlopka 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI, USB, SCART, VGA, sluchtkov vstup, USB/HDD nahrvn, hotelov md, energ. tda B;Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI, USB, SCART, VGA, headphone jack, USB/HDD recording, hotel mode, Energ. Class A;(DE) Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI, USB, SCART, VGA, headphone jack, USB/HDD recording, hotel mode, Energ. Class A;Televize LED, hlopka 82 cm, 1366x768, DVB-T/C MPEG4 tuner;Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner;(DE) Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner;"ordinary_domain_1=6490;partner_domain_1=6490;vip_domain_1=6490";"ordinary_domain_2=259.6;vip_domain_2=259.6";"ordinary_domain_1=6490;partner_domain_1=6490;vip_domain_1=6490";high;14.1.2000;;100;pcs;in-stock;;tv;tv;tv;;TRUE;orava;
-"LG 22MT44D 21,5""";"LG 22MT44D 21,5""";"(DE) LG 22MT44D 21,5""";7700667;22MT44D;8845781245930;Televizn monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVB-T/C tuner, 2x HDMI, USB, SCART, D-Sub, 2x5W repro, VESA 75x75, hotelov md s USB cloning, energ. tda A;Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768, DVB-T/C, HDMI, SCART, D-Sub, USB, speakers, Energ. Class A;(DE) Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768, DVB-T/C, HDMI, SCART, D-Sub, USB, speakers, Energ. Class A;Televizn monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080;Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768;(DE) Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768;"ordinary_domain_1=3999;partner_domain_1=3999;vip_domain_1=3999";"ordinary_domain_2=159.96;vip_domain_2=159.96";"ordinary_domain_1=3999;partner_domain_1=3999;vip_domain_1=3999";high;14.1.2000;;100;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:21"",en:21""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:1366768 (HD Ready),en:1366768 (HD Ready)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ne,en:No]";tv;tv;tv;;TRUE;lg;
-"LG 22MT44D 30""";"LG 22MT44D 30""";"(DE) LG 22MT44D 30""";7700668;22MT44E;8845781245931;Televizn monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVB-T/C tuner, 2x HDMI, USB, SCART, D-Sub, 2x5W repro, VESA 75x75, hotelov md s USB cloning, energ. tda A;Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768, DVB-T/C, HDMI, SCART, D-Sub, USB, speakers, Energ. Class A;(DE) Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768, DVB-T/C, HDMI, SCART, D-Sub, USB, speakers, Energ. Class A;Televizn monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080;Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms;(DE) Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms;"ordinary_domain_1=3999;partner_domain_1=3999;vip_domain_1=3999";"ordinary_domain_2=159.96;vip_domain_2=159.96";"ordinary_domain_1=3999;partner_domain_1=3999;vip_domain_1=3999";high;14.1.2000;;100;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:30"",en:30""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:1366768 (HD Ready),en:1366768 (HD Ready)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ano,en:Yes]";tv;tv;tv;;FALSE;lg;
-Samsung T27D590EW;Samsung T27D590EW;(DE) Samsung T27D590EW;8981435;LT27D590EW;8845781245932;Sledujte vysln v asnm rozlien Full HD a zrove na stejnm stylovm zazen pracujte. Monitor TD590 vm umouje snadno a rychle pepnat mezi potaovm monitorem a televizorem anebo si vyzkouet sv multitaskingov schopnosti a sledovat televizi a zrove pracovat na rozdlen obrazovce. Krom toho vm nabz flexibiln monosti pipojen, abyste si svou zbavu a multimdia mohli vychutnvat naplno. Tento monitor se dokonale hod do garsonek, pokoj na kolejch a malch obvacch pokoj. Pro byste mli kupovat dv zazen, kdy toho na jednom zvldnete vce?;Watch broadcast in stunning Full HD, while at the same stylish devices work. TD590 Monitor allows you to quickly and easily switch between TV and computer monitor or test your multitasking skills and watch TV while working on a split screen. In addition, it offers flexible connectivity options to your entertainment and multimedia can be enjoyed to the fullest. This monitor is perfect for studio flats, rooms in dormitories and small living rooms. Why should you buy two devices when one can do it more?;(DE) Watch broadcast in stunning Full HD, while at the same stylish devices work. TD590 Monitor allows you to quickly and easily switch between TV and computer monitor or test your multitasking skills and watch TV while working on a split screen. In addition, it offers flexible connectivity options to your entertainment and multimedia can be enjoyed to the fullest. This monitor is perfect for studio flats, rooms in dormitories and small living rooms. Why should you buy two devices when one can do it more?;Sledujte vysln v asnm rozlien Full HD a zrove na stejnm stylovm zazen pracujte.;Watch broadcast in stunning Full HD, while at the same stylish devices work.;(DE) Watch broadcast in stunning Full HD, while at the same stylish devices work.;"ordinary_domain_1=5199;partner_domain_1=5199;vip_domain_1=5199";"ordinary_domain_2=207.96;vip_domain_2=207.96";"ordinary_domain_1=5199;partner_domain_1=5199;vip_domain_1=5199";high;14.1.2000;;100;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:27"",en:27""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:19201080 (Full HD),en:19201080 (Full HD)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ano,en:Yes]";tv;tv;tv;;FALSE;samsung;
-Samsung T27D590EX;Samsung T27D590EX;(DE) Samsung T27D590EX;8981438;LT27D590EX;8845781245933;Televizn monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP+, 2x HDMI, MHL, USB, CI, Scart, 2x 5W repro, dlkov ovlada;The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;(DE) The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;Televizn monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP+, 2x HDMI, MHL, USB, CI, Scart, 2x 5W repro, dlkov ovlada;The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;(DE) The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;"ordinary_domain_1=5399;partner_domain_1=5399;vip_domain_1=5399";"ordinary_domain_2=215.96;vip_domain_2=215.96";"ordinary_domain_1=5399;partner_domain_1=5399;vip_domain_1=5399";high;14.1.2000;;100;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:27"",en:27""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:19201080 (Full HD),en:19201080 (Full HD)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ano,en:Yes]";tv;tv;tv;;FALSE;samsung;
-Xtreamer SW4;Xtreamer SW4;(DE) Xtreamer SW4;9510540;UMNP000883;8845781245934;Xtreamer SW4 je ucelen systm domc zbavy, kter pin do Va televize zbavu, hry, filmy a mnoho dalch funkc v HD rozlien a 1080P. Navc je osazen tunerem DVBT/DVBT2 pro pjem digitlnho vysln. S pomoc technologi AirPlay, MiraCast nebo DLNA mete streamovat video, hudbu a fotky pmo z Vaeho tabletu nebo mobilnho telefonu na televizi.;Xtreamer SW4 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions in HD quality;(DE) Xtreamer SW4 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions in HD quality;Xtreamer SW4 je ucelen systm domc zbavy, kter pin do Va televize zbavu, hry, filmy a mnoho dalch funkc;Xtreamer SW4 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions;(DE) Xtreamer SW4 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions;"ordinary_domain_1=2390;partner_domain_1=2390;vip_domain_1=2390";"ordinary_domain_2=95.6;vip_domain_2=95.6";"ordinary_domain_1=2390;partner_domain_1=2390;vip_domain_1=2390";high;14.1.2000;;100;pcs;in-stock;;tv;tv;tv;;FALSE;;
-LG 58LA790W (FHD);LG 58LA790W (FHD);(DE) LG 58LA790W (FHD);5965879C;58LA790W;8845781245935;Televize SMART LED TV, hlopka 147cm, 4K Ultra HD 3840x2160, 4K Upscaler, DVB-S2/T2/C, H.265, 3x HDMI, 3x USB, Scart, CI+, LAN, WiFi, Miracast, DLNA, MHL, HbbTV, webov prohle, webOS 2.0, repro 2x10W, magick ovlada MR15, energ. tda A+;TV SMART LED TV, 147 cm diagonal, 4K Ultra HD 3840x2160 4K upscaler, DVB-S2 / T2 / C, H.265, 3x HDMI, 3x USB, Scart, CI +, LAN, WiFi, Miracast, DLNA, MHL, HbbTV, Web browser, webOS 2.0, 2x10W speakers, magical MR15 driver, energ. Class A +;(DE) TV SMART LED TV, 147 cm diagonal, 4K Ultra HD 3840x2160 4K upscaler, DVB-S2 / T2 / C, H.265, 3x HDMI, 3x USB, Scart, CI +, LAN, WiFi, Miracast, DLNA, MHL, HbbTV, Web browser, webOS 2.0, 2x10W speakers, magical MR15 driver, energ. Class A +;Televize SMART LED TV, hlopka 147cm, 4K Ultra HD 3840x2160, 4K Upscaler;TV SMART LED TV, 147 cm diagonal, 4K Ultra HD 3840x2160 4K upscaler;(DE) TV SMART LED TV, 147 cm diagonal, 4K Ultra HD 3840x2160 4K upscaler;"ordinary_domain_1=20159;partner_domain_1=20159;vip_domain_1=20159";"ordinary_domain_2=806.36;vip_domain_2=806.36";"ordinary_domain_1=20159;partner_domain_1=20159;vip_domain_1=20159";high;14.1.2000;;80;pcs;in-stock;;tv;tv;tv;;TRUE;lg;
-Orava LT-823 C82C;Orava LT-823 C82C;(DE) Orava LT-823 C82C;9774524;LT-823 C82C;8845781245936;Televize LED, hlopka 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI, USB, SCART, VGA, sluchtkov vstup, USB/HDD nahrvn, hotelov md, energ. tda B;Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI, USB, SCART, VGA, headphone jack, USB/HDD recording, hotel mode, Energ. Class A;(DE) Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI, USB, SCART, VGA, headphone jack, USB/HDD recording, hotel mode, Energ. Class A;Televize LED, hlopka 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI, USB;Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI;(DE) Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI;"ordinary_domain_1=7290;partner_domain_1=7290;vip_domain_1=7290";"ordinary_domain_2=291.6;vip_domain_2=291.6";"ordinary_domain_1=7290;partner_domain_1=7290;vip_domain_1=7290";high;14.1.2000;;100;pcs;in-stock;;tv;tv;tv;;FALSE;orava;
-"LG 22MT44D 51,5""";"LG 22MT44D 51,5""";"(DE) LG 22MT44D 51,5""";7700677;22MT44A;8845781245937;LED monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVI, D-Sub, VESA 75x75, matn;Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080, DVB-S2/T2/C, 2x HDMI, USB, SCART, 2 x 5W speakers, energ. Class A;(DE) Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080, DVB-S2/T2/C, 2x HDMI, USB, SCART, 2 x 5W speakers, energ. Class A;LED monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVI, D-Sub, VESA 75x75, matn;Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080;(DE) Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080;"ordinary_domain_1=4899;partner_domain_1=4899;vip_domain_1=4899";"ordinary_domain_2=195.96;vip_domain_2=195.96";"ordinary_domain_1=4899;partner_domain_1=4899;vip_domain_1=4899";high;14.1.2000;;100;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:60"",en:60""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:19201080 (Full HD),en:19201080 (Full HD)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ano,en:Yes];[cs:Ron spoteba energie,en:Annual energy consumption ]=[cs:275 kWh/rok,en:275 kWh/year]";tv;tv;tv;;FALSE;lg;
-"LG 22MT44D 60""";"LG 22MT44D 60""";"(DE) LG 22MT44D 60""";7700669;22MT44F;8845781245938;LED monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVI, D-Sub, VESA 75x75, matn;Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080, DVB-S2/T2/C, 2x HDMI, USB, SCART, 2 x 5W speakers, energ. Class A;(DE) Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080, DVB-S2/T2/C, 2x HDMI, USB, SCART, 2 x 5W speakers, energ. Class A;LED monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVI, D-Sub, VESA 75x75, matn;Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080;(DE) Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080;"ordinary_domain_1=5999;partner_domain_1=5999;vip_domain_1=5999";"ordinary_domain_2=239.96;vip_domain_2=239.96";"ordinary_domain_1=5999;partner_domain_1=5999;vip_domain_1=5999";high;14.1.2000;;100;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:60"",en:60""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:19201080 (Full HD),en:19201080 (Full HD)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ano,en:Yes];[cs:Ron spoteba energie,en:Annual energy consumption ]=[cs:250 kWh/rok,en:250 kWh/year]";tv;tv;tv;;FALSE;lg;
-Samsung T27D590EY;Samsung T27D590EY;(DE) Samsung T27D590EY;8981437;LT27D590EY;8845781245939;Televizn monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP+, 2x HDMI, MHL, USB, CI, Scart, 2x 5W repro, dlkov ovlada;The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;(DE) The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;Televizn monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP+, 2x HDMI, MHL, USB, CI, Scart, 2x 5W repro, dlkov ovlada;The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;(DE) The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;"ordinary_domain_1=6199;partner_domain_1=6199;vip_domain_1=6199";"ordinary_domain_2=247.96;vip_domain_2=247.96";"ordinary_domain_1=6199;partner_domain_1=6199;vip_domain_1=6199";high;14.1.2000;;100;pcs;in-stock;;tv;tv;tv;;FALSE;samsung;
-Samsung T27D590EZ;Samsung T27D590EZ;(DE) Samsung T27D590EZ;18981438;LT27D590EZ;8845781245940;Televizn monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP+, 2x HDMI, MHL, USB, CI, Scart, 2x 5W repro, dlkov ovlada;The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;(DE) The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;Televizn monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP+, 2x HDMI, MHL, USB, CI, Scart, 2x 5W repro, dlkov ovlada;The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;(DE) The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;"ordinary_domain_1=6399;partner_domain_1=6399;vip_domain_1=6399";"ordinary_domain_2=255.96;vip_domain_2=255.96";"ordinary_domain_1=6399;partner_domain_1=6399;vip_domain_1=6399";high;14.1.2000;;100;pcs;in-stock;;tv;tv;tv;;FALSE;samsung;
-Xtreamer SW5;Xtreamer SW5;(DE) Xtreamer SW5;9510541;UMNP000884;8845781245941;Xtreamer SW5 je ucelen systm domc zbavy, kter pin do Va televize zbavu, hry, filmy a mnoho dalch funkc v HD rozlien a 1080P. Navc je osazen tunerem DVBT/DVBT2 pro pjem digitlnho vysln. S pomoc technologi AirPlay, MiraCast nebo DLNA mete streamovat video, hudbu a fotky pmo z Vaeho tabletu nebo mobilnho telefonu na televizi.;Xtreamer SW5 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions in HD quality;(DE) Xtreamer SW5 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions in HD quality;Xtreamer SW5 je ucelen systm domc zbavy, kter pin do Va televize zbavu, hry, filmy a mnoho dalch funkc;Xtreamer SW5 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions;(DE) Xtreamer SW5 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions;"ordinary_domain_1=2490;partner_domain_1=2490;vip_domain_1=2490";"ordinary_domain_2=99.6;vip_domain_2=99.6";"ordinary_domain_1=2490;partner_domain_1=2490;vip_domain_1=2490";high;14.1.2000;;100;pcs;in-stock;;tv;tv;tv;;FALSE;;
-Philips 32PFL4308;Philips 32PFL4308;(DE) Philips 32PFL4308;9176544M;32PFL4308;8845781243205;Televize LED, 100Hz, hlopka 80cm, 100Hz, Full HD 19201080, DVB-T/C, 2x HDMI, USB, CI+, VGA, SCART, repro 16W, energ. tda A+;TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;(DE) TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;Televize LED, 100Hz, hlopka 80cm, 100Hz, Full HD 19201080, DVB-T/C, 2x HDMI, USB, CI+, VGA, SCART, repro 16W, energ. tda A+;TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;(DE) TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;"ordinary_domain_1=9173.5;partner_domain_1=9173.5;vip_domain_1=9173.5";"ordinary_domain_2=366.94;vip_domain_2=366.94";"ordinary_domain_1=9173.5;partner_domain_1=9173.5;vip_domain_1=9173.5";high;15.1.2000;;;pcs;in-stock;;tv;tv;tv;top;FALSE;philips;
-Mouka hladk 1 kg;Prime flour 1 kg;(DE) Prime flour 1 kg;9176544MF;FLO242-PRI;8845781243206;Hladk mouka pro tvorbu home-made peench dobrot. Nyn za zvltn cenu.;Prime flour for creating your own cake. Now with special discount.;(DE) Prime flour for creating your own cake. Now with special discount.;Hladk mouka pro tvorbu home-made peench dobrot. Nyn za zvltn cenu.;Prime flour for creating your own cake. Now with special discount.;(DE) Prime flour for creating your own cake. Now with special discount.;"ordinary_domain_1=8.3;partner_domain_1=8.3;vip_domain_1=8.3";"ordinary_domain_2=0.332;vip_domain_2=0.332";"ordinary_domain_1=8.3;partner_domain_1=8.3;vip_domain_1=8.3";low;15.1.2000;;100000000;pcs;in-stock;[cs:Hmotnost,en:Weight]=[cs:1 kg,en:1 kg];food;food;food;action;FALSE;;
-Aquila Aquagym Pramenit voda neperliv;Aquila Aquagym non-carbonated spring water;(DE) Aquila Aquagym non-carbonated spring water;9176544MG;FLO242-PRJ;8845781243277;;;(DE);;;(DE);"ordinary_domain_1=12.5;partner_domain_1=12.5;vip_domain_1=12.5";"ordinary_domain_2=0.5;vip_domain_2=0.5";"ordinary_domain_1=12.5;partner_domain_1=12.5;vip_domain_1=12.5";high;15.1.2000;;75;m3;in-stock;;food;food;food;;FALSE;;
-Stokorunov poukzka;100 Czech crowns ticket;(DE) 100 Czech crowns ticket;9176544MS;TIC100;8845781243207;Poukzka na 100 K. Mete ji vyut v libovoln smnrn.;Coupon valued to 100 Czech crowns. You can cash it at any exchange office;(DE) Coupon valued to 100 Czech crowns. You can cash it at any exchange office;Poukzka na 100 K. Mete ji vyut v libovoln smnrn.;Coupon valued to 100 Czech crowns. You can cash it at any exchange office;(DE) Coupon valued to 100 Czech crowns. You can cash it at any exchange office;"ordinary_domain_1=100;partner_domain_1=100;vip_domain_1=100";"ordinary_domain_2=4;vip_domain_2=4";"ordinary_domain_1=100;partner_domain_1=100;vip_domain_1=100";high;15.1.2000;;1000000;pcs;in-stock;;books;books;books;top;FALSE;;
-PremiumCord micro USB, A-B, 1m;PremiumCord micro USB, A-B, 1m;(DE) PremiumCord micro USB, A-B, 1m;9176544M3;CAB-13;88457812432071;Znakov USB kabel s koncovkami A a micro B, dlka kabelu 1 metr, vhodn k vybranm mobilnm zazenm a fotoapartm.;Well known USB cable with A and micro B connectors.;(DE) Well known USB cable with A and micro B connectors.;Znakov USB kabel s koncovkami A a micro B, dlka kabelu 1 metr, vhodn k vybranm mobilnm zazenm a fotoapartm.;Well known USB cable with A and micro B connectors.;(DE) Well known USB cable with A and micro B connectors.;"ordinary_domain_1=61.9;partner_domain_1=61.9;vip_domain_1=61.9";"ordinary_domain_2=2.476;vip_domain_2=2.476";"ordinary_domain_1=61.9;partner_domain_1=61.9;vip_domain_1=61.9";second_low;15.1.2000;;100000;pcs;in-stock;"[cs:Hmotnost,en:Weight]=[cs:50 g,en:50 g];[cs:Konektory,en:Connectors]=[cs:A a micro B,en:A and micro B]";pc;pc;pc;;FALSE;;
-"36"" Hyundai 32PFL4360";"36"" Hyundai 32PFL4308";"(DE) 36"" Hyundai 32PFL4308";9176554;32PFL4360;8845781243205;Televize LED, 100Hz, hlopka 80cm, 100Hz, Full HD 19201080, DVB-T/C, 2x HDMI, USB, CI+, VGA, SCART, repro 16W, energ. tda A+;TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;(DE) TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;Televize LED, 100Hz, hlopka 80cm, 100Hz, Full HD 19201080, DVB-T/C, 2x HDMI, USB, CI+, VGA, SCART, repro 16W, energ. tda A+;TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;(DE) TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;"ordinary_domain_1=9173.5;partner_domain_1=9173.5;vip_domain_1=9173.5";"ordinary_domain_2=366.94;vip_domain_2=366.94";"ordinary_domain_1=9173.5;partner_domain_1=9173.5;vip_domain_1=9173.5";high;15.1.2000;;200;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:36"",en:36""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:1366768 (HD Ready),en:1366768 (HD Ready)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ano,en:Yes]";tv;tv;tv;top;FALSE;hyundai;32PFL4400
-27 Hyundai T27D590EX;27 Hyundai T27D590EY;(DE) 27? Hyundai T27D590EY;9176578;T27D590EY;8845781243205;Televize LED, 100Hz, hlopka 80cm, 100Hz, Full HD 19201080, DVB-T/C, 2x HDMI, USB, CI+, VGA, SCART, repro 16W, energ. tda A+;TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;(DE) TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;Televize LED, 100Hz, hlopka 80cm, 100Hz, Full HD 19201080, DVB-T/C, 2x HDMI, USB, CI+, VGA, SCART, repro 16W, energ. tda A+;TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;(DE) TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;"ordinary_domain_1=10173.5;partner_domain_1=10173.5;vip_domain_1=10173.5";"ordinary_domain_2=406.94;vip_domain_2=406.94";"ordinary_domain_1=10173.5;partner_domain_1=10173.5;vip_domain_1=10173.5";high;15.1.2000;;200;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:54"",en:54""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:1366768 (HD Ready),en:1366768 (HD Ready)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ano,en:Yes]";tv;tv;tv;top;FALSE;hyundai;32PFL4400
-21,5 Hyundai 22MT44;21,5 Hyundai 22MT44;(DE) 21,5? Hyundai 22MT44;7700768;T27D590EY;8845781245930;Televizn monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVB-T/C tuner, 2x HDMI, USB, SCART, D-Sub, 2x5W repro, VESA 75x75, hotelov md s USB cloning, energ. tda A;Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768, DVB-T/C, HDMI, SCART, D-Sub, USB, speakers, Energ. Class A;(DE) Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768, DVB-T/C, HDMI, SCART, D-Sub, USB, speakers, Energ. Class A;Televizn monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080;Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768;(DE) Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768;"ordinary_domain_1=3999;partner_domain_1=3999;vip_domain_1=3999";"ordinary_domain_2=159.96;vip_domain_2=159.96";"ordinary_domain_1=3999;partner_domain_1=3999;vip_domain_1=3999";high;14.1.2000;;100;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:21"",en:21""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:19201080 (Full HD),en:19201080 (Full HD)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ano,en:Yes]";tv;tv;tv;;TRUE;hyundai;
-30 Hyundai 22MT44D;30 Hyundai 22MT44D;(DE) 30? Hyundai 22MT44D;7700769;22MT44D;8845781245931;Televizn monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVB-T/C tuner, 2x HDMI, USB, SCART, D-Sub, 2x5W repro, VESA 75x75, hotelov md s USB cloning, energ. tda A;Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768, DVB-T/C, HDMI, SCART, D-Sub, USB, speakers, Energ. Class A;(DE) Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768, DVB-T/C, HDMI, SCART, D-Sub, USB, speakers, Energ. Class A;Televizn monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080;Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768;(DE) Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768;"ordinary_domain_1=3999;partner_domain_1=3999;vip_domain_1=3999";"ordinary_domain_2=159.96;vip_domain_2=159.96";"ordinary_domain_1=3999;partner_domain_1=3999;vip_domain_1=3999";high;14.1.2000;;100;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:30"",en:30""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:19201080 (Full HD),en:19201080 (Full HD)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ano,en:Yes]";tv;tv;tv;;FALSE;hyundai;
-51,5 Hyundai 22HD44D;51,5 Hyundai 22HD44D;(DE) 51,5? Hyundai 22HD44D;7700777;22HD44D;8845781245937;LED monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVI, D-Sub, VESA 75x75, matn;Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080, DVB-S2/T2/C, 2x HDMI, USB, SCART, 2 x 5W speakers, energ. Class A;(DE) Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080, DVB-S2/T2/C, 2x HDMI, USB, SCART, 2 x 5W speakers, energ. Class A;LED monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVI, D-Sub, VESA 75x75, matn;Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080;(DE) Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080;"ordinary_domain_1=4899;partner_domain_1=4899;vip_domain_1=4899";"ordinary_domain_2=195.96;vip_domain_2=195.96";"ordinary_domain_1=4899;partner_domain_1=4899;vip_domain_1=4899";high;14.1.2000;;100;pcs;in-stock;;tv;tv;tv;;TRUE;hyundai;7700769XCX
-60 Hyundai 22HD44D;60 Hyundai 22HD44D;(DE) 60? Hyundai 22HD44D;7700769Z;22HD44D;8845781245938;LED monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVI, D-Sub, VESA 75x75, matn;Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080, DVB-S2/T2/C, 2x HDMI, USB, SCART, 2 x 5W speakers, energ. Class A;(DE) Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080, DVB-S2/T2/C, 2x HDMI, USB, SCART, 2 x 5W speakers, energ. Class A;LED monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVI, D-Sub, VESA 75x75, matn;Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080;(DE) Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080;"ordinary_domain_1=5999;partner_domain_1=5999;vip_domain_1=5999";"ordinary_domain_2=239.96;vip_domain_2=239.96";"ordinary_domain_1=5999;partner_domain_1=5999;vip_domain_1=5999";high;16.1.2000;;100;pcs;on-request;;tv;tv;tv;;FALSE;hyundai;7700769XCX
-27 Hyundai T27D590EY;27 Hyundai T27D590EY;(DE) 27? Hyundai T27D590EY;8981537;T27D590EY;8845781245939;Televizn monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP+, 2x HDMI, MHL, USB, CI, Scart, 2x 5W repro, dlkov ovlada;The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;(DE) The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;Televizn monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP+, 2x HDMI, MHL, USB, CI, Scart, 2x 5W repro, dlkov ovlada;The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;(DE) The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;"ordinary_domain_1=6199;partner_domain_1=6199;vip_domain_1=6199";"ordinary_domain_2=247.96;vip_domain_2=247.96";"ordinary_domain_1=6199;partner_domain_1=6199;vip_domain_1=6199";high;15.1.2000;;100;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:27"",en:27""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:19201080 (Full HD),en:19201080 (Full HD)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ano,en:Yes]";tv;tv;tv;;FALSE;hyundai;
-27 Hyundai T27D590EZ;27 Hyundai T27D590EZ;(DE) 27? Hyundai T27D590EZ;8981538;T27D590EZ;8845781245940;Televizn monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP+, 2x HDMI, MHL, USB, CI, Scart, 2x 5W repro, dlkov ovlada;The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;(DE) The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;Televizn monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP+, 2x HDMI, MHL, USB, CI, Scart, 2x 5W repro, dlkov ovlada;The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;(DE) The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control;"ordinary_domain_1=6399;partner_domain_1=6399;vip_domain_1=6399";"ordinary_domain_2=255.96;vip_domain_2=255.96";"ordinary_domain_1=6399;partner_domain_1=6399;vip_domain_1=6399";high;14.1.2000;;100;pcs;in-stock;"[cs:hlopka,en:Screen size]=[cs:27"",en:27""];[cs:Technologie,en:Technology]=[cs:LED,en:LED];[cs:Rozlien,en:Resolution]=[cs:19201080 (Full HD),en:19201080 (Full HD)];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:HDMI,en:HDMI]=[cs:Ano,en:Yes]";tv;tv;tv;;FALSE;hyundai;
-Hyundai 32PFL4400;32 Hyundai 32PFL4400;(DE) 32? Hyundai 32PFL4400;32PFL4400;32PFL4400;8845781243205;Televize LED, 100Hz, hlopka 32 palc, 100Hz, Full HD 19201080, DVB-T/C, 2x HDMI, USB, CI+, VGA, SCART, repro 16W, energ. tda A+;TV LED, 100Hz, diagonal 32 inches 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;(DE) TV LED, 100Hz, diagonal 32 inches 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;Televize LED, 100Hz, hlopka 32 palc, 100Hz, Full HD 19201080, DVB-T/C, 2x HDMI, USB, CI+, VGA, SCART, repro 16W, energ. tda A+;TV LED, 100Hz, diagonal 32 inches 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;(DE) TV LED, 100Hz, diagonal 32 inches 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +;"ordinary_domain_1=9173.5;partner_domain_1=9173.5;vip_domain_1=9173.5";"ordinary_domain_2=366.94;vip_domain_2=366.94";"ordinary_domain_1=9173.5;partner_domain_1=9173.5;vip_domain_1=9173.5";high;9.1.2000;;;pcs;in-stock;;tv;tv;tv;top;FALSE;hyundai;
-Hyundai 22HD44D;Hyundai 22HD44D;(DE) Hyundai 22HD44D;7700769XCX;22HD44D;8845781245938;LED monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVI, D-Sub, VESA 75x75, matn;Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080, DVB-S2/T2/C, 2x HDMI, USB, SCART, 2 x 5W speakers, energ. Class A;(DE) Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080, DVB-S2/T2/C, 2x HDMI, USB, SCART, 2 x 5W speakers, energ. Class A;LED monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVI, D-Sub, VESA 75x75, matn;Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080, DVB-S2/T2/C, 2x HDMI, USB, SCART, 2 x 5W speakers, energ. Class A;(DE) Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080, DVB-S2/T2/C, 2x HDMI, USB, SCART, 2 x 5W speakers, energ. Class A;"ordinary_domain_1=5999;partner_domain_1=5999;vip_domain_1=5999";"ordinary_domain_2=239.96;vip_domain_2=239.96";"ordinary_domain_1=5999;partner_domain_1=5999;vip_domain_1=5999";high;16.1.2000;;100;pcs;on-request;;tv;tv;tv;;FALSE;hyundai;
-Nikon ND-22L;Nikon ND-22L;(DE) Nikon ND-22L;532565;6758B001;8845781245914;Nikon ND-22L - pouzdro pro EOS 650D;
Nikon EH-22L
High quality, elegant, soft, and yet reliably protecting brand case for your Nikon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm.;(DE)
Nikon EH-22L
High quality, elegant, soft, and yet reliably protecting brand case for your Nikon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm.;Nikon ND-22L - pouzdro pro EOS 650D;High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D.;(DE) High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D.;"ordinary_domain_1=1110.54896;partner_domain_1=1110.54896;vip_domain_1=1110.54896";"ordinary_domain_2=44.4219584;vip_domain_2=44.4219584";"ordinary_domain_1=1110.54896;partner_domain_1=1110.54896;vip_domain_1=1110.54896";high;11.2.2020;;100;pcs;out-of-stock;;photo;"photo;books";photo;;FALSE;nikon;
-Nikon COS 700D;Nikon COS 700D;(DE) Nikon COS 700D;5964035;8596B047;8845781245912;"Nikon COS 700D + EF-S 18-55mm DC III + 75-300mm DC III Kvalitn digitln zrcadlovka s CMOS snmaem s rozlienm 18 megapixel, se kterou podte pikov fotografie v profesionlnm stylu. Inovovan procesor DIGIC 5 pin vkonn zpracovn obrazu v jakkoli situaci. Vysok rozsah citlivosti a do 12 800 ISO vm umon poizovat skvl snmky i za slabho osvtlen, a to i bez pouit blesku. Automatick inteligentn scnick reim analyzuje scnu a automaticky vybr nejvhodnj nastaven pro fotoapart. Prohlet snmky, zaostovat nebo dokonce fotografovat mete pomoc 3"" dotykovho displeje TFT Clear View II s rozlienm neskutench 1 040 000 obrazovch bod a variabilnm hlem natoen. S tmto fotoapartem se z vs bhem chvle stane profesionln kameraman. Umouje toti natet chvatn videozznamy ve Full HD rozlien 1080p. Technologie Hybrid AF umouje prbn zaostovat pi poizovn filmu a pomoc vestavnho mikrofonu ozvute vae snmky kvalitnm stereo zvukem. Systm automatickho zaostovn obsahujc 9 kovch AF bod umon zachytit rychle se pohybujc objekty bez zbytenho rozmazn. Zsluhou kontinulnho snmn rychlost a 5 snmk za vteinu ji nikdy nezmekte rozhodujc okamik pro pozen nejlep mon fotografie. V reimu ovldn HDR podsvtlen fotoapart poizuje ti rzn expozice a spojuje je v jednu, aby zachoval detaily ve stnech a oblastech s vysokm jasem. V reimu Non scna z ruky fotoapart poizuje vce snmk pi vysokch rychlostech zvrky a spojuje je dohromady, a tm zabrauje rozmazn. Pozen snmky a videa jednodue ulote na pamov karty typu SD, SDHC a SDXC, dky integrovanho konektoru miniHDMI si je mete pohodln prohldnout na va LCD nebo plazmov televizi. K fotoapartu je mon dokoupit velkou adu objektiv, psluenstv a blesk, kter jsou kompatibiln se systmem EOS.";"Nikon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light, even without a flash. Automatic smart scene mode analyzes the scene and automatically selects the best settings for the camera. View images, focus, or even pictures can be taken using a 3 ""touch screen TFT Clear View II with a whopping resolution of 1.04 million pixels and a vari-angle. With this camera out of you in a moment become a professional cameraman. It makes it possible to shoot stunning movies in Full HD 1080p. Hybrid AF technology enables continuous focus during movie shooting and using the built-in microphone ozvume your images are high quality stereo sound. Autofocus system comprising nine cross-type AF points to capture fast-moving objects without any blurring. Thanks to continuous shooting at up to 5 frames per second, you'll never miss a crucial moment for getting the best picture possible.The HDR Backlight Control mode, the camera takes three different exposures and combines them into one, in order to preserve details in shadows and areas with high brightness. In Night Scene mode, the camera takes the hand of multiple images at high shutter speeds and combining them together and thus prevents blurring. Captured images and videos simply adding it to an SD Memory Card, SDHC and SDXC, thanks to the integrated connector is miniHDMI you can conveniently viewed on your LCD or plasma TV. The camera can buy a wide range of lenses, flashes and accessories that are compatible with the EOS system.";"(DE) Nikon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light, even without a flash. Automatic smart scene mode analyzes the scene and automatically selects the best settings for the camera. View images, focus, or even pictures can be taken using a 3 ""touch screen TFT Clear View II with a whopping resolution of 1.04 million pixels and a vari-angle. With this camera out of you in a moment become a professional cameraman. It makes it possible to shoot stunning movies in Full HD 1080p. Hybrid AF technology enables continuous focus during movie shooting and using the built-in microphone ozvu??me your images are high quality stereo sound. Autofocus system comprising nine cross-type AF points to capture fast-moving objects without any blurring. Thanks to continuous shooting at up to 5 frames per second, you'll never miss a crucial moment for getting the best picture possible.The HDR Backlight Control mode, the camera takes three different exposures and combines them into one, in order to preserve details in shadows and areas with high brightness. In Night Scene mode, the camera takes the hand of multiple images at high shutter speeds and combining them together and thus prevents blurring. Captured images and videos simply adding it to an SD Memory Card, SDHC and SDXC, thanks to the integrated connector is miniHDMI you can conveniently viewed on your LCD or plasma TV. The camera can buy a wide range of lenses, flashes and accessories that are compatible with the EOS system.";Nikon COS 700D + EF-S 18-55mm DC III + 75-300mm DC III Kvalitn digitln zrcadlovka s CMOS snmaem s rozlienm 18 megapixel;Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels;(DE) Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels;"ordinary_domain_1=24990;partner_domain_1=24990;vip_domain_1=24990";"ordinary_domain_2=999.6;vip_domain_2=999.6";"ordinary_domain_1=24990;partner_domain_1=24990;vip_domain_1=24990";zero;25.1.2014;25.1.2015;100;pcs;on-request;"[cs:Typ fotoapartu,en:Camera type]=[cs:zrcadlovky,en:SLR];[cs:Rozlien,en:Resolution]=[cs:14 Mpix,en:14 Mpix];[cs:Napjen,en:Power supply]=[cs:akumultor,en:battery];[cs:Typ hledku,en:Viewfinder type]=[cs:optick,en:optical];[cs:Citlivost (ISO),en:Sensitivity (ISO)]=[cs:6400,en:6400];[cs:Velikost displeje,en:Display size]=[cs:3,en:3];[cs:Hmotnost,en:Weight]=[cs:380 g,en:380 g];[cs:USB,en:USB]=[cs:Ano,en:Yes]";photo;"photo;books";photo;;FALSE;nikon;
-Nikon VH-520;Nikon VH-520;(DE) Nikon VH-520;5402880;V108060WE000;8845781245910;Hledte fotoapart, se kterm zachytte kadodenn radosti i strasti vaeho ivota? Pak pivtejte elegantn kompaktn fotoapart Nikon VH-520 s jedinenmi fotografickmi schopnostmi! I pes extrmn kompaktn rozmry je VH-520 vybaven nejmodernjmi technologickmi prvky, vetn 14 megapixelovho CMOS senzoru, vkonnho obrazovho procesoru a technologi zpracovn obrazu iHS, kter produkuje dokonale jasn a ostr fotky s vrnm barevnm podnm.';"Digital Camera Nikon VH-520 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB";"(DE) Digital Camera Nikon VH-520 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB";Hledte fotoapart, se kterm zachytte kadodenn radosti i strasti vaeho ivota? Pak pivtejte elegantn kompaktn fotoapart Nikon VH-520;"Digital Camera Nikon VH-520 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video";"(DE) Digital Camera Nikon VH-520 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video";"ordinary_domain_1=2783;partner_domain_1=2783;vip_domain_1=2783";"ordinary_domain_2=111.32;vip_domain_2=111.32";"ordinary_domain_1=2783;partner_domain_1=2783;vip_domain_1=2783";high;3.8.1999;;200;pcs;in-stock;"[cs:Typ fotoapartu,en:Camera type]=[cs:zrcadlovky,en:SLR];[cs:Rozlien,en:Resolution]=[cs:12 Mpix,en:12 Mpix];[cs:Napjen,en:Power supply]=[cs:akumultor,en:battery];[cs:Typ hledku,en:Viewfinder type]=[cs:optick,en:optical];[cs:Citlivost (ISO),en:Sensitivity (ISO)]=[cs:6400,en:6400];[cs:Velikost displeje,en:Display size]=[cs:3,en:3];[cs:Hmotnost,en:Weight]=[cs:560 g,en:560 g];[cs:USB,en:USB]=[cs:Ano,en:Yes]";photo;photo;photo;;FALSE;nikon;
-Nikon DMC FT5EP;Nikon DMC FT5EP;(DE) Nikon DMC FT5EP;5965908;DMC FT5EP-K;8845781245911;DMC FT5EP-K je pikov odoln fotoapart pro vechny venkovn aktivity. Model DMC-FT5 je vodotsn do hloubky 13 m a prachotsn podle standard IPX8 a IP6X. Je odoln vi nrazm, nap. vi pdu a ze 2 m, mrazuvzdorn do -10C a sn tlak do 0.107 kg/cm. Nov je vybaven sklem proti zamlen zpsobenm vodn prou. Vezmte fotoapart s sebou na ryby, na tboen, potpn, surfovn, horolezeck vstup, lyovn nebo na snowboard - DMC-FT5 vs me doprovzet po cel rok a znamenat chvatn okamiky.;"Digital Camera - Waterproof, shockproof, freezeproof, 16.1 Mpx CCD, 4x zoom (29-108 mm), 2.7"" LCD display, Li-Ion, HD video, SD/SDHC/SDXC, time lapse recording, stabilizer";"(DE) Digital Camera - Waterproof, shockproof, freezeproof, 16.1 Mpx CCD, 4x zoom (29-108 mm), 2.7"" LCD display, Li-Ion, HD video, SD/SDHC/SDXC, time lapse recording, stabilizer";DMC FT5EP-K je pikov odoln fotoapart pro vechny venkovn aktivity.;Digital Camera - Waterproof, shockproof, freezeproof, 16.1 Mpx CCD;(DE) Digital Camera - Waterproof, shockproof, freezeproof, 16.1 Mpx CCD;"ordinary_domain_1=2000;partner_domain_1=500;vip_domain_1=250";"ordinary_domain_2=1000;vip_domain_2=125";"ordinary_domain_1=2000;partner_domain_1=500;vip_domain_1=250";low;3.2.2013;;500;pcs;out-of-stock;"[cs:Typ fotoapartu,en:Camera type]=[cs:zrcadlovky,en:SLR];[cs:Rozlien,en:Resolution]=[cs:12 Mpix,en:12 Mpix];[cs:Napjen,en:Power supply]=[cs:akumultor,en:battery];[cs:Typ hledku,en:Viewfinder type]=[cs:optick,en:optical];[cs:Citlivost (ISO),en:Sensitivity (ISO)]=[cs:12800,en:12800];[cs:Velikost displeje,en:Display size]=[cs:3,en:3];[cs:Hmotnost,en:Weight]=[cs:250 g,en:250 g];[cs:USB,en:USB]=[cs:Ano,en:Yes]";photo;photo;photo;;FALSE;nikon;
-Canon EH-22L;Canon EH-22M;(DE) Canon EH-22M;1532564;6758B001;8845781245914;Canon EH-22L - pouzdro pro EOS 650D;
Canon EH-22L
High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm.;(DE)
Canon EH-22L
High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm.;Canon EH-22L - pouzdro pro EOS 650D;High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D.;(DE) High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D.;"ordinary_domain_1=1110.54896;partner_domain_1=1110.54896;vip_domain_1=1110.54896";"ordinary_domain_2=44.4219584;vip_domain_2=44.4219584";"ordinary_domain_1=1110.54896;partner_domain_1=1110.54896;vip_domain_1=1110.54896";high;3.8.1999;;100;pcs;out-of-stock;[cs:Barva,en:Color]=[cs:ern,en:black];photo;photo;photo;;FALSE;canon;
-Canon EOS 700E;Canon EOS 700E;(DE) Canon EOS 700E;15964035;8596B047;8845781245912;"Canon EOS 700D + EF-S 18-55mm DC III + 75-300mm DC III Kvalitn digitln zrcadlovka s CMOS snmaem s rozlienm 18 megapixel, se kterou podte pikov fotografie v profesionlnm stylu. Inovovan procesor DIGIC 5 pin vkonn zpracovn obrazu v jakkoli situaci. Vysok rozsah citlivosti a do 12 800 ISO vm umon poizovat skvl snmky i za slabho osvtlen, a to i bez pouit blesku. Automatick inteligentn scnick reim analyzuje scnu a automaticky vybr nejvhodnj nastaven pro fotoapart. Prohlet snmky, zaostovat nebo dokonce fotografovat mete pomoc 3"" dotykovho displeje TFT Clear View II s rozlienm neskutench 1 040 000 obrazovch bod a variabilnm hlem natoen. S tmto fotoapartem se z vs bhem chvle stane profesionln kameraman. Umouje toti natet chvatn videozznamy ve Full HD rozlien 1080p. Technologie Hybrid AF umouje prbn zaostovat pi poizovn filmu a pomoc vestavnho mikrofonu ozvute vae snmky kvalitnm stereo zvukem. Systm automatickho zaostovn obsahujc 9 kovch AF bod umon zachytit rychle se pohybujc objekty bez zbytenho rozmazn. Zsluhou kontinulnho snmn rychlost a 5 snmk za vteinu ji nikdy nezmekte rozhodujc okamik pro pozen nejlep mon fotografie. V reimu ovldn HDR podsvtlen fotoapart poizuje ti rzn expozice a spojuje je v jednu, aby zachoval detaily ve stnech a oblastech s vysokm jasem. V reimu Non scna z ruky fotoapart poizuje vce snmk pi vysokch rychlostech zvrky a spojuje je dohromady, a tm zabrauje rozmazn. Pozen snmky a videa jednodue ulote na pamov karty typu SD, SDHC a SDXC, dky integrovanho konektoru miniHDMI si je mete pohodln prohldnout na va LCD nebo plazmov televizi. K fotoapartu je mon dokoupit velkou adu objektiv, psluenstv a blesk, kter jsou kompatibiln se systmem EOS.";"Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light, even without a flash. Automatic smart scene mode analyzes the scene and automatically selects the best settings for the camera. View images, focus, or even pictures can be taken using a 3 ""touch screen TFT Clear View II with a whopping resolution of 1.04 million pixels and a vari-angle. With this camera out of you in a moment become a professional cameraman. It makes it possible to shoot stunning movies in Full HD 1080p. Hybrid AF technology enables continuous focus during movie shooting and using the built-in microphone ozvume your images are high quality stereo sound. Autofocus system comprising nine cross-type AF points to capture fast-moving objects without any blurring. Thanks to continuous shooting at up to 5 frames per second, you'll never miss a crucial moment for getting the best picture possible.The HDR Backlight Control mode, the camera takes three different exposures and combines them into one, in order to preserve details in shadows and areas with high brightness. In Night Scene mode, the camera takes the hand of multiple images at high shutter speeds and combining them together and thus prevents blurring. Captured images and videos simply adding it to an SD Memory Card, SDHC and SDXC, thanks to the integrated connector is miniHDMI you can conveniently viewed on your LCD or plasma TV. The camera can buy a wide range of lenses, flashes and accessories that are compatible with the EOS system.";"(DE) Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light, even without a flash. Automatic smart scene mode analyzes the scene and automatically selects the best settings for the camera. View images, focus, or even pictures can be taken using a 3 ""touch screen TFT Clear View II with a whopping resolution of 1.04 million pixels and a vari-angle. With this camera out of you in a moment become a professional cameraman. It makes it possible to shoot stunning movies in Full HD 1080p. Hybrid AF technology enables continuous focus during movie shooting and using the built-in microphone ozvu??me your images are high quality stereo sound. Autofocus system comprising nine cross-type AF points to capture fast-moving objects without any blurring. Thanks to continuous shooting at up to 5 frames per second, you'll never miss a crucial moment for getting the best picture possible.The HDR Backlight Control mode, the camera takes three different exposures and combines them into one, in order to preserve details in shadows and areas with high brightness. In Night Scene mode, the camera takes the hand of multiple images at high shutter speeds and combining them together and thus prevents blurring. Captured images and videos simply adding it to an SD Memory Card, SDHC and SDXC, thanks to the integrated connector is miniHDMI you can conveniently viewed on your LCD or plasma TV. The camera can buy a wide range of lenses, flashes and accessories that are compatible with the EOS system.";Kvalitn digitln zrcadlovka s CMOS snmaem s rozlienm 18 megapixel;Quality digital camera with CMOS sensor with a resolution of 18 megapixels;(DE) Quality digital camera with CMOS sensor with a resolution of 18 megapixels;"ordinary_domain_1=24990;partner_domain_1=24990;vip_domain_1=24990";"ordinary_domain_2=999.6;vip_domain_2=999.6";"ordinary_domain_1=24990;partner_domain_1=24990;vip_domain_1=24990";zero;3.2.2013;;100;pcs;on-request;"[cs:Typ fotoapartu,en:Camera type]=[cs:zrcadlovky,en:SLR];[cs:Rozlien,en:Resolution]=[cs:9 Mpix,en:9 Mpix];[cs:Napjen,en:Power supply]=[cs:akumultor,en:battery];[cs:Typ hledku,en:Viewfinder type]=[cs:optick,en:optical];[cs:Citlivost (ISO),en:Sensitivity (ISO)]=[cs:1800,en:1800];[cs:Velikost displeje,en:Display size]=[cs:3,en:3];[cs:Hmotnost,en:Weight]=[cs:580 g,en:580 g];[cs:USB,en:USB]=[cs:Ano,en:Yes]";photo;photo;photo;;FALSE;canon;
-OLYMPUS VH-620;OLYMPUS VH-620;(DE) OLYMPUS VH-620;15402889;V108060WE000;8845781245910;Hledte fotoapart, se kterm zachytte kadodenn radosti i strasti vaeho ivota? Pak pivtejte elegantn kompaktn fotoapart VH-520 s jedinenmi fotografickmi schopnostmi! I pes extrmn kompaktn rozmry je VH-520 vybaven nejmodernjmi technologickmi prvky, vetn 14 megapixelovho CMOS senzoru, vkonnho obrazovho procesoru a technologi zpracovn obrazu iHS, kter produkuje dokonale jasn a ostr fotky s vrnm barevnm podnm.';"Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB";"(DE) Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB";Hledte fotoapart, se kterm zachytte kadodenn radosti i strasti vaeho ivota? Pak pivtejte elegantn kompaktn fotoapart VH-520;"Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video, histogram, HDR";"(DE) Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video, histogram, HDR";"ordinary_domain_1=2783;partner_domain_1=2783;vip_domain_1=2783";"ordinary_domain_2=111.32;vip_domain_2=111.32";"ordinary_domain_1=2783;partner_domain_1=2783;vip_domain_1=2783";high;1.1.2013;;200;pcs;in-stock;"[cs:Typ fotoapartu,en:Camera type]=[cs:zrcadlovky,en:SLR];[cs:Rozlien,en:Resolution]=[cs:18 Mpix,en:18 Mpix];[cs:Napjen,en:Power supply]=[cs:akumultor,en:battery];[cs:Typ hledku,en:Viewfinder type]=[cs:optick,en:optical];[cs:Citlivost (ISO),en:Sensitivity (ISO)]=[cs:12800,en:12800];[cs:Velikost displeje,en:Display size]=[cs:5,en:5];[cs:Hmotnost,en:Weight]=[cs:580 g,en:580 g];[cs:USB,en:USB]=[cs:Ano,en:Yes]";photo;photo;photo;;FALSE;olympus;
-Nikon TS-800;Nikon TS-800;(DE) Nikon TS-800;16402880;V108060WE111;8845781245910;Hledte fotoapart, se kterm zachytte kadodenn radosti i strasti vaeho ivota? Pak pivtejte elegantn kompaktn fotoapart Nikon VH-520 s jedinenmi fotografickmi schopnostmi! I pes extrmn kompaktn rozmry je VH-520 vybaven nejmodernjmi technologickmi prvky, vetn 14 megapixelovho CMOS senzoru, vkonnho obrazovho procesoru a technologi zpracovn obrazu iHS, kter produkuje dokonale jasn a ostr fotky s vrnm barevnm podnm.';"Digital Camera Nikon VH-520 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB";"(DE) Digital Camera Nikon VH-520 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB";Hledte fotoapart, se kterm zachytte kadodenn radosti i strasti vaeho ivota? Pak pivtejte elegantn kompaktn fotoapart Nikon VH-520;"Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video, histogram, HDR";"(DE) Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 ""LCD, Li-Ion, FullHD video, histogram, HDR";"ordinary_domain_1=2783;partner_domain_1=2783;vip_domain_1=2783";"ordinary_domain_2=111.32;vip_domain_2=111.32";"ordinary_domain_1=2783;partner_domain_1=2783;vip_domain_1=2783";high;3.8.1999;;200;pcs;in-stock;"[cs:Typ fotoapartu,en:Camera type]=[cs:zrcadlovky,en:SLR];[cs:Rozlien,en:Resolution]=[cs:12 Mpix,en:12 Mpix];[cs:Napjen,en:Power supply]=[cs:akumultor,en:battery];[cs:Typ hledku,en:Viewfinder type]=[cs:optick,en:optical];[cs:Citlivost (ISO),en:Sensitivity (ISO)]=[cs:6400,en:6400];[cs:Velikost displeje,en:Display size]=[cs:3,en:3];[cs:Hmotnost,en:Weight]=[cs:580 g,en:580 g];[cs:USB,en:USB]=[cs:Ano,en:Yes]";photo;photo;photo;;FALSE;nikon;
-TK-9710 Turbo kart Prominent VP 971;TK-9710 Turbo brush Prominent VP 971;(DE) TK-9710 Turbo brush Prominent VP 971;tk9710;8594049730544;8845781245912;
Typ hubice: Univerzln
Prmr: 32 mm
Turbokart: Velk
;
Type nozzles: Universal
Diameter: 32 mm
Turbobrush Big
;(DE)
Type nozzles: Universal
Diameter: 32 mm
Turbobrush Big
;Typ hubice: Univerzln. Prmr: 32 mm. Turbokart: Velk.;Type nozzles: Universal. Diameter: 32 mm. Turbobrush: Big.;(DE) Type nozzles: Universal. Diameter: 32 mm. Turbobrush: Big.;"ordinary_domain_1=449;partner_domain_1=449;vip_domain_1=449";"ordinary_domain_2=17.96;vip_domain_2=17.96";"ordinary_domain_1=449;partner_domain_1=449;vip_domain_1=449";high;24.1.2014;;5050;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-NS-9020 Limpio/Clipper/Nino nhradn paprov sky pro VP902_/3_/9010;NS-9020 Limpio/Clipper/Nino replacement paper bags for VP902/3/9010;(DE) NS-9020 Limpio/Clipper/Nino replacement paper bags for VP902/3/9010;ns9020;8594049730575;8845781245913;Nhradn paprov sky pro vysavae CONCEPT Limpio VP 9020/21, Clipper VP 903_ a VP 913_, Nino VP 9010. Balen: 5 ks sk + vstupn a vstupn filtr.;Spare paper bags for vacuum cleaners CONCEPT Limpio VP 9020/21, Clipper VP and VP 913_ 903_, Nino VP 9010 Packaging: 5 pieces of bags + input and output filter.;(DE) Spare paper bags for vacuum cleaners CONCEPT Limpio VP 9020/21, Clipper VP and VP 913_ 903_, Nino VP 9010 Packaging: 5 pieces of bags + input and output filter.;Nhradn paprov sky pro vysavae CONCEPT Limpio VP 9020/21;Spare paper bags for vacuum cleaners CONCEPT Limpio VP 9020/21;(DE) Spare paper bags for vacuum cleaners CONCEPT Limpio VP 9020/21;"ordinary_domain_1=119;partner_domain_1=119;vip_domain_1=119";"ordinary_domain_2=4.76;vip_domain_2=4.76";"ordinary_domain_1=119;partner_domain_1=119;vip_domain_1=119";high;22.1.2014;;5335;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-NS-9030 Clipper nhradn paprov sky pro VP-903/913;NS-9030 Clipper replacement paper bags for VP-903/913;(DE) NS-9030 Clipper replacement paper bags for VP-903/913;ns9030;8594049730568;8845781245914;Nhradn paprov sky pro vysavae CONCEPT Clipper VP 9030/31/32/33 a VP 9130/31/32. Balen: 5 ks sk + vstupn a vstupn filtr.;Spare paper bags for vacuum cleaners CONCEPT Clipper 9030/31/32/33 VP and VP 9130/31/32. Packaging: 5 pieces of bags + input and output filter.;(DE) Spare paper bags for vacuum cleaners CONCEPT Clipper 9030/31/32/33 VP and VP 9130/31/32. Packaging: 5 pieces of bags + input and output filter.;Nhradn paprov sky pro vysavae CONCEPT Clipper VP 9030/31/32/33 a VP 9130/31/32;Spare paper bags for vacuum cleaners CONCEPT Clipper 9030/31/32/33 VP and VP 9130/31/32;(DE) Spare paper bags for vacuum cleaners CONCEPT Clipper 9030/31/32/33 VP and VP 9130/31/32;"ordinary_domain_1=119;partner_domain_1=119;vip_domain_1=119";"ordinary_domain_2=4.76;vip_domain_2=4.76";"ordinary_domain_1=119;partner_domain_1=119;vip_domain_1=119";high;6.1.2000;;878;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-NS-9040 Jumbo nhradn paprov sky pro VP-9040;NS-9040 Jumbo replacement paper bags for VP-9040;(DE) NS-9040 Jumbo replacement paper bags for VP-9040;ns9040;8594049730551;8845781245915;Nhradn paprov sky pro vysavae CONCEPT Jumbo VP 9041. Balen: 5 ks sk + vstupn a vstupn filtr.;Spare paper bags for vacuum cleaners CONCEPT Jumbo VP 9,041th Package: 5 pieces of bags + input and output filter.;(DE) Spare paper bags for vacuum cleaners CONCEPT Jumbo VP 9,041th Package: 5 pieces of bags + input and output filter.;Nhradn paprov sky pro vysavae CONCEPT Jumbo VP 9041;Spare paper bags for vacuum cleaners CONCEPT Jumbo VP 9;(DE) Spare paper bags for vacuum cleaners CONCEPT Jumbo VP 9;"ordinary_domain_1=149;partner_domain_1=149;vip_domain_1=149";"ordinary_domain_2=5.96;vip_domain_2=5.96";"ordinary_domain_1=149;partner_domain_1=149;vip_domain_1=149";high;4.1.2000;;9877;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-NS-9710 Prominent nhradn sky paprov pro VP-9711/12/13;NS-9710 Prominent replacement paper bags for VP-9711/12/13;(DE) NS-9710 Prominent replacement paper bags for VP-9711/12/13;ns9710;8594049730582;8845781245916;Nhradn paprov sky pro vysavae CONCEPT Prominent VP 9711/12/13. Balen: 5 ks sk + vstupn a vstupn filtr.;Spare paper bags for vacuum cleaners CONCEPT Prominent VP 9711/12/13. Packaging: 5 pieces of bags + input and output filter.;(DE) Spare paper bags for vacuum cleaners CONCEPT Prominent VP 9711/12/13. Packaging: 5 pieces of bags + input and output filter.;Nhradn paprov sky pro vysavae CONCEPT Prominent VP 9711/12/13;Spare paper bags for vacuum cleaners CONCEPT Prominent VP 9711/12/13;(DE) Spare paper bags for vacuum cleaners CONCEPT Prominent VP 9711/12/13;"ordinary_domain_1=159;partner_domain_1=159;vip_domain_1=159";"ordinary_domain_2=6.36;vip_domain_2=6.36";"ordinary_domain_1=159;partner_domain_1=159;vip_domain_1=159";high;31.1.2014;;65444;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Klapka navijku stbrn VP-9711/12;Winch throttle silver VP-9711/12;(DE) Winch throttle silver VP-9711/12;44290043;;8845781245917;;;(DE);;;(DE);"ordinary_domain_1=32;partner_domain_1=32;vip_domain_1=32";"ordinary_domain_2=1.28;vip_domain_2=1.28";"ordinary_domain_1=32;partner_domain_1=32;vip_domain_1=32";high;20.1.2014;;798;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Trubka teleskopick VP918x VP802x;Telescopic pipe VP918x VP802x;(DE) Telescopic pipe VP918x VP802x;44290047;;8845781245918;
Typ hubice: Univerzln
Prmr: 32 mm
Turbokart: Velk
;Tube type: Universal. Diameter: 32mm.;(DE) Tube type: Universal. Diameter: 32mm.;Typ hubice: Univerzln. Prmr: 32 mm.;Tube type: Universal. Diameter: 32mm.;(DE) Tube type: Universal. Diameter: 32mm.;"ordinary_domain_1=299;partner_domain_1=299;vip_domain_1=299";"ordinary_domain_2=11.96;vip_domain_2=11.96";"ordinary_domain_1=299;partner_domain_1=299;vip_domain_1=299";high;13.2.2014;;54;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-HEPA filtr VP-9711/12;HEPA filter VP-9711/12;(DE) HEPA filter VP-9711/12;44290050;8594049731732;8845781245919;;;(DE);;;(DE);"ordinary_domain_1=269;partner_domain_1=269;vip_domain_1=269";"ordinary_domain_2=10.76;vip_domain_2=10.76";"ordinary_domain_1=269;partner_domain_1=269;vip_domain_1=269";high;10.1.2000;;78;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Redukce prmru z 35 mm na 32 mm;Reducing the diameter of 35 mm to 32 mm;(DE) Reducing the diameter of 35 mm to 32 mm;44291501;;8845781246005;;;(DE);;;(DE);"ordinary_domain_1=85;partner_domain_1=85;vip_domain_1=85";"ordinary_domain_2=3.4;vip_domain_2=3.4";"ordinary_domain_1=85;partner_domain_1=85;vip_domain_1=85";high;23.1.2014;;48;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-OPV-3260 Vestavn odsava vsuvn 60cm;OPV-3260 Built-in retractable hood is 60 cm;(DE) OPV-3260 Built-in retractable hood is 60 cm;opv3260;8594049735587;8845781246006;
Vsuvn odsava par je velice elegantn a praktickou variantou klasickho odsavae s minimln prostorovou nronost, proto je vhodn i pro mal kuchyn. Nerezov pedn lita s kolbkovm pepnaem umouje snadn ovldn.
Dvody, pro se rozhodnout prv pro vsuvn odsava par Concept OPV-3260:
Vkon je nejdleitjm parametrem odsava a ml by odpovdat minimln desetinsobku objemu mstnosti. Vsuvn odsava par znaky Concept OPV-3260 Vs pekvap vkonem 198 m3 za hodinu.
Model OPV-3260 je vybaven dvma praktickmi kovovmi filtry proti mastnotm, jejich drba je velice snadn a ivotnost neomezen. Pokud nemte monost odvst pry ven, mete zvolit namsto klasickho odtahu systm recirkulace s uitm 2 uhlkovch filtr, kter lze dokoupit (kat.slo: 61990005).
Technick parametry:
Vka: 175 mm
ka: 600 mm
Hloubka: 310-470 mm
Psluenstv: zptn klapka
Nerezov pedn lita
Monost hornho odtahu nebo recirkulace
Kolbkov pepna
2 stupn vkonu
Max. vkon: 198 m3/hod.
Max.hlunost na nejvym stupni 66dB (A)
rovka 40 W
2x kovov filtr proti mastnotm
Prmr odtahu: 120 mm
Detailn popis:
Voliteln psluenstv: 2x uhlkov filtr 61990005
1 motor/ventiltor
Minimln vzdlenost od elektrick varn desky: 650 mm
Minimln vzdlenost od plynov varn desky: 750 mm
Rozmry pro zabudovn (vxxh): 133 x 560 x 272 mm
Netto hmotnost: 5,9 kg
Napt: 230 V ~ 50 Hz
Pkon: 150 W
Dlka pvodnho kabelu: 2,2 m
;The telescopic hood is very elegant and practical variant of the classical extractor with minimum space requirements, making it suitable for small kitchens. Stainless steel front bar with rocker switch for easy operation.
Reasons to opt just for telescopic cooker hood Concept OPV-3260:
Performance is the most important parameter hoods and should be at least equal to ten times the volume of the room. Telescopic cooker hood Brand Concept OPV-3260 will surprise you output of 198 m3 per hour .
Model AL-3260 is equipped with two mA practical metal grease filters, whose maintenance is very easy and unlimited lifespan. If you can not pay out of steam, you can choose instead of exhaust classic recirculation system using two carbon filters, which can be bought (kat.slo: 61990005).
Specifications:
Height: 175 mm
Width: 600 mm
Depth: 310-470 mm
Accessories: backflow preventer
Stainless steel front bar
Ability to upper exhaust or recirculation
Rocker Switch
2 power levels
Max. Performance 198 m3 / h.
Max.hlunost the highest level of 66 db (A)
The bulb 40 W
2x the grease filter
diameter: 120 mm
Detailed description:
Optional Accessories: 2x carbon filter 61990005
1 motor / fan
Minimum distance from electric hob 650 mm
Minimum distance from gas hob: 750 mm
Dimensions for installation (HxWxD): 133 x 560 x 272 mm
Net weight: 5.9 kg
Voltage: 230 V ~ 50Hz
Power: 150 W
Cord Length: 2.2 m
;(DE) The telescopic hood is very elegant and practical variant of the classical extractor with minimum space requirements, making it suitable for small kitchens. Stainless steel front bar with rocker switch for easy operation.
Reasons to opt just for telescopic cooker hood Concept OPV-3260:
Performance is the most important parameter hoods and should be at least equal to ten times the volume of the room. Telescopic cooker hood Brand Concept OPV-3260 will surprise you output of 198 m3 per hour .
Model AL-3260 is equipped with two mA practical metal grease filters, whose maintenance is very easy and unlimited lifespan. If you can not pay out of steam, you can choose instead of exhaust classic recirculation system using two carbon filters, which can be bought (kat.??slo: 61990005).
Specifications:
Height: 175 mm
Width: 600 mm
Depth: 310-470 mm
Accessories: backflow preventer
Stainless steel front bar
Ability to upper exhaust or recirculation
Rocker Switch
2 power levels
Max. Performance 198 m3 / h.
Max.hlu?nost the highest level of 66 db (A)
The bulb 40 W
2x the grease filter
diameter: 120 mm
Detailed description:
Optional Accessories: 2x carbon filter 61990005
1 motor / fan
Minimum distance from electric hob 650 mm
Minimum distance from gas hob: 750 mm
Dimensions for installation (HxWxD): 133 x 560 x 272 mm
Net weight: 5.9 kg
Voltage: 230 V ~ 50Hz
Power: 150 W
Cord Length: 2.2 m
;Vsuvn odsava par je velice elegantn a praktickou variantou klasickho odsavae s minimln prostorovou nronost; The telescopic hood is very elegant and practical variant of the classical extractor with minimum space requirements;(DE) The telescopic hood is very elegant and practical variant of the classical extractor with minimum space requirements;"ordinary_domain_1=3290;partner_domain_1=3290;vip_domain_1=3290";"ordinary_domain_2=131.6;vip_domain_2=131.6";"ordinary_domain_1=3290;partner_domain_1=3290;vip_domain_1=3290";high;10.2.2014;;48;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-OPP-2060 Odsava par podstavn 60 cm;OPP-2060 Hood sub-mounting 60 cm;(DE) OPP-2060 Hood sub-mounting 60 cm;opp2060;8594049735594;8845781246007;
Minimln prostorovou nronost vynik podstavn odsava par OPP-2060. Vhodn i pro velmi mal kuchyn. Kovov tlatka zajiuj jednoduchost ovldn a pesn nastaven odpovdajcho stupn vkonu.
Dvody, pro se rozhodnout prv pro podstavn odsava par Concept OPP-2060:
Vkon je nejdleitjm parametrem odsava a ml by odpovdat minimln desetinsobku objemu mstnosti. Podstavn odsava par znaky Concept OPP-2060 Vs pekvap vkonem 186 m3 za hodinu.
Velice praktick je monost navolit 4 zpsoby odtahu.
Model OPP-2060 je vybaven praktickm kovovm filtrem proti mastnotm, jeho drba je velice snadn a ivotnost neomezen. Pokud nemte monost odvst pry ven, mete zvolit namsto klasickho odtahu systm recirkulaces uitm uhlkovho filtru, kter lze dokoupit. Jakmile bude filtr zneitn, odsava Vs sm upozorn.
Technick parametry:
Vka: 150 mm
ka: 600 mm
Hloubka: 490 mm
Psluenstv: zptn klapka
Nerezov proveden
Monost hornho, zadnho, bonho levho a pravho odtahu nebo recirkulace
Kovov tlatka
3 stupn vkonu
Max. vkon: 186 m3/hod.
Max.hlunost na nejvym stupni 66 dB (A)
rovka 40 W
1x kovov filtr proti mastnotm
Prmr odtahu: 100 mm
Detailn popis:
Voliteln psluenstv: 1x uhlkov filtr 61990022
1 motor/ventiltor
Minimln vzdlenost od elektrick varn desky: 650 mm
Minimln vzdlenost od plynov varn desky: 750 mm
Netto hmotnost: 4,8 kg
Napt: 230 V ~ 50Hz
Pkon: 150 W
Dlka pvodnho kabelu: 1,2 m
;
The minimum space requirements excels sub-mounting range hood OPP-2060th Suitable for very small kitchens. Metal buttons provide ease of use and precise adjustment of the corresponding stage performance.
Reasons to choose just the sub-mounting range hood Concept OPP-2060:
Performance is the most important parameter hoods and should be at least equal to ten times the volume of the room. The sub-mounting range hood brand Concept OPP-2060 will surprise performance 186 m3 per hour .
Very practical is the ability to select 4 Ways exhaust .
Model OPP-2060 is equipped with a practical metal grease filter , its maintenance is very easy and unlimited lifespan. If you can not pay out of steam, you can choose instead of exhaust classic recirculation system using a carbon filter, which can be bought.;(DE)
The minimum space requirements excels sub-mounting range hood OPP-2060th Suitable for very small kitchens. Metal buttons provide ease of use and precise adjustment of the corresponding stage performance.
Reasons to choose just the sub-mounting range hood Concept OPP-2060:
Performance is the most important parameter hoods and should be at least equal to ten times the volume of the room. The sub-mounting range hood brand Concept OPP-2060 will surprise performance 186 m3 per hour .
Very practical is the ability to select 4 Ways exhaust .
Model OPP-2060 is equipped with a practical metal grease filter , its maintenance is very easy and unlimited lifespan. If you can not pay out of steam, you can choose instead of exhaust classic recirculation system using a carbon filter, which can be bought.;Minimln prostorovou nronost vynik podstavn odsava par OPP-2060.;The minimum space requirements excels sub-mounting range hood OPP-2060th;(DE) The minimum space requirements excels sub-mounting range hood OPP-2060th;"ordinary_domain_1=2990;partner_domain_1=2990;vip_domain_1=2990";"ordinary_domain_2=119.6;vip_domain_2=119.6";"ordinary_domain_1=2990;partner_domain_1=2990;vip_domain_1=2990";high;19.1.2014;;48;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Filtr uhlkov OPK44xx / OPK-5690 / OPK5790 / OPO55xx;OPK44xx carbon filter / OPK-5690 / OPK5790 / OPO55xx;(DE) OPK44xx carbon filter / OPK-5690 / OPK5790 / OPO55xx;61990002;8594049737383;8845781246008;295 x 240 x 15 mm, kazeta s aktivnim uhlikem;295 x 240 x 15 mm cartridge with active carbon;(DE) 295 x 240 x 15 mm cartridge with active carbon;295 x 240 x 15 mm, kazeta s aktivnim uhlikem;295 x 240 x 15 mm cartridge with active carbon;(DE) 295 x 240 x 15 mm cartridge with active carbon;"ordinary_domain_1=499;partner_domain_1=499;vip_domain_1=499";"ordinary_domain_2=19.96;vip_domain_2=19.96";"ordinary_domain_1=499;partner_domain_1=499;vip_domain_1=499";high;5.1.2000;;489;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-POS kuchaka_parn trouba CZ;POS cookbook_steam oven GB;(DE) POS cookbook_steam oven GB;POScook_book_CZ;POScook_book_CZ;8845781246009;
Kuchaka
Co ve lze vait v parn troub? Pouit parn trouby Concept je pekvapiv vestrann. Lze v n pipravit pedkrmy, polvky, maso, ryby, zeleninu, vegetarinsk jdla, knedlky, ri, ovoce i dezerty. 75 stran kuchaky Concept Vame zdrav, vame v pe - obsahuje recepty s praktickmi postupy. Kad recept obsahuje:
Seznam ingredienc
Postup
Pro kolik osob
Doba ppravy
Stupe obtnosti
Funkce + doba + teplota
Z pod pokliky prozradme pr tip Chest s tukovou omkou, Losos ve vermutov omce, Polvka minestrone, Kuec mtov pekvapen, Zeln listy plnn mletm masem, Grilovan kotleta se zeleninou, Brambory zapkan s nivou, Hruka s okoldovou omkou, praenmi mandelimi a zmrzlinou atd.
;
Cookbook
What can be cooked in a steam oven? Using a steamer Concept is surprisingly versatile. It can be used to prepare appetizers, soups, meat, fish, vegetables, vegetarian dishes, dumplings, rice, fruit and desserts. 75 pages of cookbooks Concept - cook healthy steamed - contains recipes with practical procedures. Each recipe includes:
The list of ingredients
Method
How many people
Preparation time
The degree of difficulty
+ time + temperature
From under the lids give you some tips - Asparagus with tuna sauce, salmon in vermouth sauce, soup minestrone, chicken mint surprise Cabbage leaves stuffed with minced meat, grilled chop with vegetables, potatoes baked with blue cheese, pear with chocolate sauce, roasted mandelimi and ice cream, etc.;(DE)
Cookbook
What can be cooked in a steam oven? Using a steamer Concept is surprisingly versatile. It can be used to prepare appetizers, soups, meat, fish, vegetables, vegetarian dishes, dumplings, rice, fruit and desserts. 75 pages of cookbooks Concept - cook healthy steamed - contains recipes with practical procedures. Each recipe includes:
The list of ingredients
Method
How many people
Preparation time
The degree of difficulty
+ time + temperature
From under the lids give you some tips - Asparagus with tuna sauce, salmon in vermouth sauce, soup minestrone, chicken mint surprise Cabbage leaves stuffed with minced meat, grilled chop with vegetables, potatoes baked with blue cheese, pear with chocolate sauce, roasted mandelimi and ice cream, etc.;Pouit parn trouby Concept je pekvapiv vestrann. Lze v n pipravit pedkrmy, polvky, maso, ryby, zeleninu, vegetarinsk jdla, knedlky, ri, ovoce i dezerty.;Using a steamer Concept is surprisingly versatile. It can be used to prepare appetizers, soups, meat, fish, vegetables, vegetarian dishes, dumplings, rice, fruit and desserts.;(DE) Using a steamer Concept is surprisingly versatile. It can be used to prepare appetizers, soups, meat, fish, vegetables, vegetarian dishes, dumplings, rice, fruit and desserts.;"ordinary_domain_1=499;partner_domain_1=499;vip_domain_1=499";"ordinary_domain_2=19.96;vip_domain_2=19.96";"ordinary_domain_1=499;partner_domain_1=499;vip_domain_1=499";high;27.1.2014;;48;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Filtr uhlkov OPK5660 / OPK5760 / OPK6690;OPK5660 carbon filter / OPK5760 / OPK6690;(DE) OPK5660 carbon filter / OPK5760 / OPK6690;61990003;8594049737390;8845781246010;240 x 205 x 15 mm klazeta s aktivnim uhlikem;240 x 205 x 15 mm;(DE) 240 x 205 x 15 mm;240 x 205 x 15 mm, klazeta s aktivnim uhlikem;240 x 205 x 15 mm;(DE) 240 x 205 x 15 mm;"ordinary_domain_1=499;partner_domain_1=499;vip_domain_1=499";"ordinary_domain_2=19.96;vip_domain_2=19.96";"ordinary_domain_1=499;partner_domain_1=499;vip_domain_1=499";high;28.1.2014;;4984;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Filtr uhlkov OPK4290;Filter carbon OPK4290;(DE) Filter carbon OPK4290;61990004;8594049737437;8845781246011;310 x 285 x 15 mm;310 x 285 x 15 mm;(DE) 310 x 285 x 15 mm;310 x 285 x 15 mm;310 x 285 x 15 mm;(DE) 310 x 285 x 15 mm;"ordinary_domain_1=349;partner_domain_1=349;vip_domain_1=349";"ordinary_domain_2=13.96;vip_domain_2=13.96";"ordinary_domain_1=349;partner_domain_1=349;vip_domain_1=349";high;29.1.2014;;878;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Filtr tukov kovov OPK-5660/OPK-5760/OPK-6690;Metal grease filter OPK-5660 / OPK-5760 / OPK-6690;(DE) Metal grease filter OPK-5660 / OPK-5760 / OPK-6690;61990006;8594049737444;8845781246012; 220 x 250 x 9 mm;220 x 250 x 9 mm;(DE) 220 x 250 x 9 mm;220 x 250 x 9 mm;220 x 250 x 9 mm;(DE) 220 x 250 x 9 mm;"ordinary_domain_1=599;partner_domain_1=599;vip_domain_1=599";"ordinary_domain_2=23.96;vip_domain_2=23.96";"ordinary_domain_1=599;partner_domain_1=599;vip_domain_1=599";high;30.1.2014;;9877;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Filtr tukov kovov OPK-4290;Metal grease filter OPK-4290;(DE) Metal grease filter OPK-4290;61990007;8594049737451;8845781246013; 320 x 300 x 10 mm;320 x 300 x 10 mm;(DE) 320 x 300 x 10 mm;320 x 300 x 10 mm;320 x 300 x 10 mm;(DE) 320 x 300 x 10 mm;"ordinary_domain_1=399;partner_domain_1=399;vip_domain_1=399";"ordinary_domain_2=15.96;vip_domain_2=15.96";"ordinary_domain_1=399;partner_domain_1=399;vip_domain_1=399";high;26.1.2014;;65444;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Filtr tukov kovov OPV-3260;Metal grease filter OPV-3260;(DE) Metal grease filter OPV-3260;61990008;8594049737468;8845781246014; 495 x 200 x 8 mm;495 x 200 x 8 mm;(DE) 495 x 200 x 8 mm;495 x 200 x 8 mm;495 x 200 x 8 mm;(DE) 495 x 200 x 8 mm;"ordinary_domain_1=499;partner_domain_1=499;vip_domain_1=499";"ordinary_domain_2=19.96;vip_domain_2=19.96";"ordinary_domain_1=499;partner_domain_1=499;vip_domain_1=499";high;6.2.2014;;798;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Redukce prm. OPK OPO 150/120mm;Reduction Avg. OPK OPO 150/120 mm;(DE) Reduction Avg. OPK OPO 150/120 mm;61990013;;8845781246015;;;(DE);;;(DE);"ordinary_domain_1=382;partner_domain_1=382;vip_domain_1=382";"ordinary_domain_2=15.28;vip_domain_2=15.28";"ordinary_domain_1=382;partner_domain_1=382;vip_domain_1=382";high;4.2.2014;;54;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-SDV-3460 Sklokeramick deska vestavn 60 cm;SDV 3460-built ceramic plate 60 cm;(DE) SDV 3460-built ceramic plate 60 cm;sdv3460;8594049735754;8845781246016;
Je pro Vs bezpe Vaich blzkch stejn dleit jako pro ns? V tom ppad uvtte u varn desky SDV-3460 funkci ukazatele zbytkovho tepla - H, kter Vs a Vae blzk uchrn ped nepjemnm poplenm. Ukazatel zbytkovho tepla signalizuje zbytkovou teplotu varn zny i po jejm vypnut.
Dvody pro se rozhodnout prv pro vestavnou sklokeramickou desku Concept SDV-3460:
Tato vestavn sklokeramick deska SDV-3460 Vs jist zaujme praktickm dotykovm ovldnm.
Speciln topn tlesa varnch zn HI-LIGHT se dok rozeht na maximum bhem nkolika mlo sekund.
Ukazatel zbytkovho tepla H- Vs ochrn ped nepjemnm poplenm. Signalizuje zbytkovou teplotu varn zny i po jejm vypnut.
Jestlie si chcete pmo navolit as, po kter chcete vait, urit vyuijete monosti funkce zpodnho vypnut.
Technick parametry:
Vka: 60 mm
ka: 590 mm
Hloubka: 520 mm
Sklokeramika
V psluenstv istc krabka
Dotykov ovldn
Ukazatel zbytkovho tepla - H
Bez rmu, ikm zabrouen hrany
4 varn zny
Funkce automatickho vypnut - EXTRA BEZPEN
Funkce zpodnho vypnut
Akustick signl
Ovldac panel vpedu uprosted
Dtsk pojistka
Ukazatel zapnutho stavu
Detailn popis:
Rozmry pro vestavbu (vxxh): 50 x 560 x 490 mm
Hlavn vypna
Prmr pedn lev plotny: 165x265 mm
Pkon pedn lev plotny: 1100/2000 W
Zadn lev plotna: kruhov HI-LIGHT
Prmr zadn lev plotny: 165 mm
Pkon zadn lev plotny: 1200 W
Zadn prav plotna: kruhov HI-LIGHT
Prmr zadn prav plotny: 200mm
Pkon zadn prav plotny: 1800 W
Pedn prav plotna: kruhov HI-LIHGT
Prmr pedn prav plotny: 165 mm
Pkon pedn prav plotny: 1200 W
Max.pkon-el.: 5700 - 6800 W
Hmotnost: 10 kg
Napt: 220-240/400 V 2N ~ 50/60 Hz
;
It is safe for you to your loved ones as important as us? In that case, you will appreciate with hob SDV-3460 feature residual heat indicators - H that you and your loved ones will protect against nasty burns. The residual heat indicator signals a residual temperature of the cooking zone even after power off.
Reasons to opt just for built-in ceramic plate Concept SDV-3460:
The built-in ceramic hob SDV-3460 you will be astonished handy touch controls .
Special radiators cooking zones HI-LIGHT are able to warm up to a maximum of a few seconds.
The residual heat indicator H - protects you against nasty burns. Indicates residual temperature of the cooking zone even after power off.
If you want to directly select the time that you want to cook, be sure to take the opportunity of the off-delay .
Specifications:
Height: 60 mm
Width: 590 mm
Depth: 520 mm
Glass ceramics
Accessories cleaning scraper
Touch control
The residual heat indicator - H
Without frame, angled edges Grounded
4 cooking zones
Auto-off function - EXTRA SECURE
The off-delay
Beep
Control Panel front center
Child lock
The ON state
Details:
Dimensions for installation (HxWxD): 50 x 560 x 490 mm
Main switch
Left Front plate:
The diameter of the front left plates: 165x265 mm
Input left front plate: 1100/2000 W
Rear Left plate: Circular HI-LIGHT
The diameter of the rear left of the plate 165 mm
Input left rear plate: 1200 W
The right rear plate: Circular HI-LIGHT
The diameter of the rear right plate: 200mm
wattage right rear plate: 1800 W
The front right plate: Circular HI-lihgt
The diameter of the front right plate: 165 mm
Input right front plate: 1200 W
Max.pkon-el .: 5700-6800 W
Weight: 10 kg
Voltage: 220-240 / 400 V 2N ~ 50/60 Hz
;(DE)
It is safe for you to your loved ones as important as us? In that case, you will appreciate with hob SDV-3460 feature residual heat indicators - H that you and your loved ones will protect against nasty burns. The residual heat indicator signals a residual temperature of the cooking zone even after power off.
Reasons to opt just for built-in ceramic plate Concept SDV-3460:
The built-in ceramic hob SDV-3460 you will be astonished handy touch controls .
Special radiators cooking zones HI-LIGHT are able to warm up to a maximum of a few seconds.
The residual heat indicator H - protects you against nasty burns. Indicates residual temperature of the cooking zone even after power off.
If you want to directly select the time that you want to cook, be sure to take the opportunity of the off-delay .
Specifications:
Height: 60 mm
Width: 590 mm
Depth: 520 mm
Glass ceramics
Accessories cleaning scraper
Touch control
The residual heat indicator - H
Without frame, angled edges Grounded
4 cooking zones
Auto-off function - EXTRA SECURE
The off-delay
Beep
Control Panel front center
Child lock
The ON state
Details:
Dimensions for installation (HxWxD): 50 x 560 x 490 mm
Main switch
Left Front plate:
The diameter of the front left plates: 165x265 mm
Input left front plate: 1100/2000 W
Rear Left plate: Circular HI-LIGHT
The diameter of the rear left of the plate 165 mm
Input left rear plate: 1200 W
The right rear plate: Circular HI-LIGHT
The diameter of the rear right plate: 200mm
wattage right rear plate: 1800 W
The front right plate: Circular HI-lihgt
The diameter of the front right plate: 165 mm
Input right front plate: 1200 W
Max.p??kon-el .: 5700-6800 W
Weight: 10 kg
Voltage: 220-240 / 400 V 2N ~ 50/60 Hz
;Appreciate hob SDV-3460 feature residual heat indicators;;(DE);"ordinary_domain_1=6990;partner_domain_1=6990;vip_domain_1=6990";"ordinary_domain_2=279.6;vip_domain_2=279.6";"ordinary_domain_1=6990;partner_domain_1=6990;vip_domain_1=6990";high;8.1.2000;;78;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Bon drk plech - pr ETV-2860;Side mount plates - few ETV-2860;(DE) Side mount plates - few ETV-2860;62790165;;8845781246017;;;(DE);;;(DE);"ordinary_domain_1=199;partner_domain_1=199;vip_domain_1=199";"ordinary_domain_2=7.96;vip_domain_2=7.96";"ordinary_domain_1=199;partner_domain_1=199;vip_domain_1=199";high;14.2.2014;;8878;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Plech peic hlubok ETV-2560/2860/2960/3160bc;Deep baking sheet ETV-2560/2860/2960 / 3160bc;(DE) Deep baking sheet ETV-2560/2860/2960 / 3160bc;62790168;;8845781246018; 440 x 345 x 40 mm;440 x 345 x 40 mm;(DE) 440 x 345 x 40 mm;440 x 345 x 40 mm;440 x 345 x 40 mm;(DE) 440 x 345 x 40 mm;"ordinary_domain_1=299;partner_domain_1=299;vip_domain_1=299";"ordinary_domain_2=11.96;vip_domain_2=11.96";"ordinary_domain_1=299;partner_domain_1=299;vip_domain_1=299";high;2.1.2000;;54;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Krje na pizzu ETV-2860;Slicer Pizza ETV-2860;(DE) Slicer Pizza ETV-2860;62790149;;8845781246019;;;(DE);;;(DE);"ordinary_domain_1=49;partner_domain_1=49;vip_domain_1=49";"ordinary_domain_2=1.96;vip_domain_2=1.96";"ordinary_domain_1=49;partner_domain_1=49;vip_domain_1=49";high;21.1.2014;;648;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-HEPA filtr VP-9161/VP-8210;HEPA filter SF-9161 / SF-8210;(DE) HEPA filter SF-9161 / SF-8210;44290821;8594049736577;8845781246020;;;(DE);;;(DE);"ordinary_domain_1=199;partner_domain_1=199;vip_domain_1=199";"ordinary_domain_2=7.96;vip_domain_2=7.96";"ordinary_domain_1=199;partner_domain_1=199;vip_domain_1=199";high;1.1.2000;;8744;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Filtr vstupn VP-9161/VP-9162/VP-8210;Filter input VP-9161 / SF-9162 / SF-8210;(DE) Filter input VP-9161 / SF-9162 / SF-8210;44290820;;8845781246021;;;(DE);;;(DE);"ordinary_domain_1=29;partner_domain_1=29;vip_domain_1=29";"ordinary_domain_2=1.16;vip_domain_2=1.16";"ordinary_domain_1=29;partner_domain_1=29;vip_domain_1=29";high;1.1.2013;;648;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Hubice podlahov kovov lut VP-9141ye;Floor nozzle metal yellow VP-9141ye;(DE) Floor nozzle metal yellow VP-9141ye;44291504;;8845781246022;;;(DE);;;(DE);"ordinary_domain_1=299;partner_domain_1=299;vip_domain_1=299";"ordinary_domain_2=11.96;vip_domain_2=11.96";"ordinary_domain_1=299;partner_domain_1=299;vip_domain_1=299";high;1.2.2013;;86;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-SDV-3360 Sklokeramick deska vestavn 60 cm;SDV 3360-built ceramic plate 60 cm;(DE) SDV 3360-built ceramic plate 60 cm;sdv3360;8594049736201;8845781246023;
Dopejte si rychl vaen se specilnmi varnmi HI-LIGHT znami, kter hej tm okamit.
Dvody pro se rozhodnout prv pro vestavnou sklokeramickou desku Concept SDV-3360:
Tato vestavn sklokeramick deska SDV-3360 Vs jist zaujme praktickm dotykovm ovldnm.
Speciln topn tlesa varnch zn HI-LIGHT se dok rozeht na maximum bhem nkolika mlo sekund.
Ukazatel zbytkovho tepla H- Vs ochrn ped nepjemnm poplenm. Signalizuje zbytkovou teplotu varn zny i po jejm vypnut.
Jestlie si chcete pmo navolit as, po kter chcete vait, urit vyuijete monosti funkce zpodnho vypnut.
Technick parametry:
Vka: 50 mm
ka: 590 mm
Hloubka: 520 mm
Sklokeramika
V psluenstv istc krabka
Dotykov ovldn
Ukazatel zbytkovho tepla - H
Bez rmu, kolm zabrouen hrany
4 varn zny
Funkce automatickho vypnut - EXTRA BEZPEN
Funkce zpodnho vypnut
Akustick signl
Ovldac panel vpedu uprosted
Dtsk pojistka
Ukazatel zapnutho stavu
Detailn popis:
Rozmry pro vestavbu (vxxh): 46 x 560 x 490 mm
Hlavn vypna
Pedn lev plotna: kruhov HI-LIGHT
Prmr pedn lev plotny: 200 mm
Pkon pedn lev plotny: 1800 W
Zadn lev plotna: kruhov HI-LIGHT
Prmr zadn lev plotny: 165 mm
Pkon zadn lev plotny: 1200 W
Zadn prav plotna: kruhov HI-LIGHT
Prmr zadn prav plotny: 200mm
Pkon zadn prav plotny: 1800 W
Pedn prav plotna: kruhov HI-LIHGT
Prmr pedn prav plotny: 165 mm
Pkon pedn prav plotny: 1200 W
Max.pkon-el.: 5500 - 6600 W
Hmotnost: 9 kg
Napt: 220-240/400 V 2N ~ 50/60 Hz
;
Enjoy quick cooking with special cooking HI-LIGHT zones which warms almost immediately.
Reasons to opt just for built-in ceramic plate Concept SDV-3360:
The built-in ceramic hob SDV-3360 you will be astonished handy touch controls .
Special radiators cooking zones HI-LIGHT are able to warm up to a maximum of a few seconds.
The residual heat indicator H - will protect you against nasty burns. Indicates residual temperature of the cooking zone even after power off.
If you want to directly select the time that you want to cook, be sure to take the opportunity of the off-delay .
Specifications:
Height: 50mm
Width: 590 mm
Depth: 520 mm
Glass ceramics
Accessories cleaning scraper
Touch control
The residual heat indicator - H
Without frame, orthogonal edges Grounded
4 cooking zones
Auto-off function - EXTRA SECURE
The off-delay
Beep
Control Panel front center
Child lock
The ON state
Details:
Dimensions for installation (HxWxD): 46 x 560 x 490 mm
Main switch
Left Front plate: Circular HI-LIGHT
The diameter of the front left plates: 200 mm
Input left front plate: 1800 W
Rear left hotplate: Circular HI-LIGHT
The diameter of the rear left of the plate 165 mm
Input left rear plate: 1200 W
The right rear plate: Circular HI-LIGHT
The diameter of the rear right plate: 200mm
Input right rear plates : 1800 W
The front right plate: Circular HI-lihgt
The diameter of the front right plate 165 mm
Input right front plate: 1200 W
Max.pkon-el .: 5500-6600 W
Weight: 9 kg
Voltage: 220-240 / 400 V 2N ~ 50/60 Hz
;(DE)
Enjoy quick cooking with special cooking HI-LIGHT zones which warms almost immediately.
Reasons to opt just for built-in ceramic plate Concept SDV-3360:
The built-in ceramic hob SDV-3360 you will be astonished handy touch controls .
Special radiators cooking zones HI-LIGHT are able to warm up to a maximum of a few seconds.
The residual heat indicator H - will protect you against nasty burns. Indicates residual temperature of the cooking zone even after power off.
If you want to directly select the time that you want to cook, be sure to take the opportunity of the off-delay .
Specifications:
Height: 50mm
Width: 590 mm
Depth: 520 mm
Glass ceramics
Accessories cleaning scraper
Touch control
The residual heat indicator - H
Without frame, orthogonal edges Grounded
4 cooking zones
Auto-off function - EXTRA SECURE
The off-delay
Beep
Control Panel front center
Child lock
The ON state
Details:
Dimensions for installation (HxWxD): 46 x 560 x 490 mm
Main switch
Left Front plate: Circular HI-LIGHT
The diameter of the front left plates: 200 mm
Input left front plate: 1800 W
Rear left hotplate: Circular HI-LIGHT
The diameter of the rear left of the plate 165 mm
Input left rear plate: 1200 W
The right rear plate: Circular HI-LIGHT
The diameter of the rear right plate: 200mm
Input right rear plates : 1800 W
The front right plate: Circular HI-lihgt
The diameter of the front right plate 165 mm
Input right front plate: 1200 W
Max.p??kon-el .: 5500-6600 W
Weight: 9 kg
Voltage: 220-240 / 400 V 2N ~ 50/60 Hz
;Dopejte si rychl vaen se specilnmi varnmi HI-LIGHT znami;Enjoy quick cooking with special cooking HI-LIGHT zones;(DE) Enjoy quick cooking with special cooking HI-LIGHT zones;"ordinary_domain_1=5990;partner_domain_1=5990;vip_domain_1=5990";"ordinary_domain_2=239.6;vip_domain_2=239.6";"ordinary_domain_1=5990;partner_domain_1=5990;vip_domain_1=5990";high;13.1.2000;;78;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-OPP-1060 Odsava par podstavn 60 cm;OPP-1060 Hood sub-mounting 60 cm;(DE) OPP-1060 Hood sub-mounting 60 cm;opp1060;8594049736270;8845781246024;
;;;(DE);"ordinary_domain_1=1290;partner_domain_1=1290;vip_domain_1=1290";"ordinary_domain_2=51.6;vip_domain_2=51.6";"ordinary_domain_1=1290;partner_domain_1=1290;vip_domain_1=1290";high;12.2.2014;;878;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-N strouhac hrub RM-3240/3250;Coarse grater blade RM-3240/3250;(DE) Coarse grater blade RM-3240/3250;42390452;8594049736386;8845781246025;;;(DE);;;(DE);"ordinary_domain_1=179;partner_domain_1=179;vip_domain_1=179";"ordinary_domain_2=7.16;vip_domain_2=7.16";"ordinary_domain_1=179;partner_domain_1=179;vip_domain_1=179";high;7.1.2000;;787;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-N na bramborky RM-3240/3250;Knife potato RM-3240/3250;(DE) Knife potato RM-3240/3250;42390453;8594049736362;8845781246026;;;(DE);;;(DE);"ordinary_domain_1=259;partner_domain_1=259;vip_domain_1=259";"ordinary_domain_2=10.36;vip_domain_2=10.36";"ordinary_domain_1=259;partner_domain_1=259;vip_domain_1=259";high;8.2.2014;;77;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Filtr uhlkov OPK-4360/4390;The filter carbon OPK-4360/4390;(DE) The filter carbon OPK-4360/4390;61990047;8594049737581;8845781246027;255 x 255 x 15;255 x 255 x 15;(DE) 255 x 255 x 15;;;(DE);"ordinary_domain_1=369;partner_domain_1=369;vip_domain_1=369";"ordinary_domain_2=14.76;vip_domain_2=14.76";"ordinary_domain_1=369;partner_domain_1=369;vip_domain_1=369";high;7.2.2014;;7;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Hadice VP-9310;Hose VP-9310;(DE) Hose VP-9310;44291567;;8845781246028;;;(DE);;;(DE);"ordinary_domain_1=289;partner_domain_1=289;vip_domain_1=289";"ordinary_domain_2=11.56;vip_domain_2=11.56";"ordinary_domain_1=289;partner_domain_1=289;vip_domain_1=289";high;18.1.2014;;9;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Hubice podlahov kovov VP-9310;Floor nozzle metal VP-9310;(DE) Floor nozzle metal VP-9310;44291569;;8845781246029;;;(DE);;;(DE);"ordinary_domain_1=299;partner_domain_1=299;vip_domain_1=299";"ordinary_domain_2=11.96;vip_domain_2=11.96";"ordinary_domain_1=299;partner_domain_1=299;vip_domain_1=299";high;17.1.2000;;78;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Nstavec tyov plast TM-4610;Extension rod plastic TM-4610;(DE) Extension rod plastic TM-4610;42390545;;8845781246030;;;(DE);;;(DE);"ordinary_domain_1=149;partner_domain_1=149;vip_domain_1=149";"ordinary_domain_2=5.96;vip_domain_2=5.96";"ordinary_domain_1=149;partner_domain_1=149;vip_domain_1=149";high;5.2.2014;;54;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-ZN-8009 napaovac ehlika Ferratte nerez 2200 W modr;ZN-8009 steam iron Ferrato stainless steel 2200 Watt Blue;(DE) ZN-8009 steam iron Ferrato stainless steel 2200 Watt Blue;zn8009;8594049735839;8845781246031;"
Napaovac ehlika Concept ZN8009 o pkonu 2200 W s bezpenostnm systmem AUTO - SHUT OFF vm umon mnohem snaz a pohodlnj ehlen.
Jej dal pednost je jednoduch ovldn a mnoho dalch praktickch funkc a vlastnost, jako teba 3 m dlouh pvodn kabel, dky ktermu se nebudete muset s ehlenm sthovat:
Napaovac ehlika ZN8009 Ferrate:
Technick parametry:
Nerezov ehlc plocha
Rovnomrn dvkovn pry: 20 g/min
Funkce automatickho vypnut AUTO-SHUT OFF se zvukovou signalizac: vypne po 30ti vteinch v horizontln poloze a po 8 minutch ve vertikln poloze ehliky
Zsobnk na vodu: 300 ml
Rozpraova
Funkce proti odkapvn ANTI-DRIP
Samoistc funkce SELF CLEAN
Odvpovac funkce ANTI-CALC
Vertikln napaovn
Svteln signalizace
Termostat
Pvodn kabel 3 m (s otonm kloubem o 360)
Barva: modr + stbrn
Pkon: 2200 W
Napt: 230 V
Psluenstv:
Ndobka na dolvn vody Vice informaci o domcch elektrospotebich znaky Concept najdete ";
Steam iron Concept ZN8009 wattage 2200 Watt security system AUTO - SHUT OFF lets much easier and more convenient ironing.
Its other advantage is easy operation and many other practical functions and features, such as 3 m long supply cable through which you will not have to move ironing. Specifications:
Stainless steel soleplate
Even steam dosage: 20 g / min
Auto-off function AUTO SHUT-OFF Audible : turn off after 30 seconds in horizontal position and after 8 minutes in the vertical position irons
The water tank: 300 ml
Airbrush
The anti-drip ANTI-DRIP
Self-cleaning function Self Clean
The descaling function ANTI-CALC
Vertical steam
Notification light
Thermostat
3 m power cable (with swivel 360 )
Color: blue + silver
Power consumption: 2200 W
Voltage: 230 V
Accessories: container to refill their water;(DE)
Steam iron Concept ZN8009 wattage 2200 Watt security system AUTO - SHUT OFF lets much easier and more convenient ironing.
Its other advantage is easy operation and many other practical functions and features, such as 3 m long supply cable through which you will not have to move ironing. Specifications:
Stainless steel soleplate
Even steam dosage: 20 g / min
Auto-off function AUTO SHUT-OFF Audible : turn off after 30 seconds in horizontal position and after 8 minutes in the vertical position irons
The water tank: 300 ml
Airbrush
The anti-drip ANTI-DRIP
Self-cleaning function Self Clean
The descaling function ANTI-CALC
Vertical steam
Notification light
Thermostat
3 m power cable (with swivel 360 °)
Color: blue + silver
Power consumption: 2200 W
Voltage: 230 V
Accessories: container to refill their water;;;(DE);"ordinary_domain_1=999;partner_domain_1=999;vip_domain_1=999";"ordinary_domain_2=39.96;vip_domain_2=39.96";"ordinary_domain_1=999;partner_domain_1=999;vip_domain_1=999";high;16.2.2014;;12;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Filtr uhlkov OPP-2060;The filter carbon OPP-2060;(DE) The filter carbon OPP-2060;61990022;8594049737499;8845781246032;480 x 310 x 10 mm
Filtr je potreba si nkami upravit pro zakryt celeho povrchu tukovho filtru.;480 x 310 x 10 mm
The filter is a need to adjust the scissors to cover the entire surface of the grease filter.;(DE) 480 x 310 x 10 mm
The filter is a need to adjust the scissors to cover the entire surface of the grease filter.;480 x 310 x 10 mm. Filtr je potreba si nkami upravit pro zakryt celeho povrchu tukovho filtru.;480 x 310 x 10 mm. The filter is a need to adjust the scissors to cover the entire surface of the grease filter.;(DE) 480 x 310 x 10 mm. The filter is a need to adjust the scissors to cover the entire surface of the grease filter.;"ordinary_domain_1=399;partner_domain_1=399;vip_domain_1=399";"ordinary_domain_2=15.96;vip_domain_2=15.96";"ordinary_domain_1=399;partner_domain_1=399;vip_domain_1=399";high;2.6.2000;;351;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-TS-9080 nhradn sek textiln pro VP-9080;TS-9080 replacement bag for textile VP-9080;(DE) TS-9080 replacement bag for textile VP-9080;ts9080;;8845781246033;Nhradn textiln sek pro vysavae CONCEPT Sprinter - VP9070. Balen: 1 ks;Replacement textile bag for vacuum cleaners CONCEPT Sprinter - VP9070. Package: 1 pc;(DE) Replacement textile bag for vacuum cleaners CONCEPT Sprinter - VP9070. Package: 1 pc;Nhradn textiln sek pro vysavae CONCEPT Sprinter - VP9070. Balen: 1 ks;Replacement textile bag for vacuum cleaners CONCEPT Sprinter - VP9070. Package: 1 pc;(DE) Replacement textile bag for vacuum cleaners CONCEPT Sprinter - VP9070. Package: 1 pc;"ordinary_domain_1=89;partner_domain_1=89;vip_domain_1=89";"ordinary_domain_2=3.56;vip_domain_2=3.56";"ordinary_domain_1=89;partner_domain_1=89;vip_domain_1=89";high;9.2.2014;;654;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Filtr uhlkov OPP-1060;The filter carbon OPP-1060;(DE) The filter carbon OPP-1060;61990028;8594049737529;8845781246034;310 x 480 x 10;310 x 480 x 10;(DE) 310 x 480 x 10;310 x 480 x 10;310 x 480 x 10;(DE) 310 x 480 x 10;"ordinary_domain_1=399;partner_domain_1=399;vip_domain_1=399";"ordinary_domain_2=15.96;vip_domain_2=15.96";"ordinary_domain_1=399;partner_domain_1=399;vip_domain_1=399";high;15.2.2014;;83;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-isti nerezovch spotebi 3v1 ( 4039286078461 );Cleaner 3in1 stainless steel appliances (4039286078461);(DE) Cleaner 3in1 stainless steel appliances (4039286078461);SprejNerez;4039286802721;8845781246035;
Dokonale ist, oetuje a chrn nerezov plochy v jednom pracovnm kroku.
odstrauje bez mouh prach, pnu, otisky prst a mastnotu
dlouhotrvajc ochrann film odpuzujc vodu a zabraujc novmu usazovn pny
psob antistaticky
neobsahuje silikon
;Perfectly cleans, treats and protects stainless steel surfaces in one step.
remove without smudges dust, dirt, fingerprints and grease
long-lasting protective film repellent water and prevents new settling of dirt
acts antistatically
;(DE) Perfectly cleans, treats and protects stainless steel surfaces in one step.
remove without smudges dust, dirt, fingerprints and grease
long-lasting protective film repellent water and prevents new settling of dirt
acts antistatically
;;;(DE);"ordinary_domain_1=499;partner_domain_1=499;vip_domain_1=499";"ordinary_domain_2=19.96;vip_domain_2=19.96";"ordinary_domain_1=499;partner_domain_1=499;vip_domain_1=499";high;3.1.2000;;78;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-isti skla a sklokeramickch desek ( 4019786908123 );Glass cleaner and a glass-ceramic plates (4019786908123);(DE) Glass cleaner and a glass-ceramic plates (4019786908123);SprejSklo;4019786908147;8845781246036;
Dokonale ist sklokeramick desky bez zanechn skvrn a neohrouje ivotn prosted.
odstrauje zbytky potravin, tuku, nikotinovho povlaku a mnoho dalch neistot
A perfectly clean glass ceramic cooktop without leaving stains and does not endanger the environment.
remove leftover food, grease, nicotine coating and many other impurities
does not harm rubber and plastics
does not AOX - Adsorbable organic halogens
biologically degradable by OECD
;(DE)
A perfectly clean glass ceramic cooktop without leaving stains and does not endanger the environment.
remove leftover food, grease, nicotine coating and many other impurities
does not harm rubber and plastics
does not AOX - Adsorbable organic halogens
biologically degradable by OECD
;;;(DE);"ordinary_domain_1=499;partner_domain_1=499;vip_domain_1=499";"ordinary_domain_2=19.96;vip_domain_2=19.96";"ordinary_domain_1=499;partner_domain_1=499;vip_domain_1=499";high;3.2.2014;;8;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Filtr uhlkov OPK-7790;The filter carbon OPK-7790;(DE) The filter carbon OPK-7790;61990030;8594049737543;8845781246037;295 x 245 x 15 mm kazeta s aktivnim uhlikem;295 x 245 x 15 mm cartridge with active carbon;(DE) 295 x 245 x 15 mm cartridge with active carbon;;;(DE);"ordinary_domain_1=369;partner_domain_1=369;vip_domain_1=369";"ordinary_domain_2=14.76;vip_domain_2=14.76";"ordinary_domain_1=369;partner_domain_1=369;vip_domain_1=369";high;15.1.2000;;9;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-HEPA filtr VP-9241;HEPA filter VP-9241;(DE) HEPA filter VP-9241;44290823;8594049736584;8845781246038;;;(DE);;;(DE);"ordinary_domain_1=199;partner_domain_1=199;vip_domain_1=199";"ordinary_domain_2=7.96;vip_domain_2=7.96";"ordinary_domain_1=199;partner_domain_1=199;vip_domain_1=199";high;15.1.2000;;879;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Hubice trbinov VP-4290;Crevice nozzle VP-4290;(DE) Crevice nozzle VP-4290;44291542;;8845781246039;;;(DE);;;(DE);"ordinary_domain_1=89;partner_domain_1=89;vip_domain_1=89";"ordinary_domain_2=3.56;vip_domain_2=3.56";"ordinary_domain_1=89;partner_domain_1=89;vip_domain_1=89";high;14.1.2000;;98;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Hubice s kartem VP-4290;Nozzle with brush VP-4290;(DE) Nozzle with brush VP-4290;44291543;;8845781246040;;;(DE);;;(DE);"ordinary_domain_1=138;partner_domain_1=138;vip_domain_1=138";"ordinary_domain_2=5.52;vip_domain_2=5.52";"ordinary_domain_1=138;partner_domain_1=138;vip_domain_1=138";high;14.1.2000;;654;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Hadice VP-9241;Hose VP-9241;(DE) Hose VP-9241;44290845;;8845781246041;;;(DE);;;(DE);"ordinary_domain_1=289;partner_domain_1=289;vip_domain_1=289";"ordinary_domain_2=11.56;vip_domain_2=11.56";"ordinary_domain_1=289;partner_domain_1=289;vip_domain_1=289";high;14.1.2000;;3524;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Trubky teleskopick kovov VP-9161;Telescopic metal pipes VP-9161;(DE) Telescopic metal pipes VP-9161;44290872;;8845781246042;;;(DE);;;(DE);"ordinary_domain_1=299;partner_domain_1=299;vip_domain_1=299";"ordinary_domain_2=11.96;vip_domain_2=11.96";"ordinary_domain_1=299;partner_domain_1=299;vip_domain_1=299";high;14.1.2000;;78;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-TS-9170 nhradn sek textiln pro VP-9171;TS-9170 replacement bag for textile VP-9171;(DE) TS-9170 replacement bag for textile VP-9171;ts9170;;8845781246043;;;(DE);;;(DE);"ordinary_domain_1=169;partner_domain_1=169;vip_domain_1=169";"ordinary_domain_2=6.76;vip_domain_2=6.76";"ordinary_domain_1=169;partner_domain_1=169;vip_domain_1=169";high;14.1.2000;;789;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-HEPA filtr CN-9240 (VP-9241);HEPA filter CN-9240 (VP-9241);(DE) HEPA filter CN-9240 (VP-9241);44290851;8594049736591;8845781246044;;;(DE);;;(DE);"ordinary_domain_1=199;partner_domain_1=199;vip_domain_1=199";"ordinary_domain_2=7.96;vip_domain_2=7.96";"ordinary_domain_1=199;partner_domain_1=199;vip_domain_1=199";high;14.1.2000;;564;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-NS-9310 Infant nhradn sky paprov pro VP-9310;NS-9310 Infant replacement bags of paper for the VP-9310;(DE) NS-9310 Infant replacement bags of paper for the VP-9310;ns9310;8594049736645;8845781246045;Nhradn paprov sky pro vysavae CONCEPT INFANT VP 9310. Balen: 5 ks sk + 2.;Spare paper bags for vacuum cleaners CONCEPT INFANT VP 9310th Package: 5 pieces of bags + 2.;(DE) Spare paper bags for vacuum cleaners CONCEPT INFANT VP 9310th Package: 5 pieces of bags + 2.;Nhradn paprov sky pro vysavae CONCEPT INFANT VP 9310. Balen: 5 ks sk + 2.;Spare paper bags for vacuum cleaners CONCEPT INFANT VP 9310th Package: 5 pieces of bags + 2.;(DE) Spare paper bags for vacuum cleaners CONCEPT INFANT VP 9310th Package: 5 pieces of bags + 2.;"ordinary_domain_1=119;partner_domain_1=119;vip_domain_1=119";"ordinary_domain_2=4.76;vip_domain_2=4.76";"ordinary_domain_1=119;partner_domain_1=119;vip_domain_1=119";high;14.1.2000;;456;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-SMS-9170 IQ SPACE SMS nhradn sky;SMS-9170 SMS IQ SPACE spare bags;(DE) SMS-9170 SMS IQ SPACE spare bags;sms9170;8594049736638;8845781246046;pasuje do VP812x VP9520;fits into VP812x VP9520;(DE) fits into VP812x VP9520;pasuje do VP812x VP9520;fits into VP812x VP9520;(DE) fits into VP812x VP9520;"ordinary_domain_1=149;partner_domain_1=149;vip_domain_1=149";"ordinary_domain_2=5.96;vip_domain_2=5.96";"ordinary_domain_1=149;partner_domain_1=149;vip_domain_1=149";high;14.1.2000;;456;pcs;in-stock;;garden_tools;garden_tools;garden_tools;;FALSE;;
-Canon PIXMA iP7250;Canon PIXMA iP7250;(DE) Canon PIXMA iP7250;44290852;8594049736639;8845781246047;Vkonn barevn inkoustov tiskrna, formt A4, kvalitn tisk fotografi, vysok rozlien a 9600 x 2400dpi, rychlost a 15 st./min ernoble a a 10 st./min barevn, duplexn tisk, zsobnk pro a 125 list, rozhran USB 2.0, WiFi 802.11b/g/n, monost potisku disk. Canon PIXMA iP7250 je kompaktn penosn tiskrna pro domc nebo kancelsk tis. Jedn se o kvalitn barevnou inkoustovou tiskrnu a do formtu A4 s etrnm tiskem.M stylov a kompaktn design s vrchn odklopnou st, slouc jako podava tiskovch mdi. Je urena pedevm pro pouit jako mal rodinn tiskrna nebo penosn tiskrna - a to pedevm pro tisk fotografi. Umouje kvalitn tisk dokument i fotografi.Je vybavena precizn 1 pikolitrovou technologi FINE pro tisk s miniaturnmi stekami. Ta umouje doshnout rozlien a 9600 x 2400dpi. Tiskrna m celkem pt samostatnch zsobnk inkoustu se systmem ChromaLife100+.Tiskrna doke tisknout bezokrajov fotografie. Maximln rychlosti tisku jsou 15 strnek za minutu ernoble, ppadn 10 barevn. Nap. bezokrajov tisk 10 x 15cm fotografie zabere piblin 21 sekund. Tiskrna nabdne i pm potisk disk a automatick oboustrann tisk.Pipojen k potai se realizuje pes USB 2.0 port nebo pomoc bezdrtov rozhran WiFi 802.11b/g/n. Tiskrna m rozmry 451 x 368 x 128mm a v 6.6kg. Soust balen je i software pro snadn tisk fotografi My Image Garden.;Powerful color inkjet printer A4 size, quality photo printing, high resolution up to 9600 x 2400dpi, the rate of up to 15 st. / Min in monochrome and up to 10 st. / Min in color, duplex printing, tray for up to 125 sheets, USB 2.0, WiFi 802.11b / g / n, possibility of printing discs. Canon PIXMA iP7250 is a compact portable printer for home or office thous. This is a quality color inkjet printer up to A4 with gentle tiskem.M stylish and compact design with a hinged upper portion serving as a feeder print media. It is intended primarily for use as a small family or a printer portable printer - especially for printing photographs. It allows users to print documents and fotografi.Je equipped with precision 1 picolitre FINE for printing with tiny particles. It allows you to achieve resolutions up to 9600 x 2400dpi. The printer has five individual ink tanks with the ChromaLife100 + .Tiskrna can print borderless photos. Maximum print speed is 15 pages per minute in black and white or 10 in color. E.g. print borderless 10 x 15 cm photo takes about 21 seconds. The printer also offers direct disc printing and automatic two-sided tisk.Pipojen to the computer is done via the USB 2.0 port or through a wireless interface, WiFi 802.11b / g / n. The printer has the dimensions 451 x 368 x 128 mm and weighs 6.6 kg. The included software for easy photo printing My Image Garden.;(DE) Powerful color inkjet printer A4 size, quality photo printing, high resolution up to 9600 x 2400dpi, the rate of up to 15 st. / Min in monochrome and up to 10 st. / Min in color, duplex printing, tray for up to 125 sheets, USB 2.0, WiFi 802.11b / g / n, possibility of printing discs. Canon PIXMA iP7250 is a compact portable printer for home or office thous. This is a quality color inkjet printer up to A4 with gentle tiskem.M?? stylish and compact design with a hinged upper portion serving as a feeder print media. It is intended primarily for use as a small family or a printer portable printer - especially for printing photographs. It allows users to print documents and fotografi?.Je equipped with precision 1 picolitre FINE for printing with tiny particles. It allows you to achieve resolutions up to 9600 x 2400dpi. The printer has five individual ink tanks with the ChromaLife100 + .Tisk??rna can print borderless photos. Maximum print speed is 15 pages per minute in black and white or 10 in color. E.g. print borderless 10 x 15 cm photo takes about 21 seconds. The printer also offers direct disc printing and automatic two-sided tisk.P?ipojen? to the computer is done via the USB 2.0 port or through a wireless interface, WiFi 802.11b / g / n. The printer has the dimensions 451 x 368 x 128 mm and weighs 6.6 kg. The included software for easy photo printing My Image Garden.;Vkonn barevn inkoustov tiskrna, formt A4, kvalitn tisk fotografi;Powerful color inkjet printer A4 size, quality photo printing;(DE) Powerful color inkjet printer A4 size, quality photo printing;"ordinary_domain_1=19990;partner_domain_1=19990;vip_domain_1=19990";"ordinary_domain_2=799.6;vip_domain_2=799.6";"ordinary_domain_1=19990;partner_domain_1=19990;vip_domain_1=19990";high;14.1.2001;;457;pcs;in-stock;"[cs:Technologie tisku,en:Print technology]=[cs:inkoustov,en:inkjet];[cs:Maximln formt,en:Maximum size]=[cs:A3,en:A3];[cs:LCD,en:LCD]=[cs:Ano,en:Yes];[cs:Rozlien tisku,en:Print resolution]=[cs:2400x600,en:2400x600];[cs:Barevn tisk,en:Color printing]=[cs:Ano,en:Yes];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:WiFi,en:WiFi]=[cs:Ano,en:Yes];[cs:Hmotnost,en:Weight]=[cs:3.5 kg,en:3.5 kg];[cs:Rozmry,en:Dimensions]=[cs:449x304x152 mm,en:449x304x152 mm]";printers;printers;printers;;FALSE;canon;
-Canon PIXMA iP7350;Canon PIXMA iP7350;(DE) Canon PIXMA iP7350;44290853;8594049736639;8845781246047;Vkonn barevn inkoustov tiskrna, formt A4, kvalitn tisk fotografi, vysok rozlien a 9600 x 2400dpi, rychlost a 15 st./min ernoble a a 10 st./min barevn, duplexn tisk, zsobnk pro a 125 list, rozhran USB 2.0, WiFi 802.11b/g/n, monost potisku disk. Canon PIXMA iP7250 je kompaktn penosn tiskrna pro domc nebo kancelsk tis. Jedn se o kvalitn barevnou inkoustovou tiskrnu a do formtu A4 s etrnm tiskem.M stylov a kompaktn design s vrchn odklopnou st, slouc jako podava tiskovch mdi. Je urena pedevm pro pouit jako mal rodinn tiskrna nebo penosn tiskrna - a to pedevm pro tisk fotografi. Umouje kvalitn tisk dokument i fotografi.Je vybavena precizn 1 pikolitrovou technologi FINE pro tisk s miniaturnmi stekami. Ta umouje doshnout rozlien a 9600 x 2400dpi. Tiskrna m celkem pt samostatnch zsobnk inkoustu se systmem ChromaLife100+.Tiskrna doke tisknout bezokrajov fotografie. Maximln rychlosti tisku jsou 15 strnek za minutu ernoble, ppadn 10 barevn. Nap. bezokrajov tisk 10 x 15cm fotografie zabere piblin 21 sekund. Tiskrna nabdne i pm potisk disk a automatick oboustrann tisk.Pipojen k potai se realizuje pes USB 2.0 port nebo pomoc bezdrtov rozhran WiFi 802.11b/g/n. Tiskrna m rozmry 451 x 368 x 128mm a v 6.6kg. Soust balen je i software pro snadn tisk fotografi My Image Garden.;Powerful color inkjet printer A4 size, quality photo printing, high resolution up to 9600 x 2400dpi, the rate of up to 15 st. / Min in monochrome and up to 10 st. / Min in color, duplex printing, tray for up to 125 sheets, USB 2.0, WiFi 802.11b / g / n, possibility of printing discs. Canon PIXMA iP7250 is a compact portable printer for home or office thous. This is a quality color inkjet printer up to A4 with gentle tiskem.M stylish and compact design with a hinged upper portion serving as a feeder print media. It is intended primarily for use as a small family or a printer portable printer - especially for printing photographs. It allows users to print documents and fotografi.Je equipped with precision 1 picolitre FINE for printing with tiny particles. It allows you to achieve resolutions up to 9600 x 2400dpi. The printer has five individual ink tanks with the ChromaLife100 +. Printer can print borderless photos. Maximum print speed is 15 pages per minute in black and white or 10 in color. E.g. print borderless 10 x 15 cm photo takes about 21 seconds. The printer also offers direct disc printing and automatic two-sided tisk.Pipojen to the computer is done via the USB 2.0 port or through a wireless interface, WiFi 802.11b / g / n. The printer has the dimensions 451 x 368 x 128 mm and weighs 6.6 kg. The included software for easy photo printing My Image Garden.;(DE) Powerful color inkjet printer A4 size, quality photo printing, high resolution up to 9600 x 2400dpi, the rate of up to 15 st. / Min in monochrome and up to 10 st. / Min in color, duplex printing, tray for up to 125 sheets, USB 2.0, WiFi 802.11b / g / n, possibility of printing discs. Canon PIXMA iP7250 is a compact portable printer for home or office thous. This is a quality color inkjet printer up to A4 with gentle tiskem.M?? stylish and compact design with a hinged upper portion serving as a feeder print media. It is intended primarily for use as a small family or a printer portable printer - especially for printing photographs. It allows users to print documents and fotografi?.Je equipped with precision 1 picolitre FINE for printing with tiny particles. It allows you to achieve resolutions up to 9600 x 2400dpi. The printer has five individual ink tanks with the ChromaLife100 +. Printer can print borderless photos. Maximum print speed is 15 pages per minute in black and white or 10 in color. E.g. print borderless 10 x 15 cm photo takes about 21 seconds. The printer also offers direct disc printing and automatic two-sided tisk.P?ipojen? to the computer is done via the USB 2.0 port or through a wireless interface, WiFi 802.11b / g / n. The printer has the dimensions 451 x 368 x 128 mm and weighs 6.6 kg. The included software for easy photo printing My Image Garden.;Vkonn barevn inkoustov tiskrna, formt A4, kvalitn tisk fotografi;Powerful color inkjet printer A4 size, quality photo printing;(DE) Powerful color inkjet printer A4 size, quality photo printing;"ordinary_domain_1=19990;partner_domain_1=19990;vip_domain_1=19990";"ordinary_domain_2=799.6;vip_domain_2=799.6";"ordinary_domain_1=19990;partner_domain_1=19990;vip_domain_1=19990";high;14.1.2001;;457;pcs;in-stock;"[cs:Technologie tisku,en:Print technology]=[cs:inkoustov,en:inkjet];[cs:Maximln formt,en:Maximum size]=[cs:A4,en:A4];[cs:LCD,en:LCD]=[cs:Ne,en:No];[cs:Rozlien tisku,en:Print resolution]=[cs:2400x600,en:2400x600];[cs:Barevn tisk,en:Color printing]=[cs:Ano,en:Yes];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:WiFi,en:WiFi]=[cs:Ano,en:Yes];[cs:Hmotnost,en:Weight]=[cs:3.5 kg,en:3.5 kg];[cs:Rozmry,en:Dimensions]=[cs:449x304x152 mm,en:449x304x152 mm]";printers;printers;printers;;FALSE;canon;
-Canon MG3650;Canon MG3650;(DE) Canon MG3650;9184536;8331B006;8845781245938;Stylov kompaktn multifunkn zazen s Wi-Fi a snadnm mobilnm tiskem. Stylov kompaktn multifunkn zazen s Wi-Fi pro sdlen a pouvn odkudkoli v domcnosti. Nabz rychl, vysoce kvalitn tisk, koprovn a skenovn a podporuje sluby Google Cloud Print a Apple AirPrint. ;
Canon PIXMA MG3350 black
Features of modern and elegantly prepared MFPs s new wireless capabilities. Function automatic two-sided printing printing on both sides, which saves paper while producing professional looking documents. The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridgesThat provide easy user service and stable print quality throughout the life. You reach for XL FINE cartridges provide printing multiple pages significantly between individual ink replacement. This is ideal if you often print.
Do smart device application download Canon PIXMA Printing Solutions a straight print or scan. In addition, you can check the printer status and ink levels. They also supported services Apple AirPrint and access to the Internet and Google Cloud Print. Software My Image Garden has a solution for organizing and printing photos, scanning, and access to online services. Due to advanced features such as face detection, you will always find exactly what you're looking for. Additional information: Print: Technology: 4-ink (in 2 packs) ChromaLife100 system, the head of FINE (2 pl) Borderless printing: A4, Letter, 20 x 25 cm, 13 x 18 cm, 10 x 15 cm Automatic two-sided printing: A4, A5, B5, Letter Printing from Application PIXMA Printing Solutions, Google Cloud Print, Apple AirPrint
;(DE)
Canon PIXMA MG3350 black
Features of modern and elegantly prepared MFPs s new wireless capabilities. Function automatic two-sided printing printing on both sides, which saves paper while producing professional looking documents. The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridgesThat provide easy user service and stable print quality throughout the life. You reach for XL FINE cartridges provide printing multiple pages significantly between individual ink replacement. This is ideal if you often print.
Do smart device application download Canon PIXMA Printing Solutions a straight print or scan. In addition, you can check the printer status and ink levels. They also supported services Apple AirPrint and access to the Internet and Google Cloud Print. Software My Image Garden has a solution for organizing and printing photos, scanning, and access to online services. Due to advanced features such as face detection, you will always find exactly what you're looking for. Additional information: Print: Technology: 4-ink (in 2 packs) ChromaLife100 system, the head of FINE (2 pl) Borderless printing: A4, Letter, 20 x 25 cm, 13 x 18 cm, 10 x 15 cm Automatic two-sided printing: A4, A5, B5, Letter Printing from Application PIXMA Printing Solutions, Google Cloud Print, Apple AirPrint
;Stylov kompaktn multifunkn zazen s Wi-Fi a snadnm mobilnm tiskem.;The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridges;(DE) The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridges;"ordinary_domain_1=1314.1;partner_domain_1=1314.1;vip_domain_1=1314.1";"ordinary_domain_2=52.564;vip_domain_2=52.564";"ordinary_domain_1=1314.1;partner_domain_1=1314.1;vip_domain_1=1314.1";high;24.1.2014;;458;pcs;in-stock;"[cs:Technologie tisku,en:Print technology]=[cs:inkoustov,en:inkjet];[cs:Maximln formt,en:Maximum size]=[cs:A4,en:A4];[cs:LCD,en:LCD]=[cs:Ne,en:No];[cs:Rozlien tisku,en:Print resolution]=[cs:2400x600,en:2400x600];[cs:Barevn tisk,en:Color printing]=[cs:Ano,en:Yes];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:WiFi,en:WiFi]=[cs:Ano,en:Yes];[cs:Rozmry,en:Dimensions]=[cs:449x304x152 mm,en:449x304x152 mm];[cs:Hmotnost,en:Weight]=[cs:5.4 kg,en:3.5 kg]";printers;photo;printers;"new;top";FALSE;canon;
-Canon PIXMA MG2650;Canon PIXMA MG2650;(DE) Canon PIXMA MG2650;9184440;8328B006;8845781245936;Multifunkn tiskrna CANON PIXMA MG2450, A4, print/scan/copy, USB, Vysoce kvalitn tisk s a 4 800 dpi a technologi kazet FINE, software pro inteligentn tisk z web;
Canon PIXMA MG2450
Stylish and affordable, accessible multifunction devices for the home. Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components. The printing machine uses an innovative print FINE technology Which guarantee excellent print quality. The printer has a system of four ink colors hidden in two ink cartridges, which provide easy user service and stable print quality throughout the life. You can reach the XL cartridges FINE, which provide significantly greater number of print pages between ink replacement. This is ideal if you are printing large volumes.
Software My Image Garden will reveal the full range of functions PIXMA printers. It offers solutions for the layout and printing photos, scanning, and access to online services. Due to advanced features such as face detection, it will scan all the pictures on your computer (even those long forgotten), and compile them into great designs to print. Service CREATIVE PARK PREMIUM you can download and print photos, images and artwork from internationally recognized photographers and artists. Create greeting cards, calendars or stunning 3D paper products, such as the space shuttle Endeavour.
;(DE)
Canon PIXMA MG2450
Stylish and affordable, accessible multifunction devices for the home. Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components. The printing machine uses an innovative print FINE technology Which guarantee excellent print quality. The printer has a system of four ink colors hidden in two ink cartridges, which provide easy user service and stable print quality throughout the life. You can reach the XL cartridges FINE, which provide significantly greater number of print pages between ink replacement. This is ideal if you are printing large volumes.
Software My Image Garden will reveal the full range of functions PIXMA printers. It offers solutions for the layout and printing photos, scanning, and access to online services. Due to advanced features such as face detection, it will scan all the pictures on your computer (even those long forgotten), and compile them into great designs to print. Service CREATIVE PARK PREMIUM you can download and print photos, images and artwork from internationally recognized photographers and artists. Create greeting cards, calendars or stunning 3D paper products, such as the space shuttle Endeavour.
;Multifunkn tiskrna CANON PIXMA MG2450, A4, print/scan/copy, USB, Vysoce kvalitn tisk;Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components.;(DE) Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components.;"ordinary_domain_1=818;partner_domain_1=818;vip_domain_1=818";"ordinary_domain_2=32.72;vip_domain_2=32.72";"ordinary_domain_1=818;partner_domain_1=818;vip_domain_1=818";high;22.1.2014;;459;pcs;in-stock;"[cs:Technologie tisku,en:Print technology]=[cs:inkoustov,en:inkjet];[cs:Maximln formt,en:Maximum size]=[cs:A4,en:A4];[cs:LCD,en:LCD]=[cs:Ne,en:No];[cs:Rozlien tisku,en:Print resolution]=[cs:2400x600,en:2400x600];[cs:Barevn tisk,en:Color printing]=[cs:Ano,en:Yes];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:WiFi,en:WiFi]=[cs:Ano,en:Yes];[cs:Hmotnost,en:Weight]=[cs:3.5 kg,en:3.5 kg];[cs:Rozmry,en:Dimensions]=[cs:449x304x152 mm,en:449x304x152 mm]";printers;photo;printers;;FALSE;canon;
-HP Deskjet Ink Advantage 1615 (B2L57C);HP Deskjet Ink Advantage 1615 (B2L57C);(DE) HP Deskjet Ink Advantage 1615 (B2L57C);718254;B2L57C;8845781245937;S touto jednoduchou a cenov dostupnou multifunkn tiskrnou HP Deskjet mete tisknout, skenovat i koprovat. Tisknte vce za mn penz s levnmi inkousty. Uetete msto dky kompaktnmu proveden, kter lze umstit kamkoli, a zante pracovat bhem pr okamik dky rychl a jednoduch instalaci. ;
Hewlett-Packard was founded in the difficult times of the Great Depression. The founders were a pair of friends whose name the company still proudly bears. They started their business in an unobtrusive garage near the city of Palo Alto. It is now a national monument. HPs success lay not in copying existing products, but in the ability and courage to come up with something new.
The first commercial triumph was an oscillator that surpassed all competition in quality, yet sold at a quarter of the price. In 1968, HP released their first desktop computer - a desktop calculator. The company currently manufactures products primarily related to computer technology - computers and laptops, printers, scanners, digital cameras, servers, and last but not least, calculators.
Unless otherwise indicated in the product description, packaging does not contain a USB interface cable.
;(DE)
Hewlett-Packard was founded in the difficult times of the Great Depression. The founders were a pair of friends whose name the company still proudly bears. They started their business in an unobtrusive garage near the city of Palo Alto. It is now a national monument. HP’s success lay not in copying existing products, but in the ability and courage to come up with something new.
The first commercial triumph was an oscillator that surpassed all competition in quality, yet sold at a quarter of the price. In 1968, HP released their first desktop computer - a desktop calculator. The company currently manufactures products primarily related to computer technology - computers and laptops, printers, scanners, digital cameras, servers, and last but not least, calculators.
Unless otherwise indicated in the product description, packaging does not contain a USB interface cable.
;S touto jednoduchou a cenov dostupnou multifunkn tiskrnou HP Deskjet mete tisknout, skenovat i koprovat.;Hewlett-Packard was founded in the difficult times of the Great Depression.;(DE) Hewlett-Packard was founded in the difficult times of the Great Depression.;"ordinary_domain_1=1238;partner_domain_1=1238;vip_domain_1=1238";"ordinary_domain_2=49.52;vip_domain_2=49.52";"ordinary_domain_1=1238;partner_domain_1=1238;vip_domain_1=1238";high;23.1.2014;;460;pcs;in-stock;"[cs:Technologie tisku,en:Print technology]=[cs:inkoustov,en:inkjet];[cs:Maximln formt,en:Maximum size]=[cs:A3,en:A3];[cs:LCD,en:LCD]=[cs:Ano,en:Yes];[cs:Rozlien tisku,en:Print resolution]=[cs:2400x600,en:2400x600];[cs:Barevn tisk,en:Color printing]=[cs:Ano,en:Yes];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:WiFi,en:WiFi]=[cs:Ano,en:Yes];[cs:Hmotnost,en:Weight]=[cs:3.5 kg,en:3.5 kg];[cs:Rozmry,en:Dimensions]=[cs:449x304x152 mm,en:449x304x152 mm]";printers;printers;printers;;FALSE;hp;
-OKI MC861cdxm;OKI MC861cdxm;(DE) OKI MC861cdxm;8980686;1318206;8845781245935;OKI MC861cdxn+, barevn A3 34/26 ppm ProQ2400 dpi PCL/PS,USB 2.0,LPT,LAN (Print/Scan/Copy/Fax) - MC861cdxn+ - duplexn jednotka, sov karta, 2. a 3. zsobnk, nzk kabinet;Toner for MC861/ 851, 7000 pages;(DE) Toner for MC861/ 851, 7000 pages;OKI MC861cdxn+, barevn A3 34/26 ppm ProQ2400 dpi PCL/PS,USB 2.0,LPT,LAN;Toner for MC861/ 851, 7000 pages;(DE) Toner for MC861/ 851, 7000 pages;"ordinary_domain_1=67771.9;partner_domain_1=67771.9;vip_domain_1=67771.9";"ordinary_domain_2=2710.876;vip_domain_2=2710.876";"ordinary_domain_1=67771.9;partner_domain_1=67771.9;vip_domain_1=67771.9";high;21.1.2014;;200;pcs;in-stock;"[cs:Technologie tisku,en:Print technology]=[cs:inkoustov,en:inkjet];[cs:Maximln formt,en:Maximum size]=[cs:A3,en:A3];[cs:LCD,en:LCD]=[cs:Ne,en:No];[cs:Rozlien tisku,en:Print resolution]=[cs:2400x600,en:2400x600];[cs:Barevn tisk,en:Color printing]=[cs:Ano,en:Yes];[cs:USB,en:USB]=[cs:Ano,en:Yes];[cs:WiFi,en:WiFi]=[cs:Ne,en:No];[cs:Rozmry,en:Dimensions]=[cs:426x306x145 mm,en:426x306x145 mm];[cs:Hmotnost,en:Weight]=[cs:3.5 kg,en:3.5 kg]";printers;printers;printers;;FALSE;;
\ No newline at end of file
diff --git a/src/Shopsys/ShopBundle/Form/Admin/BillingAddressFormTypeExtension.php b/src/Shopsys/ShopBundle/Form/Admin/BillingAddressFormTypeExtension.php
index c68dcaa75..d20ab68a8 100644
--- a/src/Shopsys/ShopBundle/Form/Admin/BillingAddressFormTypeExtension.php
+++ b/src/Shopsys/ShopBundle/Form/Admin/BillingAddressFormTypeExtension.php
@@ -62,7 +62,7 @@ public function configureOptions(OptionsResolver $resolver)
$validationGroups = [ValidationGroup::VALIDATION_GROUP_DEFAULT];
$billingAddressData = $form->getData();
- /* @var $billingAddressData \Shopsys\FrameworkBundle\Model\Customer\BillingAddressData */
+ /* @var $billingAddressData \Shopsys\ShopBundle\Model\Customer\BillingAddressData */
if ($billingAddressData->companyCustomer) {
$validationGroups[] = BillingAddressFormType::VALIDATION_GROUP_COMPANY_CUSTOMER;
diff --git a/src/Shopsys/ShopBundle/Form/Front/Customer/BillingAddressFormType.php b/src/Shopsys/ShopBundle/Form/Front/Customer/BillingAddressFormType.php
index 71d06cc3d..062417a5c 100644
--- a/src/Shopsys/ShopBundle/Form/Front/Customer/BillingAddressFormType.php
+++ b/src/Shopsys/ShopBundle/Form/Front/Customer/BillingAddressFormType.php
@@ -131,7 +131,7 @@ public function configureOptions(OptionsResolver $resolver)
$validationGroups = [ValidationGroup::VALIDATION_GROUP_DEFAULT];
$billingAddressData = $form->getData();
- /* @var $billingAddressData \Shopsys\FrameworkBundle\Model\Customer\BillingAddressData */
+ /* @var $billingAddressData \Shopsys\ShopBundle\Model\Customer\BillingAddressData */
if ($billingAddressData->companyCustomer) {
$validationGroups[] = self::VALIDATION_GROUP_COMPANY_CUSTOMER;
diff --git a/src/Shopsys/ShopBundle/Form/Front/Customer/CustomerFormType.php b/src/Shopsys/ShopBundle/Form/Front/Customer/CustomerFormType.php
index 5a61b94cd..4a4cfc395 100644
--- a/src/Shopsys/ShopBundle/Form/Front/Customer/CustomerFormType.php
+++ b/src/Shopsys/ShopBundle/Form/Front/Customer/CustomerFormType.php
@@ -13,12 +13,12 @@
class CustomerFormType extends AbstractType
{
/**
- * @var \Shopsys\FrameworkBundle\Model\Customer\CustomerDataFactoryInterface
+ * @var \Shopsys\ShopBundle\Model\Customer\CustomerDataFactory
*/
private $customerDataFactory;
/**
- * @param \Shopsys\FrameworkBundle\Model\Customer\CustomerDataFactoryInterface $customerDataFactory
+ * @param \Shopsys\ShopBundle\Model\Customer\CustomerDataFactory $customerDataFactory
*/
public function __construct(CustomerDataFactoryInterface $customerDataFactory)
{
diff --git a/src/Shopsys/ShopBundle/Form/Front/Order/PersonalInfoFormType.php b/src/Shopsys/ShopBundle/Form/Front/Order/PersonalInfoFormType.php
index 64e0f6bbb..03c78c7a7 100644
--- a/src/Shopsys/ShopBundle/Form/Front/Order/PersonalInfoFormType.php
+++ b/src/Shopsys/ShopBundle/Form/Front/Order/PersonalInfoFormType.php
@@ -307,7 +307,7 @@ public function configureOptions(OptionsResolver $resolver)
$validationGroups = [ValidationGroup::VALIDATION_GROUP_DEFAULT];
$orderData = $form->getData();
- /* @var $data \Shopsys\FrameworkBundle\Model\Order\OrderData */
+ /* @var $data \Shopsys\ShopBundle\Model\Order\OrderData */
if ($orderData->companyCustomer) {
$validationGroups[] = self::VALIDATION_GROUP_COMPANY_CUSTOMER;
diff --git a/src/Shopsys/ShopBundle/Model/Administrator/AdministratorFacade.php b/src/Shopsys/ShopBundle/Model/Administrator/AdministratorFacade.php
index 6a71fe93f..ae08b319e 100644
--- a/src/Shopsys/ShopBundle/Model/Administrator/AdministratorFacade.php
+++ b/src/Shopsys/ShopBundle/Model/Administrator/AdministratorFacade.php
@@ -7,6 +7,15 @@
use Shopsys\FrameworkBundle\Model\Administrator\Administrator as BaseAdministrator;
use Shopsys\FrameworkBundle\Model\Administrator\AdministratorFacade as BaseAdministratorFacade;
+/**
+ * @property \Shopsys\ShopBundle\Model\Administrator\AdministratorRepository $administratorRepository
+ * @method __construct(\Doctrine\ORM\EntityManagerInterface $em, \Shopsys\ShopBundle\Model\Administrator\AdministratorRepository $administratorRepository, \Shopsys\FrameworkBundle\Model\Administrator\AdministratorFactoryInterface $administratorFactory, \Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface $encoderFactory, \Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface $tokenStorage)
+ * @method \Shopsys\ShopBundle\Model\Administrator\Administrator create(\Shopsys\FrameworkBundle\Model\Administrator\AdministratorData $administratorData)
+ * @method \Shopsys\ShopBundle\Model\Administrator\Administrator edit(int $administratorId, \Shopsys\FrameworkBundle\Model\Administrator\AdministratorData $administratorData)
+ * @method checkUsername(\Shopsys\ShopBundle\Model\Administrator\Administrator $administrator, string $username)
+ * @method setPassword(\Shopsys\ShopBundle\Model\Administrator\Administrator $administrator, string $password)
+ * @method \Shopsys\ShopBundle\Model\Administrator\Administrator getById(int $administratorId)
+ */
class AdministratorFacade extends BaseAdministratorFacade
{
/**
diff --git a/src/Shopsys/ShopBundle/Model/Administrator/AdministratorRepository.php b/src/Shopsys/ShopBundle/Model/Administrator/AdministratorRepository.php
index 0a58d29e5..a8aef4b65 100644
--- a/src/Shopsys/ShopBundle/Model/Administrator/AdministratorRepository.php
+++ b/src/Shopsys/ShopBundle/Model/Administrator/AdministratorRepository.php
@@ -7,6 +7,14 @@
use Doctrine\ORM\QueryBuilder;
use Shopsys\FrameworkBundle\Model\Administrator\AdministratorRepository as BaseAdministratorRepository;
+/**
+ * @method \Shopsys\ShopBundle\Model\Administrator\Administrator|null findById(int $administratorId)
+ * @method \Shopsys\ShopBundle\Model\Administrator\Administrator getById(int $administratorId)
+ * @method \Shopsys\ShopBundle\Model\Administrator\Administrator getByValidMultidomainLoginToken(string $multidomainLoginToken)
+ * @method \Shopsys\ShopBundle\Model\Administrator\Administrator|null findByUserName(string $administratorUserName)
+ * @method \Shopsys\ShopBundle\Model\Administrator\Administrator getByUserName(string $administratorUserName)
+ * @method \Shopsys\ShopBundle\Model\Administrator\Administrator[] getAllSuperadmins()
+ */
class AdministratorRepository extends BaseAdministratorRepository
{
/**
diff --git a/src/Shopsys/ShopBundle/Model/Administrator/Security/AdministratorUserProvider.php b/src/Shopsys/ShopBundle/Model/Administrator/Security/AdministratorUserProvider.php
index d1d21515e..3a6b73510 100644
--- a/src/Shopsys/ShopBundle/Model/Administrator/Security/AdministratorUserProvider.php
+++ b/src/Shopsys/ShopBundle/Model/Administrator/Security/AdministratorUserProvider.php
@@ -10,11 +10,16 @@
use Shopsys\FrameworkBundle\Model\Security\TimelimitLoginInterface;
use Symfony\Component\Security\Core\User\UserInterface;
+/**
+ * @property \Shopsys\ShopBundle\Model\Administrator\AdministratorRepository $administratorRepository
+ * @method __construct(\Shopsys\ShopBundle\Model\Administrator\AdministratorRepository $administratorRepository, \Shopsys\FrameworkBundle\Model\Administrator\Activity\AdministratorActivityFacade $administratorActivityFacade)
+ * @method \Shopsys\ShopBundle\Model\Administrator\Administrator loadUserByUsername(string $username)
+ */
class AdministratorUserProvider extends BaseAdministratorUserProvider
{
/**
* @param \Symfony\Component\Security\Core\User\UserInterface $userInterface
- * @return \Shopsys\FrameworkBundle\Model\Administrator\Administrator
+ * @return \Shopsys\ShopBundle\Model\Administrator\Administrator
*/
public function refreshUser(UserInterface $userInterface)
{
@@ -24,7 +29,7 @@ public function refreshUser(UserInterface $userInterface)
throw new \Symfony\Component\Security\Core\Exception\UnsupportedUserException($message);
}
- /** @var \Shopsys\FrameworkBundle\Model\Administrator\Administrator $administrator */
+ /** @var \Shopsys\ShopBundle\Model\Administrator\Administrator $administrator */
$administrator = $userInterface;
$freshAdministrator = $this->administratorRepository->findById($administrator->getId());
diff --git a/src/Shopsys/ShopBundle/Model/Category/Category.php b/src/Shopsys/ShopBundle/Model/Category/Category.php
index 66dca1448..e01f4d990 100644
--- a/src/Shopsys/ShopBundle/Model/Category/Category.php
+++ b/src/Shopsys/ShopBundle/Model/Category/Category.php
@@ -13,6 +13,16 @@
* @Gedmo\Tree(type="nested")
* @ORM\Table(name="categories")
* @ORM\Entity
+ * @property \Shopsys\ShopBundle\Model\Category\Category|null $parent
+ * @property \Shopsys\ShopBundle\Model\Category\Category[]|\Doctrine\Common\Collections\Collection $children
+ * @property \Shopsys\ShopBundle\Model\Category\CategoryDomain[]|\Doctrine\Common\Collections\Collection $domains
+ * @method __construct(\Shopsys\ShopBundle\Model\Category\CategoryData $categoryData)
+ * @method edit(\Shopsys\ShopBundle\Model\Category\CategoryData $categoryData)
+ * @method setParent(\Shopsys\ShopBundle\Model\Category\Category|null $parent)
+ * @method \Shopsys\ShopBundle\Model\Category\Category|null getParent()
+ * @method \Shopsys\ShopBundle\Model\Category\Category[] getChildren()
+ * @method \Shopsys\ShopBundle\Model\Category\CategoryDomain getCategoryDomain(int $domainId)
+ * @method setTranslations(\Shopsys\ShopBundle\Model\Category\CategoryData $categoryData)
*/
class Category extends BaseCategory
{
diff --git a/src/Shopsys/ShopBundle/Model/Category/CategoryData.php b/src/Shopsys/ShopBundle/Model/Category/CategoryData.php
index e7506eb58..ad25a50b8 100644
--- a/src/Shopsys/ShopBundle/Model/Category/CategoryData.php
+++ b/src/Shopsys/ShopBundle/Model/Category/CategoryData.php
@@ -6,6 +6,9 @@
use Shopsys\FrameworkBundle\Model\Category\CategoryData as BaseCategoryData;
+/**
+ * @property \Shopsys\ShopBundle\Model\Category\Category|null $parent
+ */
class CategoryData extends BaseCategoryData
{
/**
diff --git a/src/Shopsys/ShopBundle/Model/Category/CategoryDomain.php b/src/Shopsys/ShopBundle/Model/Category/CategoryDomain.php
index 5820045a5..4208f781f 100644
--- a/src/Shopsys/ShopBundle/Model/Category/CategoryDomain.php
+++ b/src/Shopsys/ShopBundle/Model/Category/CategoryDomain.php
@@ -15,6 +15,8 @@
* }
* )
* @ORM\Entity
+ * @property \Shopsys\ShopBundle\Model\Category\Category $category
+ * @method __construct(\Shopsys\ShopBundle\Model\Category\Category $category, int $domainId)
*/
class CategoryDomain extends BaseCategoryDomain
{
diff --git a/src/Shopsys/ShopBundle/Model/Category/CurrentCategoryResolver.php b/src/Shopsys/ShopBundle/Model/Category/CurrentCategoryResolver.php
index fee72db8e..ad8d700e1 100644
--- a/src/Shopsys/ShopBundle/Model/Category/CurrentCategoryResolver.php
+++ b/src/Shopsys/ShopBundle/Model/Category/CurrentCategoryResolver.php
@@ -35,7 +35,7 @@ public function __construct(
/**
* @param \Symfony\Component\HttpFoundation\Request $request
* @param int $domainId
- * @return \Shopsys\FrameworkBundle\Model\Category\Category|null
+ * @return \Shopsys\ShopBundle\Model\Category\Category|null
*/
public function findCurrentCategoryByRequest(Request $request, $domainId)
{
diff --git a/src/Shopsys/ShopBundle/Model/Customer/CurrentCustomer.php b/src/Shopsys/ShopBundle/Model/Customer/CurrentCustomer.php
index 73c331810..93da2eeb2 100644
--- a/src/Shopsys/ShopBundle/Model/Customer/CurrentCustomer.php
+++ b/src/Shopsys/ShopBundle/Model/Customer/CurrentCustomer.php
@@ -6,6 +6,9 @@
use Shopsys\FrameworkBundle\Model\Customer\CurrentCustomer as BaseCurrentCustomer;
+/**
+ * @method \Shopsys\ShopBundle\Model\Customer\User|null findCurrentUser()
+ */
class CurrentCustomer extends BaseCurrentCustomer
{
/**
diff --git a/src/Shopsys/ShopBundle/Model/Customer/CustomerData.php b/src/Shopsys/ShopBundle/Model/Customer/CustomerData.php
index f0f220f1e..49b17ede5 100644
--- a/src/Shopsys/ShopBundle/Model/Customer/CustomerData.php
+++ b/src/Shopsys/ShopBundle/Model/Customer/CustomerData.php
@@ -9,17 +9,21 @@
use Shopsys\FrameworkBundle\Model\Customer\DeliveryAddressData;
use Shopsys\FrameworkBundle\Model\Customer\UserData;
+/**
+ * @property \Shopsys\ShopBundle\Model\Customer\UserData $userData
+ * @property \Shopsys\ShopBundle\Model\Customer\BillingAddressData $billingAddressData
+ */
class CustomerData extends BaseCustomerData
{
/**
- * @var \Shopsys\FrameworkBundle\Model\Customer\UserData[]|null
+ * @var \Shopsys\ShopBundle\Model\Customer\UserData[]|null
*/
public $companyUsersData;
/**
- * @param \Shopsys\FrameworkBundle\Model\Customer\BillingAddressData $billingAddressData
+ * @param \Shopsys\ShopBundle\Model\Customer\BillingAddressData $billingAddressData
* @param \Shopsys\FrameworkBundle\Model\Customer\DeliveryAddressData $deliveryAddressData
- * @param \Shopsys\FrameworkBundle\Model\Customer\UserData $userData
+ * @param \Shopsys\ShopBundle\Model\Customer\UserData $userData
*/
public function __construct(
BillingAddressData $billingAddressData,
diff --git a/src/Shopsys/ShopBundle/Model/Customer/CustomerDataFactory.php b/src/Shopsys/ShopBundle/Model/Customer/CustomerDataFactory.php
index 3c9aa49f1..ca79aba96 100644
--- a/src/Shopsys/ShopBundle/Model/Customer/CustomerDataFactory.php
+++ b/src/Shopsys/ShopBundle/Model/Customer/CustomerDataFactory.php
@@ -8,6 +8,9 @@
use Shopsys\FrameworkBundle\Model\Customer\CustomerDataFactory as BaseCustomerDataFactory;
use Shopsys\FrameworkBundle\Model\Customer\User as BaseUser;
+/**
+ * @method \Shopsys\ShopBundle\Model\Customer\CustomerData createAmendedByOrder(\Shopsys\ShopBundle\Model\Customer\User $user, \Shopsys\ShopBundle\Model\Order\Order $order)
+ */
class CustomerDataFactory extends BaseCustomerDataFactory
{
/**
diff --git a/src/Shopsys/ShopBundle/Model/Customer/CustomerFacade.php b/src/Shopsys/ShopBundle/Model/Customer/CustomerFacade.php
index 5892b9da9..719bdfcb1 100644
--- a/src/Shopsys/ShopBundle/Model/Customer/CustomerFacade.php
+++ b/src/Shopsys/ShopBundle/Model/Customer/CustomerFacade.php
@@ -16,10 +16,25 @@
use Shopsys\FrameworkBundle\Model\Customer\UserFactoryInterface;
use Shopsys\ShopBundle\Model\Customer\Exception\DuplicateEmailsException;
+/**
+ * @property \Shopsys\ShopBundle\Model\Customer\UserRepository $userRepository
+ * @property \Shopsys\ShopBundle\Model\Customer\BillingAddressFactory $billingAddressFactory
+ * @property \Shopsys\ShopBundle\Model\Customer\BillingAddressDataFactory $billingAddressDataFactory
+ * @method \Shopsys\ShopBundle\Model\Customer\User getUserById(int $userId)
+ * @method \Shopsys\ShopBundle\Model\Customer\User|null findUserByEmailAndDomain(string $email, int $domainId)
+ * @method \Shopsys\ShopBundle\Model\Customer\User register(\Shopsys\ShopBundle\Model\Customer\UserData $userData)
+ * @method \Shopsys\ShopBundle\Model\Customer\User create(\Shopsys\ShopBundle\Model\Customer\CustomerData $customerData)
+ * @method \Shopsys\ShopBundle\Model\Customer\User edit(int $userId, \Shopsys\ShopBundle\Model\Customer\CustomerData $customerData)
+ * @method editDeliveryAddress(\Shopsys\ShopBundle\Model\Customer\User $user, \Shopsys\FrameworkBundle\Model\Customer\DeliveryAddressData $deliveryAddressData)
+ * @method \Shopsys\ShopBundle\Model\Customer\User editByAdmin(int $userId, \Shopsys\ShopBundle\Model\Customer\CustomerData $customerData)
+ * @method \Shopsys\ShopBundle\Model\Customer\User editByCustomer(int $userId, \Shopsys\ShopBundle\Model\Customer\CustomerData $customerData)
+ * @method amendCustomerDataFromOrder(\Shopsys\ShopBundle\Model\Customer\User $user, \Shopsys\ShopBundle\Model\Order\Order $order)
+ * @method setEmail(string $email, \Shopsys\ShopBundle\Model\Customer\User $user)
+ */
class CustomerFacade extends BaseCustomerFacade
{
/**
- * @var \Shopsys\FrameworkBundle\Model\Customer\CustomerDataFactoryInterface
+ * @var \Shopsys\ShopBundle\Model\Customer\CustomerDataFactory
*/
protected $customerDataFactory;
@@ -31,11 +46,11 @@ class CustomerFacade extends BaseCustomerFacade
/**
* @param \Doctrine\ORM\EntityManagerInterface $em
* @param \Shopsys\ShopBundle\Model\Customer\UserRepository $userRepository
- * @param \Shopsys\FrameworkBundle\Model\Customer\CustomerDataFactoryInterface $customerDataFactory
+ * @param \Shopsys\ShopBundle\Model\Customer\CustomerDataFactory $customerDataFactory
* @param \Shopsys\FrameworkBundle\Model\Customer\Mail\CustomerMailFacade $customerMailFacade
- * @param \Shopsys\FrameworkBundle\Model\Customer\BillingAddressFactoryInterface $billingAddressFactory
+ * @param \Shopsys\ShopBundle\Model\Customer\BillingAddressFactory $billingAddressFactory
* @param \Shopsys\FrameworkBundle\Model\Customer\DeliveryAddressFactoryInterface $deliveryAddressFactory
- * @param \Shopsys\FrameworkBundle\Model\Customer\BillingAddressDataFactoryInterface $billingAddressDataFactory
+ * @param \Shopsys\ShopBundle\Model\Customer\BillingAddressDataFactory $billingAddressDataFactory
* @param \Shopsys\FrameworkBundle\Model\Customer\UserFactoryInterface $userFactory
* @param \Shopsys\FrameworkBundle\Model\Customer\CustomerPasswordFacade $customerPasswordFacade
*/
@@ -56,7 +71,7 @@ public function __construct(
}
/**
- * @param \Shopsys\FrameworkBundle\Model\Customer\BillingAddress $billingAddress
+ * @param \Shopsys\ShopBundle\Model\Customer\BillingAddress $billingAddress
* @param int $domainId
* @return \Shopsys\ShopBundle\Model\Customer\User[]
*/
@@ -75,7 +90,7 @@ public function getAllByBillingAddress(BillingAddress $billingAddress)
}
/**
- * @param \Shopsys\FrameworkBundle\Model\Customer\BillingAddress $billingAddress
+ * @param \Shopsys\ShopBundle\Model\Customer\BillingAddress $billingAddress
* @return \Shopsys\ShopBundle\Model\Customer\User
*/
public function getUserByBillingAddress(BillingAddress $billingAddress)
@@ -118,7 +133,7 @@ public function editCompanyWithMultipleUsers(BillingAddress $billingAddress, Cus
}
/**
- * @param \Shopsys\FrameworkBundle\Model\Customer\BillingAddress $billingAddress
+ * @param \Shopsys\ShopBundle\Model\Customer\BillingAddress $billingAddress
* @param \Shopsys\ShopBundle\Model\Customer\CustomerData $companyData
*/
protected function removeOldCompanyUsers(BillingAddress $billingAddress, CustomerData $companyData)
@@ -208,7 +223,7 @@ public function removeCompanyUsersExceptTheFirstOne(BillingAddress $billingAddre
}
/**
- * @param \Shopsys\FrameworkBundle\Model\Customer\BillingAddress $billingAddress
+ * @param \Shopsys\ShopBundle\Model\Customer\BillingAddress $billingAddress
* @param \Shopsys\ShopBundle\Model\Customer\CustomerData $companyData
* @throws \Shopsys\ShopBundle\Model\Customer\Exception\DuplicateEmailsException
*/
diff --git a/src/Shopsys/ShopBundle/Model/Customer/User.php b/src/Shopsys/ShopBundle/Model/Customer/User.php
index d2d632e4f..b4154277e 100644
--- a/src/Shopsys/ShopBundle/Model/Customer/User.php
+++ b/src/Shopsys/ShopBundle/Model/Customer/User.php
@@ -21,6 +21,7 @@
* }
* )
* @ORM\Entity
+ * @method \Shopsys\ShopBundle\Model\Customer\BillingAddress getBillingAddress()
*/
class User extends BaseUser
{
diff --git a/src/Shopsys/ShopBundle/Model/Customer/UserRepository.php b/src/Shopsys/ShopBundle/Model/Customer/UserRepository.php
index e747e9781..acaa21061 100644
--- a/src/Shopsys/ShopBundle/Model/Customer/UserRepository.php
+++ b/src/Shopsys/ShopBundle/Model/Customer/UserRepository.php
@@ -9,6 +9,13 @@
use Shopsys\FrameworkBundle\Model\Customer\BillingAddress as BaseBillingAddress;
use Shopsys\FrameworkBundle\Model\Customer\UserRepository as BaseUserRepository;
+/**
+ * @method \Shopsys\ShopBundle\Model\Customer\User|null findUserByEmailAndDomain(string $email, int $domainId)
+ * @method \Shopsys\ShopBundle\Model\Customer\User|null getUserByEmailAndDomain(string $email, int $domainId)
+ * @method \Shopsys\ShopBundle\Model\Customer\User getUserById(int $id)
+ * @method \Shopsys\ShopBundle\Model\Customer\User|null findById(int $id)
+ * @method \Shopsys\ShopBundle\Model\Customer\User|null findByIdAndLoginToken(int $id, string $loginToken)
+ */
class UserRepository extends BaseUserRepository
{
/**
@@ -80,7 +87,7 @@ public function getAllByBillingAddress(BillingAddress $billingAddress)
}
/**
- * @param \Shopsys\FrameworkBundle\Model\Customer\BillingAddress $billingAddress
+ * @param \Shopsys\ShopBundle\Model\Customer\BillingAddress $billingAddress
* @return \Shopsys\ShopBundle\Model\Customer\User
*/
public function getUserByBillingAddress(BillingAddress $billingAddress)
diff --git a/src/Shopsys/ShopBundle/Model/Order/FrontOrderData.php b/src/Shopsys/ShopBundle/Model/Order/FrontOrderData.php
index 15ac2625a..15591d5e4 100644
--- a/src/Shopsys/ShopBundle/Model/Order/FrontOrderData.php
+++ b/src/Shopsys/ShopBundle/Model/Order/FrontOrderData.php
@@ -6,6 +6,14 @@
use Shopsys\FrameworkBundle\Model\Order\FrontOrderData as BaseFrontOrderData;
+/**
+ * @property \Shopsys\ShopBundle\Model\Transport\Transport|null $transport
+ * @property \Shopsys\ShopBundle\Model\Order\Item\OrderItemData[] $itemsWithoutTransportAndPayment
+ * @property \Shopsys\ShopBundle\Model\Administrator\Administrator|null $createdAsAdministrator
+ * @property \Shopsys\ShopBundle\Model\Order\Item\OrderItemData|null $orderPayment
+ * @property \Shopsys\ShopBundle\Model\Order\Item\OrderItemData|null $orderTransport
+ * @method \Shopsys\ShopBundle\Model\Order\Item\OrderItemData[] getNewItemsWithoutTransportAndPayment()
+ */
class FrontOrderData extends BaseFrontOrderData
{
/**
diff --git a/src/Shopsys/ShopBundle/Model/Order/Item/OrderItemData.php b/src/Shopsys/ShopBundle/Model/Order/Item/OrderItemData.php
index 74d38b4b5..7d07b03e2 100644
--- a/src/Shopsys/ShopBundle/Model/Order/Item/OrderItemData.php
+++ b/src/Shopsys/ShopBundle/Model/Order/Item/OrderItemData.php
@@ -6,6 +6,9 @@
use Shopsys\FrameworkBundle\Model\Order\Item\OrderItemData as BaseOrderItemData;
+/**
+ * @property \Shopsys\ShopBundle\Model\Transport\Transport|null $transport
+ */
class OrderItemData extends BaseOrderItemData
{
}
diff --git a/src/Shopsys/ShopBundle/Model/Order/Order.php b/src/Shopsys/ShopBundle/Model/Order/Order.php
index b6a91a937..d99360aae 100644
--- a/src/Shopsys/ShopBundle/Model/Order/Order.php
+++ b/src/Shopsys/ShopBundle/Model/Order/Order.php
@@ -13,6 +13,16 @@
/**
* @ORM\Table(name="orders")
* @ORM\Entity
+ * @property \Shopsys\ShopBundle\Model\Customer\User|null $customer
+ * @property \Shopsys\ShopBundle\Model\Transport\Transport $transport
+ * @property \Shopsys\ShopBundle\Model\Administrator\Administrator|null $createdAsAdministrator
+ * @method editData(\Shopsys\ShopBundle\Model\Order\OrderData $orderData)
+ * @method editOrderTransport(\Shopsys\ShopBundle\Model\Order\OrderData $orderData)
+ * @method editOrderPayment(\Shopsys\ShopBundle\Model\Order\OrderData $orderData)
+ * @method setDeliveryAddress(\Shopsys\ShopBundle\Model\Order\OrderData $orderData)
+ * @method \Shopsys\ShopBundle\Model\Transport\Transport getTransport()
+ * @method \Shopsys\ShopBundle\Model\Customer\User|null getCustomer()
+ * @method \Shopsys\ShopBundle\Model\Administrator\Administrator|null getCreatedAsAdministrator()
*/
class Order extends BaseOrder
{
diff --git a/src/Shopsys/ShopBundle/Model/Order/OrderData.php b/src/Shopsys/ShopBundle/Model/Order/OrderData.php
index a4d287cf9..b465f26f8 100644
--- a/src/Shopsys/ShopBundle/Model/Order/OrderData.php
+++ b/src/Shopsys/ShopBundle/Model/Order/OrderData.php
@@ -6,6 +6,14 @@
use Shopsys\FrameworkBundle\Model\Order\FrontOrderData as BaseFrontOrderData;
+/**
+ * @property \Shopsys\ShopBundle\Model\Transport\Transport|null $transport
+ * @property \Shopsys\ShopBundle\Model\Order\Item\OrderItemData[] $itemsWithoutTransportAndPayment
+ * @property \Shopsys\ShopBundle\Model\Administrator\Administrator|null $createdAsAdministrator
+ * @property \Shopsys\ShopBundle\Model\Order\Item\OrderItemData|null $orderPayment
+ * @property \Shopsys\ShopBundle\Model\Order\Item\OrderItemData|null $orderTransport
+ * @method \Shopsys\ShopBundle\Model\Order\Item\OrderItemData[] getNewItemsWithoutTransportAndPayment()
+ */
class OrderData extends BaseFrontOrderData
{
/**
diff --git a/src/Shopsys/ShopBundle/Model/Order/OrderDataMapper.php b/src/Shopsys/ShopBundle/Model/Order/OrderDataMapper.php
index 6a61cd255..ff8bfb38a 100644
--- a/src/Shopsys/ShopBundle/Model/Order/OrderDataMapper.php
+++ b/src/Shopsys/ShopBundle/Model/Order/OrderDataMapper.php
@@ -10,6 +10,9 @@
use Shopsys\ShopBundle\Model\Country\CountryFacade;
use Shopsys\ShopBundle\Model\Transport\Transport;
+/**
+ * @property \Shopsys\ShopBundle\Model\Order\OrderDataFactory $orderDataFactory
+ */
class OrderDataMapper extends BaseOrderDataMapper
{
/**
@@ -18,7 +21,7 @@ class OrderDataMapper extends BaseOrderDataMapper
protected $countryFacade;
/**
- * @param \Shopsys\FrameworkBundle\Model\Order\OrderDataFactoryInterface $orderDataFactory
+ * @param \Shopsys\ShopBundle\Model\Order\OrderDataFactory $orderDataFactory
* @param \Shopsys\ShopBundle\Model\Country\CountryFacade $countryFacade
*/
public function __construct(OrderDataFactoryInterface $orderDataFactory, CountryFacade $countryFacade)
diff --git a/src/Shopsys/ShopBundle/Model/Order/OrderFacade.php b/src/Shopsys/ShopBundle/Model/Order/OrderFacade.php
index 197777931..ad1f856e2 100644
--- a/src/Shopsys/ShopBundle/Model/Order/OrderFacade.php
+++ b/src/Shopsys/ShopBundle/Model/Order/OrderFacade.php
@@ -9,6 +9,28 @@
/**
* @property \Shopsys\ShopBundle\Model\Order\OrderRepository $orderRepository
+ * @property \Shopsys\ShopBundle\Model\Customer\CustomerFacade $customerFacade
+ * @property \Shopsys\ShopBundle\Model\Customer\CurrentCustomer $currentCustomer
+ * @property \Shopsys\ShopBundle\Model\Order\OrderFactory $orderFactory
+ * @method __construct(\Doctrine\ORM\EntityManagerInterface $em, \Shopsys\FrameworkBundle\Model\Order\OrderNumberSequenceRepository $orderNumberSequenceRepository, \Shopsys\ShopBundle\Model\Order\OrderRepository $orderRepository, \Shopsys\FrameworkBundle\Model\Order\OrderUrlGenerator $orderUrlGenerator, \Shopsys\FrameworkBundle\Model\Order\Status\OrderStatusRepository $orderStatusRepository, \Shopsys\FrameworkBundle\Model\Order\Mail\OrderMailFacade $orderMailFacade, \Shopsys\FrameworkBundle\Model\Order\OrderHashGeneratorRepository $orderHashGeneratorRepository, \Shopsys\FrameworkBundle\Component\Setting\Setting $setting, \Shopsys\FrameworkBundle\Model\Localization\Localization $localization, \Shopsys\FrameworkBundle\Model\Administrator\Security\AdministratorFrontSecurityFacade $administratorFrontSecurityFacade, \Shopsys\FrameworkBundle\Model\Order\PromoCode\CurrentPromoCodeFacade $currentPromoCodeFacade, \Shopsys\FrameworkBundle\Model\Cart\CartFacade $cartFacade, \Shopsys\ShopBundle\Model\Customer\CustomerFacade $customerFacade, \Shopsys\ShopBundle\Model\Customer\CurrentCustomer $currentCustomer, \Shopsys\FrameworkBundle\Model\Order\Preview\OrderPreviewFactory $orderPreviewFactory, \Shopsys\FrameworkBundle\Model\Order\Item\OrderProductFacade $orderProductFacade, \Shopsys\FrameworkBundle\Model\Heureka\HeurekaFacade $heurekaFacade, \Shopsys\FrameworkBundle\Component\Domain\Domain $domain, \Shopsys\ShopBundle\Model\Order\OrderFactory $orderFactory, \Shopsys\FrameworkBundle\Model\Order\OrderPriceCalculation $orderPriceCalculation, \Shopsys\FrameworkBundle\Model\Order\Item\OrderItemPriceCalculation $orderItemPriceCalculation, \Shopsys\FrameworkBundle\Model\Order\FrontOrderDataMapper $frontOrderDataMapper, \Shopsys\FrameworkBundle\Twig\NumberFormatterExtension $numberFormatterExtension, \Shopsys\FrameworkBundle\Model\Payment\PaymentPriceCalculation $paymentPriceCalculation, \Shopsys\FrameworkBundle\Model\Transport\TransportPriceCalculation $transportPriceCalculation, \Shopsys\FrameworkBundle\Model\Order\Item\OrderItemFactoryInterface $orderItemFactory)
+ * @method \Shopsys\ShopBundle\Model\Order\Order createOrder(\Shopsys\ShopBundle\Model\Order\OrderData $orderData, \Shopsys\FrameworkBundle\Model\Order\Preview\OrderPreview $orderPreview, \Shopsys\ShopBundle\Model\Customer\User|null $user)
+ * @method \Shopsys\ShopBundle\Model\Order\Order createOrderFromFront(\Shopsys\ShopBundle\Model\Order\OrderData $orderData)
+ * @method sendHeurekaOrderInfo(\Shopsys\ShopBundle\Model\Order\Order $order, bool $disallowHeurekaVerifiedByCustomers)
+ * @method \Shopsys\ShopBundle\Model\Order\Order edit(int $orderId, \Shopsys\ShopBundle\Model\Order\OrderData $orderData)
+ * @method prefillFrontOrderData(\Shopsys\ShopBundle\Model\Order\FrontOrderData $orderData, \Shopsys\ShopBundle\Model\Customer\User $user)
+ * @method \Shopsys\ShopBundle\Model\Order\Order[] getCustomerOrderList(\Shopsys\ShopBundle\Model\Customer\User $user)
+ * @method \Shopsys\ShopBundle\Model\Order\Order[] getOrderListForEmailByDomainId(string $email, int $domainId)
+ * @method \Shopsys\ShopBundle\Model\Order\Order getById(int $orderId)
+ * @method \Shopsys\ShopBundle\Model\Order\Order getByUrlHashAndDomain(string $urlHash, int $domainId)
+ * @method \Shopsys\ShopBundle\Model\Order\Order getByOrderNumberAndUser(string $orderNumber, \Shopsys\ShopBundle\Model\Customer\User $user)
+ * @method setOrderDataAdministrator(\Shopsys\ShopBundle\Model\Order\OrderData $orderData)
+ * @method fillOrderItems(\Shopsys\ShopBundle\Model\Order\Order $order, \Shopsys\FrameworkBundle\Model\Order\Preview\OrderPreview $orderPreview)
+ * @method fillOrderProducts(\Shopsys\ShopBundle\Model\Order\Order $order, \Shopsys\FrameworkBundle\Model\Order\Preview\OrderPreview $orderPreview, string $locale)
+ * @method fillOrderPayment(\Shopsys\ShopBundle\Model\Order\Order $order, \Shopsys\FrameworkBundle\Model\Order\Preview\OrderPreview $orderPreview, string $locale)
+ * @method fillOrderTransport(\Shopsys\ShopBundle\Model\Order\Order $order, \Shopsys\FrameworkBundle\Model\Order\Preview\OrderPreview $orderPreview, string $locale)
+ * @method fillOrderRounding(\Shopsys\ShopBundle\Model\Order\Order $order, \Shopsys\FrameworkBundle\Model\Order\Preview\OrderPreview $orderPreview, string $locale)
+ * @method refreshOrderItemsWithoutTransportAndPayment(\Shopsys\ShopBundle\Model\Order\Order $order, \Shopsys\ShopBundle\Model\Order\OrderData $orderData)
+ * @method calculateOrderItemDataPrices(\Shopsys\ShopBundle\Model\Order\Item\OrderItemData $orderItemData)
*/
class OrderFacade extends BaseOrderFacade
{
diff --git a/src/Shopsys/ShopBundle/Model/Order/OrderFactory.php b/src/Shopsys/ShopBundle/Model/Order/OrderFactory.php
index 935d27d23..079b7a363 100644
--- a/src/Shopsys/ShopBundle/Model/Order/OrderFactory.php
+++ b/src/Shopsys/ShopBundle/Model/Order/OrderFactory.php
@@ -15,7 +15,7 @@ class OrderFactory implements OrderFactoryInterface
* @param \Shopsys\ShopBundle\Model\Order\OrderData $orderData
* @param string $orderNumber
* @param string $urlHash
- * @param \Shopsys\FrameworkBundle\Model\Customer\User|null $user
+ * @param \Shopsys\ShopBundle\Model\Customer\User|null $user
* @return \Shopsys\ShopBundle\Model\Order\Order
*/
public function create(
diff --git a/src/Shopsys/ShopBundle/Model/Order/OrderRepository.php b/src/Shopsys/ShopBundle/Model/Order/OrderRepository.php
index 8c578b4ff..f7fc65115 100644
--- a/src/Shopsys/ShopBundle/Model/Order/OrderRepository.php
+++ b/src/Shopsys/ShopBundle/Model/Order/OrderRepository.php
@@ -7,11 +7,22 @@
use Shopsys\FrameworkBundle\Model\Order\OrderRepository as BaseOrderRepository;
use Shopsys\ShopBundle\Model\Customer\BillingAddress;
+/**
+ * @method \Shopsys\ShopBundle\Model\Order\Order[] getOrdersByUserId(int $userId)
+ * @method \Shopsys\ShopBundle\Model\Order\Order|null findLastByUserId(int $userId)
+ * @method \Shopsys\ShopBundle\Model\Order\Order|null findById(int $id)
+ * @method \Shopsys\ShopBundle\Model\Order\Order getById(int $id)
+ * @method \Shopsys\ShopBundle\Model\Order\Order[] getCustomerOrderList(\Shopsys\ShopBundle\Model\Customer\User $user)
+ * @method \Shopsys\ShopBundle\Model\Order\Order[] getOrderListForEmailByDomainId(string $email, int $domainId)
+ * @method \Shopsys\ShopBundle\Model\Order\Order getByUrlHashAndDomain(string $urlHash, int $domainId)
+ * @method \Shopsys\ShopBundle\Model\Order\Order getByOrderNumberAndUser(string $orderNumber, \Shopsys\ShopBundle\Model\Customer\User $user)
+ * @method \Shopsys\ShopBundle\Model\Order\Order|null findByUrlHashIncludingDeletedOrders(string $urlHash)
+ */
class OrderRepository extends BaseOrderRepository
{
/**
* @param \Shopsys\ShopBundle\Model\Customer\User[] $users
- * @return \Shopsys\FrameworkBundle\Model\Order\Order[]
+ * @return \Shopsys\ShopBundle\Model\Order\Order[]
*/
public function getOrderListByCustomers(array $users)
{
@@ -30,7 +41,7 @@ public function getOrderListByCustomers(array $users)
/**
* @param string $orderNumber
* @param \Shopsys\ShopBundle\Model\Customer\BillingAddress $billingAddress
- * @return \Shopsys\FrameworkBundle\Model\Order\Order
+ * @return \Shopsys\ShopBundle\Model\Order\Order
*/
public function getByOrderNumberAndBillingAddress($orderNumber, BillingAddress $billingAddress)
{
diff --git a/src/Shopsys/ShopBundle/Model/Product/Pricing/ProductPriceCalculationForUser.php b/src/Shopsys/ShopBundle/Model/Product/Pricing/ProductPriceCalculationForUser.php
index 8ca4d7fb5..48b01db53 100644
--- a/src/Shopsys/ShopBundle/Model/Product/Pricing/ProductPriceCalculationForUser.php
+++ b/src/Shopsys/ShopBundle/Model/Product/Pricing/ProductPriceCalculationForUser.php
@@ -71,7 +71,7 @@ public function calculatePriceForCurrentUser(Product $product)
/**
* @param \Shopsys\ShopBundle\Model\Product\Product $product
* @param int $domainId
- * @param \Shopsys\FrameworkBundle\Model\Customer\User|null $user
+ * @param \Shopsys\ShopBundle\Model\Customer\User|null $user
* @return \Shopsys\FrameworkBundle\Model\Product\Pricing\ProductPrice
*/
public function calculatePriceForUserAndDomainId(Product $product, $domainId, ?User $user = null)
diff --git a/src/Shopsys/ShopBundle/Model/Product/Product.php b/src/Shopsys/ShopBundle/Model/Product/Product.php
index aeadcc726..c20ee75f9 100644
--- a/src/Shopsys/ShopBundle/Model/Product/Product.php
+++ b/src/Shopsys/ShopBundle/Model/Product/Product.php
@@ -11,6 +11,23 @@
/**
* @ORM\Table(name="products")
* @ORM\Entity
+ * @property \Shopsys\ShopBundle\Model\Product\Product[]|\Doctrine\Common\Collections\Collection $variants
+ * @property \Shopsys\ShopBundle\Model\Product\Product|null $mainVariant
+ * @method static \Shopsys\ShopBundle\Model\Product\Product create(\Shopsys\ShopBundle\Model\Product\ProductData $productData)
+ * @method static \Shopsys\ShopBundle\Model\Product\Product createMainVariant(\Shopsys\ShopBundle\Model\Product\ProductData $productData, \Shopsys\ShopBundle\Model\Product\Product[] $variants)
+ * @method setAvailabilityAndStock(\Shopsys\ShopBundle\Model\Product\ProductData $productData)
+ * @method \Shopsys\ShopBundle\Model\Category\Category[][] getCategoriesIndexedByDomainId()
+ * @method \Shopsys\ShopBundle\Model\Product\Product getMainVariant()
+ * @method addVariant(\Shopsys\ShopBundle\Model\Product\Product $variant)
+ * @method addVariants(\Shopsys\ShopBundle\Model\Product\Product[] $variants)
+ * @method \Shopsys\ShopBundle\Model\Product\Product[] getVariants()
+ * @method setMainVariant(\Shopsys\ShopBundle\Model\Product\Product $mainVariant)
+ * @method setTranslations(\Shopsys\ShopBundle\Model\Product\ProductData $productData)
+ * @method setDomains(\Shopsys\ShopBundle\Model\Product\ProductData $productData)
+ * @method createDomains(\Shopsys\ShopBundle\Model\Product\ProductData $productData)
+ * @method refreshVariants(\Shopsys\ShopBundle\Model\Product\Product[] $currentVariants)
+ * @method addNewVariants(\Shopsys\ShopBundle\Model\Product\Product[] $currentVariants)
+ * @method unsetRemovedVariants(\Shopsys\ShopBundle\Model\Product\Product[] $currentVariants)
*/
class Product extends BaseProduct
{
diff --git a/src/Shopsys/ShopBundle/Model/Product/ProductData.php b/src/Shopsys/ShopBundle/Model/Product/ProductData.php
index d41c863cc..709f66fb1 100644
--- a/src/Shopsys/ShopBundle/Model/Product/ProductData.php
+++ b/src/Shopsys/ShopBundle/Model/Product/ProductData.php
@@ -6,6 +6,11 @@
use Shopsys\FrameworkBundle\Model\Product\ProductData as BaseProductData;
+/**
+ * @property \Shopsys\ShopBundle\Model\Category\Category[][] $categoriesByDomainId
+ * @property \Shopsys\ShopBundle\Model\Product\Product[] $accessories
+ * @property \Shopsys\ShopBundle\Model\Product\Product[] $variants
+ */
class ProductData extends BaseProductData
{
/**
diff --git a/src/Shopsys/ShopBundle/Model/Transport/Transport.php b/src/Shopsys/ShopBundle/Model/Transport/Transport.php
index 44b3fe398..b6eb7c052 100644
--- a/src/Shopsys/ShopBundle/Model/Transport/Transport.php
+++ b/src/Shopsys/ShopBundle/Model/Transport/Transport.php
@@ -11,6 +11,9 @@
/**
* @ORM\Table(name="transports")
* @ORM\Entity
+ * @method setTranslations(\Shopsys\ShopBundle\Model\Transport\TransportData $transportData)
+ * @method setDomains(\Shopsys\ShopBundle\Model\Transport\TransportData $transportData)
+ * @method createDomains(\Shopsys\ShopBundle\Model\Transport\TransportData $transportData)
*/
class Transport extends BaseTransport
{
diff --git a/src/Shopsys/ShopBundle/Resources/config/services.yml b/src/Shopsys/ShopBundle/Resources/config/services.yml
index d04ba3abf..2302f00e9 100644
--- a/src/Shopsys/ShopBundle/Resources/config/services.yml
+++ b/src/Shopsys/ShopBundle/Resources/config/services.yml
@@ -35,6 +35,10 @@ services:
class: Shopsys\ShopBundle\Controller\Admin\CustomerController
tags: ['controller.service_arguments']
+ Shopsys\FrameworkBundle\Controller\Admin\PromoCodeController:
+ arguments:
+ $useInlineEditation: false
+
Shopsys\ShopBundle\Form\Front\Order\DomainAwareOrderFlowFactory: ~
Shopsys\FrameworkBundle\Model\Order\Item\OrderItemDataFactoryInterface: '@Shopsys\ShopBundle\Model\Order\Item\OrderItemDataFactory'
@@ -79,9 +83,8 @@ services:
twig_cache_extension.cache_provider:
class: Doctrine\Common\Cache\RedisCache
- factory: 'Shopsys\FrameworkBundle\Component\Doctrine\Cache\RedisCacheFactory:create'
- arguments:
- - '@snc_redis.twig'
+ calls:
+ - { method: setRedis, arguments: ['@snc_redis.twig'] }
twig_cache_extension.cache_strategy:
class: Shopsys\ShopBundle\Twig\CurrentDomainLifetimeCacheStrategy
@@ -141,12 +144,6 @@ services:
Shopsys\FrameworkBundle\Model\Customer\CurrentCustomer:
alias: Shopsys\ShopBundle\Model\Customer\CurrentCustomer
- Shopsys\ShopBundle\DataFixtures\ProductDataFixtureReferenceInjector: ~
-
- Shopsys\ShopBundle\DataFixtures\Demo\ProductDataFixtureLoader: ~
-
- Shopsys\ShopBundle\DataFixtures\Demo\ProductParametersFixtureLoader: ~
-
Shopsys\ShopBundle\DataFixtures\Performance\CategoryDataFixture:
arguments:
- "%shopsys.performance_data.category.counts_by_level%"
@@ -171,14 +168,6 @@ services:
- '%shopsys.domain_images_dir%'
tags: ['doctrine.fixture.orm']
- Shopsys\ShopBundle\DataFixtures\Demo\ProductDataFixtureCsvReader:
- arguments:
- - '%shopsys.data_fixtures.resource_products_filepath%'
-
- Shopsys\ShopBundle\DataFixtures\Demo\UserDataFixtureLoader:
- arguments:
- - '%shopsys.data_fixtures.resource_customers_filepath%'
-
Shopsys\FrameworkBundle\Model\Administrator\AdministratorRepository: '@Shopsys\ShopBundle\Model\Administrator\AdministratorRepository'
Shopsys\FrameworkBundle\Model\Administrator\AdministratorFacade: '@Shopsys\ShopBundle\Model\Administrator\AdministratorFacade'
diff --git a/src/Shopsys/ShopBundle/Resources/config/services_test.yml b/src/Shopsys/ShopBundle/Resources/config/services_test.yml
index 6b9c5c1e3..2d7e4b00d 100644
--- a/src/Shopsys/ShopBundle/Resources/config/services_test.yml
+++ b/src/Shopsys/ShopBundle/Resources/config/services_test.yml
@@ -4,12 +4,10 @@ services:
autoconfigure: true
public: true
- CommerceGuys\Intl\NumberFormat\NumberFormatRepository: ~
-
- Shopsys\FrameworkBundle\Component\Localization\DateTimeFormatter:
- factory: ['@Shopsys\FrameworkBundle\Model\Localization\CustomDateTimeFormatterFactory', create]
+ Shopsys\ShopBundle\:
+ resource: '../../**/*{Factory}.php'
- Shopsys\FrameworkBundle\Model\Localization\IntlCurrencyRepository: ~
+ CommerceGuys\Intl\NumberFormat\NumberFormatRepository: ~
Shopsys\FrameworkBundle\Component\EntityExtension\EntityNameResolver:
class: Tests\ShopBundle\Functional\EntityExtension\OverwritableEntityNameResolver
@@ -23,6 +21,8 @@ services:
Symfony\Component\Filesystem\Filesystem: ~
+ Tests\ShopBundle\Functional\EntityExtension\OverwritableEntityNameResolver: '@Shopsys\FrameworkBundle\Component\EntityExtension\EntityNameResolver'
+
joschi127_doctrine_entity_override.event_subscriber.load_orm_metadata:
class: Tests\ShopBundle\Functional\EntityExtension\OverwritableLoadORMMetadataSubscriber
arguments:
@@ -33,6 +33,8 @@ services:
League\Flysystem\FilesystemInterface: '@main_filesystem'
+ Shopsys\FrameworkBundle\Model\Article\ArticleFactory: ~
+
Shopsys\FrameworkBundle\Model\Category\CategoryDataFactoryInterface:
alias: Shopsys\ShopBundle\Model\Category\CategoryDataFactory
@@ -108,3 +110,23 @@ services:
Shopsys\FrameworkBundle\Model\Administrator\AdministratorRepository: '@Shopsys\ShopBundle\Model\Administrator\AdministratorRepository'
Shopsys\FrameworkBundle\Model\Administrator\AdministratorFacade: '@Shopsys\ShopBundle\Model\Administrator\AdministratorFacade'
+
+ Shopsys\FrameworkBundle\Model\Localization\Localization:
+ arguments:
+ $adminLocale: '%shopsys.admin_locale%'
+
+ Shopsys\FrameworkBundle\Component\Router\DomainRouterFactory:
+ arguments: ['%router.resource%']
+
+ Shopsys\FrameworkBundle\Component\CurrencyFormatter\CurrencyFormatterFactory: ~
+
+ CommerceGuys\Intl\Currency\CurrencyRepositoryInterface:
+ class: Shopsys\FrameworkBundle\Model\Localization\IntlCurrencyRepository
+
+ Shopsys\FrameworkBundle\Twig\NumberFormatterExtension: ~
+
+ Shopsys\FrameworkBundle\Model\Administration\AdministrationFacade: ~
+
+ Shopsys\FrameworkBundle\Model\Pricing\PriceConverter: ~
+
+ Shopsys\FrameworkBundle\Model\Pricing\Rounding: ~
diff --git a/src/Shopsys/ShopBundle/Resources/scripts/frontend/components/ajaxMoreLoader.js b/src/Shopsys/ShopBundle/Resources/scripts/frontend/components/ajaxMoreLoader.js
index fb6fd3600..debbe06e8 100644
--- a/src/Shopsys/ShopBundle/Resources/scripts/frontend/components/ajaxMoreLoader.js
+++ b/src/Shopsys/ShopBundle/Resources/scripts/frontend/components/ajaxMoreLoader.js
@@ -63,7 +63,7 @@
paginationToItem += $nextItems.length;
$paginationToItemSpan.text(paginationToItem);
updateLoadMoreButton();
-
+ Shopsys.lazyLoadCall.inContainer($currentList);
Shopsys.register.registerNewContent($nextItems);
}
});
diff --git a/src/Shopsys/ShopBundle/Resources/scripts/frontend/lazyLoadInit.js b/src/Shopsys/ShopBundle/Resources/scripts/frontend/lazyLoadInit.js
new file mode 100644
index 000000000..be76c6d35
--- /dev/null
+++ b/src/Shopsys/ShopBundle/Resources/scripts/frontend/lazyLoadInit.js
@@ -0,0 +1,18 @@
+(function ($) {
+ /* eslint-disable no-new */
+ new MiniLazyload({
+ rootMargin: '500px',
+ threshold: 0.5,
+ placeholder: '/assets/frontend/images/noimage.png'
+ }, '', MiniLazyload.IGNORE_NATIVE_LAZYLOAD);
+
+ Shopsys = window.Shopsys || {};
+ Shopsys.lazyLoadCall = Shopsys.lazyLoadCall || {};
+
+ Shopsys.lazyLoadCall.inContainer = function (container) {
+ $(container).find('[loading=lazy]').each(function () {
+ $(this).attr('src', $(this).data('src')).addClass('loaded');
+ });
+ };
+
+})(jQuery);
diff --git a/src/Shopsys/ShopBundle/Resources/scripts/frontend/plugins/minilazyload.min.js b/src/Shopsys/ShopBundle/Resources/scripts/frontend/plugins/minilazyload.min.js
new file mode 100644
index 000000000..7c7645184
--- /dev/null
+++ b/src/Shopsys/ShopBundle/Resources/scripts/frontend/plugins/minilazyload.min.js
@@ -0,0 +1 @@
+var MiniLazyload=function(){"use strict";function s(){var i=this,e=0= 15 && (b = !(g = !1)); var y = w && (o || g && (v == null || v < 12.11)); var C = m || x && k >= 9; function S (e) { return new RegExp('(^|\\s)' + e + '(?:$|\\s)\\s*'); } var T; var L = function (e, t) { var r = e.className; var n = S(t).exec(r); if (n) { var i = r.slice(n.index + n[0].length); e.className = r.slice(0, n.index) + (i ? n[1] + i : ''); } }; function M (e) { for (var t = e.childNodes.length; t > 0; --t)e.removeChild(e.firstChild); return e; } function A (e, t) { return M(e).appendChild(t); } function O (e, t, r, n) { var i = document.createElement(e); if (r && (i.className = r), n && (i.style.cssText = n), typeof t == 'string')i.appendChild(document.createTextNode(t)); else if (t) for (var o = 0; o < t.length; ++o)i.appendChild(t[o]); return i; } function N (e, t, r, n) { var i = O(e, t, r, n); return i.setAttribute('role', 'presentation'), i; } function z (e, t) { if (t.nodeType == 3 && (t = t.parentNode), e.contains) return e.contains(t); do { if (t.nodeType == 11 && (t = t.host), t == e) return !0; } while (t = t.parentNode); } function W () { var t; try { t = document.activeElement; } catch (e) { t = document.body || null; } for (;t && t.shadowRoot && t.shadowRoot.activeElement;)t = t.shadowRoot.activeElement; return t; } function D (e, t) { var r = e.className; S(t).test(r) || (e.className += (r ? ' ' : '') + t); } function H (e, t) { for (var r = e.split(' '), n = 0; n < r.length; n++)r[n] && !S(r[n]).test(t) && (t += ' ' + r[n]); return t; }T = document.createRange ? function (e, t, r, n) { var i = document.createRange(); return i.setEnd(n || e, r), i.setStart(e, t), i; } : function (e, t, r) { var n = document.body.createTextRange(); try { n.moveToElementText(e.parentNode); } catch (e) { return n; } return n.collapse(!0), n.moveEnd('character', r), n.moveStart('character', t), n; }; var P = function (e) { e.select(); }; function E (e) { var t = Array.prototype.slice.call(arguments, 1); return function () { return e.apply(null, t); }; } function I (e, t, r) { for (var n in t = t || {}, e)!e.hasOwnProperty(n) || !1 === r && t.hasOwnProperty(n) || (t[n] = e[n]); return t; } function F (e, t, r, n, i) { t == null && (t = e.search(/[^\s\u00a0]/)) == -1 && (t = e.length); for (var o = n || 0, a = i || 0; ;) { var l = e.indexOf('\t', o); if (l < 0 || t <= l) return a + (t - o); a += l - o, a += r - a % r, o = l + 1; } }u ? P = function (e) { e.selectionStart = 0, e.selectionEnd = e.value.length; } : x && (P = function (e) { try { e.select(); } catch (e) {} }); var R = function () { this.id = null; }; function j (e, t) { for (var r = 0; r < e.length; ++r) if (e[r] == t) return r; return -1; }R.prototype.set = function (e, t) { clearTimeout(this.id), this.id = setTimeout(t, e); }; var B = 30; var K = { toString: function () { return 'CodeMirror.Pass'; } }; var q = { scroll: !1 }; var U = { origin: '*mouse' }; var V = { origin: '+move' }; function G (e, t, r) { for (var n = 0, i = 0; ;) { var o = e.indexOf('\t', n); o == -1 && (o = e.length); var a = o - n; if (o == e.length || t <= i + a) return n + Math.min(a, t - i); if (i += o - n, n = o + 1, t <= (i += r - i % r)) return n; } } var _ = ['']; function $ (e) { for (;_.length <= e;)_.push(X(_) + ' '); return _[e]; } function X (e) { return e[e.length - 1]; } function Y (e, t) { for (var r = [], n = 0; n < e.length; n++)r[n] = t(e[n], n); return r; } function Z () {} function Q (e, t) { var r; return r = Object.create ? Object.create(e) : (Z.prototype = e, new Z()), t && I(t, r), r; } var J = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; function ee (e) { return /\w/.test(e) || e > '' && (e.toUpperCase() != e.toLowerCase() || J.test(e)); } function te (e, t) { return t ? !!(t.source.indexOf('\\w') > -1 && ee(e)) || t.test(e) : ee(e); } function re (e) { for (var t in e) if (e.hasOwnProperty(t) && e[t]) return !1; return !0; } var ne = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/; function ie (e) { return e.charCodeAt(0) >= 768 && ne.test(e); } function oe (e, t, r) { for (;(r < 0 ? t > 0 : t < e.length) && ie(e.charAt(t));)t += r; return t; } function ae (e, t, r) { for (var n = r < t ? -1 : 1; ;) { if (t == r) return t; var i = (t + r) / 2; var o = n < 0 ? Math.ceil(i) : Math.floor(i); if (o == t) return e(o) ? t : r; e(o) ? r = o : t = o + n; } } function le (e, t, r) { var n = this; this.input = r, n.scrollbarFiller = O('div', null, 'CodeMirror-scrollbar-filler'), n.scrollbarFiller.setAttribute('cm-not-content', 'true'), n.gutterFiller = O('div', null, 'CodeMirror-gutter-filler'), n.gutterFiller.setAttribute('cm-not-content', 'true'), n.lineDiv = N('div', null, 'CodeMirror-code'), n.selectionDiv = O('div', null, null, 'position: relative; z-index: 1'), n.cursorDiv = O('div', null, 'CodeMirror-cursors'), n.measure = O('div', null, 'CodeMirror-measure'), n.lineMeasure = O('div', null, 'CodeMirror-measure'), n.lineSpace = N('div', [n.measure, n.lineMeasure, n.selectionDiv, n.cursorDiv, n.lineDiv], null, 'position: relative; outline: none'); var i = N('div', [n.lineSpace], 'CodeMirror-lines'); n.mover = O('div', [i], null, 'position: relative'), n.sizer = O('div', [n.mover], 'CodeMirror-sizer'), n.sizerWidth = null, n.heightForcer = O('div', null, null, 'position: absolute; height: ' + B + 'px; width: 1px;'), n.gutters = O('div', null, 'CodeMirror-gutters'), n.lineGutter = null, n.scroller = O('div', [n.sizer, n.heightForcer, n.gutters], 'CodeMirror-scroll'), n.scroller.setAttribute('tabIndex', '-1'), n.wrapper = O('div', [n.scrollbarFiller, n.gutterFiller, n.scroller], 'CodeMirror'), x && k < 8 && (n.gutters.style.zIndex = -1, n.scroller.style.paddingRight = 0), b || m && f || (n.scroller.draggable = !0), e && (e.appendChild ? e.appendChild(n.wrapper) : e(n.wrapper)), n.viewFrom = n.viewTo = t.first, n.reportedViewFrom = n.reportedViewTo = t.first, n.view = [], n.renderedView = null, n.externalMeasured = null, n.viewOffset = 0, n.lastWrapHeight = n.lastWrapWidth = 0, n.updateLineNumbers = null, n.nativeBarWidth = n.barHeight = n.barWidth = 0, n.scrollbarsClipped = !1, n.lineNumWidth = n.lineNumInnerWidth = n.lineNumChars = null, n.alignWidgets = !1, n.cachedCharWidth = n.cachedTextHeight = n.cachedPaddingH = null, n.maxLine = null, n.maxLineLength = 0, n.maxLineChanged = !1, n.wheelDX = n.wheelDY = n.wheelStartX = n.wheelStartY = null, n.shift = !1, n.selForContextMenu = null, n.activeTouch = null, r.init(n); } function se (e, t) { if ((t -= e.first) < 0 || t >= e.size) throw new Error('There is no line ' + (t + e.first) + ' in the document.'); for (var r = e; !r.lines;) for (var n = 0; ;++n) { var i = r.children[n]; var o = i.chunkSize(); if (t < o) { r = i; break; }t -= o; } return r.lines[t]; } function ce (e, r, n) { var i = []; var o = r.line; return e.iter(r.line, n.line + 1, function (e) { var t = e.text; o == n.line && (t = t.slice(0, n.ch)), o == r.line && (t = t.slice(r.ch)), i.push(t), ++o; }), i; } function ue (e, t, r) { var n = []; return e.iter(t, r, function (e) { n.push(e.text); }), n; } function de (e, t) { var r = t - e.height; if (r) for (var n = e; n; n = n.parent)n.height += r; } function fe (e) { if (e.parent == null) return null; for (var t = e.parent, r = j(t.lines, e), n = t.parent; n; n = (t = n).parent) for (var i = 0; n.children[i] != t; ++i)r += n.children[i].chunkSize(); return r + t.first; } function he (e, t) { var r = e.first; e:do { for (var n = 0; n < e.children.length; ++n) { var i = e.children[n]; var o = i.height; if (t < o) { e = i; continue e; }t -= o, r += i.chunkSize(); } return r; } while (!e.lines);for (var a = 0; a < e.lines.length; ++a) { var l = e.lines[a].height; if (t < l) break; t -= l; } return r + a; } function pe (e, t) { return t >= e.first && t < e.first + e.size; } function me (e, t) { return String(e.lineNumberFormatter(t + e.firstLineNumber)); } function ge (e, t, r) { if (void 0 === r && (r = null), !(this instanceof ge)) return new ge(e, t, r); this.line = e, this.ch = t, this.sticky = r; } function ve (e, t) { return e.line - t.line || e.ch - t.ch; } function ye (e, t) { return e.sticky == t.sticky && ve(e, t) == 0; } function be (e) { return ge(e.line, e.ch); } function we (e, t) { return ve(e, t) < 0 ? t : e; } function xe (e, t) { return ve(e, t) < 0 ? e : t; } function ke (e, t) { return Math.max(e.first, Math.min(t, e.first + e.size - 1)); } function Ce (e, t) { if (t.line < e.first) return ge(e.first, 0); var r = e.first + e.size - 1; return t.line > r ? ge(r, se(e, r).text.length) : (function (e, t) { var r = e.ch; return r == null || t < r ? ge(e.line, t) : r < 0 ? ge(e.line, 0) : e; }(t, se(e, t.line).text.length)); } function Se (e, t) { for (var r = [], n = 0; n < t.length; n++)r[n] = Ce(e, t[n]); return r; } var Te = !1; var Le = !1; function Me (e, t, r) { this.marker = e, this.from = t, this.to = r; } function Ae (e, t) { if (e) for (var r = 0; r < e.length; ++r) { var n = e[r]; if (n.marker == t) return n; } } function Ne (e, t) { for (var r, n = 0; n < e.length; ++n)e[n] != t && (r = r || []).push(e[n]); return r; } function Oe (e, t) { if (t.full) return null; var r = pe(e, t.from.line) && se(e, t.from.line).markedSpans; var n = pe(e, t.to.line) && se(e, t.to.line).markedSpans; if (!r && !n) return null; var i = t.from.ch; var o = t.to.ch; var a = ve(t.from, t.to) == 0; var l = (function (e, t, r) { var n; if (e) for (var i = 0; i < e.length; ++i) { var o = e[i]; var a = o.marker; if (o.from == null || (a.inclusiveLeft ? o.from <= t : o.from < t) || o.from == t && a.type == 'bookmark' && (!r || !o.marker.insertLeft)) { var l = o.to == null || (a.inclusiveRight ? o.to >= t : o.to > t); (n = n || []).push(new Me(a, o.from, l ? null : o.to)); } } return n; }(r, i, a)); var s = (function (e, t, r) { var n; if (e) for (var i = 0; i < e.length; ++i) { var o = e[i]; var a = o.marker; if (o.to == null || (a.inclusiveRight ? o.to >= t : o.to > t) || o.from == t && a.type == 'bookmark' && (!r || o.marker.insertLeft)) { var l = o.from == null || (a.inclusiveLeft ? o.from <= t : o.from < t); (n = n || []).push(new Me(a, l ? null : o.from - t, o.to == null ? null : o.to - t)); } } return n; }(n, o, a)); var c = t.text.length == 1; var u = X(t.text).length + (c ? i : 0); if (l) for (var d = 0; d < l.length; ++d) { var f = l[d]; if (f.to == null) { var h = Ae(s, f.marker); h ? c && (f.to = h.to == null ? null : h.to + u) : f.to = i; } } if (s) for (var p = 0; p < s.length; ++p) { var m = s[p]; if (m.to != null && (m.to += u), m.from == null)Ae(l, m.marker) || (m.from = u, c && (l = l || []).push(m)); else m.from += u, c && (l = l || []).push(m); }l = l && ze(l), s && s != l && (s = ze(s)); var g = [l]; if (!c) { var v; var y = t.text.length - 2; if (y > 0 && l) for (var b = 0; b < l.length; ++b)l[b].to == null && (v = v || []).push(new Me(l[b].marker, null, null)); for (var w = 0; w < y; ++w)g.push(v); g.push(s); } return g; } function ze (e) { for (var t = 0; t < e.length; ++t) { var r = e[t]; r.from != null && r.from == r.to && !1 !== r.marker.clearWhenEmpty && e.splice(t--, 1); } return e.length ? e : null; } function We (e) { var t = e.markedSpans; if (t) { for (var r = 0; r < t.length; ++r)t[r].marker.detachLine(e); e.markedSpans = null; } } function De (e, t) { if (t) { for (var r = 0; r < t.length; ++r)t[r].marker.attachLine(e); e.markedSpans = t; } } function He (e) { return e.inclusiveLeft ? -1 : 0; } function Pe (e) { return e.inclusiveRight ? 1 : 0; } function Ee (e, t) { var r = e.lines.length - t.lines.length; if (r != 0) return r; var n = e.find(); var i = t.find(); var o = ve(n.from, i.from) || He(e) - He(t); if (o) return -o; var a = ve(n.to, i.to) || Pe(e) - Pe(t); return a || t.id - e.id; } function Ie (e, t) { var r; var n = Le && e.markedSpans; if (n) for (var i = void 0, o = 0; o < n.length; ++o)(i = n[o]).marker.collapsed && (t ? i.from : i.to) == null && (!r || Ee(r, i.marker) < 0) && (r = i.marker); return r; } function Fe (e) { return Ie(e, !0); } function Re (e) { return Ie(e, !1); } function je (e, t) { var r; var n = Le && e.markedSpans; if (n) for (var i = 0; i < n.length; ++i) { var o = n[i]; o.marker.collapsed && (o.from == null || o.from < t) && (o.to == null || o.to > t) && (!r || Ee(r, o.marker) < 0) && (r = o.marker); } return r; } function Be (e, t, r, n, i) { var o = se(e, t); var a = Le && o.markedSpans; if (a) for (var l = 0; l < a.length; ++l) { var s = a[l]; if (s.marker.collapsed) { var c = s.marker.find(0); var u = ve(c.from, r) || He(s.marker) - He(i); var d = ve(c.to, n) || Pe(s.marker) - Pe(i); if (!(u >= 0 && d <= 0 || u <= 0 && d >= 0) && (u <= 0 && (s.marker.inclusiveRight && i.inclusiveLeft ? ve(c.to, r) >= 0 : ve(c.to, r) > 0) || u >= 0 && (s.marker.inclusiveRight && i.inclusiveLeft ? ve(c.from, n) <= 0 : ve(c.from, n) < 0))) return !0; } } } function Ke (e) { for (var t; t = Fe(e);)e = t.find(-1, !0).line; return e; } function qe (e, t) { var r = se(e, t); var n = Ke(r); return r == n ? t : fe(n); } function Ue (e, t) { if (t > e.lastLine()) return t; var r; var n = se(e, t); if (!Ve(e, n)) return t; for (;r = Re(n);)n = r.find(1, !0).line; return fe(n) + 1; } function Ve (e, t) { var r = Le && t.markedSpans; if (r) for (var n = void 0, i = 0; i < r.length; ++i) if ((n = r[i]).marker.collapsed) { if (n.from == null) return !0; if (!n.marker.widgetNode && n.from == 0 && n.marker.inclusiveLeft && Ge(e, t, n)) return !0; } } function Ge (e, t, r) { if (r.to == null) { var n = r.marker.find(1, !0); return Ge(e, n.line, Ae(n.line.markedSpans, r.marker)); } if (r.marker.inclusiveRight && r.to == t.text.length) return !0; for (var i = void 0, o = 0; o < t.markedSpans.length; ++o) if ((i = t.markedSpans[o]).marker.collapsed && !i.marker.widgetNode && i.from == r.to && (i.to == null || i.to != r.from) && (i.marker.inclusiveLeft || r.marker.inclusiveRight) && Ge(e, t, i)) return !0; } function _e (e) { for (var t = 0, r = (e = Ke(e)).parent, n = 0; n < r.lines.length; ++n) { var i = r.lines[n]; if (i == e) break; t += i.height; } for (var o = r.parent; o; o = (r = o).parent) for (var a = 0; a < o.children.length; ++a) { var l = o.children[a]; if (l == r) break; t += l.height; } return t; } function $e (e) { if (e.height == 0) return 0; for (var t, r = e.text.length, n = e; t = Fe(n);) { var i = t.find(0, !0); n = i.from.line, r += i.from.ch - i.to.ch; } for (n = e; t = Re(n);) { var o = t.find(0, !0); r -= n.text.length - o.from.ch, r += (n = o.to.line).text.length - o.to.ch; } return r; } function Xe (e) { var r = e.display; var t = e.doc; r.maxLine = se(t, t.first), r.maxLineLength = $e(r.maxLine), r.maxLineChanged = !0, t.iter(function (e) { var t = $e(e); t > r.maxLineLength && (r.maxLineLength = t, r.maxLine = e); }); } var Ye = null; function Ze (e, t, r) { var n; Ye = null; for (var i = 0; i < e.length; ++i) { var o = e[i]; if (o.from < t && o.to > t) return i; o.to == t && (o.from != o.to && r == 'before' ? n = i : Ye = i), o.from == t && (o.from != o.to && r != 'before' ? n = i : Ye = i); } return n != null ? n : Ye; } var Qe; var Je; var et; var tt; var rt; var nt; var it; var ot = (Qe = 'bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN', Je = 'nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111', et = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/, tt = /[stwN]/, rt = /[LRr]/, nt = /[Lb1n]/, it = /[1n]/, function (e, t) { var r = t == 'ltr' ? 'L' : 'R'; if (e.length == 0 || t == 'ltr' && !et.test(e)) return !1; for (var n, i = e.length, o = [], a = 0; a < i; ++a)o.push((n = e.charCodeAt(a)) <= 247 ? Qe.charAt(n) : n >= 1424 && n <= 1524 ? 'R' : n >= 1536 && n <= 1785 ? Je.charAt(n - 1536) : n >= 1774 && n <= 2220 ? 'r' : n >= 8192 && n <= 8203 ? 'w' : n == 8204 ? 'b' : 'L'); for (var l = 0, s = r; l < i; ++l) { var c = o[l]; c == 'm' ? o[l] = s : s = c; } for (var u = 0, d = r; u < i; ++u) { var f = o[u]; f == '1' && d == 'r' ? o[u] = 'n' : rt.test(f) && (d = f) == 'r' && (o[u] = 'R'); } for (var h = 1, p = o[0]; h < i - 1; ++h) { var m = o[h]; m == '+' && p == '1' && o[h + 1] == '1' ? o[h] = '1' : m != ',' || p != o[h + 1] || p != '1' && p != 'n' || (o[h] = p), p = m; } for (var g = 0; g < i; ++g) { var v = o[g]; if (v == ',')o[g] = 'N'; else if (v == '%') { var y = void 0; for (y = g + 1; y < i && o[y] == '%'; ++y);for (var b = g && o[g - 1] == '!' || y < i && o[y] == '1' ? '1' : 'N', w = g; w < y; ++w)o[w] = b; g = y - 1; } } for (var x = 0, k = r; x < i; ++x) { var C = o[x]; k == 'L' && C == '1' ? o[x] = 'L' : rt.test(C) && (k = C); } for (var S = 0; S < i; ++S) if (tt.test(o[S])) { var T = void 0; for (T = S + 1; T < i && tt.test(o[T]); ++T);for (var L = (S ? o[S - 1] : r) == 'L', M = L == ((T < i ? o[T] : r) == 'L') ? L ? 'L' : 'R' : r, A = S; A < T; ++A)o[A] = M; S = T - 1; } for (var N, O = [], z = 0; z < i;) if (nt.test(o[z])) { var W = z; for (++z; z < i && nt.test(o[z]); ++z);O.push(new at(0, W, z)); } else { var D = z; var H = O.length; for (++z; z < i && o[z] != 'L'; ++z);for (var P = D; P < z;) if (it.test(o[P])) { D < P && O.splice(H, 0, new at(1, D, P)); var E = P; for (++P; P < z && it.test(o[P]); ++P);O.splice(H, 0, new at(2, E, P)), D = P; } else ++P; D < z && O.splice(H, 0, new at(1, D, z)); } return t == 'ltr' && (O[0].level == 1 && (N = e.match(/^\s+/)) && (O[0].from = N[0].length, O.unshift(new at(0, 0, N[0].length))), X(O).level == 1 && (N = e.match(/\s+$/)) && (X(O).to -= N[0].length, O.push(new at(0, i - N[0].length, i)))), t == 'rtl' ? O.reverse() : O; }); function at (e, t, r) { this.level = e, this.from = t, this.to = r; } function lt (e, t) { var r = e.order; return r == null && (r = e.order = ot(e.text, t)), r; } var st = []; var ct = function (e, t, r) { if (e.addEventListener)e.addEventListener(t, r, !1); else if (e.attachEvent)e.attachEvent('on' + t, r); else { var n = e._handlers || (e._handlers = {}); n[t] = (n[t] || st).concat(r); } }; function ut (e, t) { return e._handlers && e._handlers[t] || st; } function dt (e, t, r) { if (e.removeEventListener)e.removeEventListener(t, r, !1); else if (e.detachEvent)e.detachEvent('on' + t, r); else { var n = e._handlers; var i = n && n[t]; if (i) { var o = j(i, r); o > -1 && (n[t] = i.slice(0, o).concat(i.slice(o + 1))); } } } function ft (e, t) { var r = ut(e, t); if (r.length) for (var n = Array.prototype.slice.call(arguments, 2), i = 0; i < r.length; ++i)r[i].apply(null, n); } function ht (e, t, r) { return typeof t == 'string' && (t = { type: t, preventDefault: function () { this.defaultPrevented = !0; } }), ft(e, r || t.type, e, t), bt(t) || t.codemirrorIgnore; } function pt (e) { var t = e._handlers && e._handlers.cursorActivity; if (t) for (var r = e.curOp.cursorActivityHandlers || (e.curOp.cursorActivityHandlers = []), n = 0; n < t.length; ++n)j(r, t[n]) == -1 && r.push(t[n]); } function mt (e, t) { return ut(e, t).length > 0; } function gt (e) { e.prototype.on = function (e, t) { ct(this, e, t); }, e.prototype.off = function (e, t) { dt(this, e, t); }; } function vt (e) { e.preventDefault ? e.preventDefault() : e.returnValue = !1; } function yt (e) { e.stopPropagation ? e.stopPropagation() : e.cancelBubble = !0; } function bt (e) { return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == 0; } function wt (e) { vt(e), yt(e); } function xt (e) { return e.target || e.srcElement; } function kt (e) { var t = e.which; return t == null && (1 & e.button ? t = 1 : 2 & e.button ? t = 3 : 4 & e.button && (t = 2)), w && e.ctrlKey && t == 1 && (t = 3), t; } var Ct; var St; var Tt = (function () { if (x && k < 9) return !1; var e = O('div'); return 'draggable' in e || 'dragDrop' in e; }()); function Lt (e) { if (Ct == null) { var t = O('span', ''); A(e, O('span', [t, document.createTextNode('x')])), e.firstChild.offsetHeight != 0 && (Ct = t.offsetWidth <= 1 && t.offsetHeight > 2 && !(x && k < 8)); } var r = Ct ? O('span', '') : O('span', ' ', null, 'display: inline-block; width: 1px; margin-right: -1px'); return r.setAttribute('cm-text', ''), r; } function Mt (e) { if (St != null) return St; var t = A(e, document.createTextNode('AخA')); var r = T(t, 0, 1).getBoundingClientRect(); var n = T(t, 1, 2).getBoundingClientRect(); return M(e), !(!r || r.left == r.right) && (St = n.right - r.right < 3); } var At; var Nt = '\n\nb'.split(/\n/).length != 3 ? function (e) { for (var t = 0, r = [], n = e.length; t <= n;) { var i = e.indexOf('\n', t); i == -1 && (i = e.length); var o = e.slice(t, e.charAt(i - 1) == '\r' ? i - 1 : i); var a = o.indexOf('\r'); a != -1 ? (r.push(o.slice(0, a)), t += a + 1) : (r.push(o), t = i + 1); } return r; } : function (e) { return e.split(/\r\n?|\n/); }; var Ot = window.getSelection ? function (e) { try { return e.selectionStart != e.selectionEnd; } catch (e) { return !1; } } : function (e) { var t; try { t = e.ownerDocument.selection.createRange(); } catch (e) {} return !(!t || t.parentElement() != e) && t.compareEndPoints('StartToEnd', t) != 0; }; var zt = 'oncopy' in (At = O('div')) || (At.setAttribute('oncopy', 'return;'), typeof At.oncopy == 'function'); var Wt = null; var Dt = {}; var Ht = {}; function Pt (e) { if (typeof e == 'string' && Ht.hasOwnProperty(e))e = Ht[e]; else if (e && typeof e.name == 'string' && Ht.hasOwnProperty(e.name)) { var t = Ht[e.name]; typeof t == 'string' && (t = { name: t }), (e = Q(t, e)).name = t.name; } else { if (typeof e == 'string' && /^[\w\-]+\/[\w\-]+\+xml$/.test(e)) return Pt('application/xml'); if (typeof e == 'string' && /^[\w\-]+\/[\w\-]+\+json$/.test(e)) return Pt('application/json'); } return typeof e == 'string' ? { name: e } : e || { name: 'null' }; } function Et (e, t) { t = Pt(t); var r = Dt[t.name]; if (!r) return Et(e, 'text/plain'); var n = r(e, t); if (It.hasOwnProperty(t.name)) { var i = It[t.name]; for (var o in i)i.hasOwnProperty(o) && (n.hasOwnProperty(o) && (n['_' + o] = n[o]), n[o] = i[o]); } if (n.name = t.name, t.helperType && (n.helperType = t.helperType), t.modeProps) for (var a in t.modeProps)n[a] = t.modeProps[a]; return n; } var It = {}; function Ft (e, t) { I(t, It.hasOwnProperty(e) ? It[e] : It[e] = {}); } function Rt (e, t) { if (!0 === t) return t; if (e.copyState) return e.copyState(t); var r = {}; for (var n in t) { var i = t[n]; i instanceof Array && (i = i.concat([])), r[n] = i; } return r; } function jt (e, t) { for (var r; e.innerMode && (r = e.innerMode(t)) && r.mode != e;)t = r.state, e = r.mode; return r || { mode: e, state: t }; } function Bt (e, t, r) { return !e.startState || e.startState(t, r); } var Kt = function (e, t, r) { this.pos = this.start = 0, this.string = e, this.tabSize = t || 8, this.lastColumnPos = this.lastColumnValue = 0, this.lineStart = 0, this.lineOracle = r; }; Kt.prototype.eol = function () { return this.pos >= this.string.length; }, Kt.prototype.sol = function () { return this.pos == this.lineStart; }, Kt.prototype.peek = function () { return this.string.charAt(this.pos) || void 0; }, Kt.prototype.next = function () { if (this.pos < this.string.length) return this.string.charAt(this.pos++); }, Kt.prototype.eat = function (e) { var t = this.string.charAt(this.pos); if (typeof e == 'string' ? t == e : t && (e.test ? e.test(t) : e(t))) return ++this.pos, t; }, Kt.prototype.eatWhile = function (e) { for (var t = this.pos; this.eat(e););return this.pos > t; }, Kt.prototype.eatSpace = function () { for (var e = this.pos; /[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos; return this.pos > e; }, Kt.prototype.skipToEnd = function () { this.pos = this.string.length; }, Kt.prototype.skipTo = function (e) { var t = this.string.indexOf(e, this.pos); if (t > -1) return this.pos = t, !0; }, Kt.prototype.backUp = function (e) { this.pos -= e; }, Kt.prototype.column = function () { return this.lastColumnPos < this.start && (this.lastColumnValue = F(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue), this.lastColumnPos = this.start), this.lastColumnValue - (this.lineStart ? F(this.string, this.lineStart, this.tabSize) : 0); }, Kt.prototype.indentation = function () { return F(this.string, null, this.tabSize) - (this.lineStart ? F(this.string, this.lineStart, this.tabSize) : 0); }, Kt.prototype.match = function (e, t, r) { if (typeof e != 'string') { var n = this.string.slice(this.pos).match(e); return n && n.index > 0 ? null : (n && !1 !== t && (this.pos += n[0].length), n); } function i (e) { return r ? e.toLowerCase() : e; } if (i(this.string.substr(this.pos, e.length)) == i(e)) return !1 !== t && (this.pos += e.length), !0; }, Kt.prototype.current = function () { return this.string.slice(this.start, this.pos); }, Kt.prototype.hideFirstChars = function (e, t) { this.lineStart += e; try { return t(); } finally { this.lineStart -= e; } }, Kt.prototype.lookAhead = function (e) { var t = this.lineOracle; return t && t.lookAhead(e); }, Kt.prototype.baseToken = function () { var e = this.lineOracle; return e && e.baseToken(this.pos); }; var qt = function (e, t) { this.state = e, this.lookAhead = t; }; var Ut = function (e, t, r, n) { this.state = t, this.doc = e, this.line = r, this.maxLookAhead = n || 0, this.baseTokens = null, this.baseTokenPos = 1; }; function Vt (t, r, n, e) { var s = [t.state.modeGen]; var i = {}; er(t, r.text, t.doc.mode, n, function (e, t) { return s.push(e, t); }, i, e); for (var c = n.state, o = function (e) { n.baseTokens = s; var o = t.state.overlays[e]; var a = 1; var l = 0; n.state = !0, er(t, r.text, o.mode, n, function (e, t) { for (var r = a; l < e;) { var n = s[a]; e < n && s.splice(a, 1, e, s[a + 1], n), a += 2, l = Math.min(e, n); } if (t) if (o.opaque)s.splice(r, a - r, e, 'overlay ' + t), a = r + 2; else for (;r < a; r += 2) { var i = s[r + 1]; s[r + 1] = (i ? i + ' ' : '') + 'overlay ' + t; } }, i), n.state = c, n.baseTokens = null, n.baseTokenPos = 1; }, a = 0; a < t.state.overlays.length; ++a)o(a); return { styles: s, classes: i.bgClass || i.textClass ? i : null }; } function Gt (e, t, r) { if (!t.styles || t.styles[0] != e.state.modeGen) { var n = _t(e, fe(t)); var i = t.text.length > e.options.maxHighlightLength && Rt(e.doc.mode, n.state); var o = Vt(e, t, n); i && (n.state = i), t.stateAfter = n.save(!i), t.styles = o.styles, o.classes ? t.styleClasses = o.classes : t.styleClasses && (t.styleClasses = null), r === e.doc.highlightFrontier && (e.doc.modeFrontier = Math.max(e.doc.modeFrontier, ++e.doc.highlightFrontier)); } return t.styles; } function _t (r, n, e) { var t = r.doc; var i = r.display; if (!t.mode.startState) return new Ut(t, !0, n); var o = (function (e, t, r) { for (var n, i, o = e.doc, a = r ? -1 : t - (e.doc.mode.innerMode ? 1e3 : 100), l = t; a < l; --l) { if (l <= o.first) return o.first; var s = se(o, l - 1); var c = s.stateAfter; if (c && (!r || l + (c instanceof qt ? c.lookAhead : 0) <= o.modeFrontier)) return l; var u = F(s.text, null, e.options.tabSize); (i == null || u < n) && (i = l - 1, n = u); } return i; }(r, n, e)); var a = o > t.first && se(t, o - 1).stateAfter; var l = a ? Ut.fromSaved(t, a, o) : new Ut(t, Bt(t.mode), o); return t.iter(o, n, function (e) { $t(r, e.text, l); var t = l.line; e.stateAfter = t == n - 1 || t % 5 == 0 || t >= i.viewFrom && t < i.viewTo ? l.save() : null, l.nextLine(); }), e && (t.modeFrontier = l.line), l; } function $t (e, t, r, n) { var i = e.doc.mode; var o = new Kt(t, e.options.tabSize, r); for (o.start = o.pos = n || 0, t == '' && Xt(i, r.state); !o.eol();)Yt(i, o, r.state), o.start = o.pos; } function Xt (e, t) { if (e.blankLine) return e.blankLine(t); if (e.innerMode) { var r = jt(e, t); return r.mode.blankLine ? r.mode.blankLine(r.state) : void 0; } } function Yt (e, t, r, n) { for (var i = 0; i < 10; i++) { n && (n[0] = jt(e, r).mode); var o = e.token(t, r); if (t.pos > t.start) return o; } throw new Error('Mode ' + e.name + ' failed to advance stream.'); }Ut.prototype.lookAhead = function (e) { var t = this.doc.getLine(this.line + e); return t != null && e > this.maxLookAhead && (this.maxLookAhead = e), t; }, Ut.prototype.baseToken = function (e) { if (!this.baseTokens) return null; for (;this.baseTokens[this.baseTokenPos] <= e;) this.baseTokenPos += 2; var t = this.baseTokens[this.baseTokenPos + 1]; return { type: t && t.replace(/( |^)overlay .*/, ''), size: this.baseTokens[this.baseTokenPos] - e }; }, Ut.prototype.nextLine = function () { this.line++, this.maxLookAhead > 0 && this.maxLookAhead--; }, Ut.fromSaved = function (e, t, r) { return t instanceof qt ? new Ut(e, Rt(e.mode, t.state), r, t.lookAhead) : new Ut(e, Rt(e.mode, t), r); }, Ut.prototype.save = function (e) { var t = !1 !== e ? Rt(this.doc.mode, this.state) : this.state; return this.maxLookAhead > 0 ? new qt(t, this.maxLookAhead) : t; }; var Zt = function (e, t, r) { this.start = e.start, this.end = e.pos, this.string = e.current(), this.type = t || null, this.state = r; }; function Qt (e, t, r, n) { var i; var o; var a = e.doc; var l = a.mode; var s = se(a, (t = Ce(a, t)).line); var c = _t(e, t.line, r); var u = new Kt(s.text, e.options.tabSize, c); for (n && (o = []); (n || u.pos < t.ch) && !u.eol();)u.start = u.pos, i = Yt(l, u, c.state), n && o.push(new Zt(u, i, Rt(a.mode, c.state))); return n ? o : new Zt(u, i, c.state); } function Jt (e, t) { if (e) for (;;) { var r = e.match(/(?:^|\s+)line-(background-)?(\S+)/); if (!r) break; e = e.slice(0, r.index) + e.slice(r.index + r[0].length); var n = r[1] ? 'bgClass' : 'textClass'; t[n] == null ? t[n] = r[2] : new RegExp('(?:^|s)' + r[2] + '(?:$|s)').test(t[n]) || (t[n] += ' ' + r[2]); } return e; } function er (e, t, r, n, i, o, a) { var l = r.flattenSpans; l == null && (l = e.options.flattenSpans); var s; var c = 0; var u = null; var d = new Kt(t, e.options.tabSize, n); var f = e.options.addModeClass && [null]; for (t == '' && Jt(Xt(r, n.state), o); !d.eol();) { if (s = d.pos > e.options.maxHighlightLength ? (l = !1, a && $t(e, t, n, d.pos), d.pos = t.length, null) : Jt(Yt(r, d, n.state, f), o), f) { var h = f[0].name; h && (s = 'm-' + (s ? h + ' ' + s : h)); } if (!l || u != s) { for (;c < d.start;)i(c = Math.min(d.start, c + 5e3), u); u = s; }d.start = d.pos; } for (;c < d.pos;) { var p = Math.min(d.pos, c + 5e3); i(p, u), c = p; } } var tr = function (e, t, r) { this.text = e, De(this, t), this.height = r ? r(this) : 1; }; tr.prototype.lineNo = function () { return fe(this); }, gt(tr); var rr = {}; var nr = {}; function ir (e, t) { if (!e || /^\s*$/.test(e)) return null; var r = t.addModeClass ? nr : rr; return r[e] || (r[e] = e.replace(/\S+/g, 'cm-$&')); } function or (e, t) { var r = N('span', null, null, b ? 'padding-right: .1px' : null); var n = { pre: N('pre', [r], 'CodeMirror-line'), content: r, col: 0, pos: 0, cm: e, trailingSpace: !1, splitSpaces: (x || b) && e.getOption('lineWrapping') }; t.measure = {}; for (var i = 0; i <= (t.rest ? t.rest.length : 0); i++) { var o = i ? t.rest[i - 1] : t.line; var a = void 0; n.pos = 0, n.addToken = lr, Mt(e.display.measure) && (a = lt(o, e.doc.direction)) && (n.addToken = sr(n.addToken, a)), n.map = [], ur(o, n, Gt(e, o, t != e.display.externalMeasured && fe(o))), o.styleClasses && (o.styleClasses.bgClass && (n.bgClass = H(o.styleClasses.bgClass, n.bgClass || '')), o.styleClasses.textClass && (n.textClass = H(o.styleClasses.textClass, n.textClass || ''))), n.map.length == 0 && n.map.push(0, 0, n.content.appendChild(Lt(e.display.measure))), i == 0 ? (t.measure.map = n.map, t.measure.cache = {}) : ((t.measure.maps || (t.measure.maps = [])).push(n.map), (t.measure.caches || (t.measure.caches = [])).push({})); } if (b) { var l = n.content.lastChild; (/\bcm-tab\b/.test(l.className) || l.querySelector && l.querySelector('.cm-tab')) && (n.content.className = 'cm-tab-wrap-hack'); } return ft(e, 'renderLine', e, t.line, n.pre), n.pre.className && (n.textClass = H(n.pre.className, n.textClass || '')), n; } function ar (e) { var t = O('span', '•', 'cm-invalidchar'); return t.title = '\\u' + e.charCodeAt(0).toString(16), t.setAttribute('aria-label', t.title), t; } function lr (e, t, r, n, i, o, a) { if (t) { var l; var s = e.splitSpaces ? (function (e, t) { if (e.length > 1 && !/ {2}/.test(e)) return e; for (var r = t, n = '', i = 0; i < e.length; i++) { var o = e.charAt(i); o != ' ' || !r || i != e.length - 1 && e.charCodeAt(i + 1) != 32 || (o = ' '), n += o, r = o == ' '; } return n; }(t, e.trailingSpace)) : t; var c = e.cm.state.specialChars; var u = !1; if (c.test(t)) { l = document.createDocumentFragment(); for (var d = 0; ;) { c.lastIndex = d; var f = c.exec(t); var h = f ? f.index - d : t.length - d; if (h) { var p = document.createTextNode(s.slice(d, d + h)); x && k < 9 ? l.appendChild(O('span', [p])) : l.appendChild(p), e.map.push(e.pos, e.pos + h, p), e.col += h, e.pos += h; } if (!f) break; d += 1 + h; var m = void 0; if (f[0] == '\t') { var g = e.cm.options.tabSize; var v = g - e.col % g; (m = l.appendChild(O('span', $(v), 'cm-tab'))).setAttribute('role', 'presentation'), m.setAttribute('cm-text', '\t'), e.col += v; } else f[0] == '\r' || f[0] == '\n' ? (m = l.appendChild(O('span', f[0] == '\r' ? '␍' : '', 'cm-invalidchar'))).setAttribute('cm-text', f[0]) : ((m = e.cm.options.specialCharPlaceholder(f[0])).setAttribute('cm-text', f[0]), x && k < 9 ? l.appendChild(O('span', [m])) : l.appendChild(m)), e.col += 1; e.map.push(e.pos, e.pos + 1, m), e.pos++; } } else e.col += t.length, l = document.createTextNode(s), e.map.push(e.pos, e.pos + t.length, l), x && k < 9 && (u = !0), e.pos += t.length; if (e.trailingSpace = s.charCodeAt(t.length - 1) == 32, r || n || i || u || a) { var y = r || ''; n && (y += n), i && (y += i); var b = O('span', [l], y, a); return o && (b.title = o), e.content.appendChild(b); }e.content.appendChild(l); } } function sr (d, f) { return function (e, t, r, n, i, o, a) { r = r ? r + ' cm-force-border' : 'cm-force-border'; for (var l = e.pos, s = l + t.length; ;) { for (var c = void 0, u = 0; u < f.length && !((c = f[u]).to > l && c.from <= l); u++);if (c.to >= s) return d(e, t, r, n, i, o, a); d(e, t.slice(0, c.to - l), r, n, null, o, a), n = null, t = t.slice(c.to - l), l = c.to; } }; } function cr (e, t, r, n) { var i = !n && r.widgetNode; i && e.map.push(e.pos, e.pos + t, i), !n && e.cm.display.input.needsContentAttribute && (i = i || e.content.appendChild(document.createElement('span'))).setAttribute('cm-marker', r.id), i && (e.cm.display.input.setUneditable(i), e.content.appendChild(i)), e.pos += t, e.trailingSpace = !1; } function ur (e, t, r) { var n = e.markedSpans; var i = e.text; var o = 0; if (n) for (var a, l, s, c, u, d, f, h = i.length, p = 0, m = 1, g = '', v = 0; ;) { if (v == p) { s = c = u = d = l = '', f = null, v = 1 / 0; for (var y = [], b = void 0, w = 0; w < n.length; ++w) { var x = n[w]; var k = x.marker; k.type == 'bookmark' && x.from == p && k.widgetNode ? y.push(k) : x.from <= p && (x.to == null || x.to > p || k.collapsed && x.to == p && x.from == p) ? (x.to != null && x.to != p && v > x.to && (v = x.to, c = ''), k.className && (s += ' ' + k.className), k.css && (l = (l ? l + ';' : '') + k.css), k.startStyle && x.from == p && (u += ' ' + k.startStyle), k.endStyle && x.to == v && (b = b || []).push(k.endStyle, x.to), k.title && !d && (d = k.title), k.collapsed && (!f || Ee(f.marker, k) < 0) && (f = x)) : x.from > p && v > x.from && (v = x.from); } if (b) for (var C = 0; C < b.length; C += 2)b[C + 1] == v && (c += ' ' + b[C]); if (!f || f.from == p) for (var S = 0; S < y.length; ++S)cr(t, 0, y[S]); if (f && (f.from || 0) == p) { if (cr(t, (f.to == null ? h + 1 : f.to) - p, f.marker, f.from == null), f.to == null) return; f.to == p && (f = !1); } } if (h <= p) break; for (var T = Math.min(h, v); ;) { if (g) { var L = p + g.length; if (!f) { var M = T < L ? g.slice(0, T - p) : g; t.addToken(t, M, a ? a + s : s, u, p + M.length == v ? c : '', d, l); } if (T <= L) { g = g.slice(T - p), p = T; break; }p = L, u = ''; }g = i.slice(o, o = r[m++]), a = ir(r[m++], t.cm.options); } } else for (var A = 1; A < r.length; A += 2)t.addToken(t, i.slice(o, o = r[A]), ir(r[A + 1], t.cm.options)); } function dr (e, t, r) { this.line = t, this.rest = (function (e) { for (var t, r; t = Re(e);)e = t.find(1, !0).line, (r = r || []).push(e); return r; }(t)), this.size = this.rest ? fe(X(this.rest)) - r + 1 : 1, this.node = this.text = null, this.hidden = Ve(e, t); } function fr (e, t, r) { for (var n, i = [], o = t; o < r; o = n) { var a = new dr(e.doc, se(e.doc, o), o); n = o + a.size, i.push(a); } return i; } var hr = null; function pr (e, t) { var r = e.ownsGroup; if (r) try { !(function (e) { var t = e.delayedCallbacks; var r = 0; do { for (;r < t.length; r++)t[r].call(null); for (var n = 0; n < e.ops.length; n++) { var i = e.ops[n]; if (i.cursorActivityHandlers) for (;i.cursorActivityCalled < i.cursorActivityHandlers.length;)i.cursorActivityHandlers[i.cursorActivityCalled++].call(null, i.cm); } } while (r < t.length); }(r)); } finally { hr = null, t(r); } } var mr = null; function gr (e, t) { var r = ut(e, t); if (r.length) { var n; var i = Array.prototype.slice.call(arguments, 2); hr ? n = hr.delayedCallbacks : mr ? n = mr : (n = mr = [], setTimeout(vr, 0)); for (var o = function (e) { n.push(function () { return r[e].apply(null, i); }); }, a = 0; a < r.length; ++a)o(a); } } function vr () { var e = mr; mr = null; for (var t = 0; t < e.length; ++t)e[t](); } function yr (e, t, r, n) { for (var i = 0; i < t.changes.length; i++) { var o = t.changes[i]; o == 'text' ? xr(e, t) : o == 'gutter' ? Cr(e, t, r, n) : o == 'class' ? kr(e, t) : o == 'widget' && Sr(e, t, n); }t.changes = null; } function br (e) { return e.node == e.text && (e.node = O('div', null, null, 'position: relative'), e.text.parentNode && e.text.parentNode.replaceChild(e.node, e.text), e.node.appendChild(e.text), x && k < 8 && (e.node.style.zIndex = 2)), e.node; } function wr (e, t) { var r = e.display.externalMeasured; return r && r.line == t.line ? (e.display.externalMeasured = null, t.measure = r.measure, r.built) : or(e, t); } function xr (e, t) { var r = t.text.className; var n = wr(e, t); t.text == t.node && (t.node = n.pre), t.text.parentNode.replaceChild(n.pre, t.text), t.text = n.pre, n.bgClass != t.bgClass || n.textClass != t.textClass ? (t.bgClass = n.bgClass, t.textClass = n.textClass, kr(e, t)) : r && (t.text.className = r); } function kr (e, t) { !(function (e, t) { var r = t.bgClass ? t.bgClass + ' ' + (t.line.bgClass || '') : t.line.bgClass; if (r && (r += ' CodeMirror-linebackground'), t.background)r ? t.background.className = r : (t.background.parentNode.removeChild(t.background), t.background = null); else if (r) { var n = br(t); t.background = n.insertBefore(O('div', null, r), n.firstChild), e.display.input.setUneditable(t.background); } }(e, t)), t.line.wrapClass ? br(t).className = t.line.wrapClass : t.node != t.text && (t.node.className = ''); var r = t.textClass ? t.textClass + ' ' + (t.line.textClass || '') : t.line.textClass; t.text.className = r || ''; } function Cr (e, t, r, n) { if (t.gutter && (t.node.removeChild(t.gutter), t.gutter = null), t.gutterBackground && (t.node.removeChild(t.gutterBackground), t.gutterBackground = null), t.line.gutterClass) { var i = br(t); t.gutterBackground = O('div', null, 'CodeMirror-gutter-background ' + t.line.gutterClass, 'left: ' + (e.options.fixedGutter ? n.fixedPos : -n.gutterTotalWidth) + 'px; width: ' + n.gutterTotalWidth + 'px'), e.display.input.setUneditable(t.gutterBackground), i.insertBefore(t.gutterBackground, t.text); } var o = t.line.gutterMarkers; if (e.options.lineNumbers || o) { var a = br(t); var l = t.gutter = O('div', null, 'CodeMirror-gutter-wrapper', 'left: ' + (e.options.fixedGutter ? n.fixedPos : -n.gutterTotalWidth) + 'px'); if (e.display.input.setUneditable(l), a.insertBefore(l, t.text), t.line.gutterClass && (l.className += ' ' + t.line.gutterClass), !e.options.lineNumbers || o && o['CodeMirror-linenumbers'] || (t.lineNumber = l.appendChild(O('div', me(e.options, r), 'CodeMirror-linenumber CodeMirror-gutter-elt', 'left: ' + n.gutterLeft['CodeMirror-linenumbers'] + 'px; width: ' + e.display.lineNumInnerWidth + 'px'))), o) for (var s = 0; s < e.options.gutters.length; ++s) { var c = e.options.gutters[s]; var u = o.hasOwnProperty(c) && o[c]; u && l.appendChild(O('div', [u], 'CodeMirror-gutter-elt', 'left: ' + n.gutterLeft[c] + 'px; width: ' + n.gutterWidth[c] + 'px')); } } } function Sr (e, t, r) { t.alignable && (t.alignable = null); for (var n = t.node.firstChild, i = void 0; n; n = i)i = n.nextSibling, n.className == 'CodeMirror-linewidget' && t.node.removeChild(n); Tr(e, t, r); } function Tr (e, t, r) { if (Lr(e, t.line, t, r, !0), t.rest) for (var n = 0; n < t.rest.length; n++)Lr(e, t.rest[n], t, r, !1); } function Lr (e, t, r, n, i) { if (t.widgets) for (var o = br(r), a = 0, l = t.widgets; a < l.length; ++a) { var s = l[a]; var c = O('div', [s.node], 'CodeMirror-linewidget'); s.handleMouseEvents || c.setAttribute('cm-ignore-events', 'true'), Mr(s, c, r, n), e.display.input.setUneditable(c), i && s.above ? o.insertBefore(c, r.gutter || r.text) : o.appendChild(c), gr(s, 'redraw'); } } function Mr (e, t, r, n) { if (e.noHScroll) { (r.alignable || (r.alignable = [])).push(t); var i = n.wrapperWidth; t.style.left = n.fixedPos + 'px', e.coverGutter || (i -= n.gutterTotalWidth, t.style.paddingLeft = n.gutterTotalWidth + 'px'), t.style.width = i + 'px'; }e.coverGutter && (t.style.zIndex = 5, t.style.position = 'relative', e.noHScroll || (t.style.marginLeft = -n.gutterTotalWidth + 'px')); } function Ar (e) { if (e.height != null) return e.height; var t = e.doc.cm; if (!t) return 0; if (!z(document.body, e.node)) { var r = 'position: relative;'; e.coverGutter && (r += 'margin-left: -' + t.display.gutters.offsetWidth + 'px;'), e.noHScroll && (r += 'width: ' + t.display.wrapper.clientWidth + 'px;'), A(t.display.measure, O('div', [e.node], null, r)); } return e.height = e.node.parentNode.offsetHeight; } function Nr (e, t) { for (var r = xt(t); r != e.wrapper; r = r.parentNode) if (!r || r.nodeType == 1 && r.getAttribute('cm-ignore-events') == 'true' || r.parentNode == e.sizer && r != e.mover) return !0; } function Or (e) { return e.lineSpace.offsetTop; } function zr (e) { return e.mover.offsetHeight - e.lineSpace.offsetHeight; } function Wr (e) { if (e.cachedPaddingH) return e.cachedPaddingH; var t = A(e.measure, O('pre', 'x')); var r = window.getComputedStyle ? window.getComputedStyle(t) : t.currentStyle; var n = { left: parseInt(r.paddingLeft), right: parseInt(r.paddingRight) }; return isNaN(n.left) || isNaN(n.right) || (e.cachedPaddingH = n), n; } function Dr (e) { return B - e.display.nativeBarWidth; } function Hr (e) { return e.display.scroller.clientWidth - Dr(e) - e.display.barWidth; } function Pr (e) { return e.display.scroller.clientHeight - Dr(e) - e.display.barHeight; } function Er (e, t, r) { if (e.line == t) return { map: e.measure.map, cache: e.measure.cache }; for (var n = 0; n < e.rest.length; n++) if (e.rest[n] == t) return { map: e.measure.maps[n], cache: e.measure.caches[n] }; for (var i = 0; i < e.rest.length; i++) if (fe(e.rest[i]) > r) return { map: e.measure.maps[i], cache: e.measure.caches[i], before: !0 }; } function Ir (e, t, r, n) { return jr(e, Rr(e, t), r, n); } function Fr (e, t) { if (t >= e.display.viewFrom && t < e.display.viewTo) return e.display.view[gn(e, t)]; var r = e.display.externalMeasured; return r && t >= r.lineN && t < r.lineN + r.size ? r : void 0; } function Rr (e, t) { var r = fe(t); var n = Fr(e, r); n && !n.text ? n = null : n && n.changes && (yr(e, n, r, dn(e)), e.curOp.forceUpdate = !0); var i = Er(n = n || (function (e, t) { var r = fe(t = Ke(t)); var n = e.display.externalMeasured = new dr(e.doc, t, r); n.lineN = r; var i = n.built = or(e, n); return n.text = i.pre, A(e.display.lineMeasure, i.pre), n; }(e, t)), t, r); return { line: t, view: n, rect: null, map: i.map, cache: i.cache, before: i.before, hasHeights: !1 }; } function jr (e, t, r, n, i) { t.before && (r = -1); var o; var a = r + (n || ''); return t.cache.hasOwnProperty(a) ? o = t.cache[a] : (t.rect || (t.rect = t.view.text.getBoundingClientRect()), t.hasHeights || ((function (e, t, r) { var n = e.options.lineWrapping; var i = n && Hr(e); if (!t.measure.heights || n && t.measure.width != i) { var o = t.measure.heights = []; if (n) { t.measure.width = i; for (var a = t.text.firstChild.getClientRects(), l = 0; l < a.length - 1; l++) { var s = a[l]; var c = a[l + 1]; Math.abs(s.bottom - c.bottom) > 2 && o.push((s.bottom + c.top) / 2 - r.top); } }o.push(r.bottom - r.top); } }(e, t.view, t.rect)), t.hasHeights = !0), (o = (function (e, t, r, n) { var i; var o = qr(t.map, r, n); var a = o.node; var l = o.start; var s = o.end; var c = o.collapse; if (a.nodeType == 3) { for (var u = 0; u < 4; u++) { for (;l && ie(t.line.text.charAt(o.coverStart + l));)--l; for (;o.coverStart + s < o.coverEnd && ie(t.line.text.charAt(o.coverStart + s));)++s; if ((i = x && k < 9 && l == 0 && s == o.coverEnd - o.coverStart ? a.parentNode.getBoundingClientRect() : Ur(T(a, l, s).getClientRects(), n)).left || i.right || l == 0) break; s = l, l -= 1, c = 'right'; }x && k < 11 && (i = (function (e, t) { if (!window.screen || screen.logicalXDPI == null || screen.logicalXDPI == screen.deviceXDPI || !(function (e) { if (Wt != null) return Wt; var t = A(e, O('span', 'x')); var r = t.getBoundingClientRect(); var n = T(t, 0, 1).getBoundingClientRect(); return Wt = Math.abs(r.left - n.left) > 1; }(e))) return t; var r = screen.logicalXDPI / screen.deviceXDPI; var n = screen.logicalYDPI / screen.deviceYDPI; return { left: t.left * r, right: t.right * r, top: t.top * n, bottom: t.bottom * n }; }(e.display.measure, i))); } else { var d; l > 0 && (c = n = 'right'), i = e.options.lineWrapping && (d = a.getClientRects()).length > 1 ? d[n == 'right' ? d.length - 1 : 0] : a.getBoundingClientRect(); } if (x && k < 9 && !l && (!i || !i.left && !i.right)) { var f = a.parentNode.getClientRects()[0]; i = f ? { left: f.left, right: f.left + un(e.display), top: f.top, bottom: f.bottom } : Kr; } for (var h = i.top - t.rect.top, p = i.bottom - t.rect.top, m = (h + p) / 2, g = t.view.measure.heights, v = 0; v < g.length - 1 && !(m < g[v]); v++);var y = v ? g[v - 1] : 0; var b = g[v]; var w = { left: (c == 'right' ? i.right : i.left) - t.rect.left, right: (c == 'left' ? i.left : i.right) - t.rect.left, top: y, bottom: b }; i.left || i.right || (w.bogus = !0); e.options.singleCursorHeightPerLine || (w.rtop = h, w.rbottom = p); return w; }(e, t, r, n))).bogus || (t.cache[a] = o)), { left: o.left, right: o.right, top: i ? o.rtop : o.top, bottom: i ? o.rbottom : o.bottom }; } var Br; var Kr = { left: 0, right: 0, top: 0, bottom: 0 }; function qr (e, t, r) { for (var n, i, o, a, l, s, c = 0; c < e.length; c += 3) if (l = e[c], s = e[c + 1], t < l ? (i = 0, o = 1, a = 'left') : t < s ? o = (i = t - l) + 1 : (c == e.length - 3 || t == s && e[c + 3] > t) && (i = (o = s - l) - 1, s <= t && (a = 'right')), i != null) { if (n = e[c + 2], l == s && r == (n.insertLeft ? 'left' : 'right') && (a = r), r == 'left' && i == 0) for (;c && e[c - 2] == e[c - 3] && e[c - 1].insertLeft;)n = e[2 + (c -= 3)], a = 'left'; if (r == 'right' && i == s - l) for (;c < e.length - 3 && e[c + 3] == e[c + 4] && !e[c + 5].insertLeft;)n = e[(c += 3) + 2], a = 'right'; break; } return { node: n, start: i, end: o, collapse: a, coverStart: l, coverEnd: s }; } function Ur (e, t) { var r = Kr; if (t == 'left') for (var n = 0; n < e.length && (r = e[n]).left == r.right; n++);else for (var i = e.length - 1; i >= 0 && (r = e[i]).left == r.right; i--);return r; } function Vr (e) { if (e.measure && (e.measure.cache = {}, e.measure.heights = null, e.rest)) for (var t = 0; t < e.rest.length; t++)e.measure.caches[t] = {}; } function Gr (e) { e.display.externalMeasure = null, M(e.display.lineMeasure); for (var t = 0; t < e.display.view.length; t++)Vr(e.display.view[t]); } function _r (e) { Gr(e), e.display.cachedCharWidth = e.display.cachedTextHeight = e.display.cachedPaddingH = null, e.options.lineWrapping || (e.display.maxLineChanged = !0), e.display.lineNumChars = null; } function $r () { return a && d ? -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) : window.pageXOffset || (document.documentElement || document.body).scrollLeft; } function Xr () { return a && d ? -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) : window.pageYOffset || (document.documentElement || document.body).scrollTop; } function Yr (e) { var t = 0; if (e.widgets) for (var r = 0; r < e.widgets.length; ++r)e.widgets[r].above && (t += Ar(e.widgets[r])); return t; } function Zr (e, t, r, n, i) { if (!i) { var o = Yr(t); r.top += o, r.bottom += o; } if (n == 'line') return r; n = n || 'local'; var a = _e(t); if (n == 'local' ? a += Or(e.display) : a -= e.display.viewOffset, n == 'page' || n == 'window') { var l = e.display.lineSpace.getBoundingClientRect(); a += l.top + (n == 'window' ? 0 : Xr()); var s = l.left + (n == 'window' ? 0 : $r()); r.left += s, r.right += s; } return r.top += a, r.bottom += a, r; } function Qr (e, t, r) { if (r == 'div') return t; var n = t.left; var i = t.top; if (r == 'page')n -= $r(), i -= Xr(); else if (r == 'local' || !r) { var o = e.display.sizer.getBoundingClientRect(); n += o.left, i += o.top; } var a = e.display.lineSpace.getBoundingClientRect(); return { left: n - a.left, top: i - a.top }; } function Jr (e, t, r, n, i) { return Zr(e, n = n || se(e.doc, t.line), Ir(e, n, t.ch, i), r); } function en (n, e, i, o, a, l) { function s (e, t) { var r = jr(n, a, e, t ? 'right' : 'left', l); return t ? r.left = r.right : r.right = r.left, Zr(n, o, r, i); }o = o || se(n.doc, e.line), a = a || Rr(n, o); var c = lt(o, n.doc.direction); var t = e.ch; var r = e.sticky; if (t >= o.text.length ? (t = o.text.length, r = 'before') : t <= 0 && (t = 0, r = 'after'), !c) return s(r == 'before' ? t - 1 : t, r == 'before'); function u (e, t, r) { return s(r ? e - 1 : e, c[t].level == 1 != r); } var d = Ze(c, t, r); var f = Ye; var h = u(t, d, r == 'before'); return f != null && (h.other = u(t, f, r != 'before')), h; } function tn (e, t) { var r = 0; t = Ce(e.doc, t), e.options.lineWrapping || (r = un(e.display) * t.ch); var n = se(e.doc, t.line); var i = _e(n) + Or(e.display); return { left: r, right: r, top: i, bottom: i + n.height }; } function rn (e, t, r, n, i) { var o = ge(e, t, r); return o.xRel = i, n && (o.outside = !0), o; } function nn (e, t, r) { var n = e.doc; if ((r += e.display.viewOffset) < 0) return rn(n.first, 0, null, !0, -1); var i = he(n, r); var o = n.first + n.size - 1; if (o < i) return rn(n.first + n.size - 1, se(n, o).text.length, null, !0, 1); t < 0 && (t = 0); for (var a = se(n, i); ;) { var l = sn(e, a, i, t, r); var s = je(a, l.ch + (l.xRel > 0 ? 1 : 0)); if (!s) return l; var c = s.find(1); if (c.line == i) return c; a = se(n, i = c.line); } } function on (t, e, r, n) { n -= Yr(e); var i = e.text.length; var o = ae(function (e) { return jr(t, r, e - 1).bottom <= n; }, i, 0); return { begin: o, end: i = ae(function (e) { return jr(t, r, e).top > n; }, o, i) }; } function an (e, t, r, n) { return on(e, t, r = r || Rr(e, t), Zr(e, t, jr(e, r, n), 'line').top); } function ln (e, t, r, n) { return !(e.bottom <= r) && (e.top > r || (n ? e.left : e.right) > t); } function sn (r, e, t, n, i) { i -= _e(e); var o = Rr(r, e); var a = Yr(e); var l = 0; var s = e.text.length; var c = !0; var u = lt(e, r.doc.direction); if (u) { var d = (r.options.lineWrapping ? function (e, t, r, n, i, o, a) { var l = on(e, t, n, a); var s = l.begin; var c = l.end; /\s/.test(t.text.charAt(c - 1)) && c--; for (var u = null, d = null, f = 0; f < i.length; f++) { var h = i[f]; if (!(h.from >= c || h.to <= s)) { var p = h.level != 1; var m = jr(e, n, p ? Math.min(c, h.to) - 1 : Math.max(s, h.from)).right; var g = m < o ? o - m + 1e9 : m - o; (!u || g < d) && (u = h, d = g); } }u = u || i[i.length - 1]; u.from < s && (u = { from: s, to: u.to, level: u.level }); u.to > c && (u = { from: u.from, to: c, level: u.level }); return u; } : function (n, i, o, a, l, s, c) { var e = ae(function (e) { var t = l[e]; var r = t.level != 1; return ln(en(n, ge(o, r ? t.to : t.from, r ? 'before' : 'after'), 'line', i, a), s, c, !0); }, 0, l.length - 1); var t = l[e]; if (e > 0) { var r = t.level != 1; var u = en(n, ge(o, r ? t.from : t.to, r ? 'after' : 'before'), 'line', i, a); ln(u, s, c, !0) && u.top > c && (t = l[e - 1]); } return t; })(r, e, t, o, u, n, i); l = (c = d.level != 1) ? d.from : d.to - 1, s = c ? d.to : d.from - 1; } var f; var h; var p = null; var m = null; var g = ae(function (e) { var t = jr(r, o, e); return t.top += a, t.bottom += a, !!ln(t, n, i, !1) && (t.top <= i && t.left <= n && (p = e, m = t), !0); }, l, s); var v = !1; if (m) { var y = n - m.left < m.right - n; var b = y == c; g = p + (b ? 0 : 1), h = b ? 'after' : 'before', f = y ? m.left : m.right; } else { c || g != s && g != l || g++, h = g == 0 ? 'after' : g == e.text.length ? 'before' : jr(r, o, g - (c ? 1 : 0)).bottom + a <= i == c ? 'after' : 'before'; var w = en(r, ge(t, g, h), 'line', e, o); f = w.left, v = i < w.top || i >= w.bottom; } return rn(t, g = oe(e.text, g, 1), h, v, n - f); } function cn (e) { if (e.cachedTextHeight != null) return e.cachedTextHeight; if (Br == null) { Br = O('pre'); for (var t = 0; t < 49; ++t)Br.appendChild(document.createTextNode('x')), Br.appendChild(O('br')); Br.appendChild(document.createTextNode('x')); }A(e.measure, Br); var r = Br.offsetHeight / 50; return r > 3 && (e.cachedTextHeight = r), M(e.measure), r || 1; } function un (e) { if (e.cachedCharWidth != null) return e.cachedCharWidth; var t = O('span', 'xxxxxxxxxx'); var r = O('pre', [t]); A(e.measure, r); var n = t.getBoundingClientRect(); var i = (n.right - n.left) / 10; return i > 2 && (e.cachedCharWidth = i), i || 10; } function dn (e) { for (var t = e.display, r = {}, n = {}, i = t.gutters.clientLeft, o = t.gutters.firstChild, a = 0; o; o = o.nextSibling, ++a)r[e.options.gutters[a]] = o.offsetLeft + o.clientLeft + i, n[e.options.gutters[a]] = o.clientWidth; return { fixedPos: fn(t), gutterTotalWidth: t.gutters.offsetWidth, gutterLeft: r, gutterWidth: n, wrapperWidth: t.wrapper.clientWidth }; } function fn (e) { return e.scroller.getBoundingClientRect().left - e.sizer.getBoundingClientRect().left; } function hn (n) { var i = cn(n.display); var o = n.options.lineWrapping; var a = o && Math.max(5, n.display.scroller.clientWidth / un(n.display) - 3); return function (e) { if (Ve(n.doc, e)) return 0; var t = 0; if (e.widgets) for (var r = 0; r < e.widgets.length; r++)e.widgets[r].height && (t += e.widgets[r].height); return o ? t + (Math.ceil(e.text.length / a) || 1) * i : t + i; }; } function pn (e) { var t = e.doc; var r = hn(e); t.iter(function (e) { var t = r(e); t != e.height && de(e, t); }); } function mn (e, t, r, n) { var i = e.display; if (!r && xt(t).getAttribute('cm-not-content') == 'true') return null; var o; var a; var l = i.lineSpace.getBoundingClientRect(); try { o = t.clientX - l.left, a = t.clientY - l.top; } catch (t) { return null; } var s; var c = nn(e, o, a); if (n && c.xRel == 1 && (s = se(e.doc, c.line).text).length == c.ch) { var u = F(s, s.length, e.options.tabSize) - s.length; c = ge(c.line, Math.max(0, Math.round((o - Wr(e.display).left) / un(e.display)) - u)); } return c; } function gn (e, t) { if (t >= e.display.viewTo) return null; if ((t -= e.display.viewFrom) < 0) return null; for (var r = e.display.view, n = 0; n < r.length; n++) if ((t -= r[n].size) < 0) return n; } function vn (e) { e.display.input.showSelection(e.display.input.prepareSelection()); } function yn (e, t) { void 0 === t && (t = !0); for (var r = e.doc, n = {}, i = n.cursors = document.createDocumentFragment(), o = n.selection = document.createDocumentFragment(), a = 0; a < r.sel.ranges.length; a++) if (t || a != r.sel.primIndex) { var l = r.sel.ranges[a]; if (!(l.from().line >= e.display.viewTo || l.to().line < e.display.viewFrom)) { var s = l.empty(); (s || e.options.showCursorWhenSelecting) && bn(e, l.head, i), s || xn(e, l, o); } } return n; } function bn (e, t, r) { var n = en(e, t, 'div', null, null, !e.options.singleCursorHeightPerLine); var i = r.appendChild(O('div', ' ', 'CodeMirror-cursor')); if (i.style.left = n.left + 'px', i.style.top = n.top + 'px', i.style.height = Math.max(0, n.bottom - n.top) * e.options.cursorHeight + 'px', n.other) { var o = r.appendChild(O('div', ' ', 'CodeMirror-cursor CodeMirror-secondarycursor')); o.style.display = '', o.style.left = n.other.left + 'px', o.style.top = n.other.top + 'px', o.style.height = 0.85 * (n.other.bottom - n.other.top) + 'px'; } } function wn (e, t) { return e.top - t.top || e.left - t.left; } function xn (a, e, t) { var r = a.display; var n = a.doc; var i = document.createDocumentFragment(); var o = Wr(a.display); var L = o.left; var M = Math.max(r.sizerWidth, Hr(a) - r.sizer.offsetLeft) - o.right; var A = n.direction == 'ltr'; function N (e, t, r, n) { t < 0 && (t = 0), t = Math.round(t), n = Math.round(n), i.appendChild(O('div', null, 'CodeMirror-selected', 'position: absolute; left: ' + e + 'px;\n top: ' + t + 'px; width: ' + (r == null ? M - e : r) + 'px;\n height: ' + (n - t) + 'px')); } function l (r, y, b) { var w; var x; var o = se(n, r); var k = o.text.length; function C (e, t) { return Jr(a, ge(r, e), 'div', o, t); } function S (e, t, r) { var n = an(a, o, null, e); var i = t == 'ltr' == (r == 'after') ? 'left' : 'right'; return C(r == 'after' ? n.begin : n.end - (/\s/.test(o.text.charAt(n.end - 1)) ? 2 : 1), i)[i]; } var T = lt(o, n.direction); return (function (e, t, r, n) { if (!e) return n(t, r, 'ltr', 0); for (var i = !1, o = 0; o < e.length; ++o) { var a = e[o]; (a.from < r && a.to > t || t == r && a.to == t) && (n(Math.max(a.from, t), Math.min(a.to, r), a.level == 1 ? 'rtl' : 'ltr', o), i = !0); }i || n(t, r, 'ltr'); }(T, y || 0, b == null ? k : b, function (e, t, r, n) { var i = r == 'ltr'; var o = C(e, i ? 'left' : 'right'); var a = C(t - 1, i ? 'right' : 'left'); var l = y == null && e == 0; var s = b == null && t == k; var c = n == 0; var u = !T || n == T.length - 1; if (a.top - o.top <= 3) { var d = (A ? s : l) && u; var f = (A ? l : s) && c ? L : (i ? o : a).left; var h = d ? M : (i ? a : o).right; N(f, o.top, h - f, o.bottom); } else { var p, m, g, v; v = i ? (p = A && l && c ? L : o.left, m = A ? M : S(e, r, 'before'), g = A ? L : S(t, r, 'after'), A && s && u ? M : a.right) : (p = A ? S(e, r, 'before') : L, m = !A && l && c ? M : o.right, g = !A && s && u ? L : a.left, A ? S(t, r, 'after') : M), N(p, o.top, m - p, o.bottom), o.bottom < a.top && N(L, o.bottom, null, a.top), N(g, a.top, v - g, a.bottom); }(!w || wn(o, w) < 0) && (w = o), wn(a, w) < 0 && (w = a), (!x || wn(o, x) < 0) && (x = o), wn(a, x) < 0 && (x = a); })), { start: w, end: x }; } var s = e.from(); var c = e.to(); if (s.line == c.line)l(s.line, s.ch, c.ch); else { var u = se(n, s.line); var d = se(n, c.line); var f = Ke(u) == Ke(d); var h = l(s.line, s.ch, f ? u.text.length + 1 : null).end; var p = l(c.line, f ? 0 : null, c.ch).start; f && (h.top < p.top - 2 ? (N(h.right, h.top, null, h.bottom), N(L, p.top, p.left, p.bottom)) : N(h.right, h.top, p.left - h.right, h.bottom)), h.bottom < p.top && N(L, h.bottom, null, p.top); }t.appendChild(i); } function kn (e) { if (e.state.focused) { var t = e.display; clearInterval(t.blinker); var r = !0; t.cursorDiv.style.visibility = '', e.options.cursorBlinkRate > 0 ? t.blinker = setInterval(function () { return t.cursorDiv.style.visibility = (r = !r) ? '' : 'hidden'; }, e.options.cursorBlinkRate) : e.options.cursorBlinkRate < 0 && (t.cursorDiv.style.visibility = 'hidden'); } } function Cn (e) { e.state.focused || (e.display.input.focus(), Tn(e)); } function Sn (e) { e.state.delayingBlurEvent = !0, setTimeout(function () { e.state.delayingBlurEvent && (e.state.delayingBlurEvent = !1, Ln(e)); }, 100); } function Tn (e, t) { e.state.delayingBlurEvent && (e.state.delayingBlurEvent = !1), e.options.readOnly != 'nocursor' && (e.state.focused || (ft(e, 'focus', e, t), e.state.focused = !0, D(e.display.wrapper, 'CodeMirror-focused'), e.curOp || e.display.selForContextMenu == e.doc.sel || (e.display.input.reset(), b && setTimeout(function () { return e.display.input.reset(!0); }, 20)), e.display.input.receivedFocus()), kn(e)); } function Ln (e, t) { e.state.delayingBlurEvent || (e.state.focused && (ft(e, 'blur', e, t), e.state.focused = !1, L(e.display.wrapper, 'CodeMirror-focused')), clearInterval(e.display.blinker), setTimeout(function () { e.state.focused || (e.display.shift = !1); }, 150)); } function Mn (e) { for (var t = e.display, r = t.lineDiv.offsetTop, n = 0; n < t.view.length; n++) { var i = t.view[n]; var o = void 0; if (!i.hidden) { if (x && k < 8) { var a = i.node.offsetTop + i.node.offsetHeight; o = a - r, r = a; } else { var l = i.node.getBoundingClientRect(); o = l.bottom - l.top; } var s = i.line.height - o; if (o < 2 && (o = cn(t)), (s > 0.005 || s < -0.005) && (de(i.line, o), An(i.line), i.rest)) for (var c = 0; c < i.rest.length; c++)An(i.rest[c]); } } } function An (e) { if (e.widgets) for (var t = 0; t < e.widgets.length; ++t) { var r = e.widgets[t]; var n = r.node.parentNode; n && (r.height = n.offsetHeight); } } function Nn (e, t, r) { var n = r && r.top != null ? Math.max(0, r.top) : e.scroller.scrollTop; n = Math.floor(n - Or(e)); var i = r && r.bottom != null ? r.bottom : n + e.wrapper.clientHeight; var o = he(t, n); var a = he(t, i); if (r && r.ensure) { var l = r.ensure.from.line; var s = r.ensure.to.line; l < o ? a = he(t, _e(se(t, o = l)) + e.wrapper.clientHeight) : Math.min(s, t.lastLine()) >= a && (o = he(t, _e(se(t, s)) - e.wrapper.clientHeight), a = s); } return { from: o, to: Math.max(a, o + 1) }; } function On (e) { var t = e.display; var r = t.view; if (t.alignWidgets || t.gutters.firstChild && e.options.fixedGutter) { for (var n = fn(t) - t.scroller.scrollLeft + e.doc.scrollLeft, i = t.gutters.offsetWidth, o = n + 'px', a = 0; a < r.length; a++) if (!r[a].hidden) { e.options.fixedGutter && (r[a].gutter && (r[a].gutter.style.left = o), r[a].gutterBackground && (r[a].gutterBackground.style.left = o)); var l = r[a].alignable; if (l) for (var s = 0; s < l.length; s++)l[s].style.left = o; }e.options.fixedGutter && (t.gutters.style.left = n + i + 'px'); } } function zn (e) { if (!e.options.lineNumbers) return !1; var t = e.doc; var r = me(e.options, t.first + t.size - 1); var n = e.display; if (r.length == n.lineNumChars) return !1; var i = n.measure.appendChild(O('div', [O('div', r)], 'CodeMirror-linenumber CodeMirror-gutter-elt')); var o = i.firstChild.offsetWidth; var a = i.offsetWidth - o; return n.lineGutter.style.width = '', n.lineNumInnerWidth = Math.max(o, n.lineGutter.offsetWidth - a) + 1, n.lineNumWidth = n.lineNumInnerWidth + a, n.lineNumChars = n.lineNumInnerWidth ? r.length : -1, n.lineGutter.style.width = n.lineNumWidth + 'px', gi(e), !0; } function Wn (e, t) { var r = e.display; var n = cn(e.display); t.top < 0 && (t.top = 0); var i = e.curOp && e.curOp.scrollTop != null ? e.curOp.scrollTop : r.scroller.scrollTop; var o = Pr(e); var a = {}; t.bottom - t.top > o && (t.bottom = t.top + o); var l = e.doc.height + zr(r); var s = t.top < n; var c = t.bottom > l - n; if (t.top < i)a.scrollTop = s ? 0 : t.top; else if (t.bottom > i + o) { var u = Math.min(t.top, (c ? l : t.bottom) - o); u != i && (a.scrollTop = u); } var d = e.curOp && e.curOp.scrollLeft != null ? e.curOp.scrollLeft : r.scroller.scrollLeft; var f = Hr(e) - (e.options.fixedGutter ? r.gutters.offsetWidth : 0); var h = t.right - t.left > f; return h && (t.right = t.left + f), t.left < 10 ? a.scrollLeft = 0 : t.left < d ? a.scrollLeft = Math.max(0, t.left - (h ? 0 : 10)) : t.right > f + d - 3 && (a.scrollLeft = t.right + (h ? 0 : 10) - f), a; } function Dn (e, t) { t != null && (En(e), e.curOp.scrollTop = (e.curOp.scrollTop == null ? e.doc.scrollTop : e.curOp.scrollTop) + t); } function Hn (e) { En(e); var t = e.getCursor(); e.curOp.scrollToPos = { from: t, to: t, margin: e.options.cursorScrollMargin }; } function Pn (e, t, r) { t == null && r == null || En(e), t != null && (e.curOp.scrollLeft = t), r != null && (e.curOp.scrollTop = r); } function En (e) { var t = e.curOp.scrollToPos; t && (e.curOp.scrollToPos = null, In(e, tn(e, t.from), tn(e, t.to), t.margin)); } function In (e, t, r, n) { var i = Wn(e, { left: Math.min(t.left, r.left), top: Math.min(t.top, r.top) - n, right: Math.max(t.right, r.right), bottom: Math.max(t.bottom, r.bottom) + n }); Pn(e, i.scrollLeft, i.scrollTop); } function Fn (e, t) { Math.abs(e.doc.scrollTop - t) < 2 || (m || mi(e, { top: t }), Rn(e, t, !0), m && mi(e), ui(e, 100)); } function Rn (e, t, r) { t = Math.min(e.display.scroller.scrollHeight - e.display.scroller.clientHeight, t), e.display.scroller.scrollTop == t && !r || (e.doc.scrollTop = t, e.display.scrollbars.setScrollTop(t), e.display.scroller.scrollTop != t && (e.display.scroller.scrollTop = t)); } function jn (e, t, r, n) { t = Math.min(t, e.display.scroller.scrollWidth - e.display.scroller.clientWidth), (r ? t == e.doc.scrollLeft : Math.abs(e.doc.scrollLeft - t) < 2) && !n || (e.doc.scrollLeft = t, On(e), e.display.scroller.scrollLeft != t && (e.display.scroller.scrollLeft = t), e.display.scrollbars.setScrollLeft(t)); } function Bn (e) { var t = e.display; var r = t.gutters.offsetWidth; var n = Math.round(e.doc.height + zr(e.display)); return { clientHeight: t.scroller.clientHeight, viewHeight: t.wrapper.clientHeight, scrollWidth: t.scroller.scrollWidth, clientWidth: t.scroller.clientWidth, viewWidth: t.wrapper.clientWidth, barLeft: e.options.fixedGutter ? r : 0, docHeight: n, scrollHeight: n + Dr(e) + t.barHeight, nativeBarWidth: t.nativeBarWidth, gutterWidth: r }; } function Kn (e, t, r) { this.cm = r; var n = this.vert = O('div', [O('div', null, null, 'min-width: 1px')], 'CodeMirror-vscrollbar'); var i = this.horiz = O('div', [O('div', null, null, 'height: 100%; min-height: 1px')], 'CodeMirror-hscrollbar'); n.tabIndex = i.tabIndex = -1, e(n), e(i), ct(n, 'scroll', function () { n.clientHeight && t(n.scrollTop, 'vertical'); }), ct(i, 'scroll', function () { i.clientWidth && t(i.scrollLeft, 'horizontal'); }), this.checkedZeroWidth = !1, x && k < 8 && (this.horiz.style.minHeight = this.vert.style.minWidth = '18px'); }Kn.prototype.update = function (e) { var t = e.scrollWidth > e.clientWidth + 1; var r = e.scrollHeight > e.clientHeight + 1; var n = e.nativeBarWidth; if (r) { this.vert.style.display = 'block', this.vert.style.bottom = t ? n + 'px' : '0'; var i = e.viewHeight - (t ? n : 0); this.vert.firstChild.style.height = Math.max(0, e.scrollHeight - e.clientHeight + i) + 'px'; } else this.vert.style.display = '', this.vert.firstChild.style.height = '0'; if (t) { this.horiz.style.display = 'block', this.horiz.style.right = r ? n + 'px' : '0', this.horiz.style.left = e.barLeft + 'px'; var o = e.viewWidth - e.barLeft - (r ? n : 0); this.horiz.firstChild.style.width = Math.max(0, e.scrollWidth - e.clientWidth + o) + 'px'; } else this.horiz.style.display = '', this.horiz.firstChild.style.width = '0'; return !this.checkedZeroWidth && e.clientHeight > 0 && (n == 0 && this.zeroWidthHack(), this.checkedZeroWidth = !0), { right: r ? n : 0, bottom: t ? n : 0 }; }, Kn.prototype.setScrollLeft = function (e) { this.horiz.scrollLeft != e && (this.horiz.scrollLeft = e), this.disableHoriz && this.enableZeroWidthBar(this.horiz, this.disableHoriz, 'horiz'); }, Kn.prototype.setScrollTop = function (e) { this.vert.scrollTop != e && (this.vert.scrollTop = e), this.disableVert && this.enableZeroWidthBar(this.vert, this.disableVert, 'vert'); }, Kn.prototype.zeroWidthHack = function () { var e = w && !l ? '12px' : '18px'; this.horiz.style.height = this.vert.style.width = e, this.horiz.style.pointerEvents = this.vert.style.pointerEvents = 'none', this.disableHoriz = new R(), this.disableVert = new R(); }, Kn.prototype.enableZeroWidthBar = function (r, n, i) { r.style.pointerEvents = 'auto', n.set(1e3, function e () { var t = r.getBoundingClientRect(); (i == 'vert' ? document.elementFromPoint(t.right - 1, (t.top + t.bottom) / 2) : document.elementFromPoint((t.right + t.left) / 2, t.bottom - 1)) != r ? r.style.pointerEvents = 'none' : n.set(1e3, e); }); }, Kn.prototype.clear = function () { var e = this.horiz.parentNode; e.removeChild(this.horiz), e.removeChild(this.vert); }; function qn () {} function Un (e, t) { t = t || Bn(e); var r = e.display.barWidth; var n = e.display.barHeight; Vn(e, t); for (var i = 0; i < 4 && r != e.display.barWidth || n != e.display.barHeight; i++)r != e.display.barWidth && e.options.lineWrapping && Mn(e), Vn(e, Bn(e)), r = e.display.barWidth, n = e.display.barHeight; } function Vn (e, t) { var r = e.display; var n = r.scrollbars.update(t); r.sizer.style.paddingRight = (r.barWidth = n.right) + 'px', r.sizer.style.paddingBottom = (r.barHeight = n.bottom) + 'px', r.heightForcer.style.borderBottom = n.bottom + 'px solid transparent', n.right && n.bottom ? (r.scrollbarFiller.style.display = 'block', r.scrollbarFiller.style.height = n.bottom + 'px', r.scrollbarFiller.style.width = n.right + 'px') : r.scrollbarFiller.style.display = '', n.bottom && e.options.coverGutterNextToScrollbar && e.options.fixedGutter ? (r.gutterFiller.style.display = 'block', r.gutterFiller.style.height = n.bottom + 'px', r.gutterFiller.style.width = t.gutterWidth + 'px') : r.gutterFiller.style.display = ''; }qn.prototype.update = function () { return { bottom: 0, right: 0 }; }, qn.prototype.setScrollLeft = function () {}, qn.prototype.setScrollTop = function () {}, qn.prototype.clear = function () {}; var Gn = { native: Kn, null: qn }; function _n (r) { r.display.scrollbars && (r.display.scrollbars.clear(), r.display.scrollbars.addClass && L(r.display.wrapper, r.display.scrollbars.addClass)), r.display.scrollbars = new Gn[r.options.scrollbarStyle](function (e) { r.display.wrapper.insertBefore(e, r.display.scrollbarFiller), ct(e, 'mousedown', function () { r.state.focused && setTimeout(function () { return r.display.input.focus(); }, 0); }), e.setAttribute('cm-not-content', 'true'); }, function (e, t) { t == 'horizontal' ? jn(r, e) : Fn(r, e); }, r), r.display.scrollbars.addClass && D(r.display.wrapper, r.display.scrollbars.addClass); } var $n = 0; function Xn (e) { e.curOp = { cm: e, viewChanged: !1, startHeight: e.doc.height, forceUpdate: !1, updateInput: null, typing: !1, changeObjs: null, cursorActivityHandlers: null, cursorActivityCalled: 0, selectionChanged: !1, updateMaxLine: !1, scrollLeft: null, scrollTop: null, scrollToPos: null, focus: !1, id: ++$n }, (function (e) { hr ? hr.ops.push(e) : e.ownsGroup = hr = { ops: [e], delayedCallbacks: [] }; }(e.curOp)); } function Yn (e) { pr(e.curOp, function (e) { for (var t = 0; t < e.ops.length; t++)e.ops[t].cm.curOp = null; !(function (e) { for (var t = e.ops, r = 0; r < t.length; r++)Zn(t[r]); for (var n = 0; n < t.length; n++)(i = t[n]).updatedDisplay = i.mustUpdate && hi(i.cm, i.update); var i; for (var o = 0; o < t.length; o++)Qn(t[o]); for (var a = 0; a < t.length; a++)Jn(t[a]); for (var l = 0; l < t.length; l++)ei(t[l]); }(e)); }); } function Zn (e) { var t = e.cm; var r = t.display; !(function (e) { var t = e.display; !t.scrollbarsClipped && t.scroller.offsetWidth && (t.nativeBarWidth = t.scroller.offsetWidth - t.scroller.clientWidth, t.heightForcer.style.height = Dr(e) + 'px', t.sizer.style.marginBottom = -t.nativeBarWidth + 'px', t.sizer.style.borderRightWidth = Dr(e) + 'px', t.scrollbarsClipped = !0); }(t)), e.updateMaxLine && Xe(t), e.mustUpdate = e.viewChanged || e.forceUpdate || e.scrollTop != null || e.scrollToPos && (e.scrollToPos.from.line < r.viewFrom || e.scrollToPos.to.line >= r.viewTo) || r.maxLineChanged && t.options.lineWrapping, e.update = e.mustUpdate && new fi(t, e.mustUpdate && { top: e.scrollTop, ensure: e.scrollToPos }, e.forceUpdate); } function Qn (e) { var t = e.cm; var r = t.display; e.updatedDisplay && Mn(t), e.barMeasure = Bn(t), r.maxLineChanged && !t.options.lineWrapping && (e.adjustWidthTo = Ir(t, r.maxLine, r.maxLine.text.length).left + 3, t.display.sizerWidth = e.adjustWidthTo, e.barMeasure.scrollWidth = Math.max(r.scroller.clientWidth, r.sizer.offsetLeft + e.adjustWidthTo + Dr(t) + t.display.barWidth), e.maxScrollLeft = Math.max(0, r.sizer.offsetLeft + e.adjustWidthTo - Hr(t))), (e.updatedDisplay || e.selectionChanged) && (e.preparedSelection = r.input.prepareSelection()); } function Jn (e) { var t = e.cm; e.adjustWidthTo != null && (t.display.sizer.style.minWidth = e.adjustWidthTo + 'px', e.maxScrollLeft < t.doc.scrollLeft && jn(t, Math.min(t.display.scroller.scrollLeft, e.maxScrollLeft), !0), t.display.maxLineChanged = !1); var r = e.focus && e.focus == W(); e.preparedSelection && t.display.input.showSelection(e.preparedSelection, r), !e.updatedDisplay && e.startHeight == t.doc.height || Un(t, e.barMeasure), e.updatedDisplay && vi(t, e.barMeasure), e.selectionChanged && kn(t), t.state.focused && e.updateInput && t.display.input.reset(e.typing), r && Cn(e.cm); } function ei (e) { var t = e.cm; var r = t.display; var n = t.doc; e.updatedDisplay && pi(t, e.update), r.wheelStartX == null || e.scrollTop == null && e.scrollLeft == null && !e.scrollToPos || (r.wheelStartX = r.wheelStartY = null), e.scrollTop != null && Rn(t, e.scrollTop, e.forceScroll), e.scrollLeft != null && jn(t, e.scrollLeft, !0, !0), e.scrollToPos && (function (e, t) { if (!ht(e, 'scrollCursorIntoView')) { var r = e.display; var n = r.sizer.getBoundingClientRect(); var i = null; if (t.top + n.top < 0 ? i = !0 : t.bottom + n.top > (window.innerHeight || document.documentElement.clientHeight) && (i = !1), i != null && !c) { var o = O('div', '', null, 'position: absolute;\n top: ' + (t.top - r.viewOffset - Or(e.display)) + 'px;\n height: ' + (t.bottom - t.top + Dr(e) + r.barHeight) + 'px;\n left: ' + t.left + 'px; width: ' + Math.max(2, t.right - t.left) + 'px;'); e.display.lineSpace.appendChild(o), o.scrollIntoView(i), e.display.lineSpace.removeChild(o); } } }(t, (function (e, t, r, n) { var i; n == null && (n = 0), e.options.lineWrapping || t != r || (r = (t = t.ch ? ge(t.line, t.sticky == 'before' ? t.ch - 1 : t.ch, 'after') : t).sticky == 'before' ? ge(t.line, t.ch + 1, 'before') : t); for (var o = 0; o < 5; o++) { var a = !1; var l = en(e, t); var s = r && r != t ? en(e, r) : l; var c = Wn(e, i = { left: Math.min(l.left, s.left), top: Math.min(l.top, s.top) - n, right: Math.max(l.left, s.left), bottom: Math.max(l.bottom, s.bottom) + n }); var u = e.doc.scrollTop; var d = e.doc.scrollLeft; if (c.scrollTop != null && (Fn(e, c.scrollTop), Math.abs(e.doc.scrollTop - u) > 1 && (a = !0)), c.scrollLeft != null && (jn(e, c.scrollLeft), Math.abs(e.doc.scrollLeft - d) > 1 && (a = !0)), !a) break; } return i; }(t, Ce(n, e.scrollToPos.from), Ce(n, e.scrollToPos.to), e.scrollToPos.margin)))); var i = e.maybeHiddenMarkers; var o = e.maybeUnhiddenMarkers; if (i) for (var a = 0; a < i.length; ++a)i[a].lines.length || ft(i[a], 'hide'); if (o) for (var l = 0; l < o.length; ++l)o[l].lines.length && ft(o[l], 'unhide'); r.wrapper.offsetHeight && (n.scrollTop = t.display.scroller.scrollTop), e.changeObjs && ft(t, 'changes', t, e.changeObjs), e.update && e.update.finish(); } function ti (e, t) { if (e.curOp) return t(); Xn(e); try { return t(); } finally { Yn(e); } } function ri (e, t) { return function () { if (e.curOp) return t.apply(e, arguments); Xn(e); try { return t.apply(e, arguments); } finally { Yn(e); } }; } function ni (e) { return function () { if (this.curOp) return e.apply(this, arguments); Xn(this); try { return e.apply(this, arguments); } finally { Yn(this); } }; } function ii (t) { return function () { var e = this.cm; if (!e || e.curOp) return t.apply(this, arguments); Xn(e); try { return t.apply(this, arguments); } finally { Yn(e); } }; } function oi (e, t, r, n) { t == null && (t = e.doc.first), r == null && (r = e.doc.first + e.doc.size), n = n || 0; var i = e.display; if (n && r < i.viewTo && (i.updateLineNumbers == null || i.updateLineNumbers > t) && (i.updateLineNumbers = t), e.curOp.viewChanged = !0, t >= i.viewTo)Le && qe(e.doc, t) < i.viewTo && li(e); else if (r <= i.viewFrom)Le && Ue(e.doc, r + n) > i.viewFrom ? li(e) : (i.viewFrom += n, i.viewTo += n); else if (t <= i.viewFrom && r >= i.viewTo)li(e); else if (t <= i.viewFrom) { var o = si(e, r, r + n, 1); o ? (i.view = i.view.slice(o.index), i.viewFrom = o.lineN, i.viewTo += n) : li(e); } else if (r >= i.viewTo) { var a = si(e, t, t, -1); a ? (i.view = i.view.slice(0, a.index), i.viewTo = a.lineN) : li(e); } else { var l = si(e, t, t, -1); var s = si(e, r, r + n, 1); l && s ? (i.view = i.view.slice(0, l.index).concat(fr(e, l.lineN, s.lineN)).concat(i.view.slice(s.index)), i.viewTo += n) : li(e); } var c = i.externalMeasured; c && (r < c.lineN ? c.lineN += n : t < c.lineN + c.size && (i.externalMeasured = null)); } function ai (e, t, r) { e.curOp.viewChanged = !0; var n = e.display; var i = e.display.externalMeasured; if (i && t >= i.lineN && t < i.lineN + i.size && (n.externalMeasured = null), !(t < n.viewFrom || t >= n.viewTo)) { var o = n.view[gn(e, t)]; if (o.node != null) { var a = o.changes || (o.changes = []); j(a, r) == -1 && a.push(r); } } } function li (e) { e.display.viewFrom = e.display.viewTo = e.doc.first, e.display.view = [], e.display.viewOffset = 0; } function si (e, t, r, n) { var i; var o = gn(e, t); var a = e.display.view; if (!Le || r == e.doc.first + e.doc.size) return { index: o, lineN: r }; for (var l = e.display.viewFrom, s = 0; s < o; s++)l += a[s].size; if (l != t) { if (n > 0) { if (o == a.length - 1) return null; i = l + a[o].size - t, o++; } else i = l - t; t += i, r += i; } for (;qe(e.doc, r) != r;) { if (o == (n < 0 ? 0 : a.length - 1)) return null; r += n * a[o - (n < 0 ? 1 : 0)].size, o += n; } return { index: o, lineN: r }; } function ci (e) { for (var t = e.display.view, r = 0, n = 0; n < t.length; n++) { var i = t[n]; i.hidden || i.node && !i.changes || ++r; } return r; } function ui (e, t) { e.doc.highlightFrontier < e.display.viewTo && e.state.highlight.set(t, E(di, e)); } function di (s) { var c = s.doc; if (!(c.highlightFrontier >= s.display.viewTo)) { var u = +new Date() + s.options.workTime; var d = _t(s, c.highlightFrontier); var f = []; c.iter(d.line, Math.min(c.first + c.size, s.display.viewTo + 500), function (e) { if (d.line >= s.display.viewFrom) { var t = e.styles; var r = e.text.length > s.options.maxHighlightLength ? Rt(c.mode, d.state) : null; var n = Vt(s, e, d, !0); r && (d.state = r), e.styles = n.styles; var i = e.styleClasses; var o = n.classes; o ? e.styleClasses = o : i && (e.styleClasses = null); for (var a = !t || t.length != e.styles.length || i != o && (!i || !o || i.bgClass != o.bgClass || i.textClass != o.textClass), l = 0; !a && l < t.length; ++l)a = t[l] != e.styles[l]; a && f.push(d.line), e.stateAfter = d.save(), d.nextLine(); } else e.text.length <= s.options.maxHighlightLength && $t(s, e.text, d), e.stateAfter = d.line % 5 == 0 ? d.save() : null, d.nextLine(); if (+new Date() > u) return ui(s, s.options.workDelay), !0; }), c.highlightFrontier = d.line, c.modeFrontier = Math.max(c.modeFrontier, d.line), f.length && ti(s, function () { for (var e = 0; e < f.length; e++)ai(s, f[e], 'text'); }); } } var fi = function (e, t, r) { var n = e.display; this.viewport = t, this.visible = Nn(n, e.doc, t), this.editorIsHidden = !n.wrapper.offsetWidth, this.wrapperHeight = n.wrapper.clientHeight, this.wrapperWidth = n.wrapper.clientWidth, this.oldDisplayWidth = Hr(e), this.force = r, this.dims = dn(e), this.events = []; }; function hi (e, t) { var r = e.display; var n = e.doc; if (t.editorIsHidden) return li(e), !1; if (!t.force && t.visible.from >= r.viewFrom && t.visible.to <= r.viewTo && (r.updateLineNumbers == null || r.updateLineNumbers >= r.viewTo) && r.renderedView == r.view && ci(e) == 0) return !1; zn(e) && (li(e), t.dims = dn(e)); var i = n.first + n.size; var o = Math.max(t.visible.from - e.options.viewportMargin, n.first); var a = Math.min(i, t.visible.to + e.options.viewportMargin); r.viewFrom < o && o - r.viewFrom < 20 && (o = Math.max(n.first, r.viewFrom)), r.viewTo > a && r.viewTo - a < 20 && (a = Math.min(i, r.viewTo)), Le && (o = qe(e.doc, o), a = Ue(e.doc, a)); var l = o != r.viewFrom || a != r.viewTo || r.lastWrapHeight != t.wrapperHeight || r.lastWrapWidth != t.wrapperWidth; !(function (e, t, r) { var n = e.display; n.view.length == 0 || t >= n.viewTo || r <= n.viewFrom ? (n.view = fr(e, t, r), n.viewFrom = t) : (n.viewFrom > t ? n.view = fr(e, t, n.viewFrom).concat(n.view) : n.viewFrom < t && (n.view = n.view.slice(gn(e, t))), n.viewFrom = t, n.viewTo < r ? n.view = n.view.concat(fr(e, n.viewTo, r)) : n.viewTo > r && (n.view = n.view.slice(0, gn(e, r)))), n.viewTo = r; }(e, o, a)), r.viewOffset = _e(se(e.doc, r.viewFrom)), e.display.mover.style.top = r.viewOffset + 'px'; var s = ci(e); if (!l && s == 0 && !t.force && r.renderedView == r.view && (r.updateLineNumbers == null || r.updateLineNumbers >= r.viewTo)) return !1; var c = (function (e) { if (e.hasFocus()) return null; var t = W(); if (!t || !z(e.display.lineDiv, t)) return null; var r = { activeElt: t }; if (window.getSelection) { var n = window.getSelection(); n.anchorNode && n.extend && z(e.display.lineDiv, n.anchorNode) && (r.anchorNode = n.anchorNode, r.anchorOffset = n.anchorOffset, r.focusNode = n.focusNode, r.focusOffset = n.focusOffset); } return r; }(e)); return s > 4 && (r.lineDiv.style.display = 'none'), (function (r, e, t) { var n = r.display; var i = r.options.lineNumbers; var o = n.lineDiv; var a = o.firstChild; function l (e) { var t = e.nextSibling; return b && w && r.display.currentWheelTarget == e ? e.style.display = 'none' : e.parentNode.removeChild(e), t; } for (var s = n.view, c = n.viewFrom, u = 0; u < s.length; u++) { var d = s[u]; if (d.hidden);else if (d.node && d.node.parentNode == o) { for (;a != d.node;)a = l(a); var f = i && e != null && e <= c && d.lineNumber; d.changes && (j(d.changes, 'gutter') > -1 && (f = !1), yr(r, d, c, t)), f && (M(d.lineNumber), d.lineNumber.appendChild(document.createTextNode(me(r.options, c)))), a = d.node.nextSibling; } else { var h = (g = c, v = t, void 0, y = wr(p = r, m = d), m.text = m.node = y.pre, y.bgClass && (m.bgClass = y.bgClass), y.textClass && (m.textClass = y.textClass), kr(p, m), Cr(p, m, g, v), Tr(p, m, v), m.node); o.insertBefore(h, a); }c += d.size; } var p, m, g, v, y; for (;a;)a = l(a); }(e, r.updateLineNumbers, t.dims)), s > 4 && (r.lineDiv.style.display = ''), r.renderedView = r.view, (function (e) { if (e && e.activeElt && e.activeElt != W() && (e.activeElt.focus(), e.anchorNode && z(document.body, e.anchorNode) && z(document.body, e.focusNode))) { var t = window.getSelection(); var r = document.createRange(); r.setEnd(e.anchorNode, e.anchorOffset), r.collapse(!1), t.removeAllRanges(), t.addRange(r), t.extend(e.focusNode, e.focusOffset); } }(c)), M(r.cursorDiv), M(r.selectionDiv), r.gutters.style.height = r.sizer.style.minHeight = 0, l && (r.lastWrapHeight = t.wrapperHeight, r.lastWrapWidth = t.wrapperWidth, ui(e, 400)), !(r.updateLineNumbers = null); } function pi (e, t) { for (var r = t.viewport, n = !0; (n && e.options.lineWrapping && t.oldDisplayWidth != Hr(e) || (r && r.top != null && (r = { top: Math.min(e.doc.height + zr(e.display) - Pr(e), r.top) }), t.visible = Nn(e.display, e.doc, r), !(t.visible.from >= e.display.viewFrom && t.visible.to <= e.display.viewTo))) && hi(e, t); n = !1) { Mn(e); var i = Bn(e); vn(e), Un(e, i), vi(e, i), t.force = !1; }t.signal(e, 'update', e), e.display.viewFrom == e.display.reportedViewFrom && e.display.viewTo == e.display.reportedViewTo || (t.signal(e, 'viewportChange', e, e.display.viewFrom, e.display.viewTo), e.display.reportedViewFrom = e.display.viewFrom, e.display.reportedViewTo = e.display.viewTo); } function mi (e, t) { var r = new fi(e, t); if (hi(e, r)) { Mn(e), pi(e, r); var n = Bn(e); vn(e), Un(e, n), vi(e, n), r.finish(); } } function gi (e) { var t = e.display.gutters.offsetWidth; e.display.sizer.style.marginLeft = t + 'px'; } function vi (e, t) { e.display.sizer.style.minHeight = t.docHeight + 'px', e.display.heightForcer.style.top = t.docHeight + 'px', e.display.gutters.style.height = t.docHeight + e.display.barHeight + Dr(e) + 'px'; } function yi (e) { var t = e.display.gutters; var r = e.options.gutters; M(t); for (var n = 0; n < r.length; ++n) { var i = r[n]; var o = t.appendChild(O('div', null, 'CodeMirror-gutter ' + i)); i == 'CodeMirror-linenumbers' && ((e.display.lineGutter = o).style.width = (e.display.lineNumWidth || 1) + 'px'); }t.style.display = n ? '' : 'none', gi(e); } function bi (e) { var t = j(e.gutters, 'CodeMirror-linenumbers'); t == -1 && e.lineNumbers ? e.gutters = e.gutters.concat(['CodeMirror-linenumbers']) : t > -1 && !e.lineNumbers && (e.gutters = e.gutters.slice(0), e.gutters.splice(t, 1)); }fi.prototype.signal = function (e, t) { mt(e, t) && this.events.push(arguments); }, fi.prototype.finish = function () { for (var e = 0; e < this.events.length; e++)ft.apply(null, this.events[e]); }; var wi = 0; var xi = null; function ki (e) { var t = e.wheelDeltaX; var r = e.wheelDeltaY; return t == null && e.detail && e.axis == e.HORIZONTAL_AXIS && (t = e.detail), r == null && e.detail && e.axis == e.VERTICAL_AXIS ? r = e.detail : r == null && (r = e.wheelDelta), { x: t, y: r }; } function Ci (e) { var t = ki(e); return t.x *= xi, t.y *= xi, t; } function Si (e, t) { var r = ki(t); var n = r.x; var i = r.y; var o = e.display; var a = o.scroller; var l = a.scrollWidth > a.clientWidth; var s = a.scrollHeight > a.clientHeight; if (n && l || i && s) { if (i && w && b)e:for (var c = t.target, u = o.view; c != a; c = c.parentNode) for (var d = 0; d < u.length; d++) if (u[d].node == c) { e.display.currentWheelTarget = c; break e; } if (n && !m && !g && xi != null) return i && s && Fn(e, Math.max(0, a.scrollTop + i * xi)), jn(e, Math.max(0, a.scrollLeft + n * xi)), (!i || i && s) && vt(t), void (o.wheelStartX = null); if (i && xi != null) { var f = i * xi; var h = e.doc.scrollTop; var p = h + o.wrapper.clientHeight; f < 0 ? h = Math.max(0, h + f - 50) : p = Math.min(e.doc.height, p + f + 50), mi(e, { top: h, bottom: p }); }wi < 20 && (o.wheelStartX == null ? (o.wheelStartX = a.scrollLeft, o.wheelStartY = a.scrollTop, o.wheelDX = n, o.wheelDY = i, setTimeout(function () { if (o.wheelStartX != null) { var e = a.scrollLeft - o.wheelStartX; var t = a.scrollTop - o.wheelStartY; var r = t && o.wheelDY && t / o.wheelDY || e && o.wheelDX && e / o.wheelDX; o.wheelStartX = o.wheelStartY = null, r && (xi = (xi * wi + r) / (wi + 1), ++wi); } }, 200)) : (o.wheelDX += n, o.wheelDY += i)); } }x ? xi = -0.53 : m ? xi = 15 : a ? xi = -0.7 : s && (xi = -1 / 3); var Ti = function (e, t) { this.ranges = e, this.primIndex = t; }; Ti.prototype.primary = function () { return this.ranges[this.primIndex]; }, Ti.prototype.equals = function (e) { if (e == this) return !0; if (e.primIndex != this.primIndex || e.ranges.length != this.ranges.length) return !1; for (var t = 0; t < this.ranges.length; t++) { var r = this.ranges[t]; var n = e.ranges[t]; if (!ye(r.anchor, n.anchor) || !ye(r.head, n.head)) return !1; } return !0; }, Ti.prototype.deepCopy = function () { for (var e = [], t = 0; t < this.ranges.length; t++)e[t] = new Li(be(this.ranges[t].anchor), be(this.ranges[t].head)); return new Ti(e, this.primIndex); }, Ti.prototype.somethingSelected = function () { for (var e = 0; e < this.ranges.length; e++) if (!this.ranges[e].empty()) return !0; return !1; }, Ti.prototype.contains = function (e, t) { t = t || e; for (var r = 0; r < this.ranges.length; r++) { var n = this.ranges[r]; if (ve(t, n.from()) >= 0 && ve(e, n.to()) <= 0) return r; } return -1; }; var Li = function (e, t) { this.anchor = e, this.head = t; }; function Mi (e, t) { var r = e[t]; e.sort(function (e, t) { return ve(e.from(), t.from()); }), t = j(e, r); for (var n = 1; n < e.length; n++) { var i = e[n]; var o = e[n - 1]; if (ve(o.to(), i.from()) >= 0) { var a = xe(o.from(), i.from()); var l = we(o.to(), i.to()); var s = o.empty() ? i.from() == i.head : o.from() == o.head; n <= t && --t, e.splice(--n, 2, new Li(s ? l : a, s ? a : l)); } } return new Ti(e, t); } function Ai (e, t) { return new Ti([new Li(e, t || e)], 0); } function Ni (e) { return e.text ? ge(e.from.line + e.text.length - 1, X(e.text).length + (e.text.length == 1 ? e.from.ch : 0)) : e.to; } function Oi (e, t) { if (ve(e, t.from) < 0) return e; if (ve(e, t.to) <= 0) return Ni(t); var r = e.line + t.text.length - (t.to.line - t.from.line) - 1; var n = e.ch; return e.line == t.to.line && (n += Ni(t).ch - t.to.ch), ge(r, n); } function zi (e, t) { for (var r = [], n = 0; n < e.sel.ranges.length; n++) { var i = e.sel.ranges[n]; r.push(new Li(Oi(i.anchor, t), Oi(i.head, t))); } return Mi(r, e.sel.primIndex); } function Wi (e, t, r) { return e.line == t.line ? ge(r.line, e.ch - t.ch + r.ch) : ge(r.line + (e.line - t.line), e.ch); } function Di (e) { e.doc.mode = Et(e.options, e.doc.modeOption), Hi(e); } function Hi (e) { e.doc.iter(function (e) { e.stateAfter && (e.stateAfter = null), e.styles && (e.styles = null); }), e.doc.modeFrontier = e.doc.highlightFrontier = e.doc.first, ui(e, 100), e.state.modeGen++, e.curOp && oi(e); } function Pi (e, t) { return t.from.ch == 0 && t.to.ch == 0 && X(t.text) == '' && (!e.cm || e.cm.options.wholeLineUpdateBefore); } function Ei (e, n, t, i) { function o (e) { return t ? t[e] : null; } function r (e, t, r) { !(function (e, t, r, n) { e.text = t, e.stateAfter && (e.stateAfter = null), e.styles && (e.styles = null), e.order != null && (e.order = null), We(e), De(e, r); var i = n ? n(e) : 1; i != e.height && de(e, i); }(e, t, r, i)), gr(e, 'change', e, n); } function a (e, t) { for (var r = [], n = e; n < t; ++n)r.push(new tr(c[n], o(n), i)); return r; } var l = n.from; var s = n.to; var c = n.text; var u = se(e, l.line); var d = se(e, s.line); var f = X(c); var h = o(c.length - 1); var p = s.line - l.line; if (n.full)e.insert(0, a(0, c.length)), e.remove(c.length, e.size - c.length); else if (Pi(e, n)) { var m = a(0, c.length - 1); r(d, d.text, h), p && e.remove(l.line, p), m.length && e.insert(l.line, m); } else if (u == d) if (c.length == 1)r(u, u.text.slice(0, l.ch) + f + u.text.slice(s.ch), h); else { var g = a(1, c.length - 1); g.push(new tr(f + u.text.slice(s.ch), h, i)), r(u, u.text.slice(0, l.ch) + c[0], o(0)), e.insert(l.line + 1, g); } else if (c.length == 1)r(u, u.text.slice(0, l.ch) + c[0] + d.text.slice(s.ch), o(0)), e.remove(l.line + 1, p); else { r(u, u.text.slice(0, l.ch) + c[0], o(0)), r(d, f + d.text.slice(s.ch), h); var v = a(1, c.length - 1); p > 1 && e.remove(l.line + 1, p - 1), e.insert(l.line + 1, v); }gr(e, 'change', e, n); } function Ii (e, l, s) { !(function e (t, r, n) { if (t.linked) for (var i = 0; i < t.linked.length; ++i) { var o = t.linked[i]; if (o.doc != r) { var a = n && o.sharedHist; s && !a || (l(o.doc, a), e(o.doc, t, a)); } } }(e, null, !0)); } function Fi (e, t) { if (t.cm) throw new Error('This document is already in use.'); pn((e.doc = t).cm = e), Di(e), Ri(e), e.options.lineWrapping || Xe(e), e.options.mode = t.modeOption, oi(e); } function Ri (e) { (e.doc.direction == 'rtl' ? D : L)(e.display.lineDiv, 'CodeMirror-rtl'); } function ji (e) { this.done = [], this.undone = [], this.undoDepth = 1 / 0, this.lastModTime = this.lastSelTime = 0, this.lastOp = this.lastSelOp = null, this.lastOrigin = this.lastSelOrigin = null, this.generation = this.maxGeneration = e || 1; } function Bi (e, t) { var r = { from: be(t.from), to: Ni(t), text: ce(e, t.from, t.to) }; return Gi(e, r, t.from.line, t.to.line + 1), Ii(e, function (e) { return Gi(e, r, t.from.line, t.to.line + 1); }, !0), r; } function Ki (e) { for (;e.length;) { if (!X(e).ranges) break; e.pop(); } } function qi (e, t, r, n) { var i = e.history; i.undone.length = 0; var o; var a; var l = +new Date(); if ((i.lastOp == n || i.lastOrigin == t.origin && t.origin && (t.origin.charAt(0) == '+' && i.lastModTime > l - (e.cm ? e.cm.options.historyEventDelay : 500) || t.origin.charAt(0) == '*')) && (o = (function (e, t) { return t ? (Ki(e.done), X(e.done)) : e.done.length && !X(e.done).ranges ? X(e.done) : e.done.length > 1 && !e.done[e.done.length - 2].ranges ? (e.done.pop(), X(e.done)) : void 0; }(i, i.lastOp == n))))a = X(o.changes), ve(t.from, t.to) == 0 && ve(t.from, a.to) == 0 ? a.to = Ni(t) : o.changes.push(Bi(e, t)); else { var s = X(i.done); for (s && s.ranges || Vi(e.sel, i.done), o = { changes: [Bi(e, t)], generation: i.generation }, i.done.push(o); i.done.length > i.undoDepth;)i.done.shift(), i.done[0].ranges || i.done.shift(); }i.done.push(r), i.generation = ++i.maxGeneration, i.lastModTime = i.lastSelTime = l, i.lastOp = i.lastSelOp = n, i.lastOrigin = i.lastSelOrigin = t.origin, a || ft(e, 'historyAdded'); } function Ui (e, t, r, n) { var i = e.history; var o = n && n.origin; r == i.lastSelOp || o && i.lastSelOrigin == o && (i.lastModTime == i.lastSelTime && i.lastOrigin == o || (function (e, t, r, n) { var i = t.charAt(0); return i == '*' || i == '+' && r.ranges.length == n.ranges.length && r.somethingSelected() == n.somethingSelected() && new Date() - e.history.lastSelTime <= (e.cm ? e.cm.options.historyEventDelay : 500); }(e, o, X(i.done), t))) ? i.done[i.done.length - 1] = t : Vi(t, i.done), i.lastSelTime = +new Date(), i.lastSelOrigin = o, i.lastSelOp = r, n && !1 !== n.clearRedo && Ki(i.undone); } function Vi (e, t) { var r = X(t); r && r.ranges && r.equals(e) || t.push(e); } function Gi (t, r, e, n) { var i = r['spans_' + t.id]; var o = 0; t.iter(Math.max(t.first, e), Math.min(t.first + t.size, n), function (e) { e.markedSpans && ((i = i || (r['spans_' + t.id] = {}))[o] = e.markedSpans), ++o; }); } function _i (e) { if (!e) return null; for (var t, r = 0; r < e.length; ++r)e[r].marker.explicitlyCleared ? t = t || e.slice(0, r) : t && t.push(e[r]); return t ? t.length ? t : null : e; } function $i (e, t) { var r = (function (e, t) { var r = t['spans_' + e.id]; if (!r) return null; for (var n = [], i = 0; i < t.text.length; ++i)n.push(_i(r[i])); return n; }(e, t)); var n = Oe(e, t); if (!r) return n; if (!n) return r; for (var i = 0; i < r.length; ++i) { var o = r[i]; var a = n[i]; if (o && a)e:for (var l = 0; l < a.length; ++l) { for (var s = a[l], c = 0; c < o.length; ++c) if (o[c].marker == s.marker) continue e; o.push(s); } else a && (r[i] = a); } return r; } function Xi (e, t, r) { for (var n = [], i = 0; i < e.length; ++i) { var o = e[i]; if (o.ranges)n.push(r ? Ti.prototype.deepCopy.call(o) : o); else { var a = o.changes; var l = []; n.push({ changes: l }); for (var s = 0; s < a.length; ++s) { var c = a[s]; var u = void 0; if (l.push({ from: c.from, to: c.to, text: c.text }), t) for (var d in c)(u = d.match(/^spans_(\d+)$/)) && j(t, Number(u[1])) > -1 && (X(l)[d] = c[d], delete c[d]); } } } return n; } function Yi (e, t, r, n) { if (n) { var i = e.anchor; if (r) { var o = ve(t, i) < 0; o != ve(r, i) < 0 ? (i = t, t = r) : o != ve(t, r) < 0 && (t = r); } return new Li(i, t); } return new Li(r || t, t); } function Zi (e, t, r, n, i) { i == null && (i = e.cm && (e.cm.display.shift || e.extend)), ro(e, new Ti([Yi(e.sel.primary(), t, r, i)], 0), n); } function Qi (e, t, r) { for (var n = [], i = e.cm && (e.cm.display.shift || e.extend), o = 0; o < e.sel.ranges.length; o++)n[o] = Yi(e.sel.ranges[o], t[o], null, i); ro(e, Mi(n, e.sel.primIndex), r); } function Ji (e, t, r, n) { var i = e.sel.ranges.slice(0); i[t] = r, ro(e, Mi(i, e.sel.primIndex), n); } function eo (e, t, r, n) { ro(e, Ai(t, r), n); } function to (e, t, r) { var n = e.history.done; var i = X(n); i && i.ranges ? no(e, n[n.length - 1] = t, r) : ro(e, t, r); } function ro (e, t, r) { no(e, t, r), Ui(e, e.sel, e.cm ? e.cm.curOp.id : NaN, r); } function no (e, t, r) { (mt(e, 'beforeSelectionChange') || e.cm && mt(e.cm, 'beforeSelectionChange')) && (t = (function (r, e, t) { var n = { ranges: e.ranges, update: function (e) { this.ranges = []; for (var t = 0; t < e.length; t++) this.ranges[t] = new Li(Ce(r, e[t].anchor), Ce(r, e[t].head)); }, origin: t && t.origin }; return ft(r, 'beforeSelectionChange', r, n), r.cm && ft(r.cm, 'beforeSelectionChange', r.cm, n), n.ranges != e.ranges ? Mi(n.ranges, n.ranges.length - 1) : e; }(e, t, r))); var n = r && r.bias || (ve(t.primary().head, e.sel.primary().head) < 0 ? -1 : 1); io(e, ao(e, t, n, !0)), r && !1 === r.scroll || !e.cm || Hn(e.cm); } function io (e, t) { t.equals(e.sel) || (e.sel = t, e.cm && (e.cm.curOp.updateInput = e.cm.curOp.selectionChanged = !0, pt(e.cm)), gr(e, 'cursorActivity', e)); } function oo (e) { io(e, ao(e, e.sel, null, !1)); } function ao (e, t, r, n) { for (var i, o = 0; o < t.ranges.length; o++) { var a = t.ranges[o]; var l = t.ranges.length == e.sel.ranges.length && e.sel.ranges[o]; var s = so(e, a.anchor, l && l.anchor, r, n); var c = so(e, a.head, l && l.head, r, n); !i && s == a.anchor && c == a.head || ((i = i || t.ranges.slice(0, o))[o] = new Li(s, c)); } return i ? Mi(i, t.primIndex) : t; } function lo (e, t, r, n, i) { var o = se(e, t.line); if (o.markedSpans) for (var a = 0; a < o.markedSpans.length; ++a) { var l = o.markedSpans[a]; var s = l.marker; if ((l.from == null || (s.inclusiveLeft ? l.from <= t.ch : l.from < t.ch)) && (l.to == null || (s.inclusiveRight ? l.to >= t.ch : l.to > t.ch))) { if (i && (ft(s, 'beforeCursorEnter'), s.explicitlyCleared)) { if (o.markedSpans) { --a; continue; } break; } if (!s.atomic) continue; if (r) { var c = s.find(n < 0 ? 1 : -1); var u = void 0; if ((n < 0 ? s.inclusiveRight : s.inclusiveLeft) && (c = co(e, c, -n, c && c.line == t.line ? o : null)), c && c.line == t.line && (u = ve(c, r)) && (n < 0 ? u < 0 : u > 0)) return lo(e, c, t, n, i); } var d = s.find(n < 0 ? -1 : 1); return (n < 0 ? s.inclusiveLeft : s.inclusiveRight) && (d = co(e, d, n, d.line == t.line ? o : null)), d ? lo(e, d, t, n, i) : null; } } return t; } function so (e, t, r, n, i) { var o = n || 1; var a = lo(e, t, r, o, i) || !i && lo(e, t, r, o, !0) || lo(e, t, r, -o, i) || !i && lo(e, t, r, -o, !0); return a || (e.cantEdit = !0, ge(e.first, 0)); } function co (e, t, r, n) { return r < 0 && t.ch == 0 ? t.line > e.first ? Ce(e, ge(t.line - 1)) : null : r > 0 && t.ch == (n || se(e, t.line)).text.length ? t.line < e.first + e.size - 1 ? ge(t.line + 1, 0) : null : new ge(t.line, t.ch + r); } function uo (e) { e.setSelection(ge(e.firstLine(), 0), ge(e.lastLine()), q); } function fo (i, e, t) { var o = { canceled: !1, from: e.from, to: e.to, text: e.text, origin: e.origin, cancel: function () { return o.canceled = !0; } }; return t && (o.update = function (e, t, r, n) { e && (o.from = Ce(i, e)), t && (o.to = Ce(i, t)), r && (o.text = r), void 0 !== n && (o.origin = n); }), ft(i, 'beforeChange', i, o), i.cm && ft(i.cm, 'beforeChange', i.cm, o), o.canceled ? null : { from: o.from, to: o.to, text: o.text, origin: o.origin }; } function ho (e, t, r) { if (e.cm) { if (!e.cm.curOp) return ri(e.cm, ho)(e, t, r); if (e.cm.state.suppressEdits) return; } if (!(mt(e, 'beforeChange') || e.cm && mt(e.cm, 'beforeChange')) || (t = fo(e, t, !0))) { var n = Te && !r && (function (e, t, r) { var n = null; if (e.iter(t.line, r.line + 1, function (e) { if (e.markedSpans) for (var t = 0; t < e.markedSpans.length; ++t) { var r = e.markedSpans[t].marker; !r.readOnly || n && j(n, r) != -1 || (n = n || []).push(r); } }), !n) return null; for (var i = [{ from: t, to: r }], o = 0; o < n.length; ++o) for (var a = n[o], l = a.find(0), s = 0; s < i.length; ++s) { var c = i[s]; if (!(ve(c.to, l.from) < 0 || ve(c.from, l.to) > 0)) { var u = [s, 1]; var d = ve(c.from, l.from); var f = ve(c.to, l.to); (d < 0 || !a.inclusiveLeft && !d) && u.push({ from: c.from, to: l.from }), (f > 0 || !a.inclusiveRight && !f) && u.push({ from: l.to, to: c.to }), i.splice.apply(i, u), s += u.length - 3; } } return i; }(e, t.from, t.to)); if (n) for (var i = n.length - 1; i >= 0; --i)po(e, { from: n[i].from, to: n[i].to, text: i ? [''] : t.text, origin: t.origin }); else po(e, t); } } function po (e, r) { if (r.text.length != 1 || r.text[0] != '' || ve(r.from, r.to) != 0) { var t = zi(e, r); qi(e, r, t, e.cm ? e.cm.curOp.id : NaN), vo(e, r, t, Oe(e, r)); var n = []; Ii(e, function (e, t) { t || j(n, e.history) != -1 || (xo(e.history, r), n.push(e.history)), vo(e, r, null, Oe(e, r)); }); } } function mo (i, o, e) { var t = i.cm && i.cm.state.suppressEdits; if (!t || e) { for (var a, r = i.history, n = i.sel, l = o == 'undo' ? r.done : r.undone, s = o == 'undo' ? r.undone : r.done, c = 0; c < l.length && (a = l[c], e ? !a.ranges || a.equals(i.sel) : a.ranges); c++);if (c != l.length) { for (r.lastOrigin = r.lastSelOrigin = null; ;) { if (!(a = l.pop()).ranges) { if (t) return void l.push(a); break; } if (Vi(a, s), e && !a.equals(i.sel)) return void ro(i, a, { clearRedo: !1 }); n = a; } var u = []; Vi(n, s), s.push({ changes: u, generation: r.generation }), r.generation = a.generation || ++r.maxGeneration; for (var d = mt(i, 'beforeChange') || i.cm && mt(i.cm, 'beforeChange'), f = function (e) { var r = a.changes[e]; if (r.origin = o, d && !fo(i, r, !1)) return l.length = 0, {}; u.push(Bi(i, r)); var t = e ? zi(i, r) : X(l); vo(i, r, t, $i(i, r)), !e && i.cm && i.cm.scrollIntoView({ from: r.from, to: Ni(r) }); var n = []; Ii(i, function (e, t) { t || j(n, e.history) != -1 || (xo(e.history, r), n.push(e.history)), vo(e, r, null, $i(e, r)); }); }, h = a.changes.length - 1; h >= 0; --h) { var p = f(h); if (p) return p.v; } } } } function go (e, t) { if (t != 0 && (e.first += t, e.sel = new Ti(Y(e.sel.ranges, function (e) { return new Li(ge(e.anchor.line + t, e.anchor.ch), ge(e.head.line + t, e.head.ch)); }), e.sel.primIndex), e.cm)) { oi(e.cm, e.first, e.first - t, t); for (var r = e.cm.display, n = r.viewFrom; n < r.viewTo; n++)ai(e.cm, n, 'gutter'); } } function vo (e, t, r, n) { if (e.cm && !e.cm.curOp) return ri(e.cm, vo)(e, t, r, n); if (t.to.line < e.first)go(e, t.text.length - 1 - (t.to.line - t.from.line)); else if (!(t.from.line > e.lastLine())) { if (t.from.line < e.first) { var i = t.text.length - 1 - (e.first - t.from.line); go(e, i), t = { from: ge(e.first, 0), to: ge(t.to.line + i, t.to.ch), text: [X(t.text)], origin: t.origin }; } var o = e.lastLine(); t.to.line > o && (t = { from: t.from, to: ge(o, se(e, o).text.length), text: [t.text[0]], origin: t.origin }), t.removed = ce(e, t.from, t.to), r = r || zi(e, t), e.cm ? (function (e, t, r) { var n = e.doc; var i = e.display; var o = t.from; var a = t.to; var l = !1; var s = o.line; e.options.lineWrapping || (s = fe(Ke(se(n, o.line))), n.iter(s, a.line + 1, function (e) { if (e == i.maxLine) return l = !0; })); n.sel.contains(t.from, t.to) > -1 && pt(e); Ei(n, t, r, hn(e)), e.options.lineWrapping || (n.iter(s, o.line + t.text.length, function (e) { var t = $e(e); t > i.maxLineLength && (i.maxLine = e, i.maxLineLength = t, i.maxLineChanged = !0, l = !1); }), l && (e.curOp.updateMaxLine = !0)); (function (e, t) { if (e.modeFrontier = Math.min(e.modeFrontier, t), !(e.highlightFrontier < t - 10)) { for (var r = e.first, n = t - 1; r < n; n--) { var i = se(e, n).stateAfter; if (i && (!(i instanceof qt) || n + i.lookAhead < t)) { r = n + 1; break; } }e.highlightFrontier = Math.min(e.highlightFrontier, r); } })(n, o.line), ui(e, 400); var c = t.text.length - (a.line - o.line) - 1; t.full ? oi(e) : o.line != a.line || t.text.length != 1 || Pi(e.doc, t) ? oi(e, o.line, a.line + 1, c) : ai(e, o.line, 'text'); var u = mt(e, 'changes'); var d = mt(e, 'change'); if (d || u) { var f = { from: o, to: a, text: t.text, removed: t.removed, origin: t.origin }; d && gr(e, 'change', e, f), u && (e.curOp.changeObjs || (e.curOp.changeObjs = [])).push(f); }e.display.selForContextMenu = null; }(e.cm, t, n)) : Ei(e, t, n), no(e, r, q); } } function yo (e, t, r, n, i) { var o; ve(n = n || r, r) < 0 && (r = (o = [n, r])[0], n = o[1]); typeof t == 'string' && (t = e.splitLines(t)), ho(e, { from: r, to: n, text: t, origin: i }); } function bo (e, t, r, n) { r < e.line ? e.line += n : t < e.line && (e.line = t, e.ch = 0); } function wo (e, t, r, n) { for (var i = 0; i < e.length; ++i) { var o = e[i]; var a = !0; if (o.ranges) { o.copied || ((o = e[i] = o.deepCopy()).copied = !0); for (var l = 0; l < o.ranges.length; l++)bo(o.ranges[l].anchor, t, r, n), bo(o.ranges[l].head, t, r, n); } else { for (var s = 0; s < o.changes.length; ++s) { var c = o.changes[s]; if (r < c.from.line)c.from = ge(c.from.line + n, c.from.ch), c.to = ge(c.to.line + n, c.to.ch); else if (t <= c.to.line) { a = !1; break; } }a || (e.splice(0, i + 1), i = 0); } } } function xo (e, t) { var r = t.from.line; var n = t.to.line; var i = t.text.length - (n - r) - 1; wo(e.done, r, n, i), wo(e.undone, r, n, i); } function ko (e, t, r, n) { var i = t; var o = t; return typeof t == 'number' ? o = se(e, ke(e, t)) : i = fe(t), i == null ? null : (n(o, i) && e.cm && ai(e.cm, i, r), o); } function Co (e) { this.lines = e, this.parent = null; for (var t = 0, r = 0; r < e.length; ++r)e[r].parent = this, t += e[r].height; this.height = t; } function So (e) { this.children = e; for (var t = 0, r = 0, n = 0; n < e.length; ++n) { var i = e[n]; t += i.chunkSize(), r += i.height, i.parent = this; } this.size = t, this.height = r, this.parent = null; }Li.prototype.from = function () { return xe(this.anchor, this.head); }, Li.prototype.to = function () { return we(this.anchor, this.head); }, Li.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch; }, Co.prototype = { chunkSize: function () { return this.lines.length; }, removeInner: function (e, t) { for (var r, n = e, i = e + t; n < i; ++n) { var o = this.lines[n]; this.height -= o.height, (r = o).parent = null, We(r), gr(o, 'delete'); } this.lines.splice(e, t); }, collapse: function (e) { e.push.apply(e, this.lines); }, insertInner: function (e, t, r) { this.height += r, this.lines = this.lines.slice(0, e).concat(t).concat(this.lines.slice(e)); for (var n = 0; n < t.length; ++n)t[n].parent = this; }, iterN: function (e, t, r) { for (var n = e + t; e < n; ++e) if (r(this.lines[e])) return !0; } }, So.prototype = { chunkSize: function () { return this.size; }, removeInner: function (e, t) { this.size -= t; for (var r = 0; r < this.children.length; ++r) { var n = this.children[r]; var i = n.chunkSize(); if (e < i) { var o = Math.min(t, i - e); var a = n.height; if (n.removeInner(e, o), this.height -= a - n.height, i == o && (this.children.splice(r--, 1), n.parent = null), (t -= o) == 0) break; e = 0; } else e -= i; } if (this.size - t < 25 && (this.children.length > 1 || !(this.children[0] instanceof Co))) { var l = []; this.collapse(l), this.children = [new Co(l)], this.children[0].parent = this; } }, collapse: function (e) { for (var t = 0; t < this.children.length; ++t) this.children[t].collapse(e); }, insertInner: function (e, t, r) { this.size += t.length, this.height += r; for (var n = 0; n < this.children.length; ++n) { var i = this.children[n]; var o = i.chunkSize(); if (e <= o) { if (i.insertInner(e, t, r), i.lines && i.lines.length > 50) { for (var a = i.lines.length % 25 + 25, l = a; l < i.lines.length;) { var s = new Co(i.lines.slice(l, l += 25)); i.height -= s.height, this.children.splice(++n, 0, s), s.parent = this; }i.lines = i.lines.slice(0, a), this.maybeSpill(); } break; }e -= o; } }, maybeSpill: function () { if (!(this.children.length <= 10)) { var e = this; do { var t = new So(e.children.splice(e.children.length - 5, 5)); if (e.parent) { e.size -= t.size, e.height -= t.height; var r = j(e.parent.children, e); e.parent.children.splice(r + 1, 0, t); } else { var n = new So(e.children); (n.parent = e).children = [n, t], e = n; }t.parent = e.parent; } while (e.children.length > 10);e.parent.maybeSpill(); } }, iterN: function (e, t, r) { for (var n = 0; n < this.children.length; ++n) { var i = this.children[n]; var o = i.chunkSize(); if (e < o) { var a = Math.min(t, o - e); if (i.iterN(e, a, r)) return !0; if ((t -= a) == 0) break; e = 0; } else e -= o; } } }; function To (e, t, r) { if (r) for (var n in r)r.hasOwnProperty(n) && (this[n] = r[n]); this.doc = e, this.node = t; } function Lo (e, t, r) { _e(t) < (e.curOp && e.curOp.scrollTop || e.doc.scrollTop) && Dn(e, r); }To.prototype.clear = function () { var e = this.doc.cm; var t = this.line.widgets; var r = this.line; var n = fe(r); if (n != null && t) { for (var i = 0; i < t.length; ++i)t[i] == this && t.splice(i--, 1); t.length || (r.widgets = null); var o = Ar(this); de(r, Math.max(0, r.height - o)), e && (ti(e, function () { Lo(e, r, -o), ai(e, n, 'widget'); }), gr(e, 'lineWidgetCleared', e, this, n)); } }, To.prototype.changed = function () { var e = this; var t = this.height; var r = this.doc.cm; var n = this.line; this.height = null; var i = Ar(this) - t; i && (de(n, n.height + i), r && ti(r, function () { r.curOp.forceUpdate = !0, Lo(r, n, i), gr(r, 'lineWidgetChanged', r, e, fe(n)); })); }, gt(To); var Mo = 0; var Ao = function (e, t) { this.lines = [], this.type = t, this.doc = e, this.id = ++Mo; }; function No (t, r, n, e, i) { if (e && e.shared) return (function (e, r, n, i, o) { (i = I(i)).shared = !1; var a = [No(e, r, n, i, o)]; var l = a[0]; var s = i.widgetNode; return Ii(e, function (e) { s && (i.widgetNode = s.cloneNode(!0)), a.push(No(e, Ce(e, r), Ce(e, n), i, o)); for (var t = 0; t < e.linked.length; ++t) if (e.linked[t].isParent) return; l = X(a); }), new Oo(a, l); }(t, r, n, e, i)); if (t.cm && !t.cm.curOp) return ri(t.cm, No)(t, r, n, e, i); var o = new Ao(t, i); var a = ve(r, n); if (e && I(e, o, !1), a > 0 || a == 0 && !1 !== o.clearWhenEmpty) return o; if (o.replacedWith && (o.collapsed = !0, o.widgetNode = N('span', [o.replacedWith], 'CodeMirror-widget'), e.handleMouseEvents || o.widgetNode.setAttribute('cm-ignore-events', 'true'), e.insertLeft && (o.widgetNode.insertLeft = !0)), o.collapsed) { if (Be(t, r.line, r, n, o) || r.line != n.line && Be(t, n.line, r, n, o)) throw new Error('Inserting collapsed marker partially overlapping an existing one'); Le = !0; }o.addToHistory && qi(t, { from: r, to: n, origin: 'markText' }, t.sel, NaN); var l; var s = r.line; var c = t.cm; if (t.iter(s, n.line + 1, function (e) { c && o.collapsed && !c.options.lineWrapping && Ke(e) == c.display.maxLine && (l = !0), o.collapsed && s != r.line && de(e, 0), (function (e, t) { e.markedSpans = e.markedSpans ? e.markedSpans.concat([t]) : [t], t.marker.attachLine(e); }(e, new Me(o, s == r.line ? r.ch : null, s == n.line ? n.ch : null))), ++s; }), o.collapsed && t.iter(r.line, n.line + 1, function (e) { Ve(t, e) && de(e, 0); }), o.clearOnEnter && ct(o, 'beforeCursorEnter', function () { return o.clear(); }), o.readOnly && (Te = !0, (t.history.done.length || t.history.undone.length) && t.clearHistory()), o.collapsed && (o.id = ++Mo, o.atomic = !0), c) { if (l && (c.curOp.updateMaxLine = !0), o.collapsed)oi(c, r.line, n.line + 1); else if (o.className || o.title || o.startStyle || o.endStyle || o.css) for (var u = r.line; u <= n.line; u++)ai(c, u, 'text'); o.atomic && oo(c.doc), gr(c, 'markerAdded', c, o); } return o; }Ao.prototype.clear = function () { var e = this; if (!this.explicitlyCleared) { var t = this.doc.cm; var r = t && !t.curOp; if (r && Xn(t), mt(this, 'clear')) { var n = this.find(); n && gr(this, 'clear', n.from, n.to); } for (var i = null, o = null, a = 0; a < this.lines.length; ++a) { var l = e.lines[a]; var s = Ae(l.markedSpans, e); t && !e.collapsed ? ai(t, fe(l), 'text') : t && (s.to != null && (o = fe(l)), s.from != null && (i = fe(l))), l.markedSpans = Ne(l.markedSpans, s), s.from == null && e.collapsed && !Ve(e.doc, l) && t && de(l, cn(t.display)); } if (t && this.collapsed && !t.options.lineWrapping) for (var c = 0; c < this.lines.length; ++c) { var u = Ke(e.lines[c]); var d = $e(u); d > t.display.maxLineLength && (t.display.maxLine = u, t.display.maxLineLength = d, t.display.maxLineChanged = !0); }i != null && t && this.collapsed && oi(t, i, o + 1), this.lines.length = 0, this.explicitlyCleared = !0, this.atomic && this.doc.cantEdit && (this.doc.cantEdit = !1, t && oo(t.doc)), t && gr(t, 'markerCleared', t, this, i, o), r && Yn(t), this.parent && this.parent.clear(); } }, Ao.prototype.find = function (e, t) { var r, n; e == null && this.type == 'bookmark' && (e = 1); for (var i = 0; i < this.lines.length; ++i) { var o = this.lines[i]; var a = Ae(o.markedSpans, this); if (a.from != null && (r = ge(t ? o : fe(o), a.from), e == -1)) return r; if (a.to != null && (n = ge(t ? o : fe(o), a.to), e == 1)) return n; } return r && { from: r, to: n }; }, Ao.prototype.changed = function () { var o = this; var a = this.find(-1, !0); var l = this; var s = this.doc.cm; a && s && ti(s, function () { var e = a.line; var t = fe(a.line); var r = Fr(s, t); if (r && (Vr(r), s.curOp.selectionChanged = s.curOp.forceUpdate = !0), s.curOp.updateMaxLine = !0, !Ve(l.doc, e) && l.height != null) { var n = l.height; l.height = null; var i = Ar(l) - n; i && de(e, e.height + i); }gr(s, 'markerChanged', s, o); }); }, Ao.prototype.attachLine = function (e) { if (!this.lines.length && this.doc.cm) { var t = this.doc.cm.curOp; t.maybeHiddenMarkers && j(t.maybeHiddenMarkers, this) != -1 || (t.maybeUnhiddenMarkers || (t.maybeUnhiddenMarkers = [])).push(this); } this.lines.push(e); }, Ao.prototype.detachLine = function (e) { if (this.lines.splice(j(this.lines, e), 1), !this.lines.length && this.doc.cm) { var t = this.doc.cm.curOp; (t.maybeHiddenMarkers || (t.maybeHiddenMarkers = [])).push(this); } }, gt(Ao); var Oo = function (e, t) { this.markers = e, this.primary = t; for (var r = 0; r < e.length; ++r)e[r].parent = this; }; function zo (e) { return e.findMarks(ge(e.first, 0), e.clipPos(ge(e.lastLine())), function (e) { return e.parent; }); } function Wo (o) { for (var e = function (e) { var t = o[e]; var r = [t.primary.doc]; Ii(t.primary.doc, function (e) { return r.push(e); }); for (var n = 0; n < t.markers.length; n++) { var i = t.markers[n]; j(r, i.doc) == -1 && (i.parent = null, t.markers.splice(n--, 1)); } }, t = 0; t < o.length; t++)e(t); }Oo.prototype.clear = function () { if (!this.explicitlyCleared) { this.explicitlyCleared = !0; for (var e = 0; e < this.markers.length; ++e) this.markers[e].clear(); gr(this, 'clear'); } }, Oo.prototype.find = function (e, t) { return this.primary.find(e, t); }, gt(Oo); var Do = 0; var Ho = function (e, t, r, n, i) { if (!(this instanceof Ho)) return new Ho(e, t, r, n, i); r == null && (r = 0), So.call(this, [new Co([new tr('', null)])]), this.first = r, this.scrollTop = this.scrollLeft = 0, this.cantEdit = !1, this.cleanGeneration = 1, this.modeFrontier = this.highlightFrontier = r; var o = ge(r, 0); this.sel = Ai(o), this.history = new ji(null), this.id = ++Do, this.modeOption = t, this.lineSep = n, this.direction = i == 'rtl' ? 'rtl' : 'ltr', this.extend = !1, typeof e == 'string' && (e = this.splitLines(e)), Ei(this, { from: o, to: o, text: e }), ro(this, Ai(o), q); }; Ho.prototype = Q(So.prototype, { constructor: Ho, iter: function (e, t, r) { r ? this.iterN(e - this.first, t - e, r) : this.iterN(this.first, this.first + this.size, e); }, insert: function (e, t) { for (var r = 0, n = 0; n < t.length; ++n)r += t[n].height; this.insertInner(e - this.first, t, r); }, remove: function (e, t) { this.removeInner(e - this.first, t); }, getValue: function (e) { var t = ue(this, this.first, this.first + this.size); return !1 === e ? t : t.join(e || this.lineSeparator()); }, setValue: ii(function (e) { var t = ge(this.first, 0); var r = this.first + this.size - 1; ho(this, { from: t, to: ge(r, se(this, r).text.length), text: this.splitLines(e), origin: 'setValue', full: !0 }, !0), this.cm && Pn(this.cm, 0, 0), ro(this, Ai(t), q); }), replaceRange: function (e, t, r, n) { yo(this, e, t = Ce(this, t), r = r ? Ce(this, r) : t, n); }, getRange: function (e, t, r) { var n = ce(this, Ce(this, e), Ce(this, t)); return !1 === r ? n : n.join(r || this.lineSeparator()); }, getLine: function (e) { var t = this.getLineHandle(e); return t && t.text; }, getLineHandle: function (e) { if (pe(this, e)) return se(this, e); }, getLineNumber: function (e) { return fe(e); }, getLineHandleVisualStart: function (e) { return typeof e == 'number' && (e = se(this, e)), Ke(e); }, lineCount: function () { return this.size; }, firstLine: function () { return this.first; }, lastLine: function () { return this.first + this.size - 1; }, clipPos: function (e) { return Ce(this, e); }, getCursor: function (e) { var t = this.sel.primary(); return e == null || e == 'head' ? t.head : e == 'anchor' ? t.anchor : e == 'end' || e == 'to' || !1 === e ? t.to() : t.from(); }, listSelections: function () { return this.sel.ranges; }, somethingSelected: function () { return this.sel.somethingSelected(); }, setCursor: ii(function (e, t, r) { eo(this, Ce(this, typeof e == 'number' ? ge(e, t || 0) : e), null, r); }), setSelection: ii(function (e, t, r) { eo(this, Ce(this, e), Ce(this, t || e), r); }), extendSelection: ii(function (e, t, r) { Zi(this, Ce(this, e), t && Ce(this, t), r); }), extendSelections: ii(function (e, t) { Qi(this, Se(this, e), t); }), extendSelectionsBy: ii(function (e, t) { Qi(this, Se(this, Y(this.sel.ranges, e)), t); }), setSelections: ii(function (e, t, r) { if (e.length) { for (var n = [], i = 0; i < e.length; i++)n[i] = new Li(Ce(this, e[i].anchor), Ce(this, e[i].head)); t == null && (t = Math.min(e.length - 1, this.sel.primIndex)), ro(this, Mi(n, t), r); } }), addSelection: ii(function (e, t, r) { var n = this.sel.ranges.slice(0); n.push(new Li(Ce(this, e), Ce(this, t || e))), ro(this, Mi(n, n.length - 1), r); }), getSelection: function (e) { for (var t, r = this.sel.ranges, n = 0; n < r.length; n++) { var i = ce(this, r[n].from(), r[n].to()); t = t ? t.concat(i) : i; } return !1 === e ? t : t.join(e || this.lineSeparator()); }, getSelections: function (e) { for (var t = [], r = this.sel.ranges, n = 0; n < r.length; n++) { var i = ce(this, r[n].from(), r[n].to()); !1 !== e && (i = i.join(e || this.lineSeparator())), t[n] = i; } return t; }, replaceSelection: function (e, t, r) { for (var n = [], i = 0; i < this.sel.ranges.length; i++)n[i] = e; this.replaceSelections(n, t, r || '+input'); }, replaceSelections: ii(function (e, t, r) { for (var n = [], i = this.sel, o = 0; o < i.ranges.length; o++) { var a = i.ranges[o]; n[o] = { from: a.from(), to: a.to(), text: this.splitLines(e[o]), origin: r }; } for (var l = t && t != 'end' && (function (e, t, r) { for (var n = [], i = ge(e.first, 0), o = i, a = 0; a < t.length; a++) { var l = t[a]; var s = Wi(l.from, i, o); var c = Wi(Ni(l), i, o); if (i = l.to, o = c, r == 'around') { var u = e.sel.ranges[a]; var d = ve(u.head, u.anchor) < 0; n[a] = new Li(d ? c : s, d ? s : c); } else n[a] = new Li(s, s); } return new Ti(n, e.sel.primIndex); }(this, n, t)), s = n.length - 1; s >= 0; s--)ho(this, n[s]); l ? to(this, l) : this.cm && Hn(this.cm); }), undo: ii(function () { mo(this, 'undo'); }), redo: ii(function () { mo(this, 'redo'); }), undoSelection: ii(function () { mo(this, 'undo', !0); }), redoSelection: ii(function () { mo(this, 'redo', !0); }), setExtending: function (e) { this.extend = e; }, getExtending: function () { return this.extend; }, historySize: function () { for (var e = this.history, t = 0, r = 0, n = 0; n < e.done.length; n++)e.done[n].ranges || ++t; for (var i = 0; i < e.undone.length; i++)e.undone[i].ranges || ++r; return { undo: t, redo: r }; }, clearHistory: function () { this.history = new ji(this.history.maxGeneration); }, markClean: function () { this.cleanGeneration = this.changeGeneration(!0); }, changeGeneration: function (e) { return e && (this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null), this.history.generation; }, isClean: function (e) { return this.history.generation == (e || this.cleanGeneration); }, getHistory: function () { return { done: Xi(this.history.done), undone: Xi(this.history.undone) }; }, setHistory: function (e) { var t = this.history = new ji(this.history.maxGeneration); t.done = Xi(e.done.slice(0), null, !0), t.undone = Xi(e.undone.slice(0), null, !0); }, setGutterMarker: ii(function (e, r, n) { return ko(this, e, 'gutter', function (e) { var t = e.gutterMarkers || (e.gutterMarkers = {}); return !(t[r] = n) && re(t) && (e.gutterMarkers = null), !0; }); }), clearGutter: ii(function (t) { var r = this; this.iter(function (e) { e.gutterMarkers && e.gutterMarkers[t] && ko(r, e, 'gutter', function () { return e.gutterMarkers[t] = null, re(e.gutterMarkers) && (e.gutterMarkers = null), !0; }); }); }), lineInfo: function (e) { var t; if (typeof e == 'number') { if (!pe(this, e)) return null; if (!(e = se(this, t = e))) return null; } else if ((t = fe(e)) == null) return null; return { line: t, handle: e, text: e.text, gutterMarkers: e.gutterMarkers, textClass: e.textClass, bgClass: e.bgClass, wrapClass: e.wrapClass, widgets: e.widgets }; }, addLineClass: ii(function (e, r, n) { return ko(this, e, r == 'gutter' ? 'gutter' : 'class', function (e) { var t = r == 'text' ? 'textClass' : r == 'background' ? 'bgClass' : r == 'gutter' ? 'gutterClass' : 'wrapClass'; if (e[t]) { if (S(n).test(e[t])) return !1; e[t] += ' ' + n; } else e[t] = n; return !0; }); }), removeLineClass: ii(function (e, o, a) { return ko(this, e, o == 'gutter' ? 'gutter' : 'class', function (e) { var t = o == 'text' ? 'textClass' : o == 'background' ? 'bgClass' : o == 'gutter' ? 'gutterClass' : 'wrapClass'; var r = e[t]; if (!r) return !1; if (a == null)e[t] = null; else { var n = r.match(S(a)); if (!n) return !1; var i = n.index + n[0].length; e[t] = r.slice(0, n.index) + (n.index && i != r.length ? ' ' : '') + r.slice(i) || null; } return !0; }); }), addLineWidget: ii(function (e, t, r) { return (function (n, e, t, r) { var i = new To(n, t, r); var o = n.cm; return o && i.noHScroll && (o.display.alignWidgets = !0), ko(n, e, 'widget', function (e) { var t = e.widgets || (e.widgets = []); if (i.insertAt == null ? t.push(i) : t.splice(Math.min(t.length - 1, Math.max(0, i.insertAt)), 0, i), i.line = e, o && !Ve(n, e)) { var r = _e(e) < n.scrollTop; de(e, e.height + Ar(i)), r && Dn(o, i.height), o.curOp.forceUpdate = !0; } return !0; }), o && gr(o, 'lineWidgetAdded', o, i, typeof e == 'number' ? e : fe(e)), i; }(this, e, t, r)); }), removeLineWidget: function (e) { e.clear(); }, markText: function (e, t, r) { return No(this, Ce(this, e), Ce(this, t), r, r && r.type || 'range'); }, setBookmark: function (e, t) { var r = { replacedWith: t && (t.nodeType == null ? t.widget : t), insertLeft: t && t.insertLeft, clearWhenEmpty: !1, shared: t && t.shared, handleMouseEvents: t && t.handleMouseEvents }; return No(this, e = Ce(this, e), e, r, 'bookmark'); }, findMarksAt: function (e) { var t = []; var r = se(this, (e = Ce(this, e)).line).markedSpans; if (r) for (var n = 0; n < r.length; ++n) { var i = r[n]; (i.from == null || i.from <= e.ch) && (i.to == null || i.to >= e.ch) && t.push(i.marker.parent || i.marker); } return t; }, findMarks: function (i, o, a) { i = Ce(this, i), o = Ce(this, o); var l = []; var s = i.line; return this.iter(i.line, o.line + 1, function (e) { var t = e.markedSpans; if (t) for (var r = 0; r < t.length; r++) { var n = t[r]; n.to != null && s == i.line && i.ch >= n.to || n.from == null && s != i.line || n.from != null && s == o.line && n.from >= o.ch || a && !a(n.marker) || l.push(n.marker.parent || n.marker); }++s; }), l; }, getAllMarks: function () { var n = []; return this.iter(function (e) { var t = e.markedSpans; if (t) for (var r = 0; r < t.length; ++r)t[r].from != null && n.push(t[r].marker); }), n; }, posFromIndex: function (r) { var n; var i = this.first; var o = this.lineSeparator().length; return this.iter(function (e) { var t = e.text.length + o; if (r < t) return n = r, !0; r -= t, ++i; }), Ce(this, ge(i, n)); }, indexFromPos: function (e) { var t = (e = Ce(this, e)).ch; if (e.line < this.first || e.ch < 0) return 0; var r = this.lineSeparator().length; return this.iter(this.first, e.line, function (e) { t += e.text.length + r; }), t; }, copy: function (e) { var t = new Ho(ue(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep, this.direction); return t.scrollTop = this.scrollTop, t.scrollLeft = this.scrollLeft, t.sel = this.sel, t.extend = !1, e && (t.history.undoDepth = this.history.undoDepth, t.setHistory(this.getHistory())), t; }, linkedDoc: function (e) { e = e || {}; var t = this.first; var r = this.first + this.size; e.from != null && e.from > t && (t = e.from), e.to != null && e.to < r && (r = e.to); var n = new Ho(ue(this, t, r), e.mode || this.modeOption, t, this.lineSep, this.direction); return e.sharedHist && (n.history = this.history), (this.linked || (this.linked = [])).push({ doc: n, sharedHist: e.sharedHist }), n.linked = [{ doc: this, isParent: !0, sharedHist: e.sharedHist }], (function (e, t) { for (var r = 0; r < t.length; r++) { var n = t[r]; var i = n.find(); var o = e.clipPos(i.from); var a = e.clipPos(i.to); if (ve(o, a)) { var l = No(e, o, a, n.primary, n.primary.type); n.markers.push(l), l.parent = n; } } }(n, zo(this))), n; }, unlinkDoc: function (e) { if (e instanceof Wa && (e = e.doc), this.linked) for (var t = 0; t < this.linked.length; ++t) { if (this.linked[t].doc == e) { this.linked.splice(t, 1), e.unlinkDoc(this), Wo(zo(this)); break; } } if (e.history == this.history) { var r = [e.id]; Ii(e, function (e) { return r.push(e.id); }, !0), e.history = new ji(null), e.history.done = Xi(this.history.done, r), e.history.undone = Xi(this.history.undone, r); } }, iterLinkedDocs: function (e) { Ii(this, e); }, getMode: function () { return this.mode; }, getEditor: function () { return this.cm; }, splitLines: function (e) { return this.lineSep ? e.split(this.lineSep) : Nt(e); }, lineSeparator: function () { return this.lineSep || '\n'; }, setDirection: ii(function (e) { e != 'rtl' && (e = 'ltr'), e != this.direction && (this.direction = e, this.iter(function (e) { return e.order = null; }), this.cm && (function (e) { ti(e, function () { Ri(e), oi(e); }); }(this.cm))); }) }), Ho.prototype.eachLine = Ho.prototype.iter; var Po = 0; function Eo (e) { var i = this; if (Io(i), !ht(i, e) && !Nr(i.display, e)) { vt(e), x && (Po = +new Date()); var o = mn(i, e, !0); var t = e.dataTransfer.files; if (o && !i.isReadOnly()) if (t && t.length && window.FileReader && window.File) for (var a = t.length, l = Array(a), s = 0, r = function (e, r) { if (!i.options.allowDropFileTypes || j(i.options.allowDropFileTypes, e.type) != -1) { var n = new FileReader(); n.onload = ri(i, function () { var e = n.result; if (/[\x00-\x08\x0e-\x1f]{2}/.test(e) && (e = ''), l[r] = e, ++s == a) { var t = { from: o = Ce(i.doc, o), to: o, text: i.doc.splitLines(l.join(i.doc.lineSeparator())), origin: 'paste' }; ho(i.doc, t), to(i.doc, Ai(o, Ni(t))); } }), n.readAsText(e); } }, n = 0; n < a; ++n)r(t[n], n); else { if (i.state.draggingText && i.doc.sel.contains(o) > -1) return i.state.draggingText(e), void setTimeout(function () { return i.display.input.focus(); }, 20); try { var c = e.dataTransfer.getData('Text'); if (c) { var u; if (i.state.draggingText && !i.state.draggingText.copy && (u = i.listSelections()), no(i.doc, Ai(o, o)), u) for (var d = 0; d < u.length; ++d)yo(i.doc, '', u[d].anchor, u[d].head, 'drag'); i.replaceSelection(c, 'around', 'paste'), i.display.input.focus(); } } catch (e) {} } } } function Io (e) { e.display.dragCursor && (e.display.lineSpace.removeChild(e.display.dragCursor), e.display.dragCursor = null); } function Fo (e) { if (document.getElementsByClassName) for (var t = document.getElementsByClassName('CodeMirror'), r = 0; r < t.length; r++) { var n = t[r].CodeMirror; n && e(n); } } var Ro = !1; function jo () { Ro || ((function () { var e; ct(window, 'resize', function () { e == null && (e = setTimeout(function () { e = null, Fo(Bo); }, 100)); }), ct(window, 'blur', function () { return Fo(Ln); }); }()), Ro = !0); } function Bo (e) { var t = e.display; t.cachedCharWidth = t.cachedTextHeight = t.cachedPaddingH = null, t.scrollbarsClipped = !1, e.setSize(); } for (var Ko = { 3: 'Pause', 8: 'Backspace', 9: 'Tab', 13: 'Enter', 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 19: 'Pause', 20: 'CapsLock', 27: 'Esc', 32: 'Space', 33: 'PageUp', 34: 'PageDown', 35: 'End', 36: 'Home', 37: 'Left', 38: 'Up', 39: 'Right', 40: 'Down', 44: 'PrintScrn', 45: 'Insert', 46: 'Delete', 59: ';', 61: '=', 91: 'Mod', 92: 'Mod', 93: 'Mod', 106: '*', 107: '=', 109: '-', 110: '.', 111: '/', 127: 'Delete', 145: 'ScrollLock', 173: '-', 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`', 219: '[', 220: '\\', 221: ']', 222: "'", 63232: 'Up', 63233: 'Down', 63234: 'Left', 63235: 'Right', 63272: 'Delete', 63273: 'Home', 63275: 'End', 63276: 'PageUp', 63277: 'PageDown', 63302: 'Insert' }, qo = 0; qo < 10; qo++)Ko[qo + 48] = Ko[qo + 96] = String(qo); for (var Uo = 65; Uo <= 90; Uo++)Ko[Uo] = String.fromCharCode(Uo); for (var Vo = 1; Vo <= 12; Vo++)Ko[Vo + 111] = Ko[Vo + 63235] = 'F' + Vo; var Go = {}; function _o (e) { var t; var r; var n; var i; var o = e.split(/-(?!$)/); e = o[o.length - 1]; for (var a = 0; a < o.length - 1; a++) { var l = o[a]; if (/^(cmd|meta|m)$/i.test(l))i = !0; else if (/^a(lt)?$/i.test(l))t = !0; else if (/^(c|ctrl|control)$/i.test(l))r = !0; else { if (!/^s(hift)?$/i.test(l)) throw new Error('Unrecognized modifier name: ' + l); n = !0; } } return t && (e = 'Alt-' + e), r && (e = 'Ctrl-' + e), i && (e = 'Cmd-' + e), n && (e = 'Shift-' + e), e; } function $o (e) { var t = {}; for (var r in e) if (e.hasOwnProperty(r)) { var n = e[r]; if (/^(name|fallthrough|(de|at)tach)$/.test(r)) continue; if (n == '...') { delete e[r]; continue; } for (var i = Y(r.split(' '), _o), o = 0; o < i.length; o++) { var a = void 0; var l = void 0; a = o == i.length - 1 ? (l = i.join(' '), n) : (l = i.slice(0, o + 1).join(' '), '...'); var s = t[l]; if (s) { if (s != a) throw new Error('Inconsistent bindings for ' + l); } else t[l] = a; } delete e[r]; } for (var c in t)e[c] = t[c]; return e; } function Xo (e, t, r, n) { var i = (t = Jo(t)).call ? t.call(e, n) : t[e]; if (!1 === i) return 'nothing'; if (i === '...') return 'multi'; if (i != null && r(i)) return 'handled'; if (t.fallthrough) { if (Object.prototype.toString.call(t.fallthrough) != '[object Array]') return Xo(e, t.fallthrough, r, n); for (var o = 0; o < t.fallthrough.length; o++) { var a = Xo(e, t.fallthrough[o], r, n); if (a) return a; } } } function Yo (e) { var t = typeof e == 'string' ? e : Ko[e.keyCode]; return t == 'Ctrl' || t == 'Alt' || t == 'Shift' || t == 'Mod'; } function Zo (e, t, r) { var n = e; return t.altKey && n != 'Alt' && (e = 'Alt-' + e), (y ? t.metaKey : t.ctrlKey) && n != 'Ctrl' && (e = 'Ctrl-' + e), (y ? t.ctrlKey : t.metaKey) && n != 'Cmd' && (e = 'Cmd-' + e), !r && t.shiftKey && n != 'Shift' && (e = 'Shift-' + e), e; } function Qo (e, t) { if (g && e.keyCode == 34 && e.char) return !1; var r = Ko[e.keyCode]; return r != null && !e.altGraphKey && (e.keyCode == 3 && e.code && (r = e.code), Zo(r, e, t)); } function Jo (e) { return typeof e == 'string' ? Go[e] : e; } function ea (t, e) { for (var r = t.doc.sel.ranges, n = [], i = 0; i < r.length; i++) { for (var o = e(r[i]); n.length && ve(o.from, X(n).to) <= 0;) { var a = n.pop(); if (ve(a.from, o.from) < 0) { o.from = a.from; break; } }n.push(o); }ti(t, function () { for (var e = n.length - 1; e >= 0; e--)yo(t.doc, '', n[e].from, n[e].to, '+delete'); Hn(t); }); } function ta (e, t, r) { var n = oe(e.text, t + r, r); return n < 0 || n > e.text.length ? null : n; } function ra (e, t, r) { var n = ta(e, t.ch, r); return n == null ? null : new ge(t.line, n, r < 0 ? 'after' : 'before'); } function na (e, t, r, n, i) { if (e) { var o = lt(r, t.doc.direction); if (o) { var a; var l = i < 0 ? X(o) : o[0]; var s = i < 0 == (l.level == 1) ? 'after' : 'before'; if (l.level > 0 || t.doc.direction == 'rtl') { var c = Rr(t, r); a = i < 0 ? r.text.length - 1 : 0; var u = jr(t, c, a).top; a = ae(function (e) { return jr(t, c, e).top == u; }, i < 0 == (l.level == 1) ? l.from : l.to - 1, a), s == 'before' && (a = ta(r, a, 1)); } else a = i < 0 ? l.to : l.from; return new ge(n, a, s); } } return new ge(n, i < 0 ? r.text.length : 0, i < 0 ? 'before' : 'after'); } function ia (t, r, l, e) { var s = lt(r, t.doc.direction); if (!s) return ra(r, l, e); l.ch >= r.text.length ? (l.ch = r.text.length, l.sticky = 'before') : l.ch <= 0 && (l.ch = 0, l.sticky = 'after'); var n = Ze(s, l.ch, l.sticky); var i = s[n]; if (t.doc.direction == 'ltr' && i.level % 2 == 0 && (e > 0 ? i.to > l.ch : i.from < l.ch)) return ra(r, l, e); function c (e, t) { return ta(r, e instanceof ge ? e.ch : e, t); } function o (e) { return t.options.lineWrapping ? (a = a || Rr(t, r), an(t, r, a, e)) : { begin: 0, end: r.text.length }; } var a; var u = o(l.sticky == 'before' ? c(l, -1) : l.ch); if (t.doc.direction == 'rtl' || i.level == 1) { var d = i.level == 1 == e < 0; var f = c(l, d ? 1 : -1); if (f != null && (d ? f <= i.to && f <= u.end : f >= i.from && f >= u.begin)) { var h = d ? 'before' : 'after'; return new ge(l.line, f, h); } } function p (e, t, r) { for (var n = function (e, t) { return t ? new ge(l.line, c(e, 1), 'before') : new ge(l.line, e, 'after'); }; e >= 0 && e < s.length; e += t) { var i = s[e]; var o = t > 0 == (i.level != 1); var a = o ? r.begin : c(r.end, -1); if (i.from <= a && a < i.to) return n(a, o); if (a = o ? i.from : c(i.to, -1), r.begin <= a && a < r.end) return n(a, o); } } var m = p(n + e, e, u); if (m) return m; var g = e > 0 ? u.end : c(u.begin, -1); return g == null || e > 0 && g == r.text.length || !(m = p(e > 0 ? 0 : s.length - 1, e, o(g))) ? null : m; }Go.basic = { Left: 'goCharLeft', Right: 'goCharRight', Up: 'goLineUp', Down: 'goLineDown', End: 'goLineEnd', Home: 'goLineStartSmart', PageUp: 'goPageUp', PageDown: 'goPageDown', Delete: 'delCharAfter', Backspace: 'delCharBefore', 'Shift-Backspace': 'delCharBefore', Tab: 'defaultTab', 'Shift-Tab': 'indentAuto', Enter: 'newlineAndIndent', Insert: 'toggleOverwrite', Esc: 'singleSelection' }, Go.pcDefault = { 'Ctrl-A': 'selectAll', 'Ctrl-D': 'deleteLine', 'Ctrl-Z': 'undo', 'Shift-Ctrl-Z': 'redo', 'Ctrl-Y': 'redo', 'Ctrl-Home': 'goDocStart', 'Ctrl-End': 'goDocEnd', 'Ctrl-Up': 'goLineUp', 'Ctrl-Down': 'goLineDown', 'Ctrl-Left': 'goGroupLeft', 'Ctrl-Right': 'goGroupRight', 'Alt-Left': 'goLineStart', 'Alt-Right': 'goLineEnd', 'Ctrl-Backspace': 'delGroupBefore', 'Ctrl-Delete': 'delGroupAfter', 'Ctrl-S': 'save', 'Ctrl-F': 'find', 'Ctrl-G': 'findNext', 'Shift-Ctrl-G': 'findPrev', 'Shift-Ctrl-F': 'replace', 'Shift-Ctrl-R': 'replaceAll', 'Ctrl-[': 'indentLess', 'Ctrl-]': 'indentMore', 'Ctrl-U': 'undoSelection', 'Shift-Ctrl-U': 'redoSelection', 'Alt-U': 'redoSelection', fallthrough: 'basic' }, Go.emacsy = { 'Ctrl-F': 'goCharRight', 'Ctrl-B': 'goCharLeft', 'Ctrl-P': 'goLineUp', 'Ctrl-N': 'goLineDown', 'Alt-F': 'goWordRight', 'Alt-B': 'goWordLeft', 'Ctrl-A': 'goLineStart', 'Ctrl-E': 'goLineEnd', 'Ctrl-V': 'goPageDown', 'Shift-Ctrl-V': 'goPageUp', 'Ctrl-D': 'delCharAfter', 'Ctrl-H': 'delCharBefore', 'Alt-D': 'delWordAfter', 'Alt-Backspace': 'delWordBefore', 'Ctrl-K': 'killLine', 'Ctrl-T': 'transposeChars', 'Ctrl-O': 'openLine' }, Go.macDefault = { 'Cmd-A': 'selectAll', 'Cmd-D': 'deleteLine', 'Cmd-Z': 'undo', 'Shift-Cmd-Z': 'redo', 'Cmd-Y': 'redo', 'Cmd-Home': 'goDocStart', 'Cmd-Up': 'goDocStart', 'Cmd-End': 'goDocEnd', 'Cmd-Down': 'goDocEnd', 'Alt-Left': 'goGroupLeft', 'Alt-Right': 'goGroupRight', 'Cmd-Left': 'goLineLeft', 'Cmd-Right': 'goLineRight', 'Alt-Backspace': 'delGroupBefore', 'Ctrl-Alt-Backspace': 'delGroupAfter', 'Alt-Delete': 'delGroupAfter', 'Cmd-S': 'save', 'Cmd-F': 'find', 'Cmd-G': 'findNext', 'Shift-Cmd-G': 'findPrev', 'Cmd-Alt-F': 'replace', 'Shift-Cmd-Alt-F': 'replaceAll', 'Cmd-[': 'indentLess', 'Cmd-]': 'indentMore', 'Cmd-Backspace': 'delWrappedLineLeft', 'Cmd-Delete': 'delWrappedLineRight', 'Cmd-U': 'undoSelection', 'Shift-Cmd-U': 'redoSelection', 'Ctrl-Up': 'goDocStart', 'Ctrl-Down': 'goDocEnd', fallthrough: ['basic', 'emacsy'] }, Go.default = w ? Go.macDefault : Go.pcDefault; var oa = { selectAll: uo, singleSelection: function (e) { return e.setSelection(e.getCursor('anchor'), e.getCursor('head'), q); }, killLine: function (r) { return ea(r, function (e) { if (e.empty()) { var t = se(r.doc, e.head.line).text.length; return e.head.ch == t && e.head.line < r.lastLine() ? { from: e.head, to: ge(e.head.line + 1, 0) } : { from: e.head, to: ge(e.head.line, t) }; } return { from: e.from(), to: e.to() }; }); }, deleteLine: function (t) { return ea(t, function (e) { return { from: ge(e.from().line, 0), to: Ce(t.doc, ge(e.to().line + 1, 0)) }; }); }, delLineLeft: function (e) { return ea(e, function (e) { return { from: ge(e.from().line, 0), to: e.from() }; }); }, delWrappedLineLeft: function (r) { return ea(r, function (e) { var t = r.charCoords(e.head, 'div').top + 5; return { from: r.coordsChar({ left: 0, top: t }, 'div'), to: e.from() }; }); }, delWrappedLineRight: function (n) { return ea(n, function (e) { var t = n.charCoords(e.head, 'div').top + 5; var r = n.coordsChar({ left: n.display.lineDiv.offsetWidth + 100, top: t }, 'div'); return { from: e.from(), to: r }; }); }, undo: function (e) { return e.undo(); }, redo: function (e) { return e.redo(); }, undoSelection: function (e) { return e.undoSelection(); }, redoSelection: function (e) { return e.redoSelection(); }, goDocStart: function (e) { return e.extendSelection(ge(e.firstLine(), 0)); }, goDocEnd: function (e) { return e.extendSelection(ge(e.lastLine())); }, goLineStart: function (t) { return t.extendSelectionsBy(function (e) { return aa(t, e.head.line); }, { origin: '+move', bias: 1 }); }, goLineStartSmart: function (t) { return t.extendSelectionsBy(function (e) { return la(t, e.head); }, { origin: '+move', bias: 1 }); }, goLineEnd: function (t) { return t.extendSelectionsBy(function (e) { return (function (e, t) { var r = se(e.doc, t); var n = (function (e) { for (var t; t = Re(e);)e = t.find(1, !0).line; return e; }(r)); n != r && (t = fe(n)); return na(!0, e, r, t, -1); }(t, e.head.line)); }, { origin: '+move', bias: -1 }); }, goLineRight: function (r) { return r.extendSelectionsBy(function (e) { var t = r.cursorCoords(e.head, 'div').top + 5; return r.coordsChar({ left: r.display.lineDiv.offsetWidth + 100, top: t }, 'div'); }, V); }, goLineLeft: function (r) { return r.extendSelectionsBy(function (e) { var t = r.cursorCoords(e.head, 'div').top + 5; return r.coordsChar({ left: 0, top: t }, 'div'); }, V); }, goLineLeftSmart: function (n) { return n.extendSelectionsBy(function (e) { var t = n.cursorCoords(e.head, 'div').top + 5; var r = n.coordsChar({ left: 0, top: t }, 'div'); return r.ch < n.getLine(r.line).search(/\S/) ? la(n, e.head) : r; }, V); }, goLineUp: function (e) { return e.moveV(-1, 'line'); }, goLineDown: function (e) { return e.moveV(1, 'line'); }, goPageUp: function (e) { return e.moveV(-1, 'page'); }, goPageDown: function (e) { return e.moveV(1, 'page'); }, goCharLeft: function (e) { return e.moveH(-1, 'char'); }, goCharRight: function (e) { return e.moveH(1, 'char'); }, goColumnLeft: function (e) { return e.moveH(-1, 'column'); }, goColumnRight: function (e) { return e.moveH(1, 'column'); }, goWordLeft: function (e) { return e.moveH(-1, 'word'); }, goGroupRight: function (e) { return e.moveH(1, 'group'); }, goGroupLeft: function (e) { return e.moveH(-1, 'group'); }, goWordRight: function (e) { return e.moveH(1, 'word'); }, delCharBefore: function (e) { return e.deleteH(-1, 'char'); }, delCharAfter: function (e) { return e.deleteH(1, 'char'); }, delWordBefore: function (e) { return e.deleteH(-1, 'word'); }, delWordAfter: function (e) { return e.deleteH(1, 'word'); }, delGroupBefore: function (e) { return e.deleteH(-1, 'group'); }, delGroupAfter: function (e) { return e.deleteH(1, 'group'); }, indentAuto: function (e) { return e.indentSelection('smart'); }, indentMore: function (e) { return e.indentSelection('add'); }, indentLess: function (e) { return e.indentSelection('subtract'); }, insertTab: function (e) { return e.replaceSelection('\t'); }, insertSoftTab: function (e) { for (var t = [], r = e.listSelections(), n = e.options.tabSize, i = 0; i < r.length; i++) { var o = r[i].from(); var a = F(e.getLine(o.line), o.ch, n); t.push($(n - a % n)); }e.replaceSelections(t); }, defaultTab: function (e) { e.somethingSelected() ? e.indentSelection('add') : e.execCommand('insertTab'); }, transposeChars: function (a) { return ti(a, function () { for (var e = a.listSelections(), t = [], r = 0; r < e.length; r++) if (e[r].empty()) { var n = e[r].head; var i = se(a.doc, n.line).text; if (i) if (n.ch == i.length && (n = new ge(n.line, n.ch - 1)), n.ch > 0)n = new ge(n.line, n.ch + 1), a.replaceRange(i.charAt(n.ch - 1) + i.charAt(n.ch - 2), ge(n.line, n.ch - 2), n, '+transpose'); else if (n.line > a.doc.first) { var o = se(a.doc, n.line - 1).text; o && (n = new ge(n.line, 1), a.replaceRange(i.charAt(0) + a.doc.lineSeparator() + o.charAt(o.length - 1), ge(n.line - 1, o.length - 1), n, '+transpose')); }t.push(new Li(n, n)); }a.setSelections(t); }); }, newlineAndIndent: function (n) { return ti(n, function () { for (var e = n.listSelections(), t = e.length - 1; t >= 0; t--)n.replaceRange(n.doc.lineSeparator(), e[t].anchor, e[t].head, '+input'); e = n.listSelections(); for (var r = 0; r < e.length; r++)n.indentLine(e[r].from().line, null, !0); Hn(n); }); }, openLine: function (e) { return e.replaceSelection('\n', 'start'); }, toggleOverwrite: function (e) { return e.toggleOverwrite(); } }; function aa (e, t) { var r = se(e.doc, t); var n = Ke(r); return n != r && (t = fe(n)), na(!0, e, n, t, 1); } function la (e, t) { var r = aa(e, t.line); var n = se(e.doc, r.line); var i = lt(n, e.doc.direction); if (i && i[0].level != 0) return r; var o = Math.max(0, n.text.search(/\S/)); var a = t.line == r.line && t.ch <= o && t.ch; return ge(r.line, a ? 0 : o, r.sticky); } function sa (e, t, r) { if (typeof t == 'string' && !(t = oa[t])) return !1; e.display.input.ensurePolled(); var n = e.display.shift; var i = !1; try { e.isReadOnly() && (e.state.suppressEdits = !0), r && (e.display.shift = !1), i = t(e) != K; } finally { e.display.shift = n, e.state.suppressEdits = !1; } return i; } var ca = new R(); function ua (e, t, r, n) { var i = e.state.keySeq; if (i) { if (Yo(t)) return 'handled'; if (/\'$/.test(t) ? e.state.keySeq = null : ca.set(50, function () { e.state.keySeq == i && (e.state.keySeq = null, e.display.input.reset()); }), da(e, i + ' ' + t, r, n)) return !0; } return da(e, t, r, n); } function da (e, t, r, n) { var i = (function (e, t, r) { for (var n = 0; n < e.state.keyMaps.length; n++) { var i = Xo(t, e.state.keyMaps[n], r, e); if (i) return i; } return e.options.extraKeys && Xo(t, e.options.extraKeys, r, e) || Xo(t, e.options.keyMap, r, e); }(e, t, n)); return i == 'multi' && (e.state.keySeq = t), i == 'handled' && gr(e, 'keyHandled', e, t, r), i != 'handled' && i != 'multi' || (vt(r), kn(e)), !!i; } function fa (t, e) { var r = Qo(e, !0); return !!r && (e.shiftKey && !t.state.keySeq ? ua(t, 'Shift-' + r, e, function (e) { return sa(t, e, !0); }) || ua(t, r, e, function (e) { if (typeof e == 'string' ? /^go[A-Z]/.test(e) : e.motion) return sa(t, e); }) : ua(t, r, e, function (e) { return sa(t, e); })); } var ha = null; function pa (e) { var t = this; if (t.curOp.focus = W(), !ht(t, e)) { x && k < 11 && e.keyCode == 27 && (e.returnValue = !1); var r = e.keyCode; t.display.shift = r == 16 || e.shiftKey; var n = fa(t, e); g && (ha = n ? r : null, !n && r == 88 && !zt && (w ? e.metaKey : e.ctrlKey) && t.replaceSelection('', null, 'cut')), r != 18 || /\bCodeMirror-crosshair\b/.test(t.display.lineDiv.className) || (function (e) { var t = e.display.lineDiv; function r (e) { e.keyCode != 18 && e.altKey || (L(t, 'CodeMirror-crosshair'), dt(document, 'keyup', r), dt(document, 'mouseover', r)); }D(t, 'CodeMirror-crosshair'), ct(document, 'keyup', r), ct(document, 'mouseover', r); }(t)); } } function ma (e) { e.keyCode == 16 && (this.doc.sel.shift = !1), ht(this, e); } function ga (e) { var t = this; if (!(Nr(t.display, e) || ht(t, e) || e.ctrlKey && !e.altKey || w && e.metaKey)) { var r = e.keyCode; var n = e.charCode; if (g && r == ha) return ha = null, void vt(e); if (!g || e.which && !(e.which < 10) || !fa(t, e)) { var i = String.fromCharCode(n == null ? r : n); i == '\b' || (function (t, e, r) { return ua(t, "'" + r + "'", e, function (e) { return sa(t, e, !0); }); }(t, e, i)) || t.display.input.onKeyPress(e); } } } var va; var ya; var ba = function (e, t, r) { this.time = e, this.pos = t, this.button = r; }; function wa (e) { var t = this; var r = t.display; if (!(ht(t, e) || r.activeTouch && r.input.supportsTouch())) if (r.input.ensurePolled(), r.shift = e.shiftKey, Nr(r, e))b || (r.scroller.draggable = !1, setTimeout(function () { return r.scroller.draggable = !0; }, 100)); else if (!Ca(t, e)) { var n = mn(t, e); var i = kt(e); var o = n ? (function (e, t) { var r = +new Date(); return ya && ya.compare(r, e, t) ? (va = ya = null, 'triple') : va && va.compare(r, e, t) ? (ya = new ba(r, e, t), va = null, 'double') : (va = new ba(r, e, t), ya = null, 'single'); }(n, i)) : 'single'; window.focus(), i == 1 && t.state.selectingText && t.state.selectingText(e), n && (function (r, e, n, t, i) { var o = 'Click'; t == 'double' ? o = 'Double' + o : t == 'triple' && (o = 'Triple' + o); return ua(r, Zo(o = (e == 1 ? 'Left' : e == 2 ? 'Middle' : 'Right') + o, i), i, function (e) { if (typeof e == 'string' && (e = oa[e]), !e) return !1; var t = !1; try { r.isReadOnly() && (r.state.suppressEdits = !0), t = e(r, n) != K; } finally { r.state.suppressEdits = !1; } return t; }); }(t, i, n, o, e)) || (i == 1 ? n ? (function (e, t, r, n) { x ? setTimeout(E(Cn, e), 0) : e.curOp.focus = W(); var i; var o = (function (e, t, r) { var n = e.getOption('configureMouse'); var i = n ? n(e, t, r) : {}; if (i.unit == null) { var o = h ? r.shiftKey && r.metaKey : r.altKey; i.unit = o ? 'rectangle' : t == 'single' ? 'char' : t == 'double' ? 'word' : 'line'; }i.extend != null && !e.doc.extend || (i.extend = e.doc.extend || r.shiftKey); i.addNew == null && (i.addNew = w ? r.metaKey : r.ctrlKey); i.moveOnDrag == null && (i.moveOnDrag = !(w ? r.altKey : r.ctrlKey)); return i; }(e, r, n)); var a = e.doc.sel; e.options.dragDrop && Tt && !e.isReadOnly() && r == 'single' && (i = a.contains(t)) > -1 && (ve((i = a.ranges[i]).from(), t) < 0 || t.xRel > 0) && (ve(i.to(), t) > 0 || t.xRel < 0) ? (function (t, r, n, i) { var o = t.display; var a = !1; var l = ri(t, function (e) { b && (o.scroller.draggable = !1), t.state.draggingText = !1, dt(o.wrapper.ownerDocument, 'mouseup', l), dt(o.wrapper.ownerDocument, 'mousemove', s), dt(o.scroller, 'dragstart', c), dt(o.scroller, 'drop', l), a || (vt(e), i.addNew || Zi(t.doc, n, null, null, i.extend), b || x && k == 9 ? setTimeout(function () { o.wrapper.ownerDocument.body.focus(), o.input.focus(); }, 20) : o.input.focus()); }); var s = function (e) { a = a || Math.abs(r.clientX - e.clientX) + Math.abs(r.clientY - e.clientY) >= 10; }; var c = function () { return a = !0; }; b && (o.scroller.draggable = !0); (t.state.draggingText = l).copy = !i.moveOnDrag, o.scroller.dragDrop && o.scroller.dragDrop(); ct(o.wrapper.ownerDocument, 'mouseup', l), ct(o.wrapper.ownerDocument, 'mousemove', s), ct(o.scroller, 'dragstart', c), ct(o.scroller, 'drop', l), Sn(t), setTimeout(function () { return o.input.focus(); }, 20); }(e, n, t, o)) : (function (g, e, v, y) { var a = g.display; var b = g.doc; vt(e); var w; var x; var k = b.sel; var t = k.ranges; y.addNew && !y.extend ? (x = b.sel.contains(v), w = x > -1 ? t[x] : new Li(v, v)) : (w = b.sel.primary(), x = b.sel.primIndex); if (y.unit == 'rectangle')y.addNew || (w = new Li(v, v)), v = mn(g, e, !0, !0), x = -1; else { var r = xa(g, v, y.unit); w = y.extend ? Yi(w, r.anchor, r.head, y.extend) : r; }y.addNew ? x == -1 ? (x = t.length, ro(b, Mi(t.concat([w]), x), { scroll: !1, origin: '*mouse' })) : t.length > 1 && t[x].empty() && y.unit == 'char' && !y.extend ? (ro(b, Mi(t.slice(0, x).concat(t.slice(x + 1)), 0), { scroll: !1, origin: '*mouse' }), k = b.sel) : Ji(b, x, w, U) : (ro(b, new Ti([w], x = 0), U), k = b.sel); var C = v; function l (e) { if (ve(C, e) != 0) if (C = e, y.unit == 'rectangle') { for (var t = [], r = g.options.tabSize, n = F(se(b, v.line).text, v.ch, r), i = F(se(b, e.line).text, e.ch, r), o = Math.min(n, i), a = Math.max(n, i), l = Math.min(v.line, e.line), s = Math.min(g.lastLine(), Math.max(v.line, e.line)); l <= s; l++) { var c = se(b, l).text; var u = G(c, o, r); o == a ? t.push(new Li(ge(l, u), ge(l, u))) : c.length > u && t.push(new Li(ge(l, u), ge(l, G(c, a, r)))); }t.length || t.push(new Li(v, v)), ro(b, Mi(k.ranges.slice(0, x).concat(t), x), { origin: '*mouse', scroll: !1 }), g.scrollIntoView(e); } else { var d; var f = w; var h = xa(g, e, y.unit); var p = f.anchor; p = ve(h.anchor, p) > 0 ? (d = h.head, xe(f.from(), h.anchor)) : (d = h.anchor, we(f.to(), h.head)); var m = k.ranges.slice(0); m[x] = (function (e, t) { var r = t.anchor; var n = t.head; var i = se(e.doc, r.line); if (ve(r, n) == 0 && r.sticky == n.sticky) return t; var o = lt(i); if (!o) return t; var a = Ze(o, r.ch, r.sticky); var l = o[a]; if (l.from != r.ch && l.to != r.ch) return t; var s; var c = a + (l.from == r.ch == (l.level != 1) ? 0 : 1); if (c == 0 || c == o.length) return t; if (n.line != r.line)s = (n.line - r.line) * (e.doc.direction == 'ltr' ? 1 : -1) > 0; else { var u = Ze(o, n.ch, n.sticky); var d = u - a || (n.ch - r.ch) * (l.level == 1 ? -1 : 1); s = u == c - 1 || u == c ? d < 0 : d > 0; } var f = o[c + (s ? -1 : 0)]; var h = s == (f.level == 1); var p = h ? f.from : f.to; var m = h ? 'after' : 'before'; return r.ch == p && r.sticky == m ? t : new Li(new ge(r.line, p, m), n); }(g, new Li(Ce(b, p), d))), ro(b, Mi(m, x), U); } } var s = a.wrapper.getBoundingClientRect(); var c = 0; function n (e) { g.state.selectingText = !1, c = 1 / 0, vt(e), a.input.focus(), dt(a.wrapper.ownerDocument, 'mousemove', i), dt(a.wrapper.ownerDocument, 'mouseup', o), b.history.lastSelOrigin = null; } var i = ri(g, function (e) { e.buttons !== 0 && kt(e) ? (function e (t) { var r = ++c; var n = mn(g, t, !0, y.unit == 'rectangle'); if (n) if (ve(n, C) != 0) { g.curOp.focus = W(), l(n); var i = Nn(a, b); (n.line >= i.to || n.line < i.from) && setTimeout(ri(g, function () { c == r && e(t); }), 150); } else { var o = t.clientY < s.top ? -20 : t.clientY > s.bottom ? 20 : 0; o && setTimeout(ri(g, function () { c == r && (a.scroller.scrollTop += o, e(t)); }), 50); } }(e)) : n(e); }); var o = ri(g, n); g.state.selectingText = o, ct(a.wrapper.ownerDocument, 'mousemove', i), ct(a.wrapper.ownerDocument, 'mouseup', o); }(e, n, t, o)); }(t, n, o, e)) : xt(e) == r.scroller && vt(e) : i == 2 ? (n && Zi(t.doc, n), setTimeout(function () { return r.input.focus(); }, 20)) : i == 3 && (C ? Sa(t, e) : Sn(t))); } } function xa (e, t, r) { if (r == 'char') return new Li(t, t); if (r == 'word') return e.findWordAt(t); if (r == 'line') return new Li(ge(t.line, 0), Ce(e.doc, ge(t.line + 1, 0))); var n = r(e, t); return new Li(n.from, n.to); } function ka (e, t, r, n) { var i, o; if (t.touches)i = t.touches[0].clientX, o = t.touches[0].clientY; else try { i = t.clientX, o = t.clientY; } catch (t) { return !1; } if (i >= Math.floor(e.display.gutters.getBoundingClientRect().right)) return !1; n && vt(t); var a = e.display; var l = a.lineDiv.getBoundingClientRect(); if (o > l.bottom || !mt(e, r)) return bt(t); o -= l.top - a.viewOffset; for (var s = 0; s < e.options.gutters.length; ++s) { var c = a.gutters.childNodes[s]; if (c && c.getBoundingClientRect().right >= i) return ft(e, r, e, he(e.doc, o), e.options.gutters[s], t), bt(t); } } function Ca (e, t) { return ka(e, t, 'gutterClick', !0); } function Sa (e, t) { Nr(e.display, t) || (function (e, t) { return !!mt(e, 'gutterContextMenu') && ka(e, t, 'gutterContextMenu', !1); }(e, t)) || ht(e, t, 'contextmenu') || e.display.input.onContextMenu(t); } function Ta (e) { e.display.wrapper.className = e.display.wrapper.className.replace(/\s*cm-s-\S+/g, '') + e.options.theme.replace(/(^|\s)\s*/g, ' cm-s-'), _r(e); }ba.prototype.compare = function (e, t, r) { return this.time + 400 > e && ve(t, this.pos) == 0 && r == this.button; }; var La = { toString: function () { return 'CodeMirror.Init'; } }; var Ma = {}; var Aa = {}; function Na (e) { yi(e), oi(e), On(e); } function Oa (e, t, r) { if (!t != !(r && r != La)) { var n = e.display.dragFunctions; var i = t ? ct : dt; i(e.display.scroller, 'dragstart', n.start), i(e.display.scroller, 'dragenter', n.enter), i(e.display.scroller, 'dragover', n.over), i(e.display.scroller, 'dragleave', n.leave), i(e.display.scroller, 'drop', n.drop); } } function za (e) { e.options.lineWrapping ? (D(e.display.wrapper, 'CodeMirror-wrap'), e.display.sizer.style.minWidth = '', e.display.sizerWidth = null) : (L(e.display.wrapper, 'CodeMirror-wrap'), Xe(e)), pn(e), oi(e), _r(e), setTimeout(function () { return Un(e); }, 100); } function Wa (e, t) { var r = this; if (!(this instanceof Wa)) return new Wa(e, t); this.options = t = t ? I(t) : {}, I(Ma, t, !1), bi(t); var n = t.value; typeof n == 'string' && (n = new Ho(n, t.mode, null, t.lineSeparator, t.direction)), this.doc = n; var i = new Wa.inputStyles[t.inputStyle](this); var o = this.display = new le(e, n, i); for (var a in yi(o.wrapper.CodeMirror = this), Ta(this), t.lineWrapping && (this.display.wrapper.className += ' CodeMirror-wrap'), _n(this), this.state = { keyMaps: [], overlays: [], modeGen: 0, overwrite: !1, delayingBlurEvent: !1, focused: !1, suppressEdits: !1, pasteIncoming: !1, cutIncoming: !1, selectingText: !1, draggingText: !1, highlight: new R(), keySeq: null, specialChars: null }, t.autofocus && !f && o.input.focus(), x && k < 11 && setTimeout(function () { return r.display.input.reset(!0); }, 20), (function (i) { var o = i.display; ct(o.scroller, 'mousedown', ri(i, wa)), ct(o.scroller, 'dblclick', x && k < 11 ? ri(i, function (e) { if (!ht(i, e)) { var t = mn(i, e); if (t && !Ca(i, e) && !Nr(i.display, e)) { vt(e); var r = i.findWordAt(t); Zi(i.doc, r.anchor, r.head); } } }) : function (e) { return ht(i, e) || vt(e); }); C || ct(o.scroller, 'contextmenu', function (e) { return Sa(i, e); }); var r; var n = { end: 0 }; function a () { o.activeTouch && (r = setTimeout(function () { return o.activeTouch = null; }, 1e3), (n = o.activeTouch).end = +new Date()); } function l (e, t) { if (t.left == null) return !0; var r = t.left - e.left; var n = t.top - e.top; return r * r + n * n > 400; }ct(o.scroller, 'touchstart', function (e) { if (!ht(i, e) && !(function (e) { if (e.touches.length != 1) return !1; var t = e.touches[0]; return t.radiusX <= 1 && t.radiusY <= 1; }(e)) && !Ca(i, e)) { o.input.ensurePolled(), clearTimeout(r); var t = +new Date(); o.activeTouch = { start: t, moved: !1, prev: t - n.end <= 300 ? n : null }, e.touches.length == 1 && (o.activeTouch.left = e.touches[0].pageX, o.activeTouch.top = e.touches[0].pageY); } }), ct(o.scroller, 'touchmove', function () { o.activeTouch && (o.activeTouch.moved = !0); }), ct(o.scroller, 'touchend', function (e) { var t = o.activeTouch; if (t && !Nr(o, e) && t.left != null && !t.moved && new Date() - t.start < 300) { var r; var n = i.coordsChar(o.activeTouch, 'page'); r = !t.prev || l(t, t.prev) ? new Li(n, n) : !t.prev.prev || l(t, t.prev.prev) ? i.findWordAt(n) : new Li(ge(n.line, 0), Ce(i.doc, ge(n.line + 1, 0))), i.setSelection(r.anchor, r.head), i.focus(), vt(e); }a(); }), ct(o.scroller, 'touchcancel', a), ct(o.scroller, 'scroll', function () { o.scroller.clientHeight && (Fn(i, o.scroller.scrollTop), jn(i, o.scroller.scrollLeft, !0), ft(i, 'scroll', i)); }), ct(o.scroller, 'mousewheel', function (e) { return Si(i, e); }), ct(o.scroller, 'DOMMouseScroll', function (e) { return Si(i, e); }), ct(o.wrapper, 'scroll', function () { return o.wrapper.scrollTop = o.wrapper.scrollLeft = 0; }), o.dragFunctions = { enter: function (e) { ht(i, e) || wt(e); }, over: function (e) { ht(i, e) || ((function (e, t) { var r = mn(e, t); if (r) { var n = document.createDocumentFragment(); bn(e, r, n), e.display.dragCursor || (e.display.dragCursor = O('div', null, 'CodeMirror-cursors CodeMirror-dragcursors'), e.display.lineSpace.insertBefore(e.display.dragCursor, e.display.cursorDiv)), A(e.display.dragCursor, n); } }(i, e)), wt(e)); }, start: function (e) { return (function (e, t) { if (x && (!e.state.draggingText || +new Date() - Po < 100))wt(t); else if (!ht(e, t) && !Nr(e.display, t) && (t.dataTransfer.setData('Text', e.getSelection()), t.dataTransfer.effectAllowed = 'copyMove', t.dataTransfer.setDragImage && !s)) { var r = O('img', null, null, 'position: fixed; left: 0; top: 0;'); r.src = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==', g && (r.width = r.height = 1, e.display.wrapper.appendChild(r), r._top = r.offsetTop), t.dataTransfer.setDragImage(r, 0, 0), g && r.parentNode.removeChild(r); } }(i, e)); }, drop: ri(i, Eo), leave: function (e) { ht(i, e) || Io(i); } }; var e = o.input.getField(); ct(e, 'keyup', function (e) { return ma.call(i, e); }), ct(e, 'keydown', ri(i, pa)), ct(e, 'keypress', ri(i, ga)), ct(e, 'focus', function (e) { return Tn(i, e); }), ct(e, 'blur', function (e) { return Ln(i, e); }); }(this)), jo(), Xn(this), this.curOp.forceUpdate = !0, Fi(this, n), t.autofocus && !f || this.hasFocus() ? setTimeout(E(Tn, this), 20) : Ln(this), Aa)Aa.hasOwnProperty(a) && Aa[a](r, t[a], La); zn(this), t.finishInit && t.finishInit(this); for (var l = 0; l < Da.length; ++l)Da[l](r); Yn(this), b && t.lineWrapping && getComputedStyle(o.lineDiv).textRendering == 'optimizelegibility' && (o.lineDiv.style.textRendering = 'auto'); }Wa.defaults = Ma, Wa.optionHandlers = Aa; var Da = []; function Ha (e, t, r, n) { var i; var o = e.doc; r == null && (r = 'add'), r == 'smart' && (o.mode.indent ? i = _t(e, t).state : r = 'prev'); var a = e.options.tabSize; var l = se(o, t); var s = F(l.text, null, a); l.stateAfter && (l.stateAfter = null); var c; var u = l.text.match(/^\s*/)[0]; if (n || /\S/.test(l.text)) { if (r == 'smart' && ((c = o.mode.indent(i, l.text.slice(u.length), l.text)) == K || c > 150)) { if (!n) return; r = 'prev'; } } else c = 0, r = 'not'; r == 'prev' ? c = t > o.first ? F(se(o, t - 1).text, null, a) : 0 : r == 'add' ? c = s + e.options.indentUnit : r == 'subtract' ? c = s - e.options.indentUnit : typeof r == 'number' && (c = s + r), c = Math.max(0, c); var d = ''; var f = 0; if (e.options.indentWithTabs) for (var h = Math.floor(c / a); h; --h)f += a, d += '\t'; if (f < c && (d += $(c - f)), d != u) return yo(o, d, ge(t, 0), ge(t, u.length), '+input'), !(l.stateAfter = null); for (var p = 0; p < o.sel.ranges.length; p++) { var m = o.sel.ranges[p]; if (m.head.line == t && m.head.ch < u.length) { var g = ge(t, u.length); Ji(o, p, new Li(g, g)); break; } } }Wa.defineInitHook = function (e) { return Da.push(e); }; var Pa = null; function Ea (e) { Pa = e; } function Ia (e, t, r, n, i) { var o = e.doc; e.display.shift = !1, n = n || o.sel; var a; var l = e.state.pasteIncoming || i == 'paste'; var s = Nt(t); var c = null; if (l && n.ranges.length > 1) if (Pa && Pa.text.join('\n') == t) { if (n.ranges.length % Pa.text.length == 0) { c = []; for (var u = 0; u < Pa.text.length; u++)c.push(o.splitLines(Pa.text[u])); } } else s.length == n.ranges.length && e.options.pasteLinesPerSelection && (c = Y(s, function (e) { return [e]; })); for (var d = n.ranges.length - 1; d >= 0; d--) { var f = n.ranges[d]; var h = f.from(); var p = f.to(); f.empty() && (r && r > 0 ? h = ge(h.line, h.ch - r) : e.state.overwrite && !l ? p = ge(p.line, Math.min(se(o, p.line).text.length, p.ch + X(s).length)) : Pa && Pa.lineWise && Pa.text.join('\n') == t && (h = p = ge(h.line, 0))), a = e.curOp.updateInput; var m = { from: h, to: p, text: c ? c[d % c.length] : s, origin: i || (l ? 'paste' : e.state.cutIncoming ? 'cut' : '+input') }; ho(e.doc, m), gr(e, 'inputRead', e, m); }t && !l && Ra(e, t), Hn(e), e.curOp.updateInput = a, e.curOp.typing = !0, e.state.pasteIncoming = e.state.cutIncoming = !1; } function Fa (e, t) { var r = e.clipboardData && e.clipboardData.getData('Text'); if (r) return e.preventDefault(), t.isReadOnly() || t.options.disableInput || ti(t, function () { return Ia(t, r, 0, null, 'paste'); }), !0; } function Ra (e, t) { if (e.options.electricChars && e.options.smartIndent) for (var r = e.doc.sel, n = r.ranges.length - 1; n >= 0; n--) { var i = r.ranges[n]; if (!(i.head.ch > 100 || n && r.ranges[n - 1].head.line == i.head.line)) { var o = e.getModeAt(i.head); var a = !1; if (o.electricChars) { for (var l = 0; l < o.electricChars.length; l++) if (t.indexOf(o.electricChars.charAt(l)) > -1) { a = Ha(e, i.head.line, 'smart'); break; } } else o.electricInput && o.electricInput.test(se(e.doc, i.head.line).text.slice(0, i.head.ch)) && (a = Ha(e, i.head.line, 'smart')); a && gr(e, 'electricInput', e, i.head.line); } } } function ja (e) { for (var t = [], r = [], n = 0; n < e.doc.sel.ranges.length; n++) { var i = e.doc.sel.ranges[n].head.line; var o = { anchor: ge(i, 0), head: ge(i + 1, 0) }; r.push(o), t.push(e.getRange(o.anchor, o.head)); } return { text: t, ranges: r }; } function Ba (e, t) { e.setAttribute('autocorrect', 'off'), e.setAttribute('autocapitalize', 'off'), e.setAttribute('spellcheck', !!t); } function Ka () { var e = O('textarea', null, null, 'position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none'); var t = O('div', [e], null, 'overflow: hidden; position: relative; width: 3px; height: 0px;'); return b ? e.style.width = '1000px' : e.setAttribute('wrap', 'off'), u && (e.style.border = '1px solid black'), Ba(e), t; } function qa (r, n, i, e, o) { var t = n; var a = i; var l = se(r, n.line); function s (e) { var t; if ((t = o ? ia(r.cm, l, n, i) : ra(l, n, i)) == null) { if (e || !(function () { var e = n.line + i; return !(e < r.first || e >= r.first + r.size) && (n = new ge(e, n.ch, n.sticky), l = se(r, e)); }())) return !1; n = na(o, r.cm, l, n.line, i); } else n = t; return !0; } if (e == 'char')s(); else if (e == 'column')s(!0); else if (e == 'word' || e == 'group') for (var c = null, u = e == 'group', d = r.cm && r.cm.getHelper(n, 'wordChars'), f = !0; !(i < 0) || s(!f); f = !1) { var h = l.text.charAt(n.ch) || '\n'; var p = te(h, d) ? 'w' : u && h == '\n' ? 'n' : !u || /\s/.test(h) ? null : 'p'; if (!u || f || p || (p = 's'), c && c != p) { i < 0 && (i = 1, s(), n.sticky = 'after'); break; } if (p && (c = p), i > 0 && !s(!f)) break; } var m = so(r, n, t, a, !0); return ye(t, m) && (m.hitSide = !0), m; } function Ua (e, t, r, n) { var i; var o; var a = e.doc; var l = t.left; if (n == 'page') { var s = Math.min(e.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight); var c = Math.max(s - 0.5 * cn(e.display), 3); i = (r > 0 ? t.bottom : t.top) + r * c; } else n == 'line' && (i = r > 0 ? t.bottom + 3 : t.top - 3); for (;(o = nn(e, l, i)).outside;) { if (r < 0 ? i <= 0 : i >= a.height) { o.hitSide = !0; break; }i += 5 * r; } return o; } function Va (e) { this.cm = e, this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null, this.polling = new R(), this.composing = null, this.gracePeriod = !1, this.readDOMTimeout = null; } function Ga (e, t) { var r = Fr(e, t.line); if (!r || r.hidden) return null; var n = se(e.doc, t.line); var i = Er(r, n, t.line); var o = lt(n, e.doc.direction); var a = 'left'; o && (a = Ze(o, t.ch) % 2 ? 'right' : 'left'); var l = qr(i.map, t.ch, a); return l.offset = l.collapse == 'right' ? l.end : l.start, l; } function _a (e, t) { return t && (e.bad = !0), e; } function $a (e, t, r) { var n; if (t == e.display.lineDiv) { if (!(n = e.display.lineDiv.childNodes[r])) return _a(e.clipPos(ge(e.display.viewTo - 1)), !0); t = null, r = 0; } else for (n = t; ;n = n.parentNode) { if (!n || n == e.display.lineDiv) return null; if (n.parentNode && n.parentNode == e.display.lineDiv) break; } for (var i = 0; i < e.display.view.length; i++) { var o = e.display.view[i]; if (o.node == n) return Xa(o, t, r); } } function Xa (c, e, t) { var r = c.text.firstChild; var n = !1; if (!e || !z(r, e)) return _a(ge(fe(c.line), 0), !0); if (e == r && (n = !0, e = r.childNodes[t], t = 0, !e)) { var i = c.rest ? X(c.rest) : c.line; return _a(ge(fe(i), i.text.length), n); } var o = e.nodeType == 3 ? e : null; var a = e; for (o || e.childNodes.length != 1 || e.firstChild.nodeType != 3 || (o = e.firstChild, t = t && o.nodeValue.length); a.parentNode != r;)a = a.parentNode; var u = c.measure; var d = u.maps; function l (e, t, r) { for (var n = -1; n < (d ? d.length : 0); n++) for (var i = n < 0 ? u.map : d[n], o = 0; o < i.length; o += 3) { var a = i[o + 2]; if (a == e || a == t) { var l = fe(n < 0 ? c.line : c.rest[n]); var s = i[o] + r; return (r < 0 || a != e) && (s = i[o + (r ? 1 : 0)]), ge(l, s); } } } var s = l(o, a, t); if (s) return _a(s, n); for (var f = a.nextSibling, h = o ? o.nodeValue.length - t : 0; f; f = f.nextSibling) { if (s = l(f, f.firstChild, 0)) return _a(ge(s.line, s.ch - h), n); h += f.textContent.length; } for (var p = a.previousSibling, m = t; p; p = p.previousSibling) { if (s = l(p, p.firstChild, -1)) return _a(ge(s.line, s.ch + m), n); m += p.textContent.length; } }Va.prototype.init = function (e) { var t = this; var a = this; var l = a.cm; var s = a.div = e.lineDiv; function r (e) { if (!ht(l, e)) { if (l.somethingSelected())Ea({ lineWise: !1, text: l.getSelections() }), e.type == 'cut' && l.replaceSelection('', null, 'cut'); else { if (!l.options.lineWiseCopyCut) return; var t = ja(l); Ea({ lineWise: !0, text: t.text }), e.type == 'cut' && l.operation(function () { l.setSelections(t.ranges, 0, q), l.replaceSelection('', null, 'cut'); }); } if (e.clipboardData) { e.clipboardData.clearData(); var r = Pa.text.join('\n'); if (e.clipboardData.setData('Text', r), e.clipboardData.getData('Text') == r) return void e.preventDefault(); } var n = Ka(); var i = n.firstChild; l.display.lineSpace.insertBefore(n, l.display.lineSpace.firstChild), i.value = Pa.text.join('\n'); var o = document.activeElement; P(i), setTimeout(function () { l.display.lineSpace.removeChild(n), o.focus(), o == s && a.showPrimarySelection(); }, 50); } }Ba(s, l.options.spellcheck), ct(s, 'paste', function (e) { ht(l, e) || Fa(e, l) || k <= 11 && setTimeout(ri(l, function () { return t.updateFromDOM(); }), 20); }), ct(s, 'compositionstart', function (e) { t.composing = { data: e.data, done: !1 }; }), ct(s, 'compositionupdate', function (e) { t.composing || (t.composing = { data: e.data, done: !1 }); }), ct(s, 'compositionend', function (e) { t.composing && (e.data != t.composing.data && t.readFromDOMSoon(), t.composing.done = !0); }), ct(s, 'touchstart', function () { return a.forceCompositionEnd(); }), ct(s, 'input', function () { t.composing || t.readFromDOMSoon(); }), ct(s, 'copy', r), ct(s, 'cut', r); }, Va.prototype.prepareSelection = function () { var e = yn(this.cm, !1); return e.focus = this.cm.state.focused, e; }, Va.prototype.showSelection = function (e, t) { e && this.cm.display.view.length && ((e.focus || t) && this.showPrimarySelection(), this.showMultipleSelections(e)); }, Va.prototype.getSelection = function () { return this.cm.display.wrapper.ownerDocument.getSelection(); }, Va.prototype.showPrimarySelection = function () { var e = this.getSelection(); var t = this.cm; var r = t.doc.sel.primary(); var n = r.from(); var i = r.to(); if (t.display.viewTo == t.display.viewFrom || n.line >= t.display.viewTo || i.line < t.display.viewFrom)e.removeAllRanges(); else { var o = $a(t, e.anchorNode, e.anchorOffset); var a = $a(t, e.focusNode, e.focusOffset); if (!o || o.bad || !a || a.bad || ve(xe(o, a), n) != 0 || ve(we(o, a), i) != 0) { var l = t.display.view; var s = n.line >= t.display.viewFrom && Ga(t, n) || { node: l[0].measure.map[2], offset: 0 }; var c = i.line < t.display.viewTo && Ga(t, i); if (!c) { var u = l[l.length - 1].measure; var d = u.maps ? u.maps[u.maps.length - 1] : u.map; c = { node: d[d.length - 1], offset: d[d.length - 2] - d[d.length - 3] }; } if (s && c) { var f; var h = e.rangeCount && e.getRangeAt(0); try { f = T(s.node, s.offset, c.offset, c.node); } catch (e) {}f && (!m && t.state.focused ? (e.collapse(s.node, s.offset), f.collapsed || (e.removeAllRanges(), e.addRange(f))) : (e.removeAllRanges(), e.addRange(f)), h && e.anchorNode == null ? e.addRange(h) : m && this.startGracePeriod()), this.rememberSelection(); } else e.removeAllRanges(); } } }, Va.prototype.startGracePeriod = function () { var e = this; clearTimeout(this.gracePeriod), this.gracePeriod = setTimeout(function () { e.gracePeriod = !1, e.selectionChanged() && e.cm.operation(function () { return e.cm.curOp.selectionChanged = !0; }); }, 20); }, Va.prototype.showMultipleSelections = function (e) { A(this.cm.display.cursorDiv, e.cursors), A(this.cm.display.selectionDiv, e.selection); }, Va.prototype.rememberSelection = function () { var e = this.getSelection(); this.lastAnchorNode = e.anchorNode, this.lastAnchorOffset = e.anchorOffset, this.lastFocusNode = e.focusNode, this.lastFocusOffset = e.focusOffset; }, Va.prototype.selectionInEditor = function () { var e = this.getSelection(); if (!e.rangeCount) return !1; var t = e.getRangeAt(0).commonAncestorContainer; return z(this.div, t); }, Va.prototype.focus = function () { this.cm.options.readOnly != 'nocursor' && (this.selectionInEditor() || this.showSelection(this.prepareSelection(), !0), this.div.focus()); }, Va.prototype.blur = function () { this.div.blur(); }, Va.prototype.getField = function () { return this.div; }, Va.prototype.supportsTouch = function () { return !0; }, Va.prototype.receivedFocus = function () { var t = this; this.selectionInEditor() ? this.pollSelection() : ti(this.cm, function () { return t.cm.curOp.selectionChanged = !0; }), this.polling.set(this.cm.options.pollInterval, function e () { t.cm.state.focused && (t.pollSelection(), t.polling.set(t.cm.options.pollInterval, e)); }); }, Va.prototype.selectionChanged = function () { var e = this.getSelection(); return e.anchorNode != this.lastAnchorNode || e.anchorOffset != this.lastAnchorOffset || e.focusNode != this.lastFocusNode || e.focusOffset != this.lastFocusOffset; }, Va.prototype.pollSelection = function () { if (this.readDOMTimeout == null && !this.gracePeriod && this.selectionChanged()) { var e = this.getSelection(); var t = this.cm; if (d && a && this.cm.options.gutters.length && (function (e) { for (var t = e; t; t = t.parentNode) if (/CodeMirror-gutter-wrapper/.test(t.className)) return !0; return !1; }(e.anchorNode))) return this.cm.triggerOnKeyDown({ type: 'keydown', keyCode: 8, preventDefault: Math.abs }), this.blur(), void this.focus(); if (!this.composing) { this.rememberSelection(); var r = $a(t, e.anchorNode, e.anchorOffset); var n = $a(t, e.focusNode, e.focusOffset); r && n && ti(t, function () { ro(t.doc, Ai(r, n), q), (r.bad || n.bad) && (t.curOp.selectionChanged = !0); }); } } }, Va.prototype.pollContent = function () { this.readDOMTimeout != null && (clearTimeout(this.readDOMTimeout), this.readDOMTimeout = null); var e; var t; var r; var n = this.cm; var i = n.display; var o = n.doc.sel.primary(); var a = o.from(); var l = o.to(); if (a.ch == 0 && a.line > n.firstLine() && (a = ge(a.line - 1, se(n.doc, a.line - 1).length)), l.ch == se(n.doc, l.line).text.length && l.line < n.lastLine() && (l = ge(l.line + 1, 0)), a.line < i.viewFrom || l.line > i.viewTo - 1) return !1; r = a.line == i.viewFrom || (e = gn(n, a.line)) == 0 ? (t = fe(i.view[0].line), i.view[0].node) : (t = fe(i.view[e].line), i.view[e - 1].node.nextSibling); var s; var c; var u = gn(n, l.line); if (c = u == i.view.length - 1 ? (s = i.viewTo - 1, i.lineDiv.lastChild) : (s = fe(i.view[u + 1].line) - 1, i.view[u + 1].node.previousSibling), !r) return !1; for (var d = n.doc.splitLines(function (l, e, t, s, c) { var r = ''; var u = !1; var d = l.doc.lineSeparator(); var f = !1; function h () { u && (r += d, f && (r += d), u = f = !1); } function p (e) { e && (h(), r += e); } function m (e) { if (e.nodeType == 1) { var t = e.getAttribute('cm-text'); if (t) return void p(t); var r; var n = e.getAttribute('cm-marker'); if (n) { var i = l.findMarks(ge(s, 0), ge(c + 1, 0), (function (t) { return function (e) { return e.id == t; }; }(+n))); return void (i.length && (r = i[0].find(0)) && p(ce(l.doc, r.from, r.to).join(d))); } if (e.getAttribute('contenteditable') == 'false') return; var o = /^(pre|div|p|li|table|br)$/i.test(e.nodeName); if (!/^br$/i.test(e.nodeName) && e.textContent.length == 0) return; o && h(); for (var a = 0; a < e.childNodes.length; a++)m(e.childNodes[a]); /^(pre|p)$/i.test(e.nodeName) && (f = !0), o && (u = !0); } else e.nodeType == 3 && p(e.nodeValue.replace(/\u200b/g, '').replace(/\u00a0/g, ' ')); } for (;m(e), e != t;)e = e.nextSibling, f = !1; return r; }(n, r, c, t, s)), f = ce(n.doc, ge(t, 0), ge(s, se(n.doc, s).text.length)); d.length > 1 && f.length > 1;) if (X(d) == X(f))d.pop(), f.pop(), s--; else { if (d[0] != f[0]) break; d.shift(), f.shift(), t++; } for (var h = 0, p = 0, m = d[0], g = f[0], v = Math.min(m.length, g.length); h < v && m.charCodeAt(h) == g.charCodeAt(h);)++h; for (var y = X(d), b = X(f), w = Math.min(y.length - (d.length == 1 ? h : 0), b.length - (f.length == 1 ? h : 0)); p < w && y.charCodeAt(y.length - p - 1) == b.charCodeAt(b.length - p - 1);)++p; if (d.length == 1 && f.length == 1 && t == a.line) for (;h && h > a.ch && y.charCodeAt(y.length - p - 1) == b.charCodeAt(b.length - p - 1);)h--, p++; d[d.length - 1] = y.slice(0, y.length - p).replace(/^\u200b+/, ''), d[0] = d[0].slice(h).replace(/\u200b+$/, ''); var x = ge(t, h); var k = ge(s, f.length ? X(f).length - p : 0); return d.length > 1 || d[0] || ve(x, k) ? (yo(n.doc, d, x, k, '+input'), !0) : void 0; }, Va.prototype.ensurePolled = function () { this.forceCompositionEnd(); }, Va.prototype.reset = function () { this.forceCompositionEnd(); }, Va.prototype.forceCompositionEnd = function () { this.composing && (clearTimeout(this.readDOMTimeout), this.composing = null, this.updateFromDOM(), this.div.blur(), this.div.focus()); }, Va.prototype.readFromDOMSoon = function () { var e = this; this.readDOMTimeout == null && (this.readDOMTimeout = setTimeout(function () { if (e.readDOMTimeout = null, e.composing) { if (!e.composing.done) return; e.composing = null; }e.updateFromDOM(); }, 80)); }, Va.prototype.updateFromDOM = function () { var e = this; !this.cm.isReadOnly() && this.pollContent() || ti(this.cm, function () { return oi(e.cm); }); }, Va.prototype.setUneditable = function (e) { e.contentEditable = 'false'; }, Va.prototype.onKeyPress = function (e) { e.charCode == 0 || this.composing || (e.preventDefault(), this.cm.isReadOnly() || ri(this.cm, Ia)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0)); }, Va.prototype.readOnlyChanged = function (e) { this.div.contentEditable = String(e != 'nocursor'); }, Va.prototype.onContextMenu = function () {}, Va.prototype.resetPosition = function () {}, Va.prototype.needsContentAttribute = !0; function Ya (e) { this.cm = e, this.prevInput = '', this.pollingFast = !1, this.polling = new R(), this.hasSelection = !1, this.composing = null; } var Za, Qa, Ja, el, tl; function rl (e, t, n, r) { Za.defaults[e] = t, n && (Qa[e] = r ? function (e, t, r) { r != La && n(e, t, r); } : n); }Ya.prototype.init = function (t) { var e = this; var r = this; var n = this.cm; this.createField(t); var i = this.textarea; function o (e) { if (!ht(n, e)) { if (n.somethingSelected())Ea({ lineWise: !1, text: n.getSelections() }); else { if (!n.options.lineWiseCopyCut) return; var t = ja(n); Ea({ lineWise: !0, text: t.text }), e.type == 'cut' ? n.setSelections(t.ranges, null, q) : (r.prevInput = '', i.value = t.text.join('\n'), P(i)); }e.type == 'cut' && (n.state.cutIncoming = !0); } }t.wrapper.insertBefore(this.wrapper, t.wrapper.firstChild), u && (i.style.width = '0px'), ct(i, 'input', function () { x && k >= 9 && e.hasSelection && (e.hasSelection = null), r.poll(); }), ct(i, 'paste', function (e) { ht(n, e) || Fa(e, n) || (n.state.pasteIncoming = !0, r.fastPoll()); }), ct(i, 'cut', o), ct(i, 'copy', o), ct(t.scroller, 'paste', function (e) { Nr(t, e) || ht(n, e) || (n.state.pasteIncoming = !0, r.focus()); }), ct(t.lineSpace, 'selectstart', function (e) { Nr(t, e) || vt(e); }), ct(i, 'compositionstart', function () { var e = n.getCursor('from'); r.composing && r.composing.range.clear(), r.composing = { start: e, range: n.markText(e, n.getCursor('to'), { className: 'CodeMirror-composing' }) }; }), ct(i, 'compositionend', function () { r.composing && (r.poll(), r.composing.range.clear(), r.composing = null); }); }, Ya.prototype.createField = function (e) { this.wrapper = Ka(), this.textarea = this.wrapper.firstChild; }, Ya.prototype.prepareSelection = function () { var e = this.cm; var t = e.display; var r = e.doc; var n = yn(e); if (e.options.moveInputWithCursor) { var i = en(e, r.sel.primary().head, 'div'); var o = t.wrapper.getBoundingClientRect(); var a = t.lineDiv.getBoundingClientRect(); n.teTop = Math.max(0, Math.min(t.wrapper.clientHeight - 10, i.top + a.top - o.top)), n.teLeft = Math.max(0, Math.min(t.wrapper.clientWidth - 10, i.left + a.left - o.left)); } return n; }, Ya.prototype.showSelection = function (e) { var t = this.cm.display; A(t.cursorDiv, e.cursors), A(t.selectionDiv, e.selection), e.teTop != null && (this.wrapper.style.top = e.teTop + 'px', this.wrapper.style.left = e.teLeft + 'px'); }, Ya.prototype.reset = function (e) { if (!this.contextMenuPending && !this.composing) { var t = this.cm; if (t.somethingSelected()) { this.prevInput = ''; var r = t.getSelection(); this.textarea.value = r, t.state.focused && P(this.textarea), x && k >= 9 && (this.hasSelection = r); } else e || (this.prevInput = this.textarea.value = '', x && k >= 9 && (this.hasSelection = null)); } }, Ya.prototype.getField = function () { return this.textarea; }, Ya.prototype.supportsTouch = function () { return !1; }, Ya.prototype.focus = function () { if (this.cm.options.readOnly != 'nocursor' && (!f || W() != this.textarea)) try { this.textarea.focus(); } catch (e) {} }, Ya.prototype.blur = function () { this.textarea.blur(); }, Ya.prototype.resetPosition = function () { this.wrapper.style.top = this.wrapper.style.left = 0; }, Ya.prototype.receivedFocus = function () { this.slowPoll(); }, Ya.prototype.slowPoll = function () { var e = this; this.pollingFast || this.polling.set(this.cm.options.pollInterval, function () { e.poll(), e.cm.state.focused && e.slowPoll(); }); }, Ya.prototype.fastPoll = function () { var t = !1; var r = this; r.pollingFast = !0, r.polling.set(20, function e () { r.poll() || t ? (r.pollingFast = !1, r.slowPoll()) : (t = !0, r.polling.set(60, e)); }); }, Ya.prototype.poll = function () { var e = this; var t = this.cm; var r = this.textarea; var n = this.prevInput; if (this.contextMenuPending || !t.state.focused || Ot(r) && !n && !this.composing || t.isReadOnly() || t.options.disableInput || t.state.keySeq) return !1; var i = r.value; if (i == n && !t.somethingSelected()) return !1; if (x && k >= 9 && this.hasSelection === i || w && /[\uf700-\uf7ff]/.test(i)) return t.display.input.reset(), !1; if (t.doc.sel == t.display.selForContextMenu) { var o = i.charCodeAt(0); if (o != 8203 || n || (n = ''), o == 8666) return this.reset(), this.cm.execCommand('undo'); } for (var a = 0, l = Math.min(n.length, i.length); a < l && n.charCodeAt(a) == i.charCodeAt(a);)++a; return ti(t, function () { Ia(t, i.slice(a), n.length - a, null, e.composing ? '*compose' : null), i.length > 1e3 || i.indexOf('\n') > -1 ? r.value = e.prevInput = '' : e.prevInput = i, e.composing && (e.composing.range.clear(), e.composing.range = t.markText(e.composing.start, t.getCursor('to'), { className: 'CodeMirror-composing' })); }), !0; }, Ya.prototype.ensurePolled = function () { this.pollingFast && this.poll() && (this.pollingFast = !1); }, Ya.prototype.onKeyPress = function () { x && k >= 9 && (this.hasSelection = null), this.fastPoll(); }, Ya.prototype.onContextMenu = function (e) { var r = this; var n = r.cm; var i = n.display; var o = r.textarea; var t = mn(n, e); var a = i.scroller.scrollTop; if (t && !g) { n.options.resetSelectionOnContextMenu && n.doc.sel.contains(t) == -1 && ri(n, ro)(n.doc, Ai(t), q); var l = o.style.cssText; var s = r.wrapper.style.cssText; r.wrapper.style.cssText = 'position: absolute'; var c; var u = r.wrapper.getBoundingClientRect(); if (o.style.cssText = 'position: absolute; width: 30px; height: 30px;\n top: ' + (e.clientY - u.top - 5) + 'px; left: ' + (e.clientX - u.left - 5) + 'px;\n z-index: 1000; background: ' + (x ? 'rgba(255, 255, 255, .05)' : 'transparent') + ';\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);', b && (c = window.scrollY), i.input.focus(), b && window.scrollTo(null, c), i.input.reset(), n.somethingSelected() || (o.value = r.prevInput = ' '), r.contextMenuPending = !0, i.selForContextMenu = n.doc.sel, clearTimeout(i.detectingSelectAll), x && k >= 9 && f(), C) { wt(e); var d = function () { dt(window, 'mouseup', d), setTimeout(h, 20); }; ct(window, 'mouseup', d); } else setTimeout(h, 50); } function f () { if (o.selectionStart != null) { var e = n.somethingSelected(); var t = '' + (e ? o.value : ''); o.value = '⇚', o.value = t, r.prevInput = e ? '' : '', o.selectionStart = 1, o.selectionEnd = t.length, i.selForContextMenu = n.doc.sel; } } function h () { if (r.contextMenuPending = !1, r.wrapper.style.cssText = s, o.style.cssText = l, x && k < 9 && i.scrollbars.setScrollTop(i.scroller.scrollTop = a), o.selectionStart != null) { (!x || x && k < 9) && f(); var e = 0; var t = function () { i.selForContextMenu == n.doc.sel && o.selectionStart == 0 && o.selectionEnd > 0 && r.prevInput == '' ? ri(n, uo)(n) : e++ < 10 ? i.detectingSelectAll = setTimeout(t, 500) : (i.selForContextMenu = null, i.input.reset()); }; i.detectingSelectAll = setTimeout(t, 200); } } }, Ya.prototype.readOnlyChanged = function (e) { e || this.reset(), this.textarea.disabled = e == 'nocursor'; }, Ya.prototype.setUneditable = function () {}, Ya.prototype.needsContentAttribute = !1, Qa = (Za = Wa).optionHandlers, Za.defineOption = rl, Za.Init = La, rl('value', '', function (e, t) { return e.setValue(t); }, !0), rl('mode', null, function (e, t) { e.doc.modeOption = t, Di(e); }, !0), rl('indentUnit', 2, Di, !0), rl('indentWithTabs', !1), rl('smartIndent', !0), rl('tabSize', 4, function (e) { Hi(e), _r(e), oi(e); }, !0), rl('lineSeparator', null, function (e, n) { if (e.doc.lineSep = n) { var i = []; var o = e.doc.first; e.doc.iter(function (e) { for (var t = 0; ;) { var r = e.text.indexOf(n, t); if (r == -1) break; t = r + n.length, i.push(ge(o, r)); }o++; }); for (var t = i.length - 1; t >= 0; t--)yo(e.doc, n, i[t], ge(i[t].line, i[t].ch + n.length)); } }), rl('specialChars', /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g, function (e, t, r) { e.state.specialChars = new RegExp(t.source + (t.test('\t') ? '' : '|\t'), 'g'), r != La && e.refresh(); }), rl('specialCharPlaceholder', ar, function (e) { return e.refresh(); }, !0), rl('electricChars', !0), rl('inputStyle', f ? 'contenteditable' : 'textarea', function () { throw new Error('inputStyle can not (yet) be changed in a running editor'); }, !0), rl('spellcheck', !1, function (e, t) { return e.getInputField().spellcheck = t; }, !0), rl('rtlMoveVisually', !p), rl('wholeLineUpdateBefore', !0), rl('theme', 'default', function (e) { Ta(e), Na(e); }, !0), rl('keyMap', 'default', function (e, t, r) { var n = Jo(t); var i = r != La && Jo(r); i && i.detach && i.detach(e, n), n.attach && n.attach(e, i || null); }), rl('extraKeys', null), rl('configureMouse', null), rl('lineWrapping', !1, za, !0), rl('gutters', [], function (e) { bi(e.options), Na(e); }, !0), rl('fixedGutter', !0, function (e, t) { e.display.gutters.style.left = t ? fn(e.display) + 'px' : '0', e.refresh(); }, !0), rl('coverGutterNextToScrollbar', !1, function (e) { return Un(e); }, !0), rl('scrollbarStyle', 'native', function (e) { _n(e), Un(e), e.display.scrollbars.setScrollTop(e.doc.scrollTop), e.display.scrollbars.setScrollLeft(e.doc.scrollLeft); }, !0), rl('lineNumbers', !1, function (e) { bi(e.options), Na(e); }, !0), rl('firstLineNumber', 1, Na, !0), rl('lineNumberFormatter', function (e) { return e; }, Na, !0), rl('showCursorWhenSelecting', !1, vn, !0), rl('resetSelectionOnContextMenu', !0), rl('lineWiseCopyCut', !0), rl('pasteLinesPerSelection', !0), rl('readOnly', !1, function (e, t) { t == 'nocursor' && (Ln(e), e.display.input.blur()), e.display.input.readOnlyChanged(t); }), rl('disableInput', !1, function (e, t) { t || e.display.input.reset(); }, !0), rl('dragDrop', !0, Oa), rl('allowDropFileTypes', null), rl('cursorBlinkRate', 530), rl('cursorScrollMargin', 0), rl('cursorHeight', 1, vn, !0), rl('singleCursorHeightPerLine', !0, vn, !0), rl('workTime', 100), rl('workDelay', 100), rl('flattenSpans', !0, Hi, !0), rl('addModeClass', !1, Hi, !0), rl('pollInterval', 100), rl('undoDepth', 200, function (e, t) { return e.doc.history.undoDepth = t; }), rl('historyEventDelay', 1250), rl('viewportMargin', 10, function (e) { return e.refresh(); }, !0), rl('maxHighlightLength', 1e4, Hi, !0), rl('moveInputWithCursor', !0, function (e, t) { t || e.display.input.resetPosition(); }), rl('tabindex', null, function (e, t) { return e.display.input.getField().tabIndex = t || ''; }), rl('autofocus', null), rl('direction', 'ltr', function (e, t) { return e.doc.setDirection(t); }, !0), el = (Ja = Wa).optionHandlers, tl = Ja.helpers = {}, Ja.prototype = { constructor: Ja, focus: function () { window.focus(), this.display.input.focus(); }, setOption: function (e, t) { var r = this.options; var n = r[e]; r[e] == t && e != 'mode' || (r[e] = t, el.hasOwnProperty(e) && ri(this, el[e])(this, t, n), ft(this, 'optionChange', this, e)); }, getOption: function (e) { return this.options[e]; }, getDoc: function () { return this.doc; }, addKeyMap: function (e, t) { this.state.keyMaps[t ? 'push' : 'unshift'](Jo(e)); }, removeKeyMap: function (e) { for (var t = this.state.keyMaps, r = 0; r < t.length; ++r) if (t[r] == e || t[r].name == e) return t.splice(r, 1), !0; }, addOverlay: ni(function (e, t) { var r = e.token ? e : Ja.getMode(this.options, e); if (r.startState) throw new Error('Overlays may not be stateful.'); !(function (e, t, r) { for (var n = 0, i = r(t); n < e.length && r(e[n]) <= i;)n++; e.splice(n, 0, t); }(this.state.overlays, { mode: r, modeSpec: e, opaque: t && t.opaque, priority: t && t.priority || 0 }, function (e) { return e.priority; })), this.state.modeGen++, oi(this); }), removeOverlay: ni(function (e) { for (var t = this.state.overlays, r = 0; r < t.length; ++r) { var n = t[r].modeSpec; if (n == e || typeof e == 'string' && n.name == e) return t.splice(r, 1), this.state.modeGen++, void oi(this); } }), indentLine: ni(function (e, t, r) { typeof t != 'string' && typeof t != 'number' && (t = t == null ? this.options.smartIndent ? 'smart' : 'prev' : t ? 'add' : 'subtract'), pe(this.doc, e) && Ha(this, e, t, r); }), indentSelection: ni(function (e) { for (var t = this, r = this.doc.sel.ranges, n = -1, i = 0; i < r.length; i++) { var o = r[i]; if (o.empty())o.head.line > n && (Ha(t, o.head.line, e, !0), n = o.head.line, i == t.doc.sel.primIndex && Hn(t)); else { var a = o.from(); var l = o.to(); var s = Math.max(n, a.line); n = Math.min(t.lastLine(), l.line - (l.ch ? 0 : 1)) + 1; for (var c = s; c < n; ++c)Ha(t, c, e); var u = t.doc.sel.ranges; a.ch == 0 && r.length == u.length && u[i].from().ch > 0 && Ji(t.doc, i, new Li(a, u[i].to()), q); } } }), getTokenAt: function (e, t) { return Qt(this, e, t); }, getLineTokens: function (e, t) { return Qt(this, ge(e), t, !0); }, getTokenTypeAt: function (e) { e = Ce(this.doc, e); var t; var r = Gt(this, se(this.doc, e.line)); var n = 0; var i = (r.length - 1) / 2; var o = e.ch; if (o == 0)t = r[2]; else for (;;) { var a = n + i >> 1; if ((a ? r[2 * a - 1] : 0) >= o)i = a; else { if (!(r[2 * a + 1] < o)) { t = r[2 * a + 2]; break; }n = 1 + a; } } var l = t ? t.indexOf('overlay ') : -1; return l < 0 ? t : l == 0 ? null : t.slice(0, l - 1); }, getModeAt: function (e) { var t = this.doc.mode; return t.innerMode ? Ja.innerMode(t, this.getTokenAt(e).state).mode : t; }, getHelper: function (e, t) { return this.getHelpers(e, t)[0]; }, getHelpers: function (e, t) { var r = []; if (!tl.hasOwnProperty(t)) return r; var n = tl[t]; var i = this.getModeAt(e); if (typeof i[t] == 'string')n[i[t]] && r.push(n[i[t]]); else if (i[t]) for (var o = 0; o < i[t].length; o++) { var a = n[i[t][o]]; a && r.push(a); } else i.helperType && n[i.helperType] ? r.push(n[i.helperType]) : n[i.name] && r.push(n[i.name]); for (var l = 0; l < n._global.length; l++) { var s = n._global[l]; s.pred(i, this) && j(r, s.val) == -1 && r.push(s.val); } return r; }, getStateAfter: function (e, t) { var r = this.doc; return _t(this, (e = ke(r, e == null ? r.first + r.size - 1 : e)) + 1, t).state; }, cursorCoords: function (e, t) { var r = this.doc.sel.primary(); return en(this, e == null ? r.head : typeof e == 'object' ? Ce(this.doc, e) : e ? r.from() : r.to(), t || 'page'); }, charCoords: function (e, t) { return Jr(this, Ce(this.doc, e), t || 'page'); }, coordsChar: function (e, t) { return nn(this, (e = Qr(this, e, t || 'page')).left, e.top); }, lineAtHeight: function (e, t) { return e = Qr(this, { top: e, left: 0 }, t || 'page').top, he(this.doc, e + this.display.viewOffset); }, heightAtLine: function (e, t, r) { var n; var i = !1; if (typeof e == 'number') { var o = this.doc.first + this.doc.size - 1; e < this.doc.first ? e = this.doc.first : o < e && (e = o, i = !0), n = se(this.doc, e); } else n = e; return Zr(this, n, { top: 0, left: 0 }, t || 'page', r || i).top + (i ? this.doc.height - _e(n) : 0); }, defaultTextHeight: function () { return cn(this.display); }, defaultCharWidth: function () { return un(this.display); }, getViewport: function () { return { from: this.display.viewFrom, to: this.display.viewTo }; }, addWidget: function (e, t, r, n, i) { var o = this.display; var a = (e = en(this, Ce(this.doc, e))).bottom; var l = e.left; if (t.style.position = 'absolute', t.setAttribute('cm-ignore-events', 'true'), this.display.input.setUneditable(t), o.sizer.appendChild(t), n == 'over')a = e.top; else if (n == 'above' || n == 'near') { var s = Math.max(o.wrapper.clientHeight, this.doc.height); var c = Math.max(o.sizer.clientWidth, o.lineSpace.clientWidth); (n == 'above' || e.bottom + t.offsetHeight > s) && e.top > t.offsetHeight ? a = e.top - t.offsetHeight : e.bottom + t.offsetHeight <= s && (a = e.bottom), l + t.offsetWidth > c && (l = c - t.offsetWidth); }t.style.top = a + 'px', t.style.left = t.style.right = '', i == 'right' ? (l = o.sizer.clientWidth - t.offsetWidth, t.style.right = '0px') : (i == 'left' ? l = 0 : i == 'middle' && (l = (o.sizer.clientWidth - t.offsetWidth) / 2), t.style.left = l + 'px'), r && (function (e, t) { var r = Wn(e, t); r.scrollTop != null && Fn(e, r.scrollTop), r.scrollLeft != null && jn(e, r.scrollLeft); }(this, { left: l, top: a, right: l + t.offsetWidth, bottom: a + t.offsetHeight })); }, triggerOnKeyDown: ni(pa), triggerOnKeyPress: ni(ga), triggerOnKeyUp: ma, triggerOnMouseDown: ni(wa), execCommand: function (e) { if (oa.hasOwnProperty(e)) return oa[e].call(null, this); }, triggerElectric: ni(function (e) { Ra(this, e); }), findPosH: function (e, t, r, n) { var i = 1; t < 0 && (i = -1, t = -t); for (var o = Ce(this.doc, e), a = 0; a < t && !(o = qa(this.doc, o, i, r, n)).hitSide; ++a);return o; }, moveH: ni(function (t, r) { var n = this; this.extendSelectionsBy(function (e) { return n.display.shift || n.doc.extend || e.empty() ? qa(n.doc, e.head, t, r, n.options.rtlMoveVisually) : t < 0 ? e.from() : e.to(); }, V); }), deleteH: ni(function (r, n) { var e = this.doc.sel; var i = this.doc; e.somethingSelected() ? i.replaceSelection('', null, '+delete') : ea(this, function (e) { var t = qa(i, e.head, r, n, !1); return r < 0 ? { from: t, to: e.head } : { from: e.head, to: t }; }); }), findPosV: function (e, t, r, n) { var i = 1; var o = n; t < 0 && (i = -1, t = -t); for (var a = Ce(this.doc, e), l = 0; l < t; ++l) { var s = en(this, a, 'div'); if (o == null ? o = s.left : s.left = o, (a = Ua(this, s, i, r)).hitSide) break; } return a; }, moveV: ni(function (n, i) { var o = this; var a = this.doc; var l = []; var s = !this.display.shift && !a.extend && a.sel.somethingSelected(); if (a.extendSelectionsBy(function (e) { if (s) return n < 0 ? e.from() : e.to(); var t = en(o, e.head, 'div'); e.goalColumn != null && (t.left = e.goalColumn), l.push(t.left); var r = Ua(o, t, n, i); return i == 'page' && e == a.sel.primary() && Dn(o, Jr(o, r, 'div').top - t.top), r; }, V), l.length) for (var e = 0; e < a.sel.ranges.length; e++)a.sel.ranges[e].goalColumn = l[e]; }), findWordAt: function (e) { var t = se(this.doc, e.line).text; var r = e.ch; var n = e.ch; if (t) { var i = this.getHelper(e, 'wordChars'); e.sticky != 'before' && n != t.length || !r ? ++n : --r; for (var o = t.charAt(r), a = te(o, i) ? function (e) { return te(e, i); } : /\s/.test(o) ? function (e) { return /\s/.test(e); } : function (e) { return !/\s/.test(e) && !te(e); }; r > 0 && a(t.charAt(r - 1));)--r; for (;n < t.length && a(t.charAt(n));)++n; } return new Li(ge(e.line, r), ge(e.line, n)); }, toggleOverwrite: function (e) { e != null && e == this.state.overwrite || ((this.state.overwrite = !this.state.overwrite) ? D(this.display.cursorDiv, 'CodeMirror-overwrite') : L(this.display.cursorDiv, 'CodeMirror-overwrite'), ft(this, 'overwriteToggle', this, this.state.overwrite)); }, hasFocus: function () { return this.display.input.getField() == W(); }, isReadOnly: function () { return !(!this.options.readOnly && !this.doc.cantEdit); }, scrollTo: ni(function (e, t) { Pn(this, e, t); }), getScrollInfo: function () { var e = this.display.scroller; return { left: e.scrollLeft, top: e.scrollTop, height: e.scrollHeight - Dr(this) - this.display.barHeight, width: e.scrollWidth - Dr(this) - this.display.barWidth, clientHeight: Pr(this), clientWidth: Hr(this) }; }, scrollIntoView: ni(function (e, t) { e == null ? (e = { from: this.doc.sel.primary().head, to: null }, t == null && (t = this.options.cursorScrollMargin)) : typeof e == 'number' ? e = { from: ge(e, 0), to: null } : e.from == null && (e = { from: e, to: null }), e.to || (e.to = e.from), e.margin = t || 0, e.from.line != null ? (function (e, t) { En(e), e.curOp.scrollToPos = t; }(this, e)) : In(this, e.from, e.to, e.margin); }), setSize: ni(function (e, t) { function r (e) { return typeof e == 'number' || /^\d+$/.test(String(e)) ? e + 'px' : e; } var n = this; e != null && (this.display.wrapper.style.width = r(e)), t != null && (this.display.wrapper.style.height = r(t)), this.options.lineWrapping && Gr(this); var i = this.display.viewFrom; this.doc.iter(i, this.display.viewTo, function (e) { if (e.widgets) for (var t = 0; t < e.widgets.length; t++) if (e.widgets[t].noHScroll) { ai(n, i, 'widget'); break; }++i; }), this.curOp.forceUpdate = !0, ft(this, 'refresh', this); }), operation: function (e) { return ti(this, e); }, startOperation: function () { return Xn(this); }, endOperation: function () { return Yn(this); }, refresh: ni(function () { var e = this.display.cachedTextHeight; oi(this), this.curOp.forceUpdate = !0, _r(this), Pn(this, this.doc.scrollLeft, this.doc.scrollTop), gi(this), (e == null || Math.abs(e - cn(this.display)) > 0.5) && pn(this), ft(this, 'refresh', this); }), swapDoc: ni(function (e) { var t = this.doc; return t.cm = null, Fi(this, e), _r(this), this.display.input.reset(), Pn(this, e.scrollLeft, e.scrollTop), this.curOp.forceScroll = !0, gr(this, 'swapDoc', this, t), t; }), getInputField: function () { return this.display.input.getField(); }, getWrapperElement: function () { return this.display.wrapper; }, getScrollerElement: function () { return this.display.scroller; }, getGutterElement: function () { return this.display.gutters; } }, gt(Ja), Ja.registerHelper = function (e, t, r) { tl.hasOwnProperty(e) || (tl[e] = Ja[e] = { _global: [] }), tl[e][t] = r; }, Ja.registerGlobalHelper = function (e, t, r, n) { Ja.registerHelper(e, t, n), tl[e]._global.push({ pred: r, val: n }); }; var nl; var il = 'iter insert remove copy getEditor constructor'.split(' '); for (var ol in Ho.prototype)Ho.prototype.hasOwnProperty(ol) && j(il, ol) < 0 && (Wa.prototype[ol] = (function (e) { return function () { return e.apply(this.doc, arguments); }; }(Ho.prototype[ol]))); return gt(Ho), Wa.inputStyles = { textarea: Ya, contenteditable: Va }, Wa.defineMode = function (e) { Wa.defaults.mode || e == 'null' || (Wa.defaults.mode = e), (function (e, t) { arguments.length > 2 && (t.dependencies = Array.prototype.slice.call(arguments, 2)), Dt[e] = t; }.apply(this, arguments)); }, Wa.defineMIME = function (e, t) { Ht[e] = t; }, Wa.defineMode('null', function () { return { token: function (e) { return e.skipToEnd(); } }; }), Wa.defineMIME('text/plain', 'null'), Wa.defineExtension = function (e, t) { Wa.prototype[e] = t; }, Wa.defineDocExtension = function (e, t) { Ho.prototype[e] = t; }, Wa.fromTextArea = function (t, e) { if ((e = e ? I(e) : {}).value = t.value, !e.tabindex && t.tabIndex && (e.tabindex = t.tabIndex), !e.placeholder && t.placeholder && (e.placeholder = t.placeholder), e.autofocus == null) { var r = W(); e.autofocus = r == t || t.getAttribute('autofocus') != null && r == document.body; } function n () { t.value = l.getValue(); } var i; if (t.form && (ct(t.form, 'submit', n), !e.leaveSubmitMethodAlone)) { var o = t.form; i = o.submit; try { var a = o.submit = function () { n(), o.submit = i, o.submit(), o.submit = a; }; } catch (e) {} }e.finishInit = function (e) { e.save = n, e.getTextArea = function () { return t; }, e.toTextArea = function () { e.toTextArea = isNaN, n(), t.parentNode.removeChild(e.getWrapperElement()), t.style.display = '', t.form && (dt(t.form, 'submit', n), typeof t.form.submit == 'function' && (t.form.submit = i)); }; }, t.style.display = 'none'; var l = Wa(function (e) { return t.parentNode.insertBefore(e, t.nextSibling); }, e); return l; }, (nl = Wa).off = dt, nl.on = ct, nl.wheelEventPixels = Ci, nl.Doc = Ho, nl.splitLines = Nt, nl.countColumn = F, nl.findColumn = G, nl.isWordChar = ee, nl.Pass = K, nl.signal = ft, nl.Line = tr, nl.changeEnd = Ni, nl.scrollbarModel = Gn, nl.Pos = ge, nl.cmpPos = ve, nl.modes = Dt, nl.mimeModes = Ht, nl.resolveMode = Pt, nl.getMode = Et, nl.modeExtensions = It, nl.extendMode = Ft, nl.copyState = Rt, nl.startState = Bt, nl.innerMode = jt, nl.commands = oa, nl.keyMap = Go, nl.keyName = Qo, nl.isModifierKey = Yo, nl.lookupKey = Xo, nl.normalizeKeyMap = $o, nl.StringStream = Kt, nl.SharedTextMarker = Oo, nl.TextMarker = Ao, nl.LineWidget = To, nl.e_preventDefault = vt, nl.e_stopPropagation = yt, nl.e_stop = wt, nl.addClass = D, nl.contains = z, nl.rmClass = L, nl.keyNames = Ko, Wa.version = '5.39.0', Wa; })), (function (e) { typeof exports == 'object' && typeof module == 'object' ? e(require('../../lib/codemirror')) : typeof define == 'function' && define.amd ? define(['../../lib/codemirror'], e) : e(CodeMirror); }(function (O) { 'use strict'; function e (e) { for (var t = {}, r = 0; r < e.length; ++r)t[e[r].toLowerCase()] = !0; return t; }O.defineMode('css', function (e, t) { var r = t.inline; t.propertyKeywords || (t = O.resolveMode('text/css')); var n; var i; var o = e.indentUnit; var a = t.tokenHooks; var l = t.documentTypes || {}; var s = t.mediaTypes || {}; var c = t.mediaFeatures || {}; var u = t.mediaValueKeywords || {}; var d = t.propertyKeywords || {}; var f = t.nonStandardPropertyKeywords || {}; var h = t.fontProperties || {}; var p = t.counterDescriptors || {}; var m = t.colorKeywords || {}; var g = t.valueKeywords || {}; var v = t.allowNested; var y = t.lineComment; var b = !0 === t.supportsAtComponent; function w (e, t) { return n = t, e; } function x (i) { return function (e, t) { for (var r, n = !1; (r = e.next()) != null;) { if (r == i && !n) { i == ')' && e.backUp(1); break; }n = !n && r == '\\'; } return r != i && (n || i == ')') || (t.tokenize = null), w('string', 'string'); }; } function k (e, t) { return e.next(), e.match(/\s*[\"\')]/, !1) ? t.tokenize = null : t.tokenize = x(')'), w(null, '('); } function C (e, t, r) { this.type = e, this.indent = t, this.prev = r; } function S (e, t, r, n) { return e.context = new C(r, t.indentation() + (!1 === n ? 0 : o), e.context), r; } function T (e) { return e.context.prev && (e.context = e.context.prev), e.context.type; } function L (e, t, r) { return N[r.context.type](e, t, r); } function M (e, t, r, n) { for (var i = n || 1; i > 0; i--)r.context = r.context.prev; return L(e, t, r); } function A (e) { var t = e.current().toLowerCase(); i = g.hasOwnProperty(t) ? 'atom' : m.hasOwnProperty(t) ? 'keyword' : 'variable'; } var N = { top: function (e, t, r) { if (e == '{') return S(r, t, 'block'); if (e == '}' && r.context.prev) return T(r); if (b && /@component/i.test(e)) return S(r, t, 'atComponentBlock'); if (/^@(-moz-)?document$/i.test(e)) return S(r, t, 'documentTypes'); if (/^@(media|supports|(-moz-)?document|import)$/i.test(e)) return S(r, t, 'atBlock'); if (/^@(font-face|counter-style)/i.test(e)) return r.stateArg = e, 'restricted_atBlock_before'; if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(e)) return 'keyframes'; if (e && e.charAt(0) == '@') return S(r, t, 'at'); if (e == 'hash')i = 'builtin'; else if (e == 'word')i = 'tag'; else { if (e == 'variable-definition') return 'maybeprop'; if (e == 'interpolation') return S(r, t, 'interpolation'); if (e == ':') return 'pseudo'; if (v && e == '(') return S(r, t, 'parens'); } return r.context.type; }, block: function (e, t, r) { if (e != 'word') return e == 'meta' ? 'block' : v || e != 'hash' && e != 'qualifier' ? N.top(e, t, r) : (i = 'error', 'block'); var n = t.current().toLowerCase(); return d.hasOwnProperty(n) ? (i = 'property', 'maybeprop') : f.hasOwnProperty(n) ? (i = 'string-2', 'maybeprop') : v ? (i = t.match(/^\s*:(?:\s|$)/, !1) ? 'property' : 'tag', 'block') : (i += ' error', 'maybeprop'); }, maybeprop: function (e, t, r) { return e == ':' ? S(r, t, 'prop') : L(e, t, r); }, prop: function (e, t, r) { if (e == ';') return T(r); if (e == '{' && v) return S(r, t, 'propBlock'); if (e == '}' || e == '{') return M(e, t, r); if (e == '(') return S(r, t, 'parens'); if (e != 'hash' || /^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(t.current())) { if (e == 'word')A(t); else if (e == 'interpolation') return S(r, t, 'interpolation'); } else i += ' error'; return 'prop'; }, propBlock: function (e, t, r) { return e == '}' ? T(r) : e == 'word' ? (i = 'property', 'maybeprop') : r.context.type; }, parens: function (e, t, r) { return e == '{' || e == '}' ? M(e, t, r) : e == ')' ? T(r) : e == '(' ? S(r, t, 'parens') : e == 'interpolation' ? S(r, t, 'interpolation') : (e == 'word' && A(t), 'parens'); }, pseudo: function (e, t, r) { return e == 'meta' ? 'pseudo' : e == 'word' ? (i = 'variable-3', r.context.type) : L(e, t, r); }, documentTypes: function (e, t, r) { return e == 'word' && l.hasOwnProperty(t.current()) ? (i = 'tag', r.context.type) : N.atBlock(e, t, r); }, atBlock: function (e, t, r) { if (e == '(') return S(r, t, 'atBlock_parens'); if (e == '}' || e == ';') return M(e, t, r); if (e == '{') return T(r) && S(r, t, v ? 'block' : 'top'); if (e == 'interpolation') return S(r, t, 'interpolation'); if (e == 'word') { var n = t.current().toLowerCase(); i = n == 'only' || n == 'not' || n == 'and' || n == 'or' ? 'keyword' : s.hasOwnProperty(n) ? 'attribute' : c.hasOwnProperty(n) ? 'property' : u.hasOwnProperty(n) ? 'keyword' : d.hasOwnProperty(n) ? 'property' : f.hasOwnProperty(n) ? 'string-2' : g.hasOwnProperty(n) ? 'atom' : m.hasOwnProperty(n) ? 'keyword' : 'error'; } return r.context.type; }, atComponentBlock: function (e, t, r) { return e == '}' ? M(e, t, r) : e == '{' ? T(r) && S(r, t, v ? 'block' : 'top', !1) : (e == 'word' && (i = 'error'), r.context.type); }, atBlock_parens: function (e, t, r) { return e == ')' ? T(r) : e == '{' || e == '}' ? M(e, t, r, 2) : N.atBlock(e, t, r); }, restricted_atBlock_before: function (e, t, r) { return e == '{' ? S(r, t, 'restricted_atBlock') : e == 'word' && r.stateArg == '@counter-style' ? (i = 'variable', 'restricted_atBlock_before') : L(e, t, r); }, restricted_atBlock: function (e, t, r) { return e == '}' ? (r.stateArg = null, T(r)) : e == 'word' ? (i = r.stateArg == '@font-face' && !h.hasOwnProperty(t.current().toLowerCase()) || r.stateArg == '@counter-style' && !p.hasOwnProperty(t.current().toLowerCase()) ? 'error' : 'property', 'maybeprop') : 'restricted_atBlock'; }, keyframes: function (e, t, r) { return e == 'word' ? (i = 'variable', 'keyframes') : e == '{' ? S(r, t, 'top') : L(e, t, r); }, at: function (e, t, r) { return e == ';' ? T(r) : e == '{' || e == '}' ? M(e, t, r) : (e == 'word' ? i = 'tag' : e == 'hash' && (i = 'builtin'), 'at'); }, interpolation: function (e, t, r) { return e == '}' ? T(r) : e == '{' || e == ';' ? M(e, t, r) : (e == 'word' ? i = 'variable' : e != 'variable' && e != '(' && e != ')' && (i = 'error'), 'interpolation'); } }; return { startState: function (e) { return { tokenize: null, state: r ? 'block' : 'top', stateArg: null, context: new C(r ? 'block' : 'top', e || 0, null) }; }, token: function (e, t) { if (!t.tokenize && e.eatSpace()) return null; var r = (t.tokenize || function (e, t) { var r = e.next(); if (a[r]) { var n = a[r](e, t); if (!1 !== n) return n; } return r == '@' ? (e.eatWhile(/[\w\\\-]/), w('def', e.current())) : r == '=' || (r == '~' || r == '|') && e.eat('=') ? w(null, 'compare') : r == '"' || r == "'" ? (t.tokenize = x(r), t.tokenize(e, t)) : r == '#' ? (e.eatWhile(/[\w\\\-]/), w('atom', 'hash')) : r == '!' ? (e.match(/^\s*\w*/), w('keyword', 'important')) : /\d/.test(r) || r == '.' && e.eat(/\d/) ? (e.eatWhile(/[\w.%]/), w('number', 'unit')) : r !== '-' ? /[,+>*\/]/.test(r) ? w(null, 'select-op') : r == '.' && e.match(/^-?[_a-z][_a-z0-9-]*/i) ? w('qualifier', 'qualifier') : /[:;{}\[\]\(\)]/.test(r) ? w(null, r) : (r == 'u' || r == 'U') && e.match(/rl(-prefix)?\(/i) || (r == 'd' || r == 'D') && e.match('omain(', !0, !0) || (r == 'r' || r == 'R') && e.match('egexp(', !0, !0) ? (e.backUp(1), t.tokenize = k, w('property', 'word')) : /[\w\\\-]/.test(r) ? (e.eatWhile(/[\w\\\-]/), w('property', 'word')) : w(null, null) : /[\d.]/.test(e.peek()) ? (e.eatWhile(/[\w.%]/), w('number', 'unit')) : e.match(/^-[\w\\\-]+/) ? (e.eatWhile(/[\w\\\-]/), e.match(/^\s*:/, !1) ? w('variable-2', 'variable-definition') : w('variable-2', 'variable')) : e.match(/^\w+-/) ? w('meta', 'meta') : void 0; })(e, t); return r && typeof r == 'object' && (n = r[1], r = r[0]), i = r, n != 'comment' && (t.state = N[t.state](n, e, t)), i; }, indent: function (e, t) { var r = e.context; var n = t && t.charAt(0); var i = r.indent; return r.type != 'prop' || n != '}' && n != ')' || (r = r.prev), r.prev && (n != '}' || r.type != 'block' && r.type != 'top' && r.type != 'interpolation' && r.type != 'restricted_atBlock' ? (n != ')' || r.type != 'parens' && r.type != 'atBlock_parens') && (n != '{' || r.type != 'at' && r.type != 'atBlock') || (i = Math.max(0, r.indent - o)) : i = (r = r.prev).indent), i; }, electricChars: '}', blockCommentStart: '/*', blockCommentEnd: '*/', blockCommentContinue: ' * ', lineComment: y, fold: 'brace' }; }); var t = ['domain', 'regexp', 'url', 'url-prefix']; var r = e(t); var n = ['all', 'aural', 'braille', 'handheld', 'print', 'projection', 'screen', 'tty', 'tv', 'embossed']; var i = e(n); var o = ['width', 'min-width', 'max-width', 'height', 'min-height', 'max-height', 'device-width', 'min-device-width', 'max-device-width', 'device-height', 'min-device-height', 'max-device-height', 'aspect-ratio', 'min-aspect-ratio', 'max-aspect-ratio', 'device-aspect-ratio', 'min-device-aspect-ratio', 'max-device-aspect-ratio', 'color', 'min-color', 'max-color', 'color-index', 'min-color-index', 'max-color-index', 'monochrome', 'min-monochrome', 'max-monochrome', 'resolution', 'min-resolution', 'max-resolution', 'scan', 'grid', 'orientation', 'device-pixel-ratio', 'min-device-pixel-ratio', 'max-device-pixel-ratio', 'pointer', 'any-pointer', 'hover', 'any-hover']; var a = e(o); var l = ['landscape', 'portrait', 'none', 'coarse', 'fine', 'on-demand', 'hover', 'interlace', 'progressive']; var s = e(l); var c = ['align-content', 'align-items', 'align-self', 'alignment-adjust', 'alignment-baseline', 'anchor-point', 'animation', 'animation-delay', 'animation-direction', 'animation-duration', 'animation-fill-mode', 'animation-iteration-count', 'animation-name', 'animation-play-state', 'animation-timing-function', 'appearance', 'azimuth', 'backface-visibility', 'background', 'background-attachment', 'background-blend-mode', 'background-clip', 'background-color', 'background-image', 'background-origin', 'background-position', 'background-repeat', 'background-size', 'baseline-shift', 'binding', 'bleed', 'bookmark-label', 'bookmark-level', 'bookmark-state', 'bookmark-target', 'border', 'border-bottom', 'border-bottom-color', 'border-bottom-left-radius', 'border-bottom-right-radius', 'border-bottom-style', 'border-bottom-width', 'border-collapse', 'border-color', 'border-image', 'border-image-outset', 'border-image-repeat', 'border-image-slice', 'border-image-source', 'border-image-width', 'border-left', 'border-left-color', 'border-left-style', 'border-left-width', 'border-radius', 'border-right', 'border-right-color', 'border-right-style', 'border-right-width', 'border-spacing', 'border-style', 'border-top', 'border-top-color', 'border-top-left-radius', 'border-top-right-radius', 'border-top-style', 'border-top-width', 'border-width', 'bottom', 'box-decoration-break', 'box-shadow', 'box-sizing', 'break-after', 'break-before', 'break-inside', 'caption-side', 'caret-color', 'clear', 'clip', 'color', 'color-profile', 'column-count', 'column-fill', 'column-gap', 'column-rule', 'column-rule-color', 'column-rule-style', 'column-rule-width', 'column-span', 'column-width', 'columns', 'content', 'counter-increment', 'counter-reset', 'crop', 'cue', 'cue-after', 'cue-before', 'cursor', 'direction', 'display', 'dominant-baseline', 'drop-initial-after-adjust', 'drop-initial-after-align', 'drop-initial-before-adjust', 'drop-initial-before-align', 'drop-initial-size', 'drop-initial-value', 'elevation', 'empty-cells', 'fit', 'fit-position', 'flex', 'flex-basis', 'flex-direction', 'flex-flow', 'flex-grow', 'flex-shrink', 'flex-wrap', 'float', 'float-offset', 'flow-from', 'flow-into', 'font', 'font-feature-settings', 'font-family', 'font-kerning', 'font-language-override', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-synthesis', 'font-variant', 'font-variant-alternates', 'font-variant-caps', 'font-variant-east-asian', 'font-variant-ligatures', 'font-variant-numeric', 'font-variant-position', 'font-weight', 'grid', 'grid-area', 'grid-auto-columns', 'grid-auto-flow', 'grid-auto-rows', 'grid-column', 'grid-column-end', 'grid-column-gap', 'grid-column-start', 'grid-gap', 'grid-row', 'grid-row-end', 'grid-row-gap', 'grid-row-start', 'grid-template', 'grid-template-areas', 'grid-template-columns', 'grid-template-rows', 'hanging-punctuation', 'height', 'hyphens', 'icon', 'image-orientation', 'image-rendering', 'image-resolution', 'inline-box-align', 'justify-content', 'justify-items', 'justify-self', 'left', 'letter-spacing', 'line-break', 'line-height', 'line-stacking', 'line-stacking-ruby', 'line-stacking-shift', 'line-stacking-strategy', 'list-style', 'list-style-image', 'list-style-position', 'list-style-type', 'margin', 'margin-bottom', 'margin-left', 'margin-right', 'margin-top', 'marks', 'marquee-direction', 'marquee-loop', 'marquee-play-count', 'marquee-speed', 'marquee-style', 'max-height', 'max-width', 'min-height', 'min-width', 'move-to', 'nav-down', 'nav-index', 'nav-left', 'nav-right', 'nav-up', 'object-fit', 'object-position', 'opacity', 'order', 'orphans', 'outline', 'outline-color', 'outline-offset', 'outline-style', 'outline-width', 'overflow', 'overflow-style', 'overflow-wrap', 'overflow-x', 'overflow-y', 'padding', 'padding-bottom', 'padding-left', 'padding-right', 'padding-top', 'page', 'page-break-after', 'page-break-before', 'page-break-inside', 'page-policy', 'pause', 'pause-after', 'pause-before', 'perspective', 'perspective-origin', 'pitch', 'pitch-range', 'place-content', 'place-items', 'place-self', 'play-during', 'position', 'presentation-level', 'punctuation-trim', 'quotes', 'region-break-after', 'region-break-before', 'region-break-inside', 'region-fragment', 'rendering-intent', 'resize', 'rest', 'rest-after', 'rest-before', 'richness', 'right', 'rotation', 'rotation-point', 'ruby-align', 'ruby-overhang', 'ruby-position', 'ruby-span', 'shape-image-threshold', 'shape-inside', 'shape-margin', 'shape-outside', 'size', 'speak', 'speak-as', 'speak-header', 'speak-numeral', 'speak-punctuation', 'speech-rate', 'stress', 'string-set', 'tab-size', 'table-layout', 'target', 'target-name', 'target-new', 'target-position', 'text-align', 'text-align-last', 'text-decoration', 'text-decoration-color', 'text-decoration-line', 'text-decoration-skip', 'text-decoration-style', 'text-emphasis', 'text-emphasis-color', 'text-emphasis-position', 'text-emphasis-style', 'text-height', 'text-indent', 'text-justify', 'text-outline', 'text-overflow', 'text-shadow', 'text-size-adjust', 'text-space-collapse', 'text-transform', 'text-underline-position', 'text-wrap', 'top', 'transform', 'transform-origin', 'transform-style', 'transition', 'transition-delay', 'transition-duration', 'transition-property', 'transition-timing-function', 'unicode-bidi', 'user-select', 'vertical-align', 'visibility', 'voice-balance', 'voice-duration', 'voice-family', 'voice-pitch', 'voice-range', 'voice-rate', 'voice-stress', 'voice-volume', 'volume', 'white-space', 'widows', 'width', 'will-change', 'word-break', 'word-spacing', 'word-wrap', 'z-index', 'clip-path', 'clip-rule', 'mask', 'enable-background', 'filter', 'flood-color', 'flood-opacity', 'lighting-color', 'stop-color', 'stop-opacity', 'pointer-events', 'color-interpolation', 'color-interpolation-filters', 'color-rendering', 'fill', 'fill-opacity', 'fill-rule', 'image-rendering', 'marker', 'marker-end', 'marker-mid', 'marker-start', 'shape-rendering', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-rendering', 'baseline-shift', 'dominant-baseline', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'text-anchor', 'writing-mode']; var u = e(c); var d = ['scrollbar-arrow-color', 'scrollbar-base-color', 'scrollbar-dark-shadow-color', 'scrollbar-face-color', 'scrollbar-highlight-color', 'scrollbar-shadow-color', 'scrollbar-3d-light-color', 'scrollbar-track-color', 'shape-inside', 'searchfield-cancel-button', 'searchfield-decoration', 'searchfield-results-button', 'searchfield-results-decoration', 'zoom']; var f = e(d); var h = e(['font-family', 'src', 'unicode-range', 'font-variant', 'font-feature-settings', 'font-stretch', 'font-weight', 'font-style']); var p = e(['additive-symbols', 'fallback', 'negative', 'pad', 'prefix', 'range', 'speak-as', 'suffix', 'symbols', 'system']); var m = ['aliceblue', 'antiquewhite', 'aqua', 'aquamarine', 'azure', 'beige', 'bisque', 'black', 'blanchedalmond', 'blue', 'blueviolet', 'brown', 'burlywood', 'cadetblue', 'chartreuse', 'chocolate', 'coral', 'cornflowerblue', 'cornsilk', 'crimson', 'cyan', 'darkblue', 'darkcyan', 'darkgoldenrod', 'darkgray', 'darkgreen', 'darkkhaki', 'darkmagenta', 'darkolivegreen', 'darkorange', 'darkorchid', 'darkred', 'darksalmon', 'darkseagreen', 'darkslateblue', 'darkslategray', 'darkturquoise', 'darkviolet', 'deeppink', 'deepskyblue', 'dimgray', 'dodgerblue', 'firebrick', 'floralwhite', 'forestgreen', 'fuchsia', 'gainsboro', 'ghostwhite', 'gold', 'goldenrod', 'gray', 'grey', 'green', 'greenyellow', 'honeydew', 'hotpink', 'indianred', 'indigo', 'ivory', 'khaki', 'lavender', 'lavenderblush', 'lawngreen', 'lemonchiffon', 'lightblue', 'lightcoral', 'lightcyan', 'lightgoldenrodyellow', 'lightgray', 'lightgreen', 'lightpink', 'lightsalmon', 'lightseagreen', 'lightskyblue', 'lightslategray', 'lightsteelblue', 'lightyellow', 'lime', 'limegreen', 'linen', 'magenta', 'maroon', 'mediumaquamarine', 'mediumblue', 'mediumorchid', 'mediumpurple', 'mediumseagreen', 'mediumslateblue', 'mediumspringgreen', 'mediumturquoise', 'mediumvioletred', 'midnightblue', 'mintcream', 'mistyrose', 'moccasin', 'navajowhite', 'navy', 'oldlace', 'olive', 'olivedrab', 'orange', 'orangered', 'orchid', 'palegoldenrod', 'palegreen', 'paleturquoise', 'palevioletred', 'papayawhip', 'peachpuff', 'peru', 'pink', 'plum', 'powderblue', 'purple', 'rebeccapurple', 'red', 'rosybrown', 'royalblue', 'saddlebrown', 'salmon', 'sandybrown', 'seagreen', 'seashell', 'sienna', 'silver', 'skyblue', 'slateblue', 'slategray', 'snow', 'springgreen', 'steelblue', 'tan', 'teal', 'thistle', 'tomato', 'turquoise', 'violet', 'wheat', 'white', 'whitesmoke', 'yellow', 'yellowgreen']; var g = e(m); var v = ['above', 'absolute', 'activeborder', 'additive', 'activecaption', 'afar', 'after-white-space', 'ahead', 'alias', 'all', 'all-scroll', 'alphabetic', 'alternate', 'always', 'amharic', 'amharic-abegede', 'antialiased', 'appworkspace', 'arabic-indic', 'armenian', 'asterisks', 'attr', 'auto', 'auto-flow', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region', 'background', 'backwards', 'baseline', 'below', 'bidi-override', 'binary', 'bengali', 'blink', 'block', 'block-axis', 'bold', 'bolder', 'border', 'border-box', 'both', 'bottom', 'break', 'break-all', 'break-word', 'bullets', 'button', 'button-bevel', 'buttonface', 'buttonhighlight', 'buttonshadow', 'buttontext', 'calc', 'cambodian', 'capitalize', 'caps-lock-indicator', 'caption', 'captiontext', 'caret', 'cell', 'center', 'checkbox', 'circle', 'cjk-decimal', 'cjk-earthly-branch', 'cjk-heavenly-stem', 'cjk-ideographic', 'clear', 'clip', 'close-quote', 'col-resize', 'collapse', 'color', 'color-burn', 'color-dodge', 'column', 'column-reverse', 'compact', 'condensed', 'contain', 'content', 'contents', 'content-box', 'context-menu', 'continuous', 'copy', 'counter', 'counters', 'cover', 'crop', 'cross', 'crosshair', 'currentcolor', 'cursive', 'cyclic', 'darken', 'dashed', 'decimal', 'decimal-leading-zero', 'default', 'default-button', 'dense', 'destination-atop', 'destination-in', 'destination-out', 'destination-over', 'devanagari', 'difference', 'disc', 'discard', 'disclosure-closed', 'disclosure-open', 'document', 'dot-dash', 'dot-dot-dash', 'dotted', 'double', 'down', 'e-resize', 'ease', 'ease-in', 'ease-in-out', 'ease-out', 'element', 'ellipse', 'ellipsis', 'embed', 'end', 'ethiopic', 'ethiopic-abegede', 'ethiopic-abegede-am-et', 'ethiopic-abegede-gez', 'ethiopic-abegede-ti-er', 'ethiopic-abegede-ti-et', 'ethiopic-halehame-aa-er', 'ethiopic-halehame-aa-et', 'ethiopic-halehame-am-et', 'ethiopic-halehame-gez', 'ethiopic-halehame-om-et', 'ethiopic-halehame-sid-et', 'ethiopic-halehame-so-et', 'ethiopic-halehame-ti-er', 'ethiopic-halehame-ti-et', 'ethiopic-halehame-tig', 'ethiopic-numeric', 'ew-resize', 'exclusion', 'expanded', 'extends', 'extra-condensed', 'extra-expanded', 'fantasy', 'fast', 'fill', 'fixed', 'flat', 'flex', 'flex-end', 'flex-start', 'footnotes', 'forwards', 'from', 'geometricPrecision', 'georgian', 'graytext', 'grid', 'groove', 'gujarati', 'gurmukhi', 'hand', 'hangul', 'hangul-consonant', 'hard-light', 'hebrew', 'help', 'hidden', 'hide', 'higher', 'highlight', 'highlighttext', 'hiragana', 'hiragana-iroha', 'horizontal', 'hsl', 'hsla', 'hue', 'icon', 'ignore', 'inactiveborder', 'inactivecaption', 'inactivecaptiontext', 'infinite', 'infobackground', 'infotext', 'inherit', 'initial', 'inline', 'inline-axis', 'inline-block', 'inline-flex', 'inline-grid', 'inline-table', 'inset', 'inside', 'intrinsic', 'invert', 'italic', 'japanese-formal', 'japanese-informal', 'justify', 'kannada', 'katakana', 'katakana-iroha', 'keep-all', 'khmer', 'korean-hangul-formal', 'korean-hanja-formal', 'korean-hanja-informal', 'landscape', 'lao', 'large', 'larger', 'left', 'level', 'lighter', 'lighten', 'line-through', 'linear', 'linear-gradient', 'lines', 'list-item', 'listbox', 'listitem', 'local', 'logical', 'loud', 'lower', 'lower-alpha', 'lower-armenian', 'lower-greek', 'lower-hexadecimal', 'lower-latin', 'lower-norwegian', 'lower-roman', 'lowercase', 'ltr', 'luminosity', 'malayalam', 'match', 'matrix', 'matrix3d', 'media-controls-background', 'media-current-time-display', 'media-fullscreen-button', 'media-mute-button', 'media-play-button', 'media-return-to-realtime-button', 'media-rewind-button', 'media-seek-back-button', 'media-seek-forward-button', 'media-slider', 'media-sliderthumb', 'media-time-remaining-display', 'media-volume-slider', 'media-volume-slider-container', 'media-volume-sliderthumb', 'medium', 'menu', 'menulist', 'menulist-button', 'menulist-text', 'menulist-textfield', 'menutext', 'message-box', 'middle', 'min-intrinsic', 'mix', 'mongolian', 'monospace', 'move', 'multiple', 'multiply', 'myanmar', 'n-resize', 'narrower', 'ne-resize', 'nesw-resize', 'no-close-quote', 'no-drop', 'no-open-quote', 'no-repeat', 'none', 'normal', 'not-allowed', 'nowrap', 'ns-resize', 'numbers', 'numeric', 'nw-resize', 'nwse-resize', 'oblique', 'octal', 'opacity', 'open-quote', 'optimizeLegibility', 'optimizeSpeed', 'oriya', 'oromo', 'outset', 'outside', 'outside-shape', 'overlay', 'overline', 'padding', 'padding-box', 'painted', 'page', 'paused', 'persian', 'perspective', 'plus-darker', 'plus-lighter', 'pointer', 'polygon', 'portrait', 'pre', 'pre-line', 'pre-wrap', 'preserve-3d', 'progress', 'push-button', 'radial-gradient', 'radio', 'read-only', 'read-write', 'read-write-plaintext-only', 'rectangle', 'region', 'relative', 'repeat', 'repeating-linear-gradient', 'repeating-radial-gradient', 'repeat-x', 'repeat-y', 'reset', 'reverse', 'rgb', 'rgba', 'ridge', 'right', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'round', 'row', 'row-resize', 'row-reverse', 'rtl', 'run-in', 'running', 's-resize', 'sans-serif', 'saturation', 'scale', 'scale3d', 'scaleX', 'scaleY', 'scaleZ', 'screen', 'scroll', 'scrollbar', 'scroll-position', 'se-resize', 'searchfield', 'searchfield-cancel-button', 'searchfield-decoration', 'searchfield-results-button', 'searchfield-results-decoration', 'self-start', 'self-end', 'semi-condensed', 'semi-expanded', 'separate', 'serif', 'show', 'sidama', 'simp-chinese-formal', 'simp-chinese-informal', 'single', 'skew', 'skewX', 'skewY', 'skip-white-space', 'slide', 'slider-horizontal', 'slider-vertical', 'sliderthumb-horizontal', 'sliderthumb-vertical', 'slow', 'small', 'small-caps', 'small-caption', 'smaller', 'soft-light', 'solid', 'somali', 'source-atop', 'source-in', 'source-out', 'source-over', 'space', 'space-around', 'space-between', 'space-evenly', 'spell-out', 'square', 'square-button', 'start', 'static', 'status-bar', 'stretch', 'stroke', 'sub', 'subpixel-antialiased', 'super', 'sw-resize', 'symbolic', 'symbols', 'system-ui', 'table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row', 'table-row-group', 'tamil', 'telugu', 'text', 'text-bottom', 'text-top', 'textarea', 'textfield', 'thai', 'thick', 'thin', 'threeddarkshadow', 'threedface', 'threedhighlight', 'threedlightshadow', 'threedshadow', 'tibetan', 'tigre', 'tigrinya-er', 'tigrinya-er-abegede', 'tigrinya-et', 'tigrinya-et-abegede', 'to', 'top', 'trad-chinese-formal', 'trad-chinese-informal', 'transform', 'translate', 'translate3d', 'translateX', 'translateY', 'translateZ', 'transparent', 'ultra-condensed', 'ultra-expanded', 'underline', 'unset', 'up', 'upper-alpha', 'upper-armenian', 'upper-greek', 'upper-hexadecimal', 'upper-latin', 'upper-norwegian', 'upper-roman', 'uppercase', 'urdu', 'url', 'var', 'vertical', 'vertical-text', 'visible', 'visibleFill', 'visiblePainted', 'visibleStroke', 'visual', 'w-resize', 'wait', 'wave', 'wider', 'window', 'windowframe', 'windowtext', 'words', 'wrap', 'wrap-reverse', 'x-large', 'x-small', 'xor', 'xx-large', 'xx-small']; var y = e(v); var b = t.concat(n).concat(o).concat(l).concat(c).concat(d).concat(m).concat(v); function w (e, t) { for (var r, n = !1; (r = e.next()) != null;) { if (n && r == '/') { t.tokenize = null; break; }n = r == '*'; } return ['comment', 'comment']; }O.registerHelper('hintWords', 'css', b), O.defineMIME('text/css', { documentTypes: r, mediaTypes: i, mediaFeatures: a, mediaValueKeywords: s, propertyKeywords: u, nonStandardPropertyKeywords: f, fontProperties: h, counterDescriptors: p, colorKeywords: g, valueKeywords: y, tokenHooks: { '/': function (e, t) { return !!e.eat('*') && (t.tokenize = w)(e, t); } }, name: 'css' }), O.defineMIME('text/x-scss', { mediaTypes: i, mediaFeatures: a, mediaValueKeywords: s, propertyKeywords: u, nonStandardPropertyKeywords: f, colorKeywords: g, valueKeywords: y, fontProperties: h, allowNested: !0, lineComment: '//', tokenHooks: { '/': function (e, t) { return e.eat('/') ? (e.skipToEnd(), ['comment', 'comment']) : e.eat('*') ? (t.tokenize = w)(e, t) : ['operator', 'operator']; }, ':': function (e) { return !!e.match(/\s*\{/, !1) && [null, null]; }, $: function (e) { return e.match(/^[\w-]+/), e.match(/^\s*:/, !1) ? ['variable-2', 'variable-definition'] : ['variable-2', 'variable']; }, '#': function (e) { return !!e.eat('{') && [null, 'interpolation']; } }, name: 'css', helperType: 'scss' }), O.defineMIME('text/x-less', { mediaTypes: i, mediaFeatures: a, mediaValueKeywords: s, propertyKeywords: u, nonStandardPropertyKeywords: f, colorKeywords: g, valueKeywords: y, fontProperties: h, allowNested: !0, lineComment: '//', tokenHooks: { '/': function (e, t) { return e.eat('/') ? (e.skipToEnd(), ['comment', 'comment']) : e.eat('*') ? (t.tokenize = w)(e, t) : ['operator', 'operator']; }, '@': function (e) { return e.eat('{') ? [null, 'interpolation'] : !e.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/i, !1) && (e.eatWhile(/[\w\\\-]/), e.match(/^\s*:/, !1) ? ['variable-2', 'variable-definition'] : ['variable-2', 'variable']); }, '&': function () { return ['atom', 'atom']; } }, name: 'css', helperType: 'less' }), O.defineMIME('text/x-gss', { documentTypes: r, mediaTypes: i, mediaFeatures: a, propertyKeywords: u, nonStandardPropertyKeywords: f, fontProperties: h, counterDescriptors: p, colorKeywords: g, valueKeywords: y, supportsAtComponent: !0, tokenHooks: { '/': function (e, t) { return !!e.eat('*') && (t.tokenize = w)(e, t); } }, name: 'css', helperType: 'gss' }); })), (function (e) { typeof exports == 'object' && typeof module == 'object' ? e(require('../../lib/codemirror')) : typeof define == 'function' && define.amd ? define(['../../lib/codemirror'], e) : e(CodeMirror); }(function (Je) { 'use strict'; Je.defineMode('javascript', function (e, c) { var t; var r; var n; var i; var o; var a; var u = e.indentUnit; var d = c.statementIndent; var l = c.jsonld; var s = c.json || l; var f = c.typescript; var h = c.wordCharacters || /[\w$\xa1-\uffff]/; var p = (t = m('keyword a'), r = m('keyword b'), n = m('keyword c'), i = m('keyword d'), o = m('operator'), a = { type: 'atom', style: 'atom' }, { if: m('if'), while: t, with: t, else: r, do: r, try: r, finally: r, return: i, break: i, continue: i, new: m('new'), delete: n, void: n, throw: n, debugger: m('debugger'), var: m('var'), const: m('var'), let: m('var'), function: m('function'), catch: m('catch'), for: m('for'), switch: m('switch'), case: m('case'), default: m('default'), in: o, typeof: o, instanceof: o, true: a, false: a, null: a, undefined: a, NaN: a, Infinity: a, this: m('this'), class: m('class'), super: m('atom'), yield: n, export: m('export'), import: m('import'), extends: n, await: n }); function m (e) { return { type: e, style: 'keyword' }; } var g; var v; var y = /[+\-*&%=<>!?|~^@]/; var b = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; function w (e, t, r) { return g = e, v = r, t; } function x (e, t) { var r = e.next(); if (r == '"' || r == "'") return t.tokenize = (function (i) { return function (e, t) { var r; var n = !1; if (l && e.peek() == '@' && e.match(b)) return t.tokenize = x, w('jsonld-keyword', 'meta'); for (;(r = e.next()) != null && (r != i || n);)n = !n && r == '\\'; return n || (t.tokenize = x), w('string', 'string'); }; }(r)), t.tokenize(e, t); if (r == '.' && e.match(/^\d+(?:[eE][+\-]?\d+)?/)) return w('number', 'number'); if (r == '.' && e.match('..')) return w('spread', 'meta'); if (/[\[\]{}\(\),;\:\.]/.test(r)) return w(r); if (r == '=' && e.eat('>')) return w('=>', 'operator'); if (r == '0' && e.match(/^(?:x[\da-f]+|o[0-7]+|b[01]+)n?/i)) return w('number', 'number'); if (/\d/.test(r)) return e.match(/^\d*(?:n|(?:\.\d*)?(?:[eE][+\-]?\d+)?)?/), w('number', 'number'); if (r == '/') return e.eat('*') ? (t.tokenize = k)(e, t) : e.eat('/') ? (e.skipToEnd(), w('comment', 'comment')) : Qe(e, t, 1) ? ((function (e) { for (var t, r = !1, n = !1; (t = e.next()) != null;) { if (!r) { if (t == '/' && !n) return; t == '[' ? n = !0 : n && t == ']' && (n = !1); }r = !r && t == '\\'; } }(e)), e.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/), w('regexp', 'string-2')) : (e.eat('='), w('operator', 'operator', e.current())); if (r == '`') return (t.tokenize = C)(e, t); if (r == '#') return e.skipToEnd(), w('error', 'error'); if (y.test(r)) return r == '>' && t.lexical && t.lexical.type == '>' || (e.eat('=') ? r != '!' && r != '=' || e.eat('=') : /[<>*+\-]/.test(r) && (e.eat(r), r == '>' && e.eat(r))), w('operator', 'operator', e.current()); if (h.test(r)) { e.eatWhile(h); var n = e.current(); if (t.lastType != '.') { if (p.propertyIsEnumerable(n)) { var i = p[n]; return w(i.type, i.style, n); } if (n == 'async' && e.match(/^(\s|\/\*.*?\*\/)*[\[\(\w]/, !1)) return w('async', 'keyword', n); } return w('variable', 'variable', n); } } function k (e, t) { for (var r, n = !1; r = e.next();) { if (r == '/' && n) { t.tokenize = x; break; }n = r == '*'; } return w('comment', 'comment'); } function C (e, t) { for (var r, n = !1; (r = e.next()) != null;) { if (!n && (r == '`' || r == '$' && e.eat('{'))) { t.tokenize = x; break; }n = !n && r == '\\'; } return w('quasi', 'string-2', e.current()); } var S = '([{}])'; function T (e, t) { t.fatArrowAt && (t.fatArrowAt = null); var r = e.string.indexOf('=>', e.start); if (!(r < 0)) { if (f) { var n = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start, r)); n && (r = n.index); } for (var i = 0, o = !1, a = r - 1; a >= 0; --a) { var l = e.string.charAt(a); var s = S.indexOf(l); if (s >= 0 && s < 3) { if (!i) { ++a; break; } if (--i == 0) { l == '(' && (o = !0); break; } } else if (s >= 3 && s < 6)++i; else if (h.test(l))o = !0; else { if (/["'\/]/.test(l)) return; if (o && !i) { ++a; break; } } }o && !i && (t.fatArrowAt = a); } } var L = { atom: !0, number: !0, variable: !0, string: !0, regexp: !0, this: !0, 'jsonld-keyword': !0 }; function M (e, t, r, n, i, o) { this.indented = e, this.column = t, this.type = r, this.prev = i, this.info = o, n != null && (this.align = n); } function A (e, t) { for (var r = e.localVars; r; r = r.next) if (r.name == t) return !0; for (var n = e.context; n; n = n.prev) for (r = n.vars; r; r = r.next) if (r.name == t) return !0; } var N = { state: null, column: null, marked: null, cc: null }; function O () { for (var e = arguments.length - 1; e >= 0; e--)N.cc.push(arguments[e]); } function z () { return O.apply(null, arguments), !0; } function W (e, t) { for (var r = t; r; r = r.next) if (r.name == e) return !0; return !1; } function D (e) { var t = N.state; if (N.marked = 'def', t.context) if (t.lexical.info == 'var' && t.context && t.context.block) { var r = (function e (t, r) { { if (r) { if (r.block) { var n = e(t, r.prev); return n ? n == r.prev ? r : new P(n, r.vars, !0) : null; } return W(t, r.vars) ? r : new P(r.prev, new E(t, r.vars), !1); } return null; } }(e, t.context)); if (r != null) return void (t.context = r); } else if (!W(e, t.localVars)) return void (t.localVars = new E(e, t.localVars)); c.globalVars && !W(e, t.globalVars) && (t.globalVars = new E(e, t.globalVars)); } function H (e) { return e == 'public' || e == 'private' || e == 'protected' || e == 'abstract' || e == 'readonly'; } function P (e, t, r) { this.prev = e, this.vars = t, this.block = r; } function E (e, t) { this.name = e, this.next = t; } var I = new E('this', new E('arguments', null)); function F () { N.state.context = new P(N.state.context, N.state.localVars, !1), N.state.localVars = I; } function R () { N.state.context = new P(N.state.context, N.state.localVars, !0), N.state.localVars = null; } function j () { N.state.localVars = N.state.context.vars, N.state.context = N.state.context.prev; } function B (n, i) { function e () { var e = N.state; var t = e.indented; if (e.lexical.type == 'stat')t = e.lexical.indented; else for (var r = e.lexical; r && r.type == ')' && r.align; r = r.prev)t = r.indented; e.lexical = new M(t, N.stream.column(), n, null, e.lexical, i); } return e.lex = !0, e; } function K () { var e = N.state; e.lexical.prev && (e.lexical.type == ')' && (e.indented = e.lexical.indented), e.lexical = e.lexical.prev); } function q (r) { return function e (t) { return t == r ? z() : r == ';' || t == '}' || t == ')' || t == ']' ? O() : z(e); }; } function U (e, t) { return e == 'var' ? z(B('vardef', t), Se, q(';'), K) : e == 'keyword a' ? z(B('form'), $, U, K) : e == 'keyword b' ? z(B('form'), U, K) : e == 'keyword d' ? N.stream.match(/^\s*$/, !1) ? z() : z(B('stat'), Y, q(';'), K) : e == 'debugger' ? z(q(';')) : e == '{' ? z(B('}'), R, fe, K, j) : e == ';' ? z() : e == 'if' ? (N.state.lexical.info == 'else' && N.state.cc[N.state.cc.length - 1] == K && N.state.cc.pop()(), z(B('form'), $, U, K, Ne)) : e == 'function' ? z(Pe) : e == 'for' ? z(B('form'), Oe, U, K) : e == 'class' || f && t == 'interface' ? (N.marked = 'keyword', z(B('form'), Fe, K)) : e == 'variable' ? f && t == 'declare' ? (N.marked = 'keyword', z(U)) : f && (t == 'module' || t == 'enum' || t == 'type') && N.stream.match(/^\s*\w/, !1) ? (N.marked = 'keyword', t == 'enum' ? z(Ye) : t == 'type' ? z(ge, q('operator'), ge, q(';')) : z(B('form'), Te, q('{'), B('}'), fe, K, K)) : f && t == 'namespace' ? (N.marked = 'keyword', z(B('form'), G, fe, K)) : f && t == 'abstract' ? (N.marked = 'keyword', z(U)) : z(B('stat'), oe) : e == 'switch' ? z(B('form'), $, q('{'), B('}', 'switch'), R, fe, K, K, j) : e == 'case' ? z(G, q(':')) : e == 'default' ? z(q(':')) : e == 'catch' ? z(B('form'), F, V, U, K, j) : e == 'export' ? z(B('stat'), Ke, K) : e == 'import' ? z(B('stat'), Ue, K) : e == 'async' ? z(U) : t == '@' ? z(G, U) : O(B('stat'), G, q(';'), K); } function V (e) { if (e == '(') return z(Ee, q(')')); } function G (e, t) { return X(e, t, !1); } function _ (e, t) { return X(e, t, !0); } function $ (e) { return e != '(' ? O() : z(B(')'), G, q(')'), K); } function X (e, t, r) { if (N.state.fatArrowAt == N.stream.start) { var n = r ? re : te; if (e == '(') return z(F, B(')'), ue(Ee, ')'), K, q('=>'), n, j); if (e == 'variable') return O(F, Te, q('=>'), n, j); } var i = r ? Q : Z; return L.hasOwnProperty(e) ? z(i) : e == 'function' ? z(Pe, i) : e == 'class' || f && t == 'interface' ? (N.marked = 'keyword', z(B('form'), Ie, K)) : e == 'keyword c' || e == 'async' ? z(r ? _ : G) : e == '(' ? z(B(')'), Y, q(')'), K, i) : e == 'operator' || e == 'spread' ? z(r ? _ : G) : e == '[' ? z(B(']'), Xe, K, i) : e == '{' ? de(le, '}', null, i) : e == 'quasi' ? O(J, i) : e == 'new' ? z(function (t) { return function (e) { return e == '.' ? z(t ? ie : ne) : e == 'variable' && f ? z(xe, t ? Q : Z) : O(t ? _ : G); }; }(r)) : e == 'import' ? z(G) : z(); } function Y (e) { return e.match(/[;\}\)\],]/) ? O() : O(G); } function Z (e, t) { return e == ',' ? z(G) : Q(e, t, !1); } function Q (e, t, r) { var n = r == 0 ? Z : Q; var i = r == 0 ? G : _; return e == '=>' ? z(F, r ? re : te, j) : e == 'operator' ? /\+\+|--/.test(t) || f && t == '!' ? z(n) : f && t == '<' && N.stream.match(/^([^>]|<.*?>)*>\s*\(/, !1) ? z(B('>'), ue(ge, '>'), K, n) : t == '?' ? z(G, q(':'), i) : z(i) : e == 'quasi' ? O(J, n) : e != ';' ? e == '(' ? de(_, ')', 'call', n) : e == '.' ? z(ae, n) : e == '[' ? z(B(']'), Y, q(']'), K, n) : f && t == 'as' ? (N.marked = 'keyword', z(ge, n)) : e == 'regexp' ? (N.state.lastType = N.marked = 'operator', N.stream.backUp(N.stream.pos - N.stream.start - 1), z(i)) : void 0 : void 0; } function J (e, t) { return e != 'quasi' ? O() : t.slice(t.length - 2) != '${' ? z(J) : z(G, ee); } function ee (e) { if (e == '}') return N.marked = 'string-2', N.state.tokenize = C, z(J); } function te (e) { return T(N.stream, N.state), O(e == '{' ? U : G); } function re (e) { return T(N.stream, N.state), O(e == '{' ? U : _); } function ne (e, t) { if (t == 'target') return N.marked = 'keyword', z(Z); } function ie (e, t) { if (t == 'target') return N.marked = 'keyword', z(Q); } function oe (e) { return e == ':' ? z(K, U) : O(Z, q(';'), K); } function ae (e) { if (e == 'variable') return N.marked = 'property', z(); } function le (e, t) { if (e == 'async') return N.marked = 'property', z(le); if (e == 'variable' || N.style == 'keyword') { return N.marked = 'property', t == 'get' || t == 'set' ? z(se) : (f && N.state.fatArrowAt == N.stream.start && (r = N.stream.match(/^\s*:\s*/, !1)) && (N.state.fatArrowAt = N.stream.pos + r[0].length), z(ce)); var r; } else { if (e == 'number' || e == 'string') return N.marked = l ? 'property' : N.style + ' property', z(ce); if (e == 'jsonld-keyword') return z(ce); if (f && H(t)) return N.marked = 'keyword', z(le); if (e == '[') return z(G, he, q(']'), ce); if (e == 'spread') return z(_, ce); if (t == '*') return N.marked = 'keyword', z(le); if (e == ':') return O(ce); } } function se (e) { return e != 'variable' ? O(ce) : (N.marked = 'property', z(Pe)); } function ce (e) { return e == ':' ? z(_) : e == '(' ? O(Pe) : void 0; } function ue (n, i, o) { function a (e, t) { if (o ? o.indexOf(e) > -1 : e == ',') { var r = N.state.lexical; return r.info == 'call' && (r.pos = (r.pos || 0) + 1), z(function (e, t) { return e == i || t == i ? O() : O(n); }, a); } return e == i || t == i ? z() : z(q(i)); } return function (e, t) { return e == i || t == i ? z() : O(n, a); }; } function de (e, t, r) { for (var n = 3; n < arguments.length; n++)N.cc.push(arguments[n]); return z(B(t, r), ue(e, t), K); } function fe (e) { return e == '}' ? z() : O(U, fe); } function he (e, t) { if (f) { if (e == ':') return z(ge); if (t == '?') return z(he); } } function pe (e) { if (f && e == ':') return N.stream.match(/^\s*\w+\s+is\b/, !1) ? z(G, me, ge) : z(ge); } function me (e, t) { if (t == 'is') return N.marked = 'keyword', z(); } function ge (e, t) { return t == 'keyof' || t == 'typeof' ? (N.marked = 'keyword', z(t == 'keyof' ? ge : _)) : e == 'variable' || t == 'void' ? (N.marked = 'type', z(we)) : e == 'string' || e == 'number' || e == 'atom' ? z(we) : e == '[' ? z(B(']'), ue(ge, ']', ','), K, we) : e == '{' ? z(B('}'), ue(ye, '}', ',;'), K, we) : e == '(' ? z(ue(be, ')'), ve) : e == '<' ? z(ue(ge, '>'), ge) : void 0; } function ve (e) { if (e == '=>') return z(ge); } function ye (e, t) { return e == 'variable' || N.style == 'keyword' ? (N.marked = 'property', z(ye)) : t == '?' ? z(ye) : e == ':' ? z(ge) : e == '[' ? z(G, he, q(']'), ye) : void 0; } function be (e, t) { return e == 'variable' && N.stream.match(/^\s*[?:]/, !1) || t == '?' ? z(be) : e == ':' ? z(ge) : O(ge); } function we (e, t) { return t == '<' ? z(B('>'), ue(ge, '>'), K, we) : t == '|' || e == '.' || t == '&' ? z(ge) : e == '[' ? z(q(']'), we) : t == 'extends' || t == 'implements' ? (N.marked = 'keyword', z(ge)) : void 0; } function xe (e, t) { if (t == '<') return z(B('>'), ue(ge, '>'), K, we); } function ke () { return O(ge, Ce); } function Ce (e, t) { if (t == '=') return z(ge); } function Se (e, t) { return t == 'enum' ? (N.marked = 'keyword', z(Ye)) : O(Te, he, Me, Ae); } function Te (e, t) { return f && H(t) ? (N.marked = 'keyword', z(Te)) : e == 'variable' ? (D(t), z()) : e == 'spread' ? z(Te) : e == '[' ? de(Te, ']') : e == '{' ? de(Le, '}') : void 0; } function Le (e, t) { return e != 'variable' || N.stream.match(/^\s*:/, !1) ? (e == 'variable' && (N.marked = 'property'), e == 'spread' ? z(Te) : e == '}' ? O() : z(q(':'), Te, Me)) : (D(t), z(Me)); } function Me (e, t) { if (t == '=') return z(_); } function Ae (e) { if (e == ',') return z(Se); } function Ne (e, t) { if (e == 'keyword b' && t == 'else') return z(B('form', 'else'), U, K); } function Oe (e, t) { return t == 'await' ? z(Oe) : e == '(' ? z(B(')'), ze, q(')'), K) : void 0; } function ze (e) { return e == 'var' ? z(Se, q(';'), De) : e == ';' ? z(De) : e == 'variable' ? z(We) : O(G, q(';'), De); } function We (e, t) { return t == 'in' || t == 'of' ? (N.marked = 'keyword', z(G)) : z(Z, De); } function De (e, t) { return e == ';' ? z(He) : t == 'in' || t == 'of' ? (N.marked = 'keyword', z(G)) : O(G, q(';'), He); } function He (e) { e != ')' && z(G); } function Pe (e, t) { return t == '*' ? (N.marked = 'keyword', z(Pe)) : e == 'variable' ? (D(t), z(Pe)) : e == '(' ? z(F, B(')'), ue(Ee, ')'), K, pe, U, j) : f && t == '<' ? z(B('>'), ue(ke, '>'), K, Pe) : void 0; } function Ee (e, t) { return t == '@' && z(G, Ee), e == 'spread' ? z(Ee) : f && H(t) ? (N.marked = 'keyword', z(Ee)) : O(Te, he, Me); } function Ie (e, t) { return e == 'variable' ? Fe(e, t) : Re(e, t); } function Fe (e, t) { if (e == 'variable') return D(t), z(Re); } function Re (e, t) { return t == '<' ? z(B('>'), ue(ke, '>'), K, Re) : t == 'extends' || t == 'implements' || f && e == ',' ? (t == 'implements' && (N.marked = 'keyword'), z(f ? ge : G, Re)) : e == '{' ? z(B('}'), je, K) : void 0; } function je (e, t) { return e == 'async' || e == 'variable' && (t == 'static' || t == 'get' || t == 'set' || f && H(t)) && N.stream.match(/^\s+[\w$\xa1-\uffff]/, !1) ? (N.marked = 'keyword', z(je)) : e == 'variable' || N.style == 'keyword' ? (N.marked = 'property', z(f ? Be : Pe, je)) : e == '[' ? z(G, he, q(']'), f ? Be : Pe, je) : t == '*' ? (N.marked = 'keyword', z(je)) : e == ';' ? z(je) : e == '}' ? z() : t == '@' ? z(G, je) : void 0; } function Be (e, t) { return t == '?' ? z(Be) : e == ':' ? z(ge, Me) : t == '=' ? z(_) : O(Pe); } function Ke (e, t) { return t == '*' ? (N.marked = 'keyword', z($e, q(';'))) : t == 'default' ? (N.marked = 'keyword', z(G, q(';'))) : e == '{' ? z(ue(qe, '}'), $e, q(';')) : O(U); } function qe (e, t) { return t == 'as' ? (N.marked = 'keyword', z(q('variable'))) : e == 'variable' ? O(_, qe) : void 0; } function Ue (e) { return e == 'string' ? z() : e == '(' ? O(G) : O(Ve, Ge, $e); } function Ve (e, t) { return e == '{' ? de(Ve, '}') : (e == 'variable' && D(t), t == '*' && (N.marked = 'keyword'), z(_e)); } function Ge (e) { if (e == ',') return z(Ve, Ge); } function _e (e, t) { if (t == 'as') return N.marked = 'keyword', z(Ve); } function $e (e, t) { if (t == 'from') return N.marked = 'keyword', z(G); } function Xe (e) { return e == ']' ? z() : O(ue(_, ']')); } function Ye () { return O(B('form'), Te, q('{'), B('}'), ue(Ze, '}'), K, K); } function Ze () { return O(Te, Me); } function Qe (e, t, r) { return t.tokenize == x && /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType) || t.lastType == 'quasi' && /\{\s*$/.test(e.string.slice(0, e.pos - (r || 0))); } return K.lex = j.lex = !0, { startState: function (e) { var t = { tokenize: x, lastType: 'sof', cc: [], lexical: new M((e || 0) - u, 0, 'block', !1), localVars: c.localVars, context: c.localVars && new P(null, null, !1), indented: e || 0 }; return c.globalVars && typeof c.globalVars == 'object' && (t.globalVars = c.globalVars), t; }, token: function (e, t) { if (e.sol() && (t.lexical.hasOwnProperty('align') || (t.lexical.align = !1), t.indented = e.indentation(), T(e, t)), t.tokenize != k && e.eatSpace()) return null; var r = t.tokenize(e, t); return g == 'comment' ? r : (t.lastType = g != 'operator' || v != '++' && v != '--' ? g : 'incdec', (function (e, t, r, n, i) { var o = e.cc; for (N.state = e, N.stream = i, N.marked = null, N.cc = o, N.style = t, e.lexical.hasOwnProperty('align') || (e.lexical.align = !0); ;) { if ((o.length ? o.pop() : s ? G : U)(r, n)) { for (;o.length && o[o.length - 1].lex;)o.pop()(); return N.marked ? N.marked : r == 'variable' && A(e, n) ? 'variable-2' : t; } } }(t, r, g, v, e))); }, indent: function (e, t) { if (e.tokenize == k) return Je.Pass; if (e.tokenize != x) return 0; var r; var n = t && t.charAt(0); var i = e.lexical; if (!/^\s*else\b/.test(t)) for (var o = e.cc.length - 1; o >= 0; --o) { var a = e.cc[o]; if (a == K)i = i.prev; else if (a != Ne) break; } for (;(i.type == 'stat' || i.type == 'form') && (n == '}' || (r = e.cc[e.cc.length - 1]) && (r == Z || r == Q) && !/^[,\.=+\-*:?[\(]/.test(t));)i = i.prev; d && i.type == ')' && i.prev.type == 'stat' && (i = i.prev); var l = i.type; var s = n == l; return l == 'vardef' ? i.indented + (e.lastType == 'operator' || e.lastType == ',' ? i.info.length + 1 : 0) : l == 'form' && n == '{' ? i.indented : l == 'form' ? i.indented + u : l == 'stat' ? i.indented + ((function (e, t) { return e.lastType == 'operator' || e.lastType == ',' || y.test(t.charAt(0)) || /[,.]/.test(t.charAt(0)); }(e, t)) ? d || u : 0) : i.info != 'switch' || s || c.doubleIndentSwitch == 0 ? i.align ? i.column + (s ? 0 : 1) : i.indented + (s ? 0 : u) : i.indented + (/^(?:case|default)\b/.test(t) ? u : 2 * u); }, electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, blockCommentStart: s ? null : '/*', blockCommentEnd: s ? null : '*/', blockCommentContinue: s ? null : ' * ', lineComment: s ? null : '//', fold: 'brace', closeBrackets: "()[]{}''\"\"``", helperType: s ? 'json' : 'javascript', jsonldMode: l, jsonMode: s, expressionAllowed: Qe, skipExpression: function (e) { var t = e.cc[e.cc.length - 1]; t != G && t != _ || e.cc.pop(); } }; }), Je.registerHelper('wordChars', 'javascript', /[\w$]/), Je.defineMIME('text/javascript', 'javascript'), Je.defineMIME('text/ecmascript', 'javascript'), Je.defineMIME('application/javascript', 'javascript'), Je.defineMIME('application/x-javascript', 'javascript'), Je.defineMIME('application/ecmascript', 'javascript'), Je.defineMIME('application/json', { name: 'javascript', json: !0 }), Je.defineMIME('application/x-json', { name: 'javascript', json: !0 }), Je.defineMIME('application/ld+json', { name: 'javascript', jsonld: !0 }), Je.defineMIME('text/typescript', { name: 'javascript', typescript: !0 }), Je.defineMIME('application/typescript', { name: 'javascript', typescript: !0 }); })), (function (e) { typeof exports == 'object' && typeof module == 'object' ? e(require('../../lib/codemirror')) : typeof define == 'function' && define.amd ? define(['../../lib/codemirror'], e) : e(CodeMirror); }(function (C) { 'use strict'; var S = { autoSelfClosers: { area: !0, base: !0, br: !0, col: !0, command: !0, embed: !0, frame: !0, hr: !0, img: !0, input: !0, keygen: !0, link: !0, meta: !0, param: !0, source: !0, track: !0, wbr: !0, menuitem: !0 }, implicitlyClosed: { dd: !0, li: !0, optgroup: !0, option: !0, p: !0, rp: !0, rt: !0, tbody: !0, td: !0, tfoot: !0, th: !0, tr: !0 }, contextGrabbers: { dd: { dd: !0, dt: !0 }, dt: { dd: !0, dt: !0 }, li: { li: !0 }, option: { option: !0, optgroup: !0 }, optgroup: { optgroup: !0 }, p: { address: !0, article: !0, aside: !0, blockquote: !0, dir: !0, div: !0, dl: !0, fieldset: !0, footer: !0, form: !0, h1: !0, h2: !0, h3: !0, h4: !0, h5: !0, h6: !0, header: !0, hgroup: !0, hr: !0, menu: !0, nav: !0, ol: !0, p: !0, pre: !0, section: !0, table: !0, ul: !0 }, rp: { rp: !0, rt: !0 }, rt: { rp: !0, rt: !0 }, tbody: { tbody: !0, tfoot: !0 }, td: { td: !0, th: !0 }, tfoot: { tbody: !0 }, th: { td: !0, th: !0 }, thead: { tbody: !0, tfoot: !0 }, tr: { tr: !0 } }, doNotIndent: { pre: !0 }, allowUnquoted: !0, allowMissing: !0, caseFold: !0 }; var T = { autoSelfClosers: {}, implicitlyClosed: {}, contextGrabbers: {}, doNotIndent: {}, allowUnquoted: !1, allowMissing: !1, allowMissingTagName: !1, caseFold: !1 }; C.defineMode('xml', function (e, t) { var i; var o; var a = e.indentUnit; var l = {}; var r = t.htmlMode ? S : T; for (var n in r)l[n] = r[n]; for (var n in t)l[n] = t[n]; function s (t, r) { function e (e) { return (r.tokenize = e)(t, r); } var n = t.next(); return n == '<' ? t.eat('!') ? t.eat('[') ? t.match('CDATA[') ? e(u('atom', ']]>')) : null : t.match('--') ? e(u('comment', '--\x3e')) : t.match('DOCTYPE', !0, !0) ? (t.eatWhile(/[\w\._\-]/), e(function n (i) { return function (e, t) { for (var r; (r = e.next()) != null;) { if (r == '<') return t.tokenize = n(i + 1), t.tokenize(e, t); if (r == '>') { if (i != 1) return t.tokenize = n(i - 1), t.tokenize(e, t); t.tokenize = s; break; } } return 'meta'; }; }(1))) : null : t.eat('?') ? (t.eatWhile(/[\w\._\-]/), r.tokenize = u('meta', '?>'), 'meta') : (i = t.eat('/') ? 'closeTag' : 'openTag', r.tokenize = c, 'tag bracket') : n != '&' ? (t.eatWhile(/[^&<]/), null) : (t.eat('#') ? t.eat('x') ? t.eatWhile(/[a-fA-F\d]/) && t.eat(';') : t.eatWhile(/[\d]/) && t.eat(';') : t.eatWhile(/[\w\.\-:]/) && t.eat(';')) ? 'atom' : 'error'; } function c (e, t) { var r = e.next(); if (r == '>' || r == '/' && e.eat('>')) return t.tokenize = s, i = r == '>' ? 'endTag' : 'selfcloseTag', 'tag bracket'; if (r == '=') return i = 'equals', null; if (r != '<') return /[\'\"]/.test(r) ? (t.tokenize = (function (r) { function e (e, t) { for (;!e.eol();) if (e.next() == r) { t.tokenize = c; break; } return 'string'; } return e.isInAttribute = !0, e; }(r)), t.stringStartCol = e.column(), t.tokenize(e, t)) : (e.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/), 'word'); t.tokenize = s, t.state = p, t.tagName = t.tagStart = null; var n = t.tokenize(e, t); return n ? n + ' tag error' : 'tag error'; } function u (r, n) { return function (e, t) { for (;!e.eol();) { if (e.match(n)) { t.tokenize = s; break; }e.next(); } return r; }; } function d (e, t, r) { this.prev = e.context, this.tagName = t, this.indent = e.indented, this.startOfLine = r, (l.doNotIndent.hasOwnProperty(t) || e.context && e.context.noIndent) && (this.noIndent = !0); } function f (e) { e.context && (e.context = e.context.prev); } function h (e, t) { for (var r; ;) { if (!e.context) return; if (r = e.context.tagName, !l.contextGrabbers.hasOwnProperty(r) || !l.contextGrabbers[r].hasOwnProperty(t)) return; f(e); } } function p (e, t, r) { return e == 'openTag' ? (r.tagStart = t.column(), m) : e == 'closeTag' ? g : p; } function m (e, t, r) { return e == 'word' ? (r.tagName = t.current(), o = 'tag', b) : l.allowMissingTagName && e == 'endTag' ? (o = 'tag bracket', b(e, t, r)) : (o = 'error', m); } function g (e, t, r) { if (e != 'word') return l.allowMissingTagName && e == 'endTag' ? (o = 'tag bracket', v(e, t, r)) : (o = 'error', y); var n = t.current(); return r.context && r.context.tagName != n && l.implicitlyClosed.hasOwnProperty(r.context.tagName) && f(r), r.context && r.context.tagName == n || !1 === l.matchClosing ? (o = 'tag', v) : (o = 'tag error', y); } function v (e, t, r) { return e != 'endTag' ? (o = 'error', v) : (f(r), p); } function y (e, t, r) { return o = 'error', v(e, 0, r); } function b (e, t, r) { if (e == 'word') return o = 'attribute', w; if (e != 'endTag' && e != 'selfcloseTag') return o = 'error', b; var n = r.tagName; var i = r.tagStart; return r.tagName = r.tagStart = null, e == 'selfcloseTag' || l.autoSelfClosers.hasOwnProperty(n) ? h(r, n) : (h(r, n), r.context = new d(r, n, i == r.indented)), p; } function w (e, t, r) { return e == 'equals' ? x : (l.allowMissing || (o = 'error'), b(e, 0, r)); } function x (e, t, r) { return e == 'string' ? k : e == 'word' && l.allowUnquoted ? (o = 'string', b) : (o = 'error', b(e, 0, r)); } function k (e, t, r) { return e == 'string' ? k : b(e, 0, r); } return s.isInText = !0, { startState: function (e) { var t = { tokenize: s, state: p, indented: e || 0, tagName: null, tagStart: null, context: null }; return e != null && (t.baseIndent = e), t; }, token: function (e, t) { if (!t.tagName && e.sol() && (t.indented = e.indentation()), e.eatSpace()) return null; i = null; var r = t.tokenize(e, t); return (r || i) && r != 'comment' && (o = null, t.state = t.state(i || r, e, t), o && (r = o == 'error' ? r + ' error' : o)), r; }, indent: function (e, t, r) { var n = e.context; if (e.tokenize.isInAttribute) return e.tagStart == e.indented ? e.stringStartCol + 1 : e.indented + a; if (n && n.noIndent) return C.Pass; if (e.tokenize != c && e.tokenize != s) return r ? r.match(/^(\s*)/)[0].length : 0; if (e.tagName) return !1 !== l.multilineTagIndentPastTag ? e.tagStart + e.tagName.length + 2 : e.tagStart + a * (l.multilineTagIndentFactor || 1); if (l.alignCDATA && /$/, blockCommentStart: '\x3c!--', blockCommentEnd: '--\x3e', configuration: l.htmlMode ? 'html' : 'xml', helperType: l.htmlMode ? 'html' : 'xml', skipAttribute: function (e) { e.state == x && (e.state = b); } }; }), C.defineMIME('text/xml', 'xml'), C.defineMIME('application/xml', 'xml'), C.mimeModes.hasOwnProperty('text/html') || C.defineMIME('text/html', { name: 'xml', htmlMode: !0 }); })), (function (e) { typeof exports == 'object' && typeof module == 'object' ? e(require('../../lib/codemirror'), require('../xml/xml'), require('../javascript/javascript'), require('../css/css')) : typeof define == 'function' && define.amd ? define(['../../lib/codemirror', '../xml/xml', '../javascript/javascript', '../css/css'], e) : e(CodeMirror); }(function (p) { 'use strict'; var i = { script: [['lang', /(javascript|babel)/i, 'javascript'], ['type', /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, 'javascript'], ['type', /./, 'text/plain'], [null, null, 'javascript']], style: [['lang', /^css$/i, 'css'], ['type', /^(text\/)?(x-)?(stylesheet|css)$/i, 'css'], ['type', /./, 'text/plain'], [null, null, 'css']] }; var n = {}; function m (e, t) { var r = e.match(function (e) { var t = n[e]; return t || (n[e] = new RegExp('\\s+' + e + "\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*")); }(t)); return r ? /^\s*(.*?)\s*$/.exec(r[2])[1] : ''; } function g (e, t) { return new RegExp((t ? '^' : '') + '', 'i'); } function o (e, t) { for (var r in e) for (var n = t[r] || (t[r] = []), i = e[r], o = i.length - 1; o >= 0; o--)n.unshift(i[o]); }p.defineMode('htmlmixed', function (u, e) { var d = p.getMode(u, { name: 'xml', htmlMode: !0, multilineTagIndentFactor: e.multilineTagIndentFactor, multilineTagIndentPastTag: e.multilineTagIndentPastTag }); var f = {}; var t = e && e.tags; var r = e && e.scriptTypes; if (o(i, f), t && o(t, f), r) for (var n = r.length - 1; n >= 0; n--)f.script.unshift(['type', r[n].matches, r[n].mode]); function h (e, t) { var r; var n = d.token(e, t.htmlState); var i = /\btag\b/.test(n); if (i && !/[<>\s\/]/.test(e.current()) && (r = t.htmlState.tagName && t.htmlState.tagName.toLowerCase()) && f.hasOwnProperty(r))t.inTag = r + ' '; else if (t.inTag && i && />$/.test(e.current())) { var o = /^([\S]+) (.*)/.exec(t.inTag); t.inTag = null; var a = e.current() == '>' && (function (e, t) { for (var r = 0; r < e.length; r++) { var n = e[r]; if (!n[0] || n[1].test(m(t, n[0]))) return n[2]; } }(f[o[1]], o[2])); var l = p.getMode(u, a); var s = g(o[1], !0); var c = g(o[1], !1); t.token = function (e, t) { return e.match(s, !1) ? (t.token = h, t.localState = t.localMode = null, null) : (function (e, t, r) { var n = e.current(); var i = n.search(t); return i > -1 ? e.backUp(n.length - i) : n.match(/<\/?$/) && (e.backUp(n.length), e.match(t, !1) || e.match(n)), r; }(e, c, t.localMode.token(e, t.localState))); }, t.localMode = l, t.localState = p.startState(l, d.indent(t.htmlState, '')); } else t.inTag && (t.inTag += e.current(), e.eol() && (t.inTag += ' ')); return n; } return { startState: function () { return { token: h, inTag: null, localMode: null, localState: null, htmlState: p.startState(d) }; }, copyState: function (e) { var t; return e.localState && (t = p.copyState(e.localMode, e.localState)), { token: e.token, inTag: e.inTag, localMode: e.localMode, localState: t, htmlState: p.copyState(d, e.htmlState) }; }, token: function (e, t) { return t.token(e, t); }, indent: function (e, t, r) { return !e.localMode || /^\s*<\//.test(t) ? d.indent(e.htmlState, t) : e.localMode.indent ? e.localMode.indent(e.localState, t, r) : p.Pass; }, innerMode: function (e) { return { state: e.localState || e.htmlState, mode: e.localMode || d }; } }; }, 'xml', 'javascript', 'css'), p.defineMIME('text/html', 'htmlmixed'); })), (function (e) { typeof exports == 'object' && typeof module == 'object' ? e(require('../../lib/codemirror')) : typeof define == 'function' && define.amd ? define(['../../lib/codemirror'], e) : e(CodeMirror); }(function (l) { 'use strict'; function n (e, t, r) { this.orientation = t, this.scroll = r, this.screen = this.total = this.size = 1, this.pos = 0, this.node = document.createElement('div'), this.node.className = e + '-' + t, this.inner = this.node.appendChild(document.createElement('div')); var a = this; function n (e) { var t = l.wheelEventPixels(e)[a.orientation == 'horizontal' ? 'x' : 'y']; var r = a.pos; a.moveTo(a.pos + t), a.pos != r && l.e_preventDefault(e); }l.on(this.inner, 'mousedown', function (e) { if (e.which == 1) { l.e_preventDefault(e); var t = a.orientation == 'horizontal' ? 'pageX' : 'pageY'; var r = e[t]; var n = a.pos; l.on(document, 'mousemove', o), l.on(document, 'mouseup', i); } function i () { l.off(document, 'mousemove', o), l.off(document, 'mouseup', i); } function o (e) { if (e.which != 1) return i(); a.moveTo(n + (e[t] - r) * (a.total / a.size)); } }), l.on(this.node, 'click', function (e) { l.e_preventDefault(e); var t; var r = a.inner.getBoundingClientRect(); t = a.orientation == 'horizontal' ? e.clientX < r.left ? -1 : e.clientX > r.right ? 1 : 0 : e.clientY < r.top ? -1 : e.clientY > r.bottom ? 1 : 0, a.moveTo(a.pos + t * a.screen); }), l.on(this.node, 'mousewheel', n), l.on(this.node, 'DOMMouseScroll', n); }n.prototype.setPos = function (e, t) { return e < 0 && (e = 0), e > this.total - this.screen && (e = this.total - this.screen), !(!t && e == this.pos) && (this.pos = e, this.inner.style[this.orientation == 'horizontal' ? 'left' : 'top'] = e * (this.size / this.total) + 'px', !0); }, n.prototype.moveTo = function (e) { this.setPos(e) && this.scroll(e, this.orientation); }; function r (e, t, r) { this.addClass = e, this.horiz = new n(e, 'horizontal', r), t(this.horiz.node), this.vert = new n(e, 'vertical', r), t(this.vert.node), this.width = null; }n.prototype.update = function (e, t, r) { var n = this.screen != t || this.total != e || this.size != r; n && (this.screen = t, this.total = e, this.size = r); var i = this.screen * (this.size / this.total); i < 10 && (this.size -= 10 - i, i = 10), this.inner.style[this.orientation == 'horizontal' ? 'width' : 'height'] = i + 'px', this.setPos(this.pos, n); }, r.prototype.update = function (e) { if (this.width == null) { var t = window.getComputedStyle ? window.getComputedStyle(this.horiz.node) : this.horiz.node.currentStyle; t && (this.width = parseInt(t.height)); } var r = this.width || 0; var n = e.scrollWidth > e.clientWidth + 1; var i = e.scrollHeight > e.clientHeight + 1; return this.vert.node.style.display = i ? 'block' : 'none', this.horiz.node.style.display = n ? 'block' : 'none', i && (this.vert.update(e.scrollHeight, e.clientHeight, e.viewHeight - (n ? r : 0)), this.vert.node.style.bottom = n ? r + 'px' : '0'), n && (this.horiz.update(e.scrollWidth, e.clientWidth, e.viewWidth - (i ? r : 0) - e.barLeft), this.horiz.node.style.right = i ? r + 'px' : '0', this.horiz.node.style.left = e.barLeft + 'px'), { right: i ? r : 0, bottom: n ? r : 0 }; }, r.prototype.setScrollTop = function (e) { this.vert.setPos(e); }, r.prototype.setScrollLeft = function (e) { this.horiz.setPos(e); }, r.prototype.clear = function () { var e = this.horiz.node.parentNode; e.removeChild(this.horiz.node), e.removeChild(this.vert.node); }, l.scrollbarModel.simple = function (e, t) { return new r('CodeMirror-simplescroll', e, t); }, l.scrollbarModel.overlay = function (e, t) { return new r('CodeMirror-overlayscroll', e, t); }; })), (function (e) { typeof exports == 'object' && typeof module == 'object' ? e(require('../../lib/codemirror')) : typeof define == 'function' && define.amd ? define(['../../lib/codemirror'], e) : e(CodeMirror); }(function (T) { 'use strict'; var L = 'CodeMirror-hint-active'; function i (e, t) { this.cm = e, this.options = t, this.widget = null, this.debounce = 0, this.tick = 0, this.startPos = this.cm.getCursor('start'), this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length; var r = this; e.on('cursorActivity', this.activityFunc = function () { r.cursorActivity(); }); }T.showHint = function (e, t, r) { if (!t) return e.showHint(r); r && r.async && (t.async = !0); var n = { hint: t }; if (r) for (var i in r)n[i] = r[i]; return e.showHint(n); }, T.defineExtension('showHint', function (e) { e = (function (e, t, r) { var n = e.options.hintOptions; var i = {}; for (var o in s)i[o] = s[o]; if (n) for (var o in n) void 0 !== n[o] && (i[o] = n[o]); if (r) for (var o in r) void 0 !== r[o] && (i[o] = r[o]); i.hint.resolve && (i.hint = i.hint.resolve(e, t)); return i; }(this, this.getCursor('start'), e)); var t = this.listSelections(); if (!(t.length > 1)) { if (this.somethingSelected()) { if (!e.hint.supportsSelection) return; for (var r = 0; r < t.length; r++) if (t[r].head.line != t[r].anchor.line) return; } this.state.completionActive && this.state.completionActive.close(); var n = this.state.completionActive = new i(this, e); n.options.hint && (T.signal(this, 'startCompletion', this), n.update(!0)); } }); var n = window.requestAnimationFrame || function (e) { return setTimeout(e, 1e3 / 60); }; var o = window.cancelAnimationFrame || clearTimeout; function M (e) { return typeof e == 'string' ? e : e.text; } function A (e, t) { for (;t && t != e;) { if (t.nodeName.toUpperCase() === 'LI' && t.parentNode == e) return t; t = t.parentNode; } } function a (i, e) { this.completion = i, this.data = e, this.picked = !1; var r = this; var o = i.cm; var a = this.hints = document.createElement('ul'); a.className = 'CodeMirror-hints', this.selectedHint = e.selectedHint || 0; for (var t = e.list, n = 0; n < t.length; ++n) { var l = a.appendChild(document.createElement('li')); var s = t[n]; var c = 'CodeMirror-hint' + (n != this.selectedHint ? '' : ' ' + L); s.className != null && (c = s.className + ' ' + c), l.className = c, s.render ? s.render(l, e, s) : l.appendChild(document.createTextNode(s.displayText || M(s))), l.hintId = n; } var u = o.cursorCoords(i.options.alignWithWord ? e.from : null); var d = u.left; var f = u.bottom; var h = !0; a.style.left = d + 'px', a.style.top = f + 'px'; var p = window.innerWidth || Math.max(document.body.offsetWidth, document.documentElement.offsetWidth); var m = window.innerHeight || Math.max(document.body.offsetHeight, document.documentElement.offsetHeight); (i.options.container || document.body).appendChild(a); var g = a.getBoundingClientRect(); var v = g.bottom - m; var y = a.scrollHeight > a.clientHeight + 1; var b = o.getScrollInfo(); if (v > 0) { var w = g.bottom - g.top; if (u.top - (u.bottom - g.top) - w > 0)a.style.top = (f = u.top - w) + 'px', h = !1; else if (m < w) { a.style.height = m - 5 + 'px', a.style.top = (f = u.bottom - g.top) + 'px'; var x = o.getCursor(); e.from.ch != x.ch && (u = o.cursorCoords(x), a.style.left = (d = u.left) + 'px', g = a.getBoundingClientRect()); } } var k; var C = g.right - p; if (C > 0 && (g.right - g.left > p && (a.style.width = p - 5 + 'px', C -= g.right - g.left - p), a.style.left = (d = u.left - C) + 'px'), y) for (var S = a.firstChild; S; S = S.nextSibling)S.style.paddingRight = o.display.nativeBarWidth + 'px'; o.addKeyMap(this.keyMap = (function (e, n) { var i = { Up: function () { n.moveFocus(-1); }, Down: function () { n.moveFocus(1); }, PageUp: function () { n.moveFocus(1 - n.menuSize(), !0); }, PageDown: function () { n.moveFocus(n.menuSize() - 1, !0); }, Home: function () { n.setFocus(0); }, End: function () { n.setFocus(n.length - 1); }, Enter: n.pick, Tab: n.pick, Esc: n.close }; var t = e.options.customKeys; var o = t ? {} : i; function r (e, t) { var r; r = typeof t != 'string' ? function (e) { return t(e, n); } : i.hasOwnProperty(t) ? i[t] : t, o[e] = r; } if (t) for (var a in t)t.hasOwnProperty(a) && r(a, t[a]); var l = e.options.extraKeys; if (l) for (var a in l)l.hasOwnProperty(a) && r(a, l[a]); return o; }(i, { moveFocus: function (e, t) { r.changeActive(r.selectedHint + e, t); }, setFocus: function (e) { r.changeActive(e); }, menuSize: function () { return r.screenAmount(); }, length: t.length, close: function () { i.close(); }, pick: function () { r.pick(); }, data: e }))), i.options.closeOnUnfocus && (o.on('blur', this.onBlur = function () { k = setTimeout(function () { i.close(); }, 100); }), o.on('focus', this.onFocus = function () { clearTimeout(k); })); return o.on('scroll', this.onScroll = function () { var e = o.getScrollInfo(); var t = o.getWrapperElement().getBoundingClientRect(); var r = f + b.top - e.top; var n = r - (window.pageYOffset || (document.documentElement || document.body).scrollTop); if (h || (n += a.offsetHeight), n <= t.top || n >= t.bottom) return i.close(); a.style.top = r + 'px', a.style.left = d + b.left - e.left + 'px'; }), T.on(a, 'dblclick', function (e) { var t = A(a, e.target || e.srcElement); t && t.hintId != null && (r.changeActive(t.hintId), r.pick()); }), T.on(a, 'click', function (e) { var t = A(a, e.target || e.srcElement); t && t.hintId != null && (r.changeActive(t.hintId), i.options.completeOnSingleClick && r.pick()); }), T.on(a, 'mousedown', function () { setTimeout(function () { o.focus(); }, 20); }), T.signal(e, 'select', t[this.selectedHint], a.childNodes[this.selectedHint]), !0; } function l (e, t, r, n) { if (e.async)e(t, n, r); else { var i = e(t, r); i && i.then ? i.then(n) : n(i); } }i.prototype = { close: function () { this.active() && (this.cm.state.completionActive = null, this.tick = null, this.cm.off('cursorActivity', this.activityFunc), this.widget && this.data && T.signal(this.data, 'close'), this.widget && this.widget.close(), T.signal(this.cm, 'endCompletion', this.cm)); }, active: function () { return this.cm.state.completionActive == this; }, pick: function (e, t) { var r = e.list[t]; r.hint ? r.hint(this.cm, e, r) : this.cm.replaceRange(M(r), r.from || e.from, r.to || e.to, 'complete'), T.signal(e, 'pick', r), this.close(); }, cursorActivity: function () { this.debounce && (o(this.debounce), this.debounce = 0); var e = this.cm.getCursor(); var t = this.cm.getLine(e.line); if (e.line != this.startPos.line || t.length - e.ch != this.startLen - this.startPos.ch || e.ch < this.startPos.ch || this.cm.somethingSelected() || e.ch && this.options.closeCharacters.test(t.charAt(e.ch - 1))) this.close(); else { var r = this; this.debounce = n(function () { r.update(); }), this.widget && this.widget.disable(); } }, update: function (t) { if (this.tick != null) { var r = this; var n = ++this.tick; l(this.options.hint, this.cm, this.options, function (e) { r.tick == n && r.finishUpdate(e, t); }); } }, finishUpdate: function (e, t) { this.data && T.signal(this.data, 'update'); var r = this.widget && this.widget.picked || t && this.options.completeSingle; this.widget && this.widget.close(), (this.data = e) && e.list.length && (r && e.list.length == 1 ? this.pick(e, 0) : (this.widget = new a(this, e), T.signal(e, 'shown'))); } }, a.prototype = { close: function () { if (this.completion.widget == this) { this.completion.widget = null, this.hints.parentNode.removeChild(this.hints), this.completion.cm.removeKeyMap(this.keyMap); var e = this.completion.cm; this.completion.options.closeOnUnfocus && (e.off('blur', this.onBlur), e.off('focus', this.onFocus)), e.off('scroll', this.onScroll); } }, disable: function () { this.completion.cm.removeKeyMap(this.keyMap); var e = this; this.keyMap = { Enter: function () { e.picked = !0; } }, this.completion.cm.addKeyMap(this.keyMap); }, pick: function () { this.completion.pick(this.data, this.selectedHint); }, changeActive: function (e, t) { if (e >= this.data.list.length ? e = t ? this.data.list.length - 1 : 0 : e < 0 && (e = t ? 0 : this.data.list.length - 1), this.selectedHint != e) { var r = this.hints.childNodes[this.selectedHint]; r && (r.className = r.className.replace(' ' + L, '')), (r = this.hints.childNodes[this.selectedHint = e]).className += ' ' + L, r.offsetTop < this.hints.scrollTop ? this.hints.scrollTop = r.offsetTop - 3 : r.offsetTop + r.offsetHeight > this.hints.scrollTop + this.hints.clientHeight && (this.hints.scrollTop = r.offsetTop + r.offsetHeight - this.hints.clientHeight + 3), T.signal(this.data, 'select', this.data.list[this.selectedHint], r); } }, screenAmount: function () { return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1; } }, T.registerHelper('hint', 'auto', { resolve: function (e, t) { var r; var a = e.getHelpers(t, 'hint'); if (a.length) { var n = function (e, n, i) { var o = (function (e, t) { if (!e.somethingSelected()) return t; for (var r = [], n = 0; n < t.length; n++)t[n].supportsSelection && r.push(t[n]); return r; }(e, a)); !(function t (r) { if (r == o.length) return n(null); l(o[r], e, i, function (e) { e && e.list.length > 0 ? n(e) : t(r + 1); }); }(0)); }; return n.async = !0, n.supportsSelection = !0, n; } return (r = e.getHelper(e.getCursor(), 'hintWords')) ? function (e) { return T.hint.fromList(e, { words: r }); } : T.hint.anyword ? function (e, t) { return T.hint.anyword(e, t); } : function () {}; } }), T.registerHelper('hint', 'fromList', function (e, t) { var r; var n = e.getCursor(); var i = e.getTokenAt(n); var o = T.Pos(n.line, i.start); var a = n; i.start < n.ch && /\w/.test(i.string.charAt(n.ch - i.start - 1)) ? r = i.string.substr(0, n.ch - i.start) : (r = '', o = n); for (var l = [], s = 0; s < t.words.length; s++) { var c = t.words[s]; c.slice(0, r.length) == r && l.push(c); } if (l.length) return { list: l, from: o, to: a }; }), T.commands.autocomplete = T.showHint; var s = { hint: T.hint.auto, completeSingle: !0, alignWithWord: !0, closeCharacters: /[\s()\[\]{};:>,]/, closeOnUnfocus: !0, completeOnSingleClick: !0, container: null, customKeys: null, extraKeys: null }; T.defineOption('hintOptions', null); })), (function (e) { typeof exports == 'object' && typeof module == 'object' ? e(require('../../lib/codemirror'), require('../../mode/css/css')) : typeof define == 'function' && define.amd ? define(['../../lib/codemirror', '../../mode/css/css'], e) : e(CodeMirror); }(function (d) { 'use strict'; var f = { link: 1, visited: 1, active: 1, hover: 1, focus: 1, 'first-letter': 1, 'first-line': 1, 'first-child': 1, before: 1, after: 1, lang: 1 }; d.registerHelper('hint', 'css', function (e) { var t = e.getCursor(); var r = e.getTokenAt(t); var n = d.innerMode(e.getMode(), r.state); if (n.mode.name == 'css') { if (r.type == 'keyword' && '!important'.indexOf(r.string) == 0) return { list: ['!important'], from: d.Pos(t.line, r.start), to: d.Pos(t.line, r.end) }; var i = r.start; var o = t.ch; var a = r.string.slice(0, o - i); /[^\w$_-]/.test(a) && (a = '', i = o = t.ch); var l = d.resolveMode('text/css'); var s = []; var c = n.state.state; return c == 'pseudo' || r.type == 'variable-3' ? u(f) : c == 'block' || c == 'maybeprop' ? u(l.propertyKeywords) : c == 'prop' || c == 'parens' || c == 'at' || c == 'params' ? (u(l.valueKeywords), u(l.colorKeywords)) : c != 'media' && c != 'media_parens' || (u(l.mediaTypes), u(l.mediaFeatures)), s.length ? { list: s, from: d.Pos(t.line, i), to: d.Pos(t.line, o) } : void 0; } function u (e) { for (var t in e)a && t.lastIndexOf(a, 0) != 0 || s.push(t); } }); })), (function (e) { typeof exports == 'object' && typeof module == 'object' ? e(require('../../lib/codemirror'), require('./xml-hint')) : typeof define == 'function' && define.amd ? define(['../../lib/codemirror', './xml-hint'], e) : e(CodeMirror); }(function (i) { 'use strict'; var e = 'ab aa af ak sq am ar an hy as av ae ay az bm ba eu be bn bh bi bs br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et ee fo fj fi fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik io is it iu ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln lo lt lu lv gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc oj cu om or os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn si sk sl so st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa cy wo fy xh yi yo za zu'.split(' '); var t = ['_blank', '_self', '_top', '_parent']; var r = ['ascii', 'utf-8', 'utf-16', 'latin1', 'latin1']; var n = ['get', 'post', 'put', 'delete']; var o = ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain']; var a = ['all', 'screen', 'print', 'embossed', 'braille', 'handheld', 'print', 'projection', 'screen', 'tty', 'tv', 'speech', '3d-glasses', 'resolution [>][<][=] [X]', 'device-aspect-ratio: X/Y', 'orientation:portrait', 'orientation:landscape', 'device-height: [X]', 'device-width: [X]']; var l = { attrs: {} }; var s = { a: { attrs: { href: null, ping: null, type: null, media: a, target: t, hreflang: e } }, abbr: l, acronym: l, address: l, applet: l, area: { attrs: { alt: null, coords: null, href: null, target: null, ping: null, media: a, hreflang: e, type: null, shape: ['default', 'rect', 'circle', 'poly'] } }, article: l, aside: l, audio: { attrs: { src: null, mediagroup: null, crossorigin: ['anonymous', 'use-credentials'], preload: ['none', 'metadata', 'auto'], autoplay: ['', 'autoplay'], loop: ['', 'loop'], controls: ['', 'controls'] } }, b: l, base: { attrs: { href: null, target: t } }, basefont: l, bdi: l, bdo: l, big: l, blockquote: { attrs: { cite: null } }, body: l, br: l, button: { attrs: { form: null, formaction: null, name: null, value: null, autofocus: ['', 'autofocus'], disabled: ['', 'autofocus'], formenctype: o, formmethod: n, formnovalidate: ['', 'novalidate'], formtarget: t, type: ['submit', 'reset', 'button'] } }, canvas: { attrs: { width: null, height: null } }, caption: l, center: l, cite: l, code: l, col: { attrs: { span: null } }, colgroup: { attrs: { span: null } }, command: { attrs: { type: ['command', 'checkbox', 'radio'], label: null, icon: null, radiogroup: null, command: null, title: null, disabled: ['', 'disabled'], checked: ['', 'checked'] } }, data: { attrs: { value: null } }, datagrid: { attrs: { disabled: ['', 'disabled'], multiple: ['', 'multiple'] } }, datalist: { attrs: { data: null } }, dd: l, del: { attrs: { cite: null, datetime: null } }, details: { attrs: { open: ['', 'open'] } }, dfn: l, dir: l, div: l, dl: l, dt: l, em: l, embed: { attrs: { src: null, type: null, width: null, height: null } }, eventsource: { attrs: { src: null } }, fieldset: { attrs: { disabled: ['', 'disabled'], form: null, name: null } }, figcaption: l, figure: l, font: l, footer: l, form: { attrs: { action: null, name: null, 'accept-charset': r, autocomplete: ['on', 'off'], enctype: o, method: n, novalidate: ['', 'novalidate'], target: t } }, frame: l, frameset: l, h1: l, h2: l, h3: l, h4: l, h5: l, h6: l, head: { attrs: {}, children: ['title', 'base', 'link', 'style', 'meta', 'script', 'noscript', 'command'] }, header: l, hgroup: l, hr: l, html: { attrs: { manifest: null }, children: ['head', 'body'] }, i: l, iframe: { attrs: { src: null, srcdoc: null, name: null, width: null, height: null, sandbox: ['allow-top-navigation', 'allow-same-origin', 'allow-forms', 'allow-scripts'], seamless: ['', 'seamless'] } }, img: { attrs: { alt: null, src: null, ismap: null, usemap: null, width: null, height: null, crossorigin: ['anonymous', 'use-credentials'] } }, input: { attrs: { alt: null, dirname: null, form: null, formaction: null, height: null, list: null, max: null, maxlength: null, min: null, name: null, pattern: null, placeholder: null, size: null, src: null, step: null, value: null, width: null, accept: ['audio/*', 'video/*', 'image/*'], autocomplete: ['on', 'off'], autofocus: ['', 'autofocus'], checked: ['', 'checked'], disabled: ['', 'disabled'], formenctype: o, formmethod: n, formnovalidate: ['', 'novalidate'], formtarget: t, multiple: ['', 'multiple'], readonly: ['', 'readonly'], required: ['', 'required'], type: ['hidden', 'text', 'search', 'tel', 'url', 'email', 'password', 'datetime', 'date', 'month', 'week', 'time', 'datetime-local', 'number', 'range', 'color', 'checkbox', 'radio', 'file', 'submit', 'image', 'reset', 'button'] } }, ins: { attrs: { cite: null, datetime: null } }, kbd: l, keygen: { attrs: { challenge: null, form: null, name: null, autofocus: ['', 'autofocus'], disabled: ['', 'disabled'], keytype: ['RSA'] } }, label: { attrs: { for: null, form: null } }, legend: l, li: { attrs: { value: null } }, link: { attrs: { href: null, type: null, hreflang: e, media: a, sizes: ['all', '16x16', '16x16 32x32', '16x16 32x32 64x64'] } }, map: { attrs: { name: null } }, mark: l, menu: { attrs: { label: null, type: ['list', 'context', 'toolbar'] } }, meta: { attrs: { content: null, charset: r, name: ['viewport', 'application-name', 'author', 'description', 'generator', 'keywords'], 'http-equiv': ['content-language', 'content-type', 'default-style', 'refresh'] } }, meter: { attrs: { value: null, min: null, low: null, high: null, max: null, optimum: null } }, nav: l, noframes: l, noscript: l, object: { attrs: { data: null, type: null, name: null, usemap: null, form: null, width: null, height: null, typemustmatch: ['', 'typemustmatch'] } }, ol: { attrs: { reversed: ['', 'reversed'], start: null, type: ['1', 'a', 'A', 'i', 'I'] } }, optgroup: { attrs: { disabled: ['', 'disabled'], label: null } }, option: { attrs: { disabled: ['', 'disabled'], label: null, selected: ['', 'selected'], value: null } }, output: { attrs: { for: null, form: null, name: null } }, p: l, param: { attrs: { name: null, value: null } }, pre: l, progress: { attrs: { value: null, max: null } }, q: { attrs: { cite: null } }, rp: l, rt: l, ruby: l, s: l, samp: l, script: { attrs: { type: ['text/javascript'], src: null, async: ['', 'async'], defer: ['', 'defer'], charset: r } }, section: l, select: { attrs: { form: null, name: null, size: null, autofocus: ['', 'autofocus'], disabled: ['', 'disabled'], multiple: ['', 'multiple'] } }, small: l, source: { attrs: { src: null, type: null, media: null } }, span: l, strike: l, strong: l, style: { attrs: { type: ['text/css'], media: a, scoped: null } }, sub: l, summary: l, sup: l, table: l, tbody: l, td: { attrs: { colspan: null, rowspan: null, headers: null } }, textarea: { attrs: { dirname: null, form: null, maxlength: null, name: null, placeholder: null, rows: null, cols: null, autofocus: ['', 'autofocus'], disabled: ['', 'disabled'], readonly: ['', 'readonly'], required: ['', 'required'], wrap: ['soft', 'hard'] } }, tfoot: l, th: { attrs: { colspan: null, rowspan: null, headers: null, scope: ['row', 'col', 'rowgroup', 'colgroup'] } }, thead: l, time: { attrs: { datetime: null } }, title: l, tr: l, track: { attrs: { src: null, label: null, default: null, kind: ['subtitles', 'captions', 'descriptions', 'chapters', 'metadata'], srclang: e } }, tt: l, u: l, ul: l, var: l, video: { attrs: { src: null, poster: null, width: null, height: null, crossorigin: ['anonymous', 'use-credentials'], preload: ['auto', 'metadata', 'none'], autoplay: ['', 'autoplay'], mediagroup: ['movie'], muted: ['', 'muted'], controls: ['', 'controls'] } }, wbr: l }; var c = { accesskey: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], class: null, contenteditable: ['true', 'false'], contextmenu: null, dir: ['ltr', 'rtl', 'auto'], draggable: ['true', 'false', 'auto'], dropzone: ['copy', 'move', 'link', 'string:', 'file:'], hidden: ['hidden'], id: null, inert: ['inert'], itemid: null, itemprop: null, itemref: null, itemscope: ['itemscope'], itemtype: null, lang: ['en', 'es'], spellcheck: ['true', 'false'], style: null, tabindex: ['1', '2', '3', '4', '5', '6', '7', '8', '9'], title: null, translate: ['yes', 'no'], onclick: null, rel: ['stylesheet', 'alternate', 'author', 'bookmark', 'help', 'license', 'next', 'nofollow', 'noreferrer', 'prefetch', 'prev', 'search', 'tag'] }; function u (e) { for (var t in c)c.hasOwnProperty(t) && (e.attrs[t] = c[t]); } for (var d in u(l), s)s.hasOwnProperty(d) && s[d] != l && u(s[d]); i.htmlSchema = s, i.registerHelper('hint', 'html', function (e, t) { var r = { schemaInfo: s }; if (t) for (var n in t)r[n] = t[n]; return i.hint.xml(e, r); }); })), (function (e) { typeof exports == 'object' && typeof module == 'object' ? e(require('../../lib/codemirror')) : typeof define == 'function' && define.amd ? define(['../../lib/codemirror'], e) : e(CodeMirror); }(function (c) { var u = c.Pos; function f (e, t) { for (var r = 0, n = e.length; r < n; ++r)t(e[r]); } function r (e, t, r, n) { var i = e.getCursor(); var o = r(e, i); if (!/\b(?:string|comment)\b/.test(o.type)) { var a = c.innerMode(e.getMode(), o.state); if (a.mode.helperType !== 'json') { o.state = a.state, /^[\w$_]*$/.test(o.string) ? o.end > i.ch && (o.end = i.ch, o.string = o.string.slice(0, i.ch - o.start)) : o = { start: i.ch, end: i.ch, string: '', state: o.state, type: o.string == '.' ? 'property' : null }; for (var l = o; l.type == 'property';) { if ((l = r(e, u(i.line, l.start))).string != '.') return; if (l = r(e, u(i.line, l.start)), !s) var s = []; s.push(l); } return { list: (function (e, t, r, n) { var i = []; var o = e.string; var a = n && n.globalScope || window; function l (e) { e.lastIndexOf(o, 0) != 0 || (function (e, t) { if (Array.prototype.indexOf) return e.indexOf(t) != -1; for (var r = e.length; r--;) if (e[r] === t) return !0; return !1; }(i, e)) || i.push(e); } function s (e) { typeof e == 'string' ? f(h, l) : e instanceof Array ? f(p, l) : e instanceof Function && f(m, l), (function (e, t) { if (Object.getOwnPropertyNames && Object.getPrototypeOf) for (var r = e; r; r = Object.getPrototypeOf(r))Object.getOwnPropertyNames(r).forEach(t); else for (var n in e)t(n); }(e, l)); } if (t && t.length) { var c; var u = t.pop(); for (u.type && u.type.indexOf('variable') === 0 ? (n && n.additionalContext && (c = n.additionalContext[u.string]), n && !1 === n.useGlobalScope || (c = c || a[u.string])) : u.type == 'string' ? c = '' : u.type == 'atom' ? c = 1 : u.type == 'function' && (a.jQuery == null || u.string != '$' && u.string != 'jQuery' || typeof a.jQuery != 'function' ? a._ != null && u.string == '_' && typeof a._ == 'function' && (c = a._()) : c = a.jQuery()); c != null && t.length;)c = c[t.pop().string]; c != null && s(c); } else { for (var d = e.state.localVars; d; d = d.next)l(d.name); for (d = e.state.globalVars; d; d = d.next)l(d.name); n && !1 === n.useGlobalScope || s(a), f(r, l); } return i; }(o, s, t, n)), from: u(i.line, o.start), to: u(i.line, o.end) }; } } } function n (e, t) { var r = e.getTokenAt(t); return t.ch == r.start + 1 && r.string.charAt(0) == '.' ? (r.end = r.start, r.string = '.', r.type = 'property') : /^\.[\w$_]*$/.test(r.string) && (r.type = 'property', r.start++, r.string = r.string.replace(/\./, '')), r; }c.registerHelper('hint', 'javascript', function (e, t) { return r(e, i, function (e, t) { return e.getTokenAt(t); }, t); }), c.registerHelper('hint', 'coffeescript', function (e, t) { return r(e, o, n, t); }); var h = 'charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight toUpperCase toLowerCase split concat match replace search'.split(' '); var p = 'length concat join splice push pop shift unshift slice reverse sort indexOf lastIndexOf every some filter forEach map reduce reduceRight '.split(' '); var m = 'prototype apply call bind'.split(' '); var i = 'break case catch class const continue debugger default delete do else export extends false finally for function if in import instanceof new null return super switch this throw true try typeof var void while with yield'.split(' '); var o = 'and break catch class continue delete do else extends false finally for if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes'.split(' '); }));
diff --git a/src/Shopsys/ShopBundle/Resources/scripts/styleguide/styleguide.js b/src/Shopsys/ShopBundle/Resources/scripts/styleguide/styleguide.js
new file mode 100644
index 000000000..d50d57d84
--- /dev/null
+++ b/src/Shopsys/ShopBundle/Resources/scripts/styleguide/styleguide.js
@@ -0,0 +1,173 @@
+/**
+ * Script used for the Styleguide structure only
+ */
+
+if (typeof window !== 'undefined') global = window;
+
+var StyleguideIndex = {
+ init: function () {
+ this.$body = $('html, body');
+ this.$breakpointsLinks = $('.styleguide-header__breakpoints__item__link');
+ this.$sidebarContent = $('.styleguide-sidebar__content');
+ this.$sidebarLinks = $('.styleguide-sidebar__nav__item__link');
+ this.$sidebarToggle = $('[class*="styleguide-sidebar__toggle"]');
+ this.$iframe = $('.styleguide-iframe-content');
+ this.$iframeContent = $('.styleguide-iframe-wrapper').contents();
+
+ this.sidebarOpenedClass = 'opened';
+ this.sidebarActiveLinkClass = 'active';
+ this.sidebarLinkWasClickedClass = 'side-menu-clicked';
+
+ this.sidebarSetup();
+ this.checkHashOnLoad();
+ this.events();
+ },
+
+ /**
+ * All events of the structure
+ * should be registered here
+ */
+ events: function () {
+ var _this = this;
+
+ this.$breakpointsLinks.click(function () {
+ _this.resizeContent($(this));
+ });
+
+ this.$sidebarLinks.click(function (e) {
+ e.preventDefault();
+ _this.setActiveSidebarLinkOnClick($(this));
+ _this.navigateToAnchor($(this));
+ });
+
+ this.$sidebarToggle.click(function (e) {
+ e.preventDefault();
+ _this.$body.toggleClass(_this.sidebarOpenedClass);
+ });
+
+ $(window).resize(function () {
+ _this.sidebarResizeHandler();
+ });
+ },
+
+ /**
+ * Resize iframe based on
+ * the breakpoint choice
+ */
+ resizeContent: function ($elem) {
+ var sizeLabel = $elem.data('size-label');
+ var size = sizeLabel === 'full' ? $elem.data('size') : parseInt($elem.data('size').replace('px', ''), 10);
+
+ this.$iframe.width(size);
+ },
+
+ /**
+ * Check URL hash and navigate
+ * to the respective module
+ */
+ checkHashOnLoad: function () {
+
+ // Shutdown this feature in Chrome.
+ // Chrome have a know issue with file protocol and iframe comunication.
+ // It is not supported so we should not raise errors.
+ if (window.location.hash === '#' || window.location.hash === '') return false;
+
+ var top = this.$iframeContent.find('section' + window.location.hash.replace('!', '')).offset().top;
+ if (this.$iframeContent.find('section' + window.location.hash.replace('!', '')).index() === 0) {
+ $(window).on('load', function () {
+ this.$body.animate({ scrollTop: 0 }, 500);
+ });
+ } else {
+ this.$body.animate({ scrollTop: top - 50 }, 0);
+ }
+ },
+
+ /**
+ * Navigate to module on
+ * sidebar links click
+ */
+ navigateToAnchor: function ($elem) {
+
+ // Shutdown this feature in Chrome.
+ // Chrome have a know issue with file protocol and iframe comunication.
+ // It is not supported so we should not raise errors.
+ var top = this.$iframeContent.find('section' + $elem.attr('href')).offset().top - 50;
+
+ // Use ! to prevent de default browser behavior of anchor navigation
+ window.location.hash = '!' + $elem.attr('href').replace('#', '');
+
+ this.$body.animate({ scrollTop: top }, 800);
+ },
+ sidebarOpen: function () {
+ this.$body.addClass('opened');
+ },
+ sidebarClose: function () {
+ this.$body.removeClass('opened');
+ },
+
+ /**
+ * Leave or close the sidebar
+ * if the window is small
+ */
+ sidebarResizeHandler: function () {
+ if ($(window).width() <= 1220) {
+ this.sidebarClose();
+ } else {
+ this.sidebarOpen();
+ }
+ },
+ sidebarSetup: function () {
+
+ // Shutdown this feature in Chrome.
+ // Chrome have a know issue with file protocol and iframe comunication.
+ // It is not supported so we should not raise errors.
+
+ if ($(window).width() >= 1220) {
+ this.sidebarOpen();
+ }
+ },
+ setActiveSidebarLinkOnClick: function ($elem) {
+ this.$body.addClass(this.sidebarLinkWasClickedClass);
+ this.$sidebarLinks.removeClass(this.sidebarActiveLinkClass);
+ $elem.addClass(this.sidebarActiveLinkClass);
+ }
+};
+
+$(window).on('load', function () {
+ StyleguideIndex.init();
+
+ var textareas = document.querySelectorAll('.codemirror-html');
+ for (var i = 0; i < textareas.length; i++) {
+ CodeMirror.fromTextArea(textareas[i], {
+ lineNumbers: true,
+ theme: 'hopscotch',
+ mode: 'htmlmixed',
+ scrollbarStyle: 'simple',
+ extraKeys: { 'Ctrl-Space': 'autocomplete' }
+ });
+ }
+
+ // editor css
+ var textareas = document.querySelectorAll('.codemirror-css');
+ for (var i = 0; i < textareas.length; i++) {
+ CodeMirror.fromTextArea(textareas[i], {
+ lineNumbers: true,
+ theme: 'hopscotch',
+ mode: 'css',
+ scrollbarStyle: 'simple',
+ extraKeys: { 'Ctrl-Space': 'autocomplete' }
+ });
+ }
+
+ // editor js
+ var textareas = document.querySelectorAll('.codemirror-js');
+ for (var i = 0; i < textareas.length; i++) {
+ CodeMirror.fromTextArea(textareas[i], {
+ lineNumbers: true,
+ theme: 'hopscotch',
+ mode: 'javascript',
+ scrollbarStyle: 'simple',
+ extraKeys: { 'Ctrl-Space': 'autocomplete' }
+ });
+ }
+});
diff --git a/src/Shopsys/ShopBundle/Resources/styles/admin/helpers/helpers-generated.less b/src/Shopsys/ShopBundle/Resources/styles/admin/helpers/helpers-generated.less
deleted file mode 100644
index 8f565f35e..000000000
--- a/src/Shopsys/ShopBundle/Resources/styles/admin/helpers/helpers-generated.less
+++ /dev/null
@@ -1,884 +0,0 @@
-/*******************************************************************
-// TIMESTAMP
-*******************************************************************/
-/*******************************************************************
-// PATHS
-*******************************************************************/
-/*******************************************************************
-// FONTS
-*******************************************************************/
-/*******************************************************************
-// SIZES
-*******************************************************************/
-/*******************************************************************
-// COLORS
-*******************************************************************/
-/*******************************************************************
-// OTHER
-*******************************************************************/
-/*******************************************************************
-// POPUP WINDOWS
-*******************************************************************/
-/*******************************************************************
-// RESPONSIVE POINTS
-*******************************************************************/
-/*******************************************************************
-// MEDIA QUERIES
-*******************************************************************/
-.text-right {
- text-align: right;
-}
-.text-left {
- text-align: left;
-}
-.text-center {
- text-align: center;
-}
-.text-middle {
- vertical-align: middle;
-}
-.text-muted {
- color: #BCC2C5;
-}
-.text-no-decoration {
- text-decoration: none;
-}
-.text-no-wrap {
- white-space: nowrap;
-}
-.clear {
- clear: both;
-}
-.clearfix {
- *zoom: 1;
-}
-.clearfix:before,
-.clearfix:after {
- content: "";
- display: table;
-}
-.clearfix:after {
- clear: both;
-}
-.position-relative {
- position: relative;
-}
-.float-left {
- float: left;
-}
-.float-right {
- float: right;
-}
-.float-none {
- float: none;
-}
-.cursor-pointer {
- cursor: pointer;
-}
-.cursor-move {
- cursor: move;
-}
-.cursor-auto {
- cursor: auto;
-}
-.cursor-help {
- cursor: help;
-}
-.margin-0 {
- margin: 0px;
-}
-.margin-left-0 {
- margin-left: 0px;
-}
-.margin-right-0 {
- margin-right: 0px;
-}
-.margin-bottom-0 {
- margin-bottom: 0px;
-}
-.margin-top-0 {
- margin-top: 0px;
-}
-.margin-5 {
- margin: 5px;
-}
-.margin-left-5 {
- margin-left: 5px;
-}
-.margin-right-5 {
- margin-right: 5px;
-}
-.margin-bottom-5 {
- margin-bottom: 5px;
-}
-.margin-top-5 {
- margin-top: 5px;
-}
-.margin-10 {
- margin: 10px;
-}
-.margin-left-10 {
- margin-left: 10px;
-}
-.margin-right-10 {
- margin-right: 10px;
-}
-.margin-bottom-10 {
- margin-bottom: 10px;
-}
-.margin-top-10 {
- margin-top: 10px;
-}
-.margin-15 {
- margin: 15px;
-}
-.margin-left-15 {
- margin-left: 15px;
-}
-.margin-right-15 {
- margin-right: 15px;
-}
-.margin-bottom-15 {
- margin-bottom: 15px;
-}
-.margin-top-15 {
- margin-top: 15px;
-}
-.margin-20 {
- margin: 20px;
-}
-.margin-left-20 {
- margin-left: 20px;
-}
-.margin-right-20 {
- margin-right: 20px;
-}
-.margin-bottom-20 {
- margin-bottom: 20px;
-}
-.margin-top-20 {
- margin-top: 20px;
-}
-.margin-25 {
- margin: 25px;
-}
-.margin-left-25 {
- margin-left: 25px;
-}
-.margin-right-25 {
- margin-right: 25px;
-}
-.margin-bottom-25 {
- margin-bottom: 25px;
-}
-.margin-top-25 {
- margin-top: 25px;
-}
-.margin-30 {
- margin: 30px;
-}
-.margin-left-30 {
- margin-left: 30px;
-}
-.margin-right-30 {
- margin-right: 30px;
-}
-.margin-bottom-30 {
- margin-bottom: 30px;
-}
-.margin-top-30 {
- margin-top: 30px;
-}
-.margin-35 {
- margin: 35px;
-}
-.margin-left-35 {
- margin-left: 35px;
-}
-.margin-right-35 {
- margin-right: 35px;
-}
-.margin-bottom-35 {
- margin-bottom: 35px;
-}
-.margin-top-35 {
- margin-top: 35px;
-}
-.margin-40 {
- margin: 40px;
-}
-.margin-left-40 {
- margin-left: 40px;
-}
-.margin-right-40 {
- margin-right: 40px;
-}
-.margin-bottom-40 {
- margin-bottom: 40px;
-}
-.margin-top-40 {
- margin-top: 40px;
-}
-.margin-45 {
- margin: 45px;
-}
-.margin-left-45 {
- margin-left: 45px;
-}
-.margin-right-45 {
- margin-right: 45px;
-}
-.margin-bottom-45 {
- margin-bottom: 45px;
-}
-.margin-top-45 {
- margin-top: 45px;
-}
-.margin-50 {
- margin: 50px;
-}
-.margin-left-50 {
- margin-left: 50px;
-}
-.margin-right-50 {
- margin-right: 50px;
-}
-.margin-bottom-50 {
- margin-bottom: 50px;
-}
-.margin-top-50 {
- margin-top: 50px;
-}
-@media only screen and (max-width: 767px) {
- .margin-0-tablet {
- margin: 0px;
- }
- .margin-left-0-tablet {
- margin-left: 0px;
- }
- .margin-right-0-tablet {
- margin-right: 0px;
- }
- .margin-bottom-0-tablet {
- margin-bottom: 0px;
- }
- .margin-top-0-tablet {
- margin-top: 0px;
- }
- .margin-5-tablet {
- margin: 5px;
- }
- .margin-left-5-tablet {
- margin-left: 5px;
- }
- .margin-right-5-tablet {
- margin-right: 5px;
- }
- .margin-bottom-5-tablet {
- margin-bottom: 5px;
- }
- .margin-top-5-tablet {
- margin-top: 5px;
- }
- .margin-10-tablet {
- margin: 10px;
- }
- .margin-left-10-tablet {
- margin-left: 10px;
- }
- .margin-right-10-tablet {
- margin-right: 10px;
- }
- .margin-bottom-10-tablet {
- margin-bottom: 10px;
- }
- .margin-top-10-tablet {
- margin-top: 10px;
- }
- .margin-15-tablet {
- margin: 15px;
- }
- .margin-left-15-tablet {
- margin-left: 15px;
- }
- .margin-right-15-tablet {
- margin-right: 15px;
- }
- .margin-bottom-15-tablet {
- margin-bottom: 15px;
- }
- .margin-top-15-tablet {
- margin-top: 15px;
- }
- .margin-20-tablet {
- margin: 20px;
- }
- .margin-left-20-tablet {
- margin-left: 20px;
- }
- .margin-right-20-tablet {
- margin-right: 20px;
- }
- .margin-bottom-20-tablet {
- margin-bottom: 20px;
- }
- .margin-top-20-tablet {
- margin-top: 20px;
- }
- .margin-25-tablet {
- margin: 25px;
- }
- .margin-left-25-tablet {
- margin-left: 25px;
- }
- .margin-right-25-tablet {
- margin-right: 25px;
- }
- .margin-bottom-25-tablet {
- margin-bottom: 25px;
- }
- .margin-top-25-tablet {
- margin-top: 25px;
- }
- .margin-30-tablet {
- margin: 30px;
- }
- .margin-left-30-tablet {
- margin-left: 30px;
- }
- .margin-right-30-tablet {
- margin-right: 30px;
- }
- .margin-bottom-30-tablet {
- margin-bottom: 30px;
- }
- .margin-top-30-tablet {
- margin-top: 30px;
- }
- .margin-35-tablet {
- margin: 35px;
- }
- .margin-left-35-tablet {
- margin-left: 35px;
- }
- .margin-right-35-tablet {
- margin-right: 35px;
- }
- .margin-bottom-35-tablet {
- margin-bottom: 35px;
- }
- .margin-top-35-tablet {
- margin-top: 35px;
- }
- .margin-40-tablet {
- margin: 40px;
- }
- .margin-left-40-tablet {
- margin-left: 40px;
- }
- .margin-right-40-tablet {
- margin-right: 40px;
- }
- .margin-bottom-40-tablet {
- margin-bottom: 40px;
- }
- .margin-top-40-tablet {
- margin-top: 40px;
- }
- .margin-45-tablet {
- margin: 45px;
- }
- .margin-left-45-tablet {
- margin-left: 45px;
- }
- .margin-right-45-tablet {
- margin-right: 45px;
- }
- .margin-bottom-45-tablet {
- margin-bottom: 45px;
- }
- .margin-top-45-tablet {
- margin-top: 45px;
- }
- .margin-50-tablet {
- margin: 50px;
- }
- .margin-left-50-tablet {
- margin-left: 50px;
- }
- .margin-right-50-tablet {
- margin-right: 50px;
- }
- .margin-bottom-50-tablet {
- margin-bottom: 50px;
- }
- .margin-top-50-tablet {
- margin-top: 50px;
- }
-}
-@media only screen and (max-width: 599px) {
- .margin-0-mobile {
- margin: 0px;
- }
- .margin-left-0-mobile {
- margin-left: 0px;
- }
- .margin-right-0-mobile {
- margin-right: 0px;
- }
- .margin-bottom-0-mobile {
- margin-bottom: 0px;
- }
- .margin-top-0-mobile {
- margin-top: 0px;
- }
- .margin-5-mobile {
- margin: 5px;
- }
- .margin-left-5-mobile {
- margin-left: 5px;
- }
- .margin-right-5-mobile {
- margin-right: 5px;
- }
- .margin-bottom-5-mobile {
- margin-bottom: 5px;
- }
- .margin-top-5-mobile {
- margin-top: 5px;
- }
- .margin-10-mobile {
- margin: 10px;
- }
- .margin-left-10-mobile {
- margin-left: 10px;
- }
- .margin-right-10-mobile {
- margin-right: 10px;
- }
- .margin-bottom-10-mobile {
- margin-bottom: 10px;
- }
- .margin-top-10-mobile {
- margin-top: 10px;
- }
- .margin-15-mobile {
- margin: 15px;
- }
- .margin-left-15-mobile {
- margin-left: 15px;
- }
- .margin-right-15-mobile {
- margin-right: 15px;
- }
- .margin-bottom-15-mobile {
- margin-bottom: 15px;
- }
- .margin-top-15-mobile {
- margin-top: 15px;
- }
- .margin-20-mobile {
- margin: 20px;
- }
- .margin-left-20-mobile {
- margin-left: 20px;
- }
- .margin-right-20-mobile {
- margin-right: 20px;
- }
- .margin-bottom-20-mobile {
- margin-bottom: 20px;
- }
- .margin-top-20-mobile {
- margin-top: 20px;
- }
- .margin-25-mobile {
- margin: 25px;
- }
- .margin-left-25-mobile {
- margin-left: 25px;
- }
- .margin-right-25-mobile {
- margin-right: 25px;
- }
- .margin-bottom-25-mobile {
- margin-bottom: 25px;
- }
- .margin-top-25-mobile {
- margin-top: 25px;
- }
- .margin-30-mobile {
- margin: 30px;
- }
- .margin-left-30-mobile {
- margin-left: 30px;
- }
- .margin-right-30-mobile {
- margin-right: 30px;
- }
- .margin-bottom-30-mobile {
- margin-bottom: 30px;
- }
- .margin-top-30-mobile {
- margin-top: 30px;
- }
- .margin-35-mobile {
- margin: 35px;
- }
- .margin-left-35-mobile {
- margin-left: 35px;
- }
- .margin-right-35-mobile {
- margin-right: 35px;
- }
- .margin-bottom-35-mobile {
- margin-bottom: 35px;
- }
- .margin-top-35-mobile {
- margin-top: 35px;
- }
- .margin-40-mobile {
- margin: 40px;
- }
- .margin-left-40-mobile {
- margin-left: 40px;
- }
- .margin-right-40-mobile {
- margin-right: 40px;
- }
- .margin-bottom-40-mobile {
- margin-bottom: 40px;
- }
- .margin-top-40-mobile {
- margin-top: 40px;
- }
- .margin-45-mobile {
- margin: 45px;
- }
- .margin-left-45-mobile {
- margin-left: 45px;
- }
- .margin-right-45-mobile {
- margin-right: 45px;
- }
- .margin-bottom-45-mobile {
- margin-bottom: 45px;
- }
- .margin-top-45-mobile {
- margin-top: 45px;
- }
- .margin-50-mobile {
- margin: 50px;
- }
- .margin-left-50-mobile {
- margin-left: 50px;
- }
- .margin-right-50-mobile {
- margin-right: 50px;
- }
- .margin-bottom-50-mobile {
- margin-bottom: 50px;
- }
- .margin-top-50-mobile {
- margin-top: 50px;
- }
-}
-.padding-0 {
- padding: 0px;
-}
-.padding-left-0 {
- padding-left: 0px;
-}
-.padding-right-0 {
- padding-right: 0px;
-}
-.padding-bottom-0 {
- padding-bottom: 0px;
-}
-.padding-top-0 {
- padding-top: 0px;
-}
-.padding-5 {
- padding: 5px;
-}
-.padding-left-5 {
- padding-left: 5px;
-}
-.padding-right-5 {
- padding-right: 5px;
-}
-.padding-bottom-5 {
- padding-bottom: 5px;
-}
-.padding-top-5 {
- padding-top: 5px;
-}
-.padding-10 {
- padding: 10px;
-}
-.padding-left-10 {
- padding-left: 10px;
-}
-.padding-right-10 {
- padding-right: 10px;
-}
-.padding-bottom-10 {
- padding-bottom: 10px;
-}
-.padding-top-10 {
- padding-top: 10px;
-}
-.padding-15 {
- padding: 15px;
-}
-.padding-left-15 {
- padding-left: 15px;
-}
-.padding-right-15 {
- padding-right: 15px;
-}
-.padding-bottom-15 {
- padding-bottom: 15px;
-}
-.padding-top-15 {
- padding-top: 15px;
-}
-.padding-20 {
- padding: 20px;
-}
-.padding-left-20 {
- padding-left: 20px;
-}
-.padding-right-20 {
- padding-right: 20px;
-}
-.padding-bottom-20 {
- padding-bottom: 20px;
-}
-.padding-top-20 {
- padding-top: 20px;
-}
-@media only screen and (max-width: 767px) {
- .padding-0-tablet {
- padding: 0px;
- }
- .padding-left-0-tablet {
- padding-left: 0px;
- }
- .padding-right-0-tablet {
- padding-right: 0px;
- }
- .padding-bottom-0-tablet {
- padding-bottom: 0px;
- }
- .padding-top-0-tablet {
- padding-top: 0px;
- }
- .padding-5-tablet {
- padding: 5px;
- }
- .padding-left-5-tablet {
- padding-left: 5px;
- }
- .padding-right-5-tablet {
- padding-right: 5px;
- }
- .padding-bottom-5-tablet {
- padding-bottom: 5px;
- }
- .padding-top-5-tablet {
- padding-top: 5px;
- }
- .padding-10-tablet {
- padding: 10px;
- }
- .padding-left-10-tablet {
- padding-left: 10px;
- }
- .padding-right-10-tablet {
- padding-right: 10px;
- }
- .padding-bottom-10-tablet {
- padding-bottom: 10px;
- }
- .padding-top-10-tablet {
- padding-top: 10px;
- }
- .padding-15-tablet {
- padding: 15px;
- }
- .padding-left-15-tablet {
- padding-left: 15px;
- }
- .padding-right-15-tablet {
- padding-right: 15px;
- }
- .padding-bottom-15-tablet {
- padding-bottom: 15px;
- }
- .padding-top-15-tablet {
- padding-top: 15px;
- }
- .padding-20-tablet {
- padding: 20px;
- }
- .padding-left-20-tablet {
- padding-left: 20px;
- }
- .padding-right-20-tablet {
- padding-right: 20px;
- }
- .padding-bottom-20-tablet {
- padding-bottom: 20px;
- }
- .padding-top-20-tablet {
- padding-top: 20px;
- }
-}
-@media only screen and (max-width: 599px) {
- .padding-0-mobile {
- padding: 0px;
- }
- .padding-left-0-mobile {
- padding-left: 0px;
- }
- .padding-right-0-mobile {
- padding-right: 0px;
- }
- .padding-bottom-0-mobile {
- padding-bottom: 0px;
- }
- .padding-top-0-mobile {
- padding-top: 0px;
- }
- .padding-5-mobile {
- padding: 5px;
- }
- .padding-left-5-mobile {
- padding-left: 5px;
- }
- .padding-right-5-mobile {
- padding-right: 5px;
- }
- .padding-bottom-5-mobile {
- padding-bottom: 5px;
- }
- .padding-top-5-mobile {
- padding-top: 5px;
- }
- .padding-10-mobile {
- padding: 10px;
- }
- .padding-left-10-mobile {
- padding-left: 10px;
- }
- .padding-right-10-mobile {
- padding-right: 10px;
- }
- .padding-bottom-10-mobile {
- padding-bottom: 10px;
- }
- .padding-top-10-mobile {
- padding-top: 10px;
- }
- .padding-15-mobile {
- padding: 15px;
- }
- .padding-left-15-mobile {
- padding-left: 15px;
- }
- .padding-right-15-mobile {
- padding-right: 15px;
- }
- .padding-bottom-15-mobile {
- padding-bottom: 15px;
- }
- .padding-top-15-mobile {
- padding-top: 15px;
- }
- .padding-20-mobile {
- padding: 20px;
- }
- .padding-left-20-mobile {
- padding-left: 20px;
- }
- .padding-right-20-mobile {
- padding-right: 20px;
- }
- .padding-bottom-20-mobile {
- padding-bottom: 20px;
- }
- .padding-top-20-mobile {
- padding-top: 20px;
- }
-}
-.font-size-10 {
- font-size: 10px;
-}
-.font-size-14 {
- font-size: 14px;
-}
-.font-size-18 {
- font-size: 18px;
-}
-.font-size-22 {
- font-size: 22px;
-}
-.font-size-26 {
- font-size: 26px;
-}
-.font-size-20 {
- font-size: 20px;
-}
-.font-size-16 {
- font-size: 16px;
-}
-.font-size-13 {
- font-size: 13px;
-}
-.font-size-12 {
- font-size: 12px;
-}
-.font-size-11 {
- font-size: 11px;
-}
-.display-block {
- display: block;
-}
-.display-inline {
- display: inline;
-}
-.display-inline-block {
- display: inline-block;
-}
-.display-none {
- display: none;
-}
-@media only screen and (max-width: 767px) {
- .display-block-tablet {
- display: block;
- }
- .display-inline-tablet {
- display: inline;
- }
- .display-inline-block-tablet {
- display: inline-block;
- }
- .display-none-tablet {
- display: none;
- }
-}
-@media only screen and (max-width: 599px) {
- .display-block-mobile {
- display: block;
- }
- .display-inline-mobile {
- display: inline;
- }
- .display-inline-block-mobile {
- display: inline-block;
- }
- .display-none-mobile {
- display: none;
- }
-}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/admin/libs/sprites.less b/src/Shopsys/ShopBundle/Resources/styles/admin/libs/sprites.less
deleted file mode 100644
index 07156d555..000000000
--- a/src/Shopsys/ShopBundle/Resources/styles/admin/libs/sprites.less
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-Icon classes can be used entirely standalone. They are named after their original file names.
-
-Example usage in HTML:
-
-`display: block` sprite:
-
-
-To change `display` (e.g. `display: inline-block;`), we suggest using a common CSS class:
-
-// CSS
-.icon {
- display: inline-block;
-}
-
-// HTML
-
-*/
-.sprite.sprite-level {
- background-image: url(../images/sprites/sprite.png?v=1520530682155);
- background-position: -58px -78px;
- width: 5px;
- height: 7px;
-}
-.sprite.sprite-logo {
- background-image: url(../images/sprites/sprite.png?v=1520530682155);
- background-position: 0px 0px;
- width: 107px;
- height: 28px;
-}
-.sprite.sprite-star {
- background-image: url(../images/sprites/sprite.png?v=1520530682155);
- background-position: 0px -78px;
- width: 8px;
- height: 8px;
-}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/admin/libs/svg.less b/src/Shopsys/ShopBundle/Resources/styles/admin/libs/svg.less
deleted file mode 100644
index c4e821e1f..000000000
--- a/src/Shopsys/ShopBundle/Resources/styles/admin/libs/svg.less
+++ /dev/null
@@ -1,362 +0,0 @@
-// Generated by grunt-webfont
-
-
-@font-face {
- font-family:"svg";
- src:url("../fonts/svg.eot?2bba019184072544eb9d96061eb514c0");
- src:url("../fonts/svg.eot?#iefix") format("embedded-opentype"),
- url("../fonts/svg.woff?2bba019184072544eb9d96061eb514c0") format("woff"),
- url("../fonts/svg.ttf?2bba019184072544eb9d96061eb514c0") format("truetype"),
- url("../fonts/svg.svg?2bba019184072544eb9d96061eb514c0#svg") format("svg");
- font-weight:normal;
- font-style:normal;
-}
-
-.svg {
- &:before {
- font-family:"svg";
- }
- display:inline-block;
- vertical-align:middle;
- line-height:1;
- font-weight:normal;
- font-style:normal;
- speak:none;
- text-decoration:inherit;
- text-transform:none;
- text-rendering:auto;
- -webkit-font-smoothing:antialiased;
- -moz-osx-font-smoothing:grayscale;
-}
-
-
-// Icons
-
-.svg-arrow-back {
- &:before {
- content:"\f101";
- }
-}
-
-
-.svg-arrow-down {
- &:before {
- content:"\f102";
- }
-}
-
-
-.svg-arrow-left {
- &:before {
- content:"\f103";
- }
-}
-
-
-.svg-arrow-right {
- &:before {
- content:"\f104";
- }
-}
-
-
-.svg-arrow-simple {
- &:before {
- content:"\f105";
- }
-}
-
-
-.svg-arrow-strong {
- &:before {
- content:"\f106";
- }
-}
-
-
-.svg-arrow-thin {
- &:before {
- content:"\f107";
- }
-}
-
-
-.svg-arrow-up {
- &:before {
- content:"\f108";
- }
-}
-
-
-.svg-arrow {
- &:before {
- content:"\f109";
- }
-}
-
-
-.svg-calendar-3 {
- &:before {
- content:"\f10a";
- }
-}
-
-
-.svg-cart {
- &:before {
- content:"\f10b";
- }
-}
-
-
-.svg-chart-piece {
- &:before {
- content:"\f10c";
- }
-}
-
-
-.svg-checked {
- &:before {
- content:"\f10d";
- }
-}
-
-
-.svg-circle-cross {
- &:before {
- content:"\f10e";
- }
-}
-
-
-.svg-circle-plus {
- &:before {
- content:"\f10f";
- }
-}
-
-
-.svg-circle-remove {
- &:before {
- content:"\f110";
- }
-}
-
-
-.svg-delete {
- &:before {
- content:"\f111";
- }
-}
-
-
-.svg-document-copy {
- &:before {
- content:"\f112";
- }
-}
-
-
-.svg-download {
- &:before {
- content:"\f113";
- }
-}
-
-
-.svg-file-all {
- &:before {
- content:"\f114";
- }
-}
-
-
-.svg-file-excel {
- &:before {
- content:"\f115";
- }
-}
-
-
-.svg-file-image {
- &:before {
- content:"\f116";
- }
-}
-
-
-.svg-file-pdf {
- &:before {
- content:"\f117";
- }
-}
-
-
-.svg-file-word {
- &:before {
- content:"\f118";
- }
-}
-
-
-.svg-file-xml {
- &:before {
- content:"\f119";
- }
-}
-
-
-.svg-flag {
- &:before {
- content:"\f11a";
- }
-}
-
-
-.svg-forward-page {
- &:before {
- content:"\f11b";
- }
-}
-
-
-.svg-gear {
- &:before {
- content:"\f11c";
- }
-}
-
-
-.svg-house {
- &:before {
- content:"\f11d";
- }
-}
-
-
-.svg-info {
- &:before {
- content:"\f11e";
- }
-}
-
-
-.svg-invisible {
- &:before {
- content:"\f11f";
- }
-}
-
-
-.svg-letter {
- &:before {
- content:"\f120";
- }
-}
-
-
-.svg-light-bulb {
- &:before {
- content:"\f121";
- }
-}
-
-
-.svg-move {
- &:before {
- content:"\f122";
- }
-}
-
-
-.svg-pencil {
- &:before {
- content:"\f123";
- }
-}
-
-
-.svg-person-door-man {
- &:before {
- content:"\f124";
- }
-}
-
-
-.svg-person-man {
- &:before {
- content:"\f125";
- }
-}
-
-
-.svg-person-public {
- &:before {
- content:"\f126";
- }
-}
-
-
-.svg-phone {
- &:before {
- content:"\f127";
- }
-}
-
-
-.svg-print {
- &:before {
- content:"\f128";
- }
-}
-
-
-.svg-question {
- &:before {
- content:"\f129";
- }
-}
-
-
-.svg-search {
- &:before {
- content:"\f12a";
- }
-}
-
-
-.svg-support {
- &:before {
- content:"\f12b";
- }
-}
-
-
-.svg-tag {
- &:before {
- content:"\f12c";
- }
-}
-
-
-.svg-trash {
- &:before {
- content:"\f12d";
- }
-}
-
-
-.svg-visible {
- &:before {
- content:"\f12e";
- }
-}
-
-
-.svg-warning {
- &:before {
- content:"\f12f";
- }
-}
-
diff --git a/src/Shopsys/ShopBundle/Resources/styles/admin/main.less b/src/Shopsys/ShopBundle/Resources/styles/admin/main.less
new file mode 100644
index 000000000..e12450adb
--- /dev/null
+++ b/src/Shopsys/ShopBundle/Resources/styles/admin/main.less
@@ -0,0 +1,5 @@
+// load main.less file from framework, variable frameworkResourcesDirectory is set in gruntfile.js
+@import "@{frameworkResourcesDirectory}/styles/admin/main.less";
+
+// file for temporary styles eg. added by a programmer
+@import "todo.less";
diff --git a/src/Shopsys/ShopBundle/Resources/styles/admin/todo.less b/src/Shopsys/ShopBundle/Resources/styles/admin/todo.less
new file mode 100644
index 000000000..b1e06278b
--- /dev/null
+++ b/src/Shopsys/ShopBundle/Resources/styles/admin/todo.less
@@ -0,0 +1 @@
+// file for temporary styles eg. added by a programmer
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/cart-bottom.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/cart-bottom.less
index bead6f22f..74aac0521 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/cart-bottom.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/cart-bottom.less
@@ -4,11 +4,6 @@
@media @query-lg {
width: 100%;
display: flex;
-
- .is-no-flex & {
- display: block;
- .clearfix();
- }
}
&__info {
@@ -18,11 +13,6 @@
@media @query-lg {
flex: 1;
text-align: left;
-
- .is-no-flex & {
- float: left;
- width: 100%/2;
- }
}
}
@@ -32,11 +22,6 @@
@media @query-lg {
flex: 1;
text-align: right;
-
- .is-no-flex & {
- float: right;
- width: 100%/2;
- }
}
}
}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/cart-empty.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/cart-empty.less
index e0c3529a1..b36c44247 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/cart-empty.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/cart-empty.less
@@ -12,12 +12,6 @@
margin-bottom: @margin-gap*2;
}
- .is-no-flex & {
- display: block;
-
- font-size: 0;
- }
-
&__image {
margin: 0 auto @margin-gap auto;
margin-bottom: @margin-gap;
@@ -25,12 +19,6 @@
text-align: center;
opacity: .5;
- .is-no-flex & {
- display: inline-block;
- vertical-align: middle;
- width: 100%/2;
- }
-
@media @query-lg {
padding-right: @box-cart-empty-gap-desktop;
width: 200px;
@@ -44,12 +32,6 @@
font-size: 12px;
- .is-no-flex & {
- display: inline-block;
- vertical-align: middle;
- width: 100%/2;
- }
-
@media @query-md {
font-size: 14px;
}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/chooser.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/chooser.less
index c96dda826..ec53f6c0b 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/chooser.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/chooser.less
@@ -20,61 +20,39 @@
align-items: flex-start;
padding: @box-chooser-item-padding;
width: 100%;
-
- .is-no-flex & {
- display: block;
-
- .clearfix();
- }
+ cursor: pointer;
&--transport {
flex-wrap: wrap;
}
&__check {
- flex: 0 @box-chooser-check-width;
-
- .is-no-flex & {
- float: left;
- width: @box-chooser-check-width;
- }
+ width: @box-chooser-check-width;
+ position: relative;
+ top: -6px;
}
&__image {
- flex: 0 @box-chooser-image-width;
+ width: @box-chooser-image-width;
text-align: center;
- .is-no-flex & {
- float: left;
- width: @box-chooser-image-width;
- }
}
&__title {
flex: 1;
padding: 0 10px;
- .is-no-flex & {
- float: left;
- width: @box-chooser-title-width;
- }
-
.box-chooser__item--inactive & {
color: @color-inactive;
}
}
&__price {
- flex: 0 @box-chooser-price-width;
+ width: @box-chooser-price-width;
text-align: right;
font-weight: bold;
- .is-no-flex & {
- float: right;
- width: @box-chooser-price-width;
- }
-
.box-chooser__item--active & {
color: @color-price-main;
}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/cookies.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/cookies.less
index 83db922dd..4651467be 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/cookies.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/cookies.less
@@ -35,11 +35,6 @@
align-items: center;
padding: 5px @box-cookies-padding;
width: 100%;
-
- .is-no-flex & {
- display: block;
- text-align: center;
- }
}
&__text {
@@ -47,20 +42,10 @@
@media @query-vl {
white-space: nowrap;
}
-
- .is-no-flex & {
- display: inline-block;
- vertical-align: middle;
- }
}
&__btn {
padding-left: 10px;
white-space: nowrap;
-
- .is-no-flex & {
- display: inline-block;
- vertical-align: middle;
- }
}
}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/error-page.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/error-page.less
index 54dc4f38e..558e9f61a 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/error-page.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/error-page.less
@@ -3,25 +3,11 @@
align-items: center;
flex-wrap: wrap;
- .is-no-flex & {
- display: block;
- .clearfix();
- }
-
&__text {
- flex: 0 100%;
-
- .is-no-flex & {
- width: 100%;
- }
+ width: 100%;
@media @query-md {
flex: 1;
-
- .is-no-flex & {
- float: left;
- width: 100%/2;
- }
}
&__main {
@@ -30,20 +16,11 @@
}
&__image {
- flex: 0 100%;
+ width: 100%;
text-align: center;
- .is-no-flex & {
- width: 100%;
- }
-
@media @query-md {
flex: 1;
-
- .is-no-flex & {
- float: left;
- width: 100%/2;
- }
}
}
}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/order.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/order.less
index 16ca3cd60..a479d45bd 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/order.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/order.less
@@ -5,24 +5,13 @@
@media @query-lg {
display: flex;
width: 100%;
-
- .is-no-flex & {
- display: block;
-
- .clearfix();
- }
}
&__info {
margin-bottom: @margin-gap;
@media @query-lg {
- flex: 0 @box-order-info-width;
-
- .is-no-flex & {
- float: left;
- width: @box-order-info-width;
- }
+ width: @box-order-info-width;
}
}
@@ -42,13 +31,8 @@
margin-bottom: @margin-gap;
@media @query-lg {
- flex: 0 @box-order-cart-width;
+ width: @box-order-cart-width;
padding-left: 20px;
-
- .is-no-flex & {
- float: right;
- width: @box-order-cart-width;
- }
}
@media @query-vl {
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/progress.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/progress.less
index 8354b10aa..a6e84e96b 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/progress.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/box/progress.less
@@ -12,12 +12,6 @@
margin-bottom: @margin-gap*2;
}
- .is-no-flex & {
- display: block;
-
- .clearfix();
- }
-
&__item {
display: flex;
flex: 1;
@@ -27,12 +21,6 @@
border-left: 1px solid @color-f;
color: @color-9;
- .is-no-flex & {
- display: block;
- float: left;
- width: 100%/@box-progress-steps-count;
- }
-
&:first-child {
border-left: 0;
}
@@ -57,10 +45,6 @@
font-size: 12px;
- .is-no-flex & {
- display: block;
- }
-
@media @query-lg {
font-size: 14px;
}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/form/choice.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/form/choice.less
index f953f5312..e36c51138 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/form/choice.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/form/choice.less
@@ -1,7 +1,6 @@
.form-choice {
position: relative;
display: block;
- padding-left: 20px;
line-height: 20px;
margin-right: 20px;
margin-bottom: 5px;
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/in/action.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/in/action.less
index 7d7d4ae87..9784ad61b 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/in/action.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/in/action.less
@@ -7,22 +7,12 @@
width: 100%;
display: flex;
align-items: center;
-
- .is-no-flex & {
- display: block;
- .clearfix();
- }
}
&__left {
@media @query-md {
order: 1;
flex: 1;
-
- .is-no-flex & {
- float: left;
- width: 100%/2;
- }
}
}
@@ -34,11 +24,6 @@
flex: 1;
margin-bottom: 0;
text-align: right;
-
- .is-no-flex & {
- float: right;
- width: 100%/2;
- }
}
}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/categories.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/categories.less
index b57e0dd62..cbf968bf6 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/categories.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/categories.less
@@ -60,26 +60,12 @@
right: 0;
}
}
-
- .is-no-flex & {
- display: block;
-
- font-size: 0;
- }
}
&__image {
- flex: 0 @list-categories-item-image-width;
+ width: @list-categories-item-image-width;
padding: @list-categories-item-padding 0 @list-categories-item-padding @list-categories-item-padding;
text-align: center;
-
-
-
- .is-no-flex & {
- display: inline-block;
- vertical-align: middle;
- width: @list-categories-item-image-width;
- }
}
&__title {
@@ -91,12 +77,6 @@
font-size: 18px;
font-weight: bold;
- .is-no-flex & {
- display: inline-block;
- vertical-align: middle;
- width: ~"calc(100% - @{list-categories-item-image-width})";
- }
-
&__count {
color: @color-8;
}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/images.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/images.less
index e8426b88c..996a68b6b 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/images.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/images.less
@@ -10,24 +10,24 @@
flex-wrap: wrap;
&__item {
- flex: 0 100%/2;
+ width: 100%/2;
padding-left: @list-images-gap;
margin-bottom: @list-images-gap;
@media @query-sm {
- flex: 0 100%/3;
+ width: 100%/3;
}
@media @query-md {
- flex: 0 100%/3;
+ width: 100%/3;
}
@media @query-vl {
- flex: 0 100%/5;
+ width: 100%/5;
}
@media @query-xl {
- flex: 0 100%/6;
+ width: 100%/6;
}
&__block {
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/products-line.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/products-line.less
index 38e7fdf90..4a5507da1 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/products-line.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/products-line.less
@@ -53,17 +53,11 @@
right: 0;
}
}
-
- .is-no-flex & {
- display: block;
-
- .clearfix();
- }
}
&__position {
display: flex;
- flex: 0 @list-products-line-item-postion-width;
+ width: @list-products-line-item-postion-width;
align-items: center;
justify-content: center;
@@ -72,23 +66,13 @@
font-size: 18px;
font-weight: bold;
font-family: @font-headline;
-
- .is-no-flex & {
- float: left;
- width: @list-products-line-item-postion-width;
- }
}
&__image {
- flex: 0 @list-products-line-item-image-width;
+ width: @list-products-line-item-image-width;
padding-right: @list-products-line-item-gap;
text-align: center;
- .is-no-flex & {
- float: left;
- width: @list-products-line-item-image-width;
- }
-
img {
display: block;
}
@@ -101,33 +85,13 @@
font-size: 14px;
font-family: @font-base;
-
- .is-no-flex & {
- float: left;
- width: @list-products-line-item-title-width-mobile;
-
- @media @query-md {
- width: @list-products-line-item-title-width;
- }
- }
}
&__price {
- flex: 0 100%;
-
- .is-no-flex & {
- width: 100%;
- clear: both;
- }
+ width: 100%;
@media @query-md {
- flex: 0 @list-products-line-item-price-width;
-
- .is-no-flex & {
- float: left;
- width: @list-products-line-item-price-width;
- clear: none;
- }
+ width: @list-products-line-item-price-width;
}
&__item {
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/products.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/products.less
index dd9e8a10c..81e148d4e 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/products.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/list/products.less
@@ -18,17 +18,15 @@
.list-products {
.reset-ul();
-
+ width: 100%;
display: flex;
flex-wrap: wrap;
align-items: stretch;
margin-bottom: @margin-gap;
margin-left: -@list-products-item-gap;
- .is-no-flex & {
- display: block;
-
- .clearfix();
+ .web__main--with-panel {
+ margin-left: -@list-products-item-gap;
}
.box-detail__accesories-wrap & {
@@ -37,80 +35,43 @@
&__item {
display: flex;
- flex: 0 100%;
+ width: 100%;
flex-direction: column;
margin-bottom: @margin-gap;
padding-left: @list-products-item-gap;
- .is-no-flex & {
- display: block;
- float: left;
- }
-
@media @query-sm {
- flex: 0 100%/@list-products-line-count-sm;
-
- .is-no-flex & {
- width: 100%/@list-products-line-count-sm;
- }
+ width: 100%/@list-products-line-count-sm;
}
@media @query-md {
- flex: 0 100%/@list-products-line-count-md;
-
- .is-no-flex & {
- width: 100%/@list-products-line-count-md;
- }
+ width: 100%/@list-products-line-count-md;
}
@media @query-lg {
- flex: 0 100%/@list-products-line-count-lg;
+ width: 100%/@list-products-line-count-lg;
position: relative;
-
- .is-no-flex & {
- width: 100%/@list-products-line-count-lg;
- }
}
@media @query-vl {
- flex: 0 100%/@list-products-line-count-vl;
-
- .is-no-flex & {
- width: 100%/@list-products-line-count-vl;
- }
+ width: 100%/@list-products-line-count-vl;
}
.list-products--in-window & {
@media @query-sm {
- flex: 0 100%/@list-products-line-in-window-count-sm;
-
- .is-no-flex & {
- width: 100%/@list-products-line-in-window-count-sm;
- }
+ width: 100%/@list-products-line-in-window-count-sm;
}
@media @query-md {
- flex: 0 100%/@list-products-line-in-window-count-md;
-
- .is-no-flex & {
- width: 100%/@list-products-line-in-window-count-md;
- }
+ width: 100%/@list-products-line-in-window-count-md;
}
@media @query-lg {
- flex: 0 100%/@list-products-line-in-window-count-lg;
-
- .is-no-flex & {
- width: 100%/@list-products-line-in-window-count-lg;
- }
+ width: 100%/@list-products-line-in-window-count-lg;
}
@media @query-vl {
- flex: 0 100%/@list-products-line-in-window-count-vl;
-
- .is-no-flex & {
- width: 100%/@list-products-line-in-window-count-vl;
- }
+ width: 100%/@list-products-line-in-window-count-vl;
}
}
@@ -120,10 +81,6 @@
flex-direction: column;
position: relative;
padding: @list-products-item-padding;
-
- .is-no-flex & {
- display: block;
- }
}
&__block {
@@ -135,10 +92,6 @@
background-color: @color-f;
text-decoration: none;
- .is-no-flex & {
- display: block;
- }
-
&:hover {
text-decoration: none;
}
@@ -173,10 +126,6 @@
font-weight: normal;
transition: @transition color;
- .is-no-flex & {
- .eliminate-lines(@list-products-item-title-line-height, 2);
- }
-
.list-products__item__block:hover & {
color: @color-link-hover;
}
@@ -204,14 +153,8 @@
padding-bottom: @list-products-item-action-height;
}
- .is-no-flex & {
- display: block;
-
- .clearfix();
- }
-
&__description {
- flex: 0 100%;
+ width: 100%;
margin: 0;
font-size: 12px;
@@ -225,14 +168,9 @@
}
&__price {
- flex: 0 100%/2;
+ width: 100%/2;
padding-right: 5px;
- .is-no-flex & {
- float: left;
- width: 100%/2;
- }
-
&__item {
display: block;
@@ -248,16 +186,11 @@
}
&__availability {
- flex: 0 100%/2;
+ width: 100%/2;
padding-left: 5px;
text-align: right;
font-size: 12px;
-
- .is-no-flex & {
- float: right;
- width: 100%/2;
- }
}
}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/table/variants.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/table/variants.less
index b6f1de6b4..ec8822166 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/table/variants.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/table/variants.less
@@ -51,11 +51,11 @@
border: 1px solid @color-border;
tbody & {
- flex: 0 calc( ~"100% / 2 - @{table-variants-item-gap-mobile}" );
+ width: calc( ~"100% / 2 - @{table-variants-item-gap-mobile}" );
margin-left: @table-variants-item-gap-mobile;
@media @query-mobile-xs-nested {
- flex: 0 100%;
+ width: 100%;
margin-left: 0;
}
}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/window/popup.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/window/popup.less
index c5cb2d8fc..f7bf7c5ca 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/components/window/popup.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/components/window/popup.less
@@ -27,12 +27,12 @@
transition: @transition transform;
border-radius: @radius;
- .is-no-flex &, .is-safari &, .is-flex-popup-height-issue-detected & {
+ .is-safari &, .is-flex-popup-height-issue-detected & {
display: block;
.clearfix();
}
- .is-no-flex &, .is-safari &, .is-flex-popup-height-issue-detected & {
+ .is-safari &, .is-flex-popup-height-issue-detected & {
display: block;
}
@@ -110,11 +110,6 @@
align-items: center;
justify-content: space-between;
}
-
- .is-no-flex & {
- display: block;
- .clearfix();
- }
}
&__btn {
@@ -147,9 +142,6 @@
}
.window-popup__actions--multiple-buttons & {
- .is-no-flex & {
- float: left;
- }
}
}
@@ -162,9 +154,6 @@
}
.window-popup__actions--multiple-buttons & {
- .is-no-flex & {
- float: right;
- }
}
}
}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/core/form/custom-inputs.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/core/form/custom-inputs.less
new file mode 100644
index 000000000..3f6126352
--- /dev/null
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/core/form/custom-inputs.less
@@ -0,0 +1,117 @@
+@custom-inputs-margin-left: 30px;
+@custom-inputs-filter-margin-left: 25px;
+@custom-inputs-font-size: @font-size;
+@custom-inputs-icon-size: 18px;
+@custom-inputs-link-color: @color-base;
+@custom-inputs-link-color-hover: @color-orange;
+
+input[type=checkbox].css-checkbox, input[type=radio].css-checkbox,
+input[type=checkbox].css-radio, input[type=radio].css-radio {
+ position: absolute;
+ height: 1px;
+ width: 1px;
+ left: -1000px;
+ margin: -1px;
+ padding: 0;
+ z-index: -1000;
+ overflow: hidden;
+
+ clip: rect(0 0 0 0);
+ border: 0;
+
+ & + .css-checkbox__image, & + .css-radio__image {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+ padding-left: @custom-inputs-margin-left;
+ line-height: @custom-inputs-font-size;
+
+ font-size: @custom-inputs-font-size;
+ cursor: pointer;
+
+ &:before {
+ content: "";
+ position: absolute;
+ display: inline-block;
+ top: -3px;
+ left: 0;
+ width: @custom-inputs-icon-size;
+ height: @custom-inputs-icon-size;
+
+ background-repeat: no-repeat;
+ background-position: left top;
+ background-size: 3*@custom-inputs-icon-size 2*@custom-inputs-icon-size;
+ }
+
+ &:hover {
+ &:before {
+ background-position-x: center;
+ }
+ }
+ }
+
+ &:focus, &:active {
+ & + .css-checkbox__image, & + .css-radio__image {
+ &:before {
+ background-position-x: center;
+ }
+ }
+ }
+
+ &:checked {
+ & + .css-checkbox__image, & + .css-radio__image {
+ &:before {
+ background-position-y: bottom;
+ }
+ }
+ }
+
+ &:disabled {
+ & + .css-checkbox__image, & + .css-radio__image {
+ &:before {
+ cursor: no-drop;
+ background-position-x: right;
+ }
+ }
+
+ & ~ .css-checkbox__image, & ~ .css-radio__image {
+ cursor: no-drop;
+ color: @color-inactive;
+ }
+ }
+
+ &.display-none, &[style*="display: none"], &[style*="display:none"] {
+ & ~ .css-checkbox__image, & ~ .css-radio__image {
+ display: none;
+ }
+ }
+}
+
+.css-checkbox__image, .css-radio__image {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.css-checkbox__image {
+ .css-checkbox__image__link {
+ color: @custom-inputs-link-color;
+
+ &:hover, &:focus, &:active {
+ color: @custom-inputs-link-color-hover;
+ }
+ }
+
+ &:before {
+ background-image: url('@{path-design}/custom_checkbox.png');
+ }
+}
+
+.css-radio__image {
+ &:before {
+ background-image: url('@{path-design}/custom_radio.png');
+ }
+}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/core/variables.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/core/variables.less
index 39943b4f4..1dd9a912b 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/core/variables.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/core/variables.less
@@ -16,7 +16,9 @@
// Layout
@web-width: 1430px;
@web-padding: 20px;
+@web-padding-small: 10px;
@web-panel-width: 300px;
+@web-panel-gap: 20px;
@web-header-mobile-dropdown-position: 170px;
@margin-gap: 20px;
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/layout/footer.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/layout/footer.less
index 3a6c70531..ffc37d70a 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/layout/footer.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/layout/footer.less
@@ -46,7 +46,7 @@
&__form {
@media @query-lg {
- flex: 0 @footer-newsletter-form-width;
+ width: @footer-newsletter-form-width;
}
.form-choice__label {
@@ -79,7 +79,7 @@
width: 100%;
@media @query-sm {
- flex: 0 @footer-newsletter-button-width;
+ width: @footer-newsletter-button-width;
}
}
}
@@ -112,7 +112,7 @@
margin-bottom: 10px;
@media @query-lg {
- flex: 0 100%/2;
+ width: 100%/2;
margin-bottom: 0;
}
}
@@ -127,7 +127,7 @@
&__articles {
@media @query-lg {
- flex: 0 100%/2;
+ width: 100%/2;
text-align: right;
}
}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/layout/header/search.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/layout/header/search.less
index a73102d92..caba8bd37 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/layout/header/search.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/layout/header/search.less
@@ -8,21 +8,10 @@
&__form {
display: flex;
- .is-no-flex & {
- display: block;
-
- .clearfix();
- }
-
&__input {
flex: 1;
position: relative;
- .is-no-flex & {
- float: left;
- width: ~"calc(100% - @{search-button-width})";
- }
-
.input {
padding-left: 30px;
width: 100%;
@@ -32,14 +21,10 @@
}
&__button {
- flex: 0 @search-button-width;
+ width: @search-button-width;
padding: 0;
height: @search-form-height;
line-height: @search-form-height;
-
- .is-no-flex & {
- width: @search-button-width;
- }
}
&__icon {
@@ -122,7 +107,7 @@
}
&__image {
- flex: 0 @search-img-size;
+ width: @search-img-size;
position: relative;
height: @search-img-size;
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/layout/layout.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/layout/layout.less
index 107bec518..4e2e5463b 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/layout/layout.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/layout/layout.less
@@ -27,7 +27,7 @@ img {
}
}
- .is-no-flex &, .is-safari & {
+ .is-safari & {
display: block;
}
@@ -65,7 +65,7 @@ img {
}
&__footer {
- flex: 0;
+ width:;
background: @web-footer-background;
transition: @transition padding;
@@ -89,7 +89,11 @@ img {
}
&__container {
- padding: 0 @web-padding/2;
+ padding: 0 @web-padding-small;
+
+ @media @query-vl {
+ padding: 0 @web-padding;
+ }
@media @query-xl {
margin: 0 auto;
@@ -97,16 +101,36 @@ img {
width: @web-width;
max-width: 100%;
}
+
+ &--no-padding {
+ padding: 0;
+ }
+
+ .web__main--with-panel & {
+ padding: 0;
+ width: 100%;
+ }
}
&__main {
padding-bottom: 20px;
&--with-panel {
+ padding: 0 @web-padding-small;
+
@media @query-lg {
display: flex;
width: 100%;
}
+
+ @media @query-vl {
+ padding: 0 @web-padding;
+ }
+
+ @media @query-xl {
+ width: @web-width;
+ margin: 0 auto;
+ }
}
&__content {
@@ -127,7 +151,7 @@ img {
@media @query-lg {
display: block;
order: 1;
- padding-right: 40px;
+ padding-right: @web-panel-gap;
width: @web-panel-width;
flex-shrink: 0;
diff --git a/src/Shopsys/ShopBundle/Resources/styles/front/common/main.less b/src/Shopsys/ShopBundle/Resources/styles/front/common/main.less
index 60f41e4ad..56a48bb3a 100644
--- a/src/Shopsys/ShopBundle/Resources/styles/front/common/main.less
+++ b/src/Shopsys/ShopBundle/Resources/styles/front/common/main.less
@@ -10,6 +10,7 @@
//// Forms
@import "core/form/input.less";
+@import "core/form/custom-inputs.less";
@import "core/form/btn.less";
// Layout
diff --git a/src/Shopsys/ShopBundle/Resources/styles/styleguide/main.less b/src/Shopsys/ShopBundle/Resources/styles/styleguide/main.less
new file mode 100644
index 000000000..301b292a9
--- /dev/null
+++ b/src/Shopsys/ShopBundle/Resources/styles/styleguide/main.less
@@ -0,0 +1,4 @@
+@import (inline) "structure.css";
+@import (inline) "styleguide.css";
+@import (inline) "plugins/codemirror/codemirror.minified.css";
+@import (inline) "plugins/codemirror/theme/hopscotch.css";
diff --git a/src/Shopsys/ShopBundle/Resources/styles/styleguide/plugins/codemirror/codemirror.minified.css b/src/Shopsys/ShopBundle/Resources/styles/styleguide/plugins/codemirror/codemirror.minified.css
new file mode 100644
index 000000000..5a304fa3b
--- /dev/null
+++ b/src/Shopsys/ShopBundle/Resources/styles/styleguide/plugins/codemirror/codemirror.minified.css
@@ -0,0 +1 @@
+.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0}.CodeMirror-simplescroll-horizontal div,.CodeMirror-simplescroll-vertical div{position:absolute;background:#ccc;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #bbb;border-radius:2px}.CodeMirror-simplescroll-horizontal,.CodeMirror-simplescroll-vertical{position:absolute;z-index:6;background:#eee}.CodeMirror-simplescroll-horizontal{bottom:0;left:0;height:8px}.CodeMirror-simplescroll-horizontal div{bottom:0;height:100%}.CodeMirror-simplescroll-vertical{right:0;top:0;width:8px}.CodeMirror-simplescroll-vertical div{right:0;width:100%}.CodeMirror-overlayscroll .CodeMirror-gutter-filler,.CodeMirror-overlayscroll .CodeMirror-scrollbar-filler{display:none}.CodeMirror-overlayscroll-horizontal div,.CodeMirror-overlayscroll-vertical div{position:absolute;background:#bcd;border-radius:3px}.CodeMirror-overlayscroll-horizontal,.CodeMirror-overlayscroll-vertical{position:absolute;z-index:6}.CodeMirror-overlayscroll-horizontal{bottom:0;left:0;height:6px}.CodeMirror-overlayscroll-horizontal div{bottom:0;height:100%}.CodeMirror-overlayscroll-vertical{right:0;top:0;width:6px}.CodeMirror-overlayscroll-vertical div{right:0;width:100%}.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,.2);box-shadow:2px 3px 5px rgba(0,0,0,.2);border-radius:3px;border:1px solid silver;background:#fff;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/styleguide/plugins/codemirror/theme/hopscotch.css b/src/Shopsys/ShopBundle/Resources/styles/styleguide/plugins/codemirror/theme/hopscotch.css
new file mode 100644
index 000000000..0e7a70cf6
--- /dev/null
+++ b/src/Shopsys/ShopBundle/Resources/styles/styleguide/plugins/codemirror/theme/hopscotch.css
@@ -0,0 +1,34 @@
+/*
+
+ Name: Hopscotch
+ Author: Jan T. Sott
+
+ CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
+ Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
+
+*/
+
+.cm-s-hopscotch.CodeMirror {background: #322931; color: #d5d3d5; height:auto;}
+.cm-s-hopscotch div.CodeMirror-selected {background: #433b42 !important;}
+.cm-s-hopscotch .CodeMirror-gutters {background: #322931; border-right: 0px;}
+.cm-s-hopscotch .CodeMirror-linenumber {color: #797379;}
+.cm-s-hopscotch .CodeMirror-cursor {border-left: 1px solid #989498 !important;}
+
+.cm-s-hopscotch span.cm-comment {color: #b33508;}
+.cm-s-hopscotch span.cm-atom {color: #c85e7c;}
+.cm-s-hopscotch span.cm-number {color: #c85e7c;}
+
+.cm-s-hopscotch span.cm-property, .cm-s-hopscotch span.cm-attribute {color: #8fc13e;}
+.cm-s-hopscotch span.cm-keyword {color: #dd464c;}
+.cm-s-hopscotch span.cm-string {color: #fdcc59;}
+
+.cm-s-hopscotch span.cm-variable {color: #8fc13e;}
+.cm-s-hopscotch span.cm-variable-2 {color: #1290bf;}
+.cm-s-hopscotch span.cm-def {color: #fd8b19;}
+.cm-s-hopscotch span.cm-error {color: #989498;text-decoration: underline; text-decoration-color: red;}
+.cm-s-hopscotch span.cm-bracket {color: #d5d3d5;}
+.cm-s-hopscotch span.cm-tag {color: #dd464c;}
+.cm-s-hopscotch span.cm-link {color: #c85e7c;}
+
+.cm-s-hopscotch .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
+.cm-s-hopscotch .CodeMirror-activeline-background { background: #302020; }
diff --git a/src/Shopsys/ShopBundle/Resources/styles/styleguide/structure.css b/src/Shopsys/ShopBundle/Resources/styles/styleguide/structure.css
new file mode 100644
index 000000000..900458df2
--- /dev/null
+++ b/src/Shopsys/ShopBundle/Resources/styles/styleguide/structure.css
@@ -0,0 +1,2036 @@
+html {
+ font-family: sans-serif;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%
+}
+
+body {
+ margin: 0
+}
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block
+}
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block;
+ vertical-align: baseline
+}
+
+audio:not([controls]) {
+ display: none;
+ height: 0
+}
+
+[hidden],
+template {
+ display: none
+}
+
+a {
+ background-color: transparent
+}
+
+a:active,
+a:hover {
+ outline: 0
+}
+
+abbr[title] {
+ border-bottom: 1px dotted
+}
+
+b,
+strong {
+ font-weight: bold
+}
+
+dfn {
+ font-style: italic
+}
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0
+}
+
+mark {
+ background: #ff0;
+ color: #000
+}
+
+small {
+ font-size: 80%
+}
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline
+}
+
+sup {
+ top: -0.5em
+}
+
+sub {
+ bottom: -0.25em
+}
+
+img {
+ border: 0
+}
+
+svg:not(:root) {
+ overflow: hidden
+}
+
+figure {
+ margin: 1em 40px
+}
+
+hr {
+ box-sizing: content-box;
+ height: 0
+}
+
+pre {
+ overflow: auto
+}
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace, sans-serif;
+ font-size: 1em
+}
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit;
+ font: inherit;
+ margin: 0
+}
+
+button {
+ overflow: visible
+}
+
+button,
+select {
+ text-transform: none
+}
+
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button;
+ cursor: pointer
+}
+
+button[disabled],
+html input[disabled] {
+ cursor: default
+}
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0
+}
+
+input {
+ line-height: normal
+}
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box;
+ padding: 0
+}
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto
+}
+
+input[type="search"] {
+ -webkit-appearance: textfield;
+ box-sizing: content-box
+}
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none
+}
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em
+}
+
+legend {
+ border: 0;
+ padding: 0
+}
+
+textarea {
+ overflow: auto
+}
+
+optgroup {
+ font-weight: bold
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0
+}
+
+td,
+th {
+ padding: 0
+}
+
+meta.foundation-version {
+ font-family: "/5.4.7/";
+}
+
+meta.foundation-mq-small {
+ font-family: "/only screen/";
+ width: 0em
+}
+
+meta.foundation-mq-medium {
+ font-family: "/only screen and (min-width:40.063em)/";
+ width: 40.063em
+}
+
+meta.foundation-mq-large {
+ font-family: "/only screen and (min-width:64.063em)/";
+ width: 64.063em
+}
+
+meta.foundation-mq-xlarge {
+ font-family: "/only screen and (min-width:90.063em)/";
+ width: 90.063em
+}
+
+meta.foundation-mq-xxlarge {
+ font-family: "/only screen and (min-width:120.063em)/";
+ width: 120.063em
+}
+
+meta.foundation-data-attribute-namespace {
+ font-family: false
+}
+
+html,
+body {
+ height: 100%
+}
+
+* {
+ box-sizing: border-box
+}
+
+html,
+body {
+ font-size: 100%
+}
+
+.left {
+ float: left!important
+}
+
+.right {
+ float: right!important
+}
+
+.clearfix:before,
+.clearfix:after {
+ content: " ";
+ display: table
+}
+
+.clearfix:after {
+ clear: both
+}
+
+.hide {
+ display: none!important;
+ visibility: hidden
+}
+
+.invisible {
+ visibility: hidden
+}
+
+.row {
+ width: 100%;
+ margin-left: auto;
+ margin-right: auto;
+ margin-top: 0;
+ margin-bottom: 0;
+ max-width: 62.5em
+}
+
+.row:before,
+.row:after {
+ content: " ";
+ display: table
+}
+
+.row:after {
+ clear: both
+}
+
+.row.collapse>.column,
+.row.collapse>.columns {
+ padding-left: 0;
+ padding-right: 0
+}
+
+.row.collapse .row {
+ margin-left: 0;
+ margin-right: 0
+}
+
+.row .row {
+ width: auto;
+ margin-left: -0.9375em;
+ margin-right: -0.9375em;
+ margin-top: 0;
+ margin-bottom: 0;
+ max-width: none
+}
+
+.row .row:before,
+.row .row:after {
+ content: " ";
+ display: table
+}
+
+.row .row:after {
+ clear: both
+}
+
+.row .row.collapse {
+ width: auto;
+ margin: 0;
+ max-width: none
+}
+
+.row .row.collapse:before,
+.row .row.collapse:after {
+ content: " ";
+ display: table
+}
+
+.row .row.collapse:after {
+ clear: both
+}
+
+.column,
+.columns {
+ padding-left: 0.9375em;
+ padding-right: 0.9375em;
+ width: 100%;
+ float: left
+}
+
+[class*="column"]+[class*="column"]:last-child {
+ float: right
+}
+
+[class*="column"]+[class*="column"].end {
+ float: left
+}
+
+@media only screen {
+ .small-push-0 {
+ position: relative;
+ left: 0%;
+ right: auto
+ }
+ .small-pull-0 {
+ position: relative;
+ right: 0%;
+ left: auto
+ }
+ .small-push-1 {
+ position: relative;
+ left: 8.33333%;
+ right: auto
+ }
+ .small-pull-1 {
+ position: relative;
+ right: 8.33333%;
+ left: auto
+ }
+ .small-push-2 {
+ position: relative;
+ left: 16.66667%;
+ right: auto
+ }
+ .small-pull-2 {
+ position: relative;
+ right: 16.66667%;
+ left: auto
+ }
+ .small-push-3 {
+ position: relative;
+ left: 25%;
+ right: auto
+ }
+ .small-pull-3 {
+ position: relative;
+ right: 25%;
+ left: auto
+ }
+ .small-push-4 {
+ position: relative;
+ left: 33.33333%;
+ right: auto
+ }
+ .small-pull-4 {
+ position: relative;
+ right: 33.33333%;
+ left: auto
+ }
+ .small-push-5 {
+ position: relative;
+ left: 41.66667%;
+ right: auto
+ }
+ .small-pull-5 {
+ position: relative;
+ right: 41.66667%;
+ left: auto
+ }
+ .small-push-6 {
+ position: relative;
+ left: 50%;
+ right: auto
+ }
+ .small-pull-6 {
+ position: relative;
+ right: 50%;
+ left: auto
+ }
+ .small-push-7 {
+ position: relative;
+ left: 58.33333%;
+ right: auto
+ }
+ .small-pull-7 {
+ position: relative;
+ right: 58.33333%;
+ left: auto
+ }
+ .small-push-8 {
+ position: relative;
+ left: 66.66667%;
+ right: auto
+ }
+ .small-pull-8 {
+ position: relative;
+ right: 66.66667%;
+ left: auto
+ }
+ .small-push-9 {
+ position: relative;
+ left: 75%;
+ right: auto
+ }
+ .small-pull-9 {
+ position: relative;
+ right: 75%;
+ left: auto
+ }
+ .small-push-10 {
+ position: relative;
+ left: 83.33333%;
+ right: auto
+ }
+ .small-pull-10 {
+ position: relative;
+ right: 83.33333%;
+ left: auto
+ }
+ .small-push-11 {
+ position: relative;
+ left: 91.66667%;
+ right: auto
+ }
+ .small-pull-11 {
+ position: relative;
+ right: 91.66667%;
+ left: auto
+ }
+ .column,
+ .columns {
+ position: relative;
+ padding-left: 0.9375em;
+ padding-right: 0.9375em;
+ float: left
+ }
+ .small-1 {
+ width: 8.33333%
+ }
+ .small-2 {
+ width: 16.66667%
+ }
+ .small-3 {
+ width: 25%
+ }
+ .small-4 {
+ width: 33.33333%
+ }
+ .small-5 {
+ width: 41.66667%
+ }
+ .small-6 {
+ width: 50%
+ }
+ .small-7 {
+ width: 58.33333%
+ }
+ .small-8 {
+ width: 66.66667%
+ }
+ .small-9 {
+ width: 75%
+ }
+ .small-10 {
+ width: 83.33333%
+ }
+ .small-11 {
+ width: 91.66667%
+ }
+ .small-12 {
+ width: 100%
+ }
+ .small-offset-0 {
+ margin-left: 0%!important
+ }
+ .small-offset-1 {
+ margin-left: 8.33333%!important
+ }
+ .small-offset-2 {
+ margin-left: 16.66667%!important
+ }
+ .small-offset-3 {
+ margin-left: 25%!important
+ }
+ .small-offset-4 {
+ margin-left: 33.33333%!important
+ }
+ .small-offset-5 {
+ margin-left: 41.66667%!important
+ }
+ .small-offset-6 {
+ margin-left: 50%!important
+ }
+ .small-offset-7 {
+ margin-left: 58.33333%!important
+ }
+ .small-offset-8 {
+ margin-left: 66.66667%!important
+ }
+ .small-offset-9 {
+ margin-left: 75%!important
+ }
+ .small-offset-10 {
+ margin-left: 83.33333%!important
+ }
+ .small-offset-11 {
+ margin-left: 91.66667%!important
+ }
+ .small-reset-order {
+ margin-left: 0;
+ margin-right: 0;
+ left: auto;
+ right: auto;
+ float: left
+ }
+ .column.small-centered,
+ .columns.small-centered {
+ margin-left: auto;
+ margin-right: auto;
+ float: none
+ }
+ .column.small-uncentered,
+ .columns.small-uncentered {
+ margin-left: 0;
+ margin-right: 0;
+ float: left
+ }
+ .column.small-centered:last-child,
+ .columns.small-centered:last-child {
+ float: none
+ }
+ .column.small-uncentered:last-child,
+ .columns.small-uncentered:last-child {
+ float: left
+ }
+ .column.small-uncentered.opposite,
+ .columns.small-uncentered.opposite {
+ float: right
+ }
+}
+
+@media only screen and (min-width:40.063em) {
+ .medium-push-0 {
+ position: relative;
+ left: 0%;
+ right: auto
+ }
+ .medium-pull-0 {
+ position: relative;
+ right: 0%;
+ left: auto
+ }
+ .medium-push-1 {
+ position: relative;
+ left: 8.33333%;
+ right: auto
+ }
+ .medium-pull-1 {
+ position: relative;
+ right: 8.33333%;
+ left: auto
+ }
+ .medium-push-2 {
+ position: relative;
+ left: 16.66667%;
+ right: auto
+ }
+ .medium-pull-2 {
+ position: relative;
+ right: 16.66667%;
+ left: auto
+ }
+ .medium-push-3 {
+ position: relative;
+ left: 25%;
+ right: auto
+ }
+ .medium-pull-3 {
+ position: relative;
+ right: 25%;
+ left: auto
+ }
+ .medium-push-4 {
+ position: relative;
+ left: 33.33333%;
+ right: auto
+ }
+ .medium-pull-4 {
+ position: relative;
+ right: 33.33333%;
+ left: auto
+ }
+ .medium-push-5 {
+ position: relative;
+ left: 41.66667%;
+ right: auto
+ }
+ .medium-pull-5 {
+ position: relative;
+ right: 41.66667%;
+ left: auto
+ }
+ .medium-push-6 {
+ position: relative;
+ left: 50%;
+ right: auto
+ }
+ .medium-pull-6 {
+ position: relative;
+ right: 50%;
+ left: auto
+ }
+ .medium-push-7 {
+ position: relative;
+ left: 58.33333%;
+ right: auto
+ }
+ .medium-pull-7 {
+ position: relative;
+ right: 58.33333%;
+ left: auto
+ }
+ .medium-push-8 {
+ position: relative;
+ left: 66.66667%;
+ right: auto
+ }
+ .medium-pull-8 {
+ position: relative;
+ right: 66.66667%;
+ left: auto
+ }
+ .medium-push-9 {
+ position: relative;
+ left: 75%;
+ right: auto
+ }
+ .medium-pull-9 {
+ position: relative;
+ right: 75%;
+ left: auto
+ }
+ .medium-push-10 {
+ position: relative;
+ left: 83.33333%;
+ right: auto
+ }
+ .medium-pull-10 {
+ position: relative;
+ right: 83.33333%;
+ left: auto
+ }
+ .medium-push-11 {
+ position: relative;
+ left: 91.66667%;
+ right: auto
+ }
+ .medium-pull-11 {
+ position: relative;
+ right: 91.66667%;
+ left: auto
+ }
+ .column,
+ .columns {
+ position: relative;
+ padding-left: 0.9375em;
+ padding-right: 0.9375em;
+ float: left
+ }
+ .medium-1 {
+ width: 8.33333%
+ }
+ .medium-2 {
+ width: 16.66667%
+ }
+ .medium-3 {
+ width: 25%
+ }
+ .medium-4 {
+ width: 33.33333%
+ }
+ .medium-5 {
+ width: 41.66667%
+ }
+ .medium-6 {
+ width: 50%
+ }
+ .medium-7 {
+ width: 58.33333%
+ }
+ .medium-8 {
+ width: 66.66667%
+ }
+ .medium-9 {
+ width: 75%
+ }
+ .medium-10 {
+ width: 83.33333%
+ }
+ .medium-11 {
+ width: 91.66667%
+ }
+ .medium-12 {
+ width: 100%
+ }
+ .medium-offset-0 {
+ margin-left: 0%!important
+ }
+ .medium-offset-1 {
+ margin-left: 8.33333%!important
+ }
+ .medium-offset-2 {
+ margin-left: 16.66667%!important
+ }
+ .medium-offset-3 {
+ margin-left: 25%!important
+ }
+ .medium-offset-4 {
+ margin-left: 33.33333%!important
+ }
+ .medium-offset-5 {
+ margin-left: 41.66667%!important
+ }
+ .medium-offset-6 {
+ margin-left: 50%!important
+ }
+ .medium-offset-7 {
+ margin-left: 58.33333%!important
+ }
+ .medium-offset-8 {
+ margin-left: 66.66667%!important
+ }
+ .medium-offset-9 {
+ margin-left: 75%!important
+ }
+ .medium-offset-10 {
+ margin-left: 83.33333%!important
+ }
+ .medium-offset-11 {
+ margin-left: 91.66667%!important
+ }
+ .medium-reset-order {
+ margin-left: 0;
+ margin-right: 0;
+ left: auto;
+ right: auto;
+ float: left
+ }
+ .column.medium-centered,
+ .columns.medium-centered {
+ margin-left: auto;
+ margin-right: auto;
+ float: none
+ }
+ .column.medium-uncentered,
+ .columns.medium-uncentered {
+ margin-left: 0;
+ margin-right: 0;
+ float: left
+ }
+ .column.medium-centered:last-child,
+ .columns.medium-centered:last-child {
+ float: none
+ }
+ .column.medium-uncentered:last-child,
+ .columns.medium-uncentered:last-child {
+ float: left
+ }
+ .column.medium-uncentered.opposite,
+ .columns.medium-uncentered.opposite {
+ float: right
+ }
+ .push-0 {
+ position: relative;
+ left: 0%;
+ right: auto
+ }
+ .pull-0 {
+ position: relative;
+ right: 0%;
+ left: auto
+ }
+ .push-1 {
+ position: relative;
+ left: 8.33333%;
+ right: auto
+ }
+ .pull-1 {
+ position: relative;
+ right: 8.33333%;
+ left: auto
+ }
+ .push-2 {
+ position: relative;
+ left: 16.66667%;
+ right: auto
+ }
+ .pull-2 {
+ position: relative;
+ right: 16.66667%;
+ left: auto
+ }
+ .push-3 {
+ position: relative;
+ left: 25%;
+ right: auto
+ }
+ .pull-3 {
+ position: relative;
+ right: 25%;
+ left: auto
+ }
+ .push-4 {
+ position: relative;
+ left: 33.33333%;
+ right: auto
+ }
+ .pull-4 {
+ position: relative;
+ right: 33.33333%;
+ left: auto
+ }
+ .push-5 {
+ position: relative;
+ left: 41.66667%;
+ right: auto
+ }
+ .pull-5 {
+ position: relative;
+ right: 41.66667%;
+ left: auto
+ }
+ .push-6 {
+ position: relative;
+ left: 50%;
+ right: auto
+ }
+ .pull-6 {
+ position: relative;
+ right: 50%;
+ left: auto
+ }
+ .push-7 {
+ position: relative;
+ left: 58.33333%;
+ right: auto
+ }
+ .pull-7 {
+ position: relative;
+ right: 58.33333%;
+ left: auto
+ }
+ .push-8 {
+ position: relative;
+ left: 66.66667%;
+ right: auto
+ }
+ .pull-8 {
+ position: relative;
+ right: 66.66667%;
+ left: auto
+ }
+ .push-9 {
+ position: relative;
+ left: 75%;
+ right: auto
+ }
+ .pull-9 {
+ position: relative;
+ right: 75%;
+ left: auto
+ }
+ .push-10 {
+ position: relative;
+ left: 83.33333%;
+ right: auto
+ }
+ .pull-10 {
+ position: relative;
+ right: 83.33333%;
+ left: auto
+ }
+ .push-11 {
+ position: relative;
+ left: 91.66667%;
+ right: auto
+ }
+ .pull-11 {
+ position: relative;
+ right: 91.66667%;
+ left: auto
+ }
+}
+
+@media only screen and (min-width:64.063em) {
+ .large-push-0 {
+ position: relative;
+ left: 0%;
+ right: auto
+ }
+ .large-pull-0 {
+ position: relative;
+ right: 0%;
+ left: auto
+ }
+ .large-push-1 {
+ position: relative;
+ left: 8.33333%;
+ right: auto
+ }
+ .large-pull-1 {
+ position: relative;
+ right: 8.33333%;
+ left: auto
+ }
+ .large-push-2 {
+ position: relative;
+ left: 16.66667%;
+ right: auto
+ }
+ .large-pull-2 {
+ position: relative;
+ right: 16.66667%;
+ left: auto
+ }
+ .large-push-3 {
+ position: relative;
+ left: 25%;
+ right: auto
+ }
+ .large-pull-3 {
+ position: relative;
+ right: 25%;
+ left: auto
+ }
+ .large-push-4 {
+ position: relative;
+ left: 33.33333%;
+ right: auto
+ }
+ .large-pull-4 {
+ position: relative;
+ right: 33.33333%;
+ left: auto
+ }
+ .large-push-5 {
+ position: relative;
+ left: 41.66667%;
+ right: auto
+ }
+ .large-pull-5 {
+ position: relative;
+ right: 41.66667%;
+ left: auto
+ }
+ .large-push-6 {
+ position: relative;
+ left: 50%;
+ right: auto
+ }
+ .large-pull-6 {
+ position: relative;
+ right: 50%;
+ left: auto
+ }
+ .large-push-7 {
+ position: relative;
+ left: 58.33333%;
+ right: auto
+ }
+ .large-pull-7 {
+ position: relative;
+ right: 58.33333%;
+ left: auto
+ }
+ .large-push-8 {
+ position: relative;
+ left: 66.66667%;
+ right: auto
+ }
+ .large-pull-8 {
+ position: relative;
+ right: 66.66667%;
+ left: auto
+ }
+ .large-push-9 {
+ position: relative;
+ left: 75%;
+ right: auto
+ }
+ .large-pull-9 {
+ position: relative;
+ right: 75%;
+ left: auto
+ }
+ .large-push-10 {
+ position: relative;
+ left: 83.33333%;
+ right: auto
+ }
+ .large-pull-10 {
+ position: relative;
+ right: 83.33333%;
+ left: auto
+ }
+ .large-push-11 {
+ position: relative;
+ left: 91.66667%;
+ right: auto
+ }
+ .large-pull-11 {
+ position: relative;
+ right: 91.66667%;
+ left: auto
+ }
+ .column,
+ .columns {
+ position: relative;
+ padding-left: 0.9375em;
+ padding-right: 0.9375em;
+ float: left
+ }
+ .large-1 {
+ width: 8.33333%
+ }
+ .large-2 {
+ width: 16.66667%
+ }
+ .large-3 {
+ width: 25%
+ }
+ .large-4 {
+ width: 33.33333%
+ }
+ .large-5 {
+ width: 41.66667%
+ }
+ .large-6 {
+ width: 50%
+ }
+ .large-7 {
+ width: 58.33333%
+ }
+ .large-8 {
+ width: 66.66667%
+ }
+ .large-9 {
+ width: 75%
+ }
+ .large-10 {
+ width: 83.33333%
+ }
+ .large-11 {
+ width: 91.66667%
+ }
+ .large-12 {
+ width: 100%
+ }
+ .large-offset-0 {
+ margin-left: 0%!important
+ }
+ .large-offset-1 {
+ margin-left: 8.33333%!important
+ }
+ .large-offset-2 {
+ margin-left: 16.66667%!important
+ }
+ .large-offset-3 {
+ margin-left: 25%!important
+ }
+ .large-offset-4 {
+ margin-left: 33.33333%!important
+ }
+ .large-offset-5 {
+ margin-left: 41.66667%!important
+ }
+ .large-offset-6 {
+ margin-left: 50%!important
+ }
+ .large-offset-7 {
+ margin-left: 58.33333%!important
+ }
+ .large-offset-8 {
+ margin-left: 66.66667%!important
+ }
+ .large-offset-9 {
+ margin-left: 75%!important
+ }
+ .large-offset-10 {
+ margin-left: 83.33333%!important
+ }
+ .large-offset-11 {
+ margin-left: 91.66667%!important
+ }
+ .large-reset-order {
+ margin-left: 0;
+ margin-right: 0;
+ left: auto;
+ right: auto;
+ float: left
+ }
+ .column.large-centered,
+ .columns.large-centered {
+ margin-left: auto;
+ margin-right: auto;
+ float: none
+ }
+ .column.large-uncentered,
+ .columns.large-uncentered {
+ margin-left: 0;
+ margin-right: 0;
+ float: left
+ }
+ .column.large-centered:last-child,
+ .columns.large-centered:last-child {
+ float: none
+ }
+ .column.large-uncentered:last-child,
+ .columns.large-uncentered:last-child {
+ float: left
+ }
+ .column.large-uncentered.opposite,
+ .columns.large-uncentered.opposite {
+ float: right
+ }
+ .push-0 {
+ position: relative;
+ left: 0%;
+ right: auto
+ }
+ .pull-0 {
+ position: relative;
+ right: 0%;
+ left: auto
+ }
+ .push-1 {
+ position: relative;
+ left: 8.33333%;
+ right: auto
+ }
+ .pull-1 {
+ position: relative;
+ right: 8.33333%;
+ left: auto
+ }
+ .push-2 {
+ position: relative;
+ left: 16.66667%;
+ right: auto
+ }
+ .pull-2 {
+ position: relative;
+ right: 16.66667%;
+ left: auto
+ }
+ .push-3 {
+ position: relative;
+ left: 25%;
+ right: auto
+ }
+ .pull-3 {
+ position: relative;
+ right: 25%;
+ left: auto
+ }
+ .push-4 {
+ position: relative;
+ left: 33.33333%;
+ right: auto
+ }
+ .pull-4 {
+ position: relative;
+ right: 33.33333%;
+ left: auto
+ }
+ .push-5 {
+ position: relative;
+ left: 41.66667%;
+ right: auto
+ }
+ .pull-5 {
+ position: relative;
+ right: 41.66667%;
+ left: auto
+ }
+ .push-6 {
+ position: relative;
+ left: 50%;
+ right: auto
+ }
+ .pull-6 {
+ position: relative;
+ right: 50%;
+ left: auto
+ }
+ .push-7 {
+ position: relative;
+ left: 58.33333%;
+ right: auto
+ }
+ .pull-7 {
+ position: relative;
+ right: 58.33333%;
+ left: auto
+ }
+ .push-8 {
+ position: relative;
+ left: 66.66667%;
+ right: auto
+ }
+ .pull-8 {
+ position: relative;
+ right: 66.66667%;
+ left: auto
+ }
+ .push-9 {
+ position: relative;
+ left: 75%;
+ right: auto
+ }
+ .pull-9 {
+ position: relative;
+ right: 75%;
+ left: auto
+ }
+ .push-10 {
+ position: relative;
+ left: 83.33333%;
+ right: auto
+ }
+ .pull-10 {
+ position: relative;
+ right: 83.33333%;
+ left: auto
+ }
+ .push-11 {
+ position: relative;
+ left: 91.66667%;
+ right: auto
+ }
+ .pull-11 {
+ position: relative;
+ right: 91.66667%;
+ left: auto
+ }
+}
+
+code[class*="language-"],
+pre[class*="language-"] {
+ color: black;
+ text-shadow: 0 1px #fff;
+ font-family: Consolas, Monaco, 'Andale Mono', monospace, sans-serif;
+ direction: ltr;
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ line-height: 1.5;
+ -moz-tab-size: 4;
+ -o-tab-size: 4;
+ tab-size: 4;
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"]::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"]::-moz-selection {
+ text-shadow: none;
+ background: #b3d4fc
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"]::selection,
+code[class*="language-"]::selection,
+code[class*="language-"]::selection {
+ text-shadow: none;
+ background: #b3d4fc
+}
+
+@media print {
+ code[class*="language-"],
+ pre[class*="language-"] {
+ text-shadow: none
+ }
+}
+
+pre[class*="language-"] {
+ padding: 1em;
+ margin: 0.5em 0 2em;
+ overflow: auto
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+ background: #f5f2f0
+}
+
+:not(pre)>code[class*="language-"] {
+ padding: .1em;
+ border-radius: .3em
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: slategray
+}
+
+.token.punctuation {
+ color: #999
+}
+
+.namespace {
+ opacity: .7
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+ color: #905
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+ color: #690
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+ color: #a67f59;
+ background: rgba(255, 255, 255, 0.5)
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+ color: #07a
+}
+
+.token.function {
+ color: #DD4A68
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+ color: #e90
+}
+
+.token.important {
+ font-weight: bold
+}
+
+.token.entity {
+ cursor: help
+}
+
+pre[data-line] {
+ position: relative;
+ padding: 1em 0 1em 3em
+}
+
+.line-highlight {
+ position: absolute;
+ left: 0;
+ right: 0;
+ padding: inherit 0;
+ margin-top: 1em;
+ background: rgba(153, 122, 102, 0.08);
+ background: -webkit-linear-gradient(left, rgba(153, 122, 102, 0.1) 70%, rgba(153, 122, 102, 0));
+ background: linear-gradient(left, rgba(153, 122, 102, 0.1) 70%, rgba(153, 122, 102, 0));
+ pointer-events: none;
+ line-height: inherit;
+ white-space: pre
+}
+
+.line-highlight:before,
+.line-highlight[data-end]:after {
+ content: attr(data-start);
+ position: absolute;
+ top: .4em;
+ left: .6em;
+ min-width: 1em;
+ padding: 0 0.5em;
+ background-color: rgba(153, 122, 102, 0.4);
+ color: #f5f2f0;
+ font: bold 65%/1.5 sans-serif;
+ text-align: center;
+ vertical-align: .3em;
+ border-radius: 999px;
+ text-shadow: none;
+ box-shadow: 0 1px #fff
+}
+
+.line-highlight[data-end]:after {
+ content: attr(data-end);
+ top: auto;
+ bottom: .4em
+}
+
+pre.line-numbers {
+ position: relative;
+ padding-left: 3.8em;
+ counter-reset: linenumber
+}
+
+pre.line-numbers>code {
+ position: relative
+}
+
+.line-numbers .line-numbers-rows {
+ position: absolute;
+ pointer-events: none;
+ top: 0;
+ font-size: 100%;
+ left: -3.8em;
+ width: 3em;
+ letter-spacing: -1px;
+ border-right: 1px solid #999;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+.line-numbers-rows>span {
+ pointer-events: none;
+ display: block;
+ counter-increment: linenumber
+}
+
+.line-numbers-rows>span:before {
+ content: counter(linenumber);
+ color: #999;
+ display: block;
+ padding-right: 0.8em;
+ text-align: right
+}
+
+pre[class*='language-'] {
+ position: relative
+}
+
+pre[class*='language-']>code[data-language] {
+ overflow: scroll;
+ max-height: 28em;
+ display: block
+}
+
+pre[class*='language-']>code[data-language]::before {
+ content: attr(data-language);
+ color: black;
+ background-color: #CFCFCF;
+ display: inline-block;
+ position: absolute;
+ top: 0;
+ right: 0;
+ font-size: 0.9em;
+ border-radius: 0 0 0 5px;
+ padding: 0 0.5em;
+ text-shadow: none
+}
+
+
+
+.styleguide-list--unstyled {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+ position: static;
+}
+
+.styleguide-list--float li {
+ float: left
+}
+
+.styleguide-module__title,
+.styleguide-module__title--small {
+ font-size: 2em;
+ line-height: 30px;
+ margin: 0 0 45px;
+ font-weight: normal;
+ font-family: HUGEAvantGardeBold, sans-serif;
+ color: #000;
+ -webkit-font-smoothing: antialiased;
+ letter-spacing: -1px
+}
+
+a {
+ color: #333
+}
+
+p.styleguide-module__paragraph {
+ margin: 0;
+ margin-bottom: 25px;
+ color: #333;
+ -webkit-font-smoothing: antialiased
+}
+
+p.styleguide-module__paragraph a {
+ color: #189BD7
+}
+
+.styleguide-module__title--small {
+ font-size: 20px;
+ line-height: 20px;
+ margin-top: 35px;
+ margin-bottom: 10px;
+}
+
+.styleguide-module__title--light {
+ color: #bbb;
+ text-transform: none;
+ margin: 0;
+ font-size: 12px;
+ line-height: 12px;
+ margin-bottom: 25px;
+ font-weight: normal
+}
+
+body {
+ line-height: 24px;
+ /*
+ font: 16px/2 'Galaxie', Geneva, Helvetica, Arial, sans-serif;
+ */
+ color: #333;
+ background-color: #fff
+}
+
+.styleguide-header {
+ display: block;
+ background: #fff;
+ border-bottom: 1px solid #eee;
+ padding: 17px 30px 21px 80px;
+ position: fixed;
+ height: 63px;
+ width: 100%;
+ top: 0;
+ left: 0;
+ z-index: 2;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ -webkit-transition: all 0.2s cubic-bezier(0.37, 0.62, 0.47, 0.72);
+ transition: all 0.2s cubic-bezier(0.37, 0.62, 0.47, 0.72);
+ font-size: 14px;
+ color: #666
+}
+
+.styleguide-header .styleguide-header__welcome {
+ font-family: Arial, sans-serif
+}
+
+.styleguide-header .styleguide-header__breakpoints__item__link {
+ font-family: Arial, sans-serif
+}
+
+.styleguide-header__breakpoints {
+ position: relative;
+ top: -9px
+}
+
+.styleguide-header__breakpoints ul {
+ display: none
+}
+
+@media only screen and (min-width:64.063em) {
+ .styleguide-header__breakpoints ul {
+ display: block
+ }
+}
+
+.styleguide-header__breakpoints__item__link {
+ position: relative;
+ display: block;
+ padding: 0;
+ color: #555;
+ text-decoration: none;
+ font-size: 13px;
+ margin-right: 20px;
+ cursor: pointer
+}
+
+.styleguide-header__breakpoints__item__link span {
+ position: relative;
+ top: -4px
+}
+
+.styleguide-header__breakpoints__item__link:before {
+ content: '';
+ opacity: 0.5;
+ display: inline-block;
+ height: 40px;
+ background: center bottom no-repeat;
+ margin-right: 10px
+}
+
+.styleguide-header__breakpoints__item__link:hover,
+.styleguide-header__breakpoints__item__link.active {
+ color: #000
+}
+
+.styleguide-header__breakpoints__item__link:hover:before,
+.styleguide-header__breakpoints__item__link:hover:before.active {
+ opacity: 1
+}
+
+.styleguide-header__breakpoints__item__link#small:before {
+ width: 17px;
+ background-image: url("../images/icon_small_up.svg")
+}
+
+.styleguide-header__breakpoints__item__link#medium:before {
+ width: 26px;
+ background-image: url("../images/icon_medium_up.svg")
+}
+
+.styleguide-header__breakpoints__item__link#large:before {
+ width: 53px;
+ background-image: url("../images/icon_large_up.svg")
+}
+
+.styleguide-header__breakpoints__item__link#full:before {
+ width: 51px;
+ background-image: url("../images/icon_full.svg")
+}
+
+body.opened .styleguide-header {
+ left: 240px;
+ width: calc(100% - 240px);
+ padding: 17px 30px 21px
+}
+
+.styleguide-footer {
+ background-color: #eee;
+ height: 180px;
+ text-align: center;
+ padding: 40px 0 0
+}
+
+.styleguide-footer .h {
+ display: inline-block;
+ width: 46px;
+ height: 54px;
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAiCAYAAABBY8kOAAAAgUlEQVRIS2N8w9DznwEvYNwowlAcgE/JG4beDQwM//3xqWEctQhb8IwGHY5EM5rqsAfMaD7CGi5UyUf/GRiPMjD8q8FfHjK1MDL8t6awrMNvBbGyRCQGYo0iUAcQLr1HLSI7w44GHZlBR8cMO1ofkRlHDAyjQTcadPAQGE0MA5wYAEQy1fHPRACvAAAAAElFTkSuQmCC") 50% 50% no-repeat;
+ text-decoration: none
+}
+
+.styleguide-footer p {
+ font-family: "HUGEAvantGardeBold", Helvetica, Arial, sans-serif;
+ letter-spacing: -1px;
+ font-size: 15px;
+ color: #999;
+ margin-top: 16px;
+ -webkit-font-smoothing: antialiased
+}
+
+.styleguide-footer sup {
+ font-size: 7px;
+ vertical-align: super
+}
+
+body.opened .styleguide-sidebar__menu-icon {
+ display: none;
+}
+
+.styleguide-sidebar__toggle--in {
+ overflow: hidden;
+ cursor: pointer;
+ text-align: center;
+ right: 0;
+ z-index: 10;
+ width: 45px;
+ position: fixed;
+ padding: 0;
+ height: 35px;
+ background: none;
+ left: 187px;
+ top: 15px
+}
+
+.styleguide-sidebar__toggle--in a {
+ display: inline-block;
+ float: none;
+ text-indent: -99999px;
+ position: relative;
+ width: 15px;
+ height: 2px;
+ background: #FFF;
+ clear: both;
+ margin: 0 auto;
+ margin-top: 16px
+}
+
+.styleguide-sidebar__toggle--in a:before {
+ display: block;
+ float: left;
+ clear: both;
+ content: "";
+ position: absolute;
+ width: 100%;
+ height: 2px;
+ left: 0;
+ background: #777;
+ -webkit-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ transform: rotate(45deg);
+ top: 0
+}
+
+.styleguide-sidebar__toggle--in a:after {
+ display: block;
+ float: left;
+ clear: both;
+ content: "";
+ position: absolute;
+ width: 100%;
+ height: 2px;
+ bottom: -4px;
+ left: 0;
+ background: #777;
+ -webkit-transform: rotate(-45deg);
+ -ms-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+ top: 0
+}
+
+.styleguide-sidebar__toggle--out {
+ margin: 0;
+ overflow: hidden;
+ cursor: pointer;
+ text-align: center;
+ height: 63px;
+ width: 63px;
+ background-color: #189BD7;
+ padding: 20px 0 10px 0;
+ z-index: 10;
+ position: fixed;
+ top: 0;
+}
+
+.styleguide-sidebar__toggle--out:hover a:before {
+ top: -8px
+}
+
+.styleguide-sidebar__toggle--out:hover a:after {
+ bottom: -8px
+}
+
+.styleguide-sidebar__toggle--out a {
+ display: inline-block;
+ float: none;
+ text-indent: -99999px;
+ position: relative;
+ width: 23px;
+ height: 2px;
+ background: #fff;
+ clear: both;
+ margin: 0 auto;
+ margin-top: 10px;
+ -webkit-transition: all 0.15s ease-out;
+ transition: all 0.15s ease-out
+}
+
+.styleguide-sidebar__toggle--out a:before {
+ display: block;
+ float: left;
+ clear: both;
+ content: "";
+ position: absolute;
+ width: 100%;
+ height: 2px;
+ top: -4px;
+ left: 0;
+ background: #fff;
+ -webkit-transition: all 0.15s ease-out;
+ transition: all 0.15s ease-out
+}
+
+.styleguide-sidebar__toggle--out a:after {
+ display: block;
+ float: left;
+ clear: both;
+ content: "";
+ position: absolute;
+ width: 100%;
+ height: 2px;
+ bottom: -4px;
+ left: 0;
+ background: #fff;
+ -webkit-transition: all 0.15s ease-out;
+ transition: all 0.15s ease-out
+}
+
+.styleguide-sidebar__logo {
+ display: block;
+ width: 140px;
+ margin: 29px 0 40px 29px
+}
+
+.styleguide-sidebar__content {
+ position: fixed;
+ background-color: #fff;
+ border-right: 1px solid #eee;
+ -webkit-transition: -webkit-transform 0.2s cubic-bezier(0.37, 0.62, 0.47, 0.72);
+ transition: transform 0.2s cubic-bezier(0.37, 0.62, 0.47, 0.72);
+ -webkit-transform: translateX(-240px);
+ -ms-transform: translateX(-240px);
+ transform: translateX(-240px);
+ height: 100%;
+ width: 240px;
+ z-index: 11;
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+
+.styleguide-sidebar__nav {
+ margin-top: 60px;
+}
+
+.styleguide-sidebar__nav__item__link {
+ display: block;
+ padding: 12px 16px 12px 29px;
+ color: #777;
+ font-family: HUGEAvantGardeBold, sans-serif;
+ letter-spacing: -1px;
+ font-weight: normal;
+ text-decoration: none;
+ -webkit-font-smoothing: antialiased;
+ text-rendering: optimizeLegibility;
+ line-height: 1.5;
+ border-left: 0 solid #189BD7;
+ outline: none;
+ -webkit-transition: all 0.4s ease;
+ transition: all 0.4s ease
+}
+
+.styleguide-sidebar__nav__item__link:hover,
+.styleguide-sidebar__nav__item__link.active {
+ color: #189BD7;
+ -webkit-transition: all 0.4s ease;
+ transition: all 0.4s ease;
+ border-left: 4px solid #189BD7
+}
+
+body.opened .styleguide-sidebar__content {
+ position: fixed;
+ top: 0;
+ -webkit-transform: translateX(0px);
+ -ms-transform: translateX(0px);
+ transform: translateX(0px)
+}
+
+.styleguide-sidebar__content svg {
+ margin: 90px 0 12px;
+ width: 140px
+}
+
+#styleguide-logo {
+ fill: #000
+}
+
+body.opened .styleguide-iframe-wrapper {
+ left: 240px;
+ width: calc(100% - 240px);
+ max-width: calc(100% - 240px);
+}
+
+.styleguide-module {
+ width: 90%;
+ margin: 0 auto;
+ clear: both;
+ padding: 50px 0;
+ border-bottom: 1px solid #eee
+}
+
+.styleguide-module__editor {
+ margin: 20px 0;
+}
+
+.styleguide-module:last-child {
+ border-bottom: none
+}
+
+.styleguide-iframe-wrapper {
+ height: 100%;
+ width: 100%;
+ left: 0;
+ padding: 0;
+ margin: 0;
+ max-width: initial;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ -webkit-transition: left 0.2s cubic-bezier(0.37, 0.62, 0.47, 0.72), width 0.2s cubic-bezier(0.37, 0.62, 0.47, 0.72);
+ transition: left 0.2s cubic-bezier(0.37, 0.62, 0.47, 0.72), width 0.2s cubic-bezier(0.37, 0.62, 0.47, 0.72);
+ background-color: #eee;
+ position: relative
+}
+
+.styleguide-iframe-content {
+ max-width: 100%;
+ margin: 0 auto;
+ padding: 15px 0 0;
+ margin-top: 63px;
+ background-color: #fff;
+ height: 100%;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ -webkit-transition: left 0.2s cubic-bezier(0.37, 0.62, 0.47, 0.72), width 0.2s cubic-bezier(0.37, 0.62, 0.47, 0.72);
+ transition: left 0.2s cubic-bezier(0.37, 0.62, 0.47, 0.72), width 0.2s cubic-bezier(0.37, 0.62, 0.47, 0.72);
+}
+
+.styleguide-module__toggle-code {
+ display: block;
+ text-indent: -9999999px;
+ background: url("../images/icon_code.svg") right center no-repeat;
+ height: 1.5em;
+ opacity: .5;
+ margin-bottom: 15px;
+ position: relative;
+ z-index: 9;
+ float: right;
+ min-width: 30px
+}
+
+pre[class*='language-']>code[data-language] {
+ overflow: auto
+}
+
+.CodeMirror {
+ font-size: 12px;
+}
+
+.styleguide__info, .styleguide__success, .styleguide__warning, .styleguide__error {
+ margin: 10px 0px;
+ padding:12px;
+}
+
+.styleguide__info {
+ color: #00529B;
+ background-color: #BDE5F8;
+}
+
+.styleguide__success {
+ color: #4F8A10;
+ background-color: #DFF2BF;
+}
+
+.styleguide__warning {
+ color: #9F6000;
+ background-color: #FEEFB3;
+}
+
+.styleguide__error {
+ color: #D8000C;
+ background-color: #FFD2D2;
+}
diff --git a/src/Shopsys/ShopBundle/Resources/styles/styleguide/styleguide.css b/src/Shopsys/ShopBundle/Resources/styles/styleguide/styleguide.css
new file mode 100644
index 000000000..3cc757b48
--- /dev/null
+++ b/src/Shopsys/ShopBundle/Resources/styles/styleguide/styleguide.css
@@ -0,0 +1,159 @@
+#colors li {
+ position: relative;
+ padding: 0;
+ margin-bottom: 0.9375em
+}
+
+#colors li p {
+ position: absolute;
+ padding: 3px 13px;
+ color: #666;
+ background-color: #fff;
+ font-size: 12px;
+ bottom: 0;
+ left: 0.9375em
+}
+
+#colors li>.color {
+ padding: 15px;
+ margin-right: 0.9375em;
+ border-radius: 5px;
+}
+
+#colors li:last-child {
+ margin-right: 0
+}
+
+#colors li>.color>.color__text {
+ color: #fff;
+ background: transparent;
+}
+
+.font-huge {
+ font-family: 'HUGEAvantGardeBold', Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ text-rendering: optimizeLegibility;
+ font-weight: normal
+}
+
+.font-galaxie {
+ font-family: 'Galaxie', Helvetica, Roboto, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ text-rendering: optimizeLegibility;
+ font-weight: normal
+}
+
+.italic {
+ font-style: italic
+}
+
+h1 {
+ font-size: 100px;
+ line-height: 120px
+}
+
+h2 {
+ font-size: 80px;
+ line-height: 92px
+}
+
+h3 {
+ font-size: 38px;
+ line-height: 45px
+}
+
+.p1,
+.p2 {
+ padding-right: 20%
+}
+
+.p3 {
+ font-size: 15px;
+ line-height: 1.8;
+ color: #666;
+ margin-top: 3em
+}
+
+#typography h1,
+#typography h2,
+#typography h3,
+#typography h4,
+#typography h5,
+#typography h6,
+#typography p {
+ margin-top: 0
+}
+
+#typography p {
+ font: 16px/2 "Galaxie";
+ margin: 2em 0
+}
+
+.button {
+ cursor: pointer;
+ text-decoration: none!important;
+ display: inline-block;
+ font-family: Arial, sans-serif;
+ font-weight: bold;
+ text-align: center;
+ color: #fff;
+ -webkit-transition: background-color 0.3s, opacity 0.3s;
+ transition: background-color 0.3s, opacity 0.3s
+}
+
+.button.load {
+ -webkit-transition: 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) all;
+ transition: 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) all
+}
+
+.button.black {
+ background: #000;
+ width: 160px;
+ height: 54px;
+ line-height: 54px;
+ font-size: 13px
+}
+
+.button:hover {
+ background-color: #189BD7!important;
+ color: #fff
+}
+
+ol,
+ul {
+ list-style: none;
+ margin: 0 0 2em 0;
+ padding: 0
+}
+
+ul.list_huge li {
+ padding-left: 20px;
+ position: relative
+}
+
+ul.list_huge li::before {
+ content: '▶';
+ font-size: 11px;
+ top: 4px;
+ color: #189BD7;
+ position: absolute;
+ left: 0
+}
+
+ol.list_huge {
+ counter-reset: item
+}
+
+ol.list_huge li {
+ padding-left: 30px;
+ position: relative
+}
+
+ol.list_huge li::before {
+ content: counters(item, ".") " ";
+ counter-increment: item;
+ top: 0;
+ color: #189BD7;
+ position: absolute;
+ left: 0
+}
diff --git a/src/Shopsys/ShopBundle/Resources/translations/dataFixtures.cs.po b/src/Shopsys/ShopBundle/Resources/translations/dataFixtures.cs.po
new file mode 100644
index 000000000..84c409280
--- /dev/null
+++ b/src/Shopsys/ShopBundle/Resources/translations/dataFixtures.cs.po
@@ -0,0 +1,1646 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: cs\n"
+
+msgid "(Mon - Sat: 9 - 10 a.m. to 8 - 10 p.m.)"
+msgstr "(po-pá, 10:00 - 16:00)"
+
+msgid "+1-234-567-8989"
+msgstr "+420123456789"
+
+msgid "1 kg"
+msgstr "1 kg"
+
+msgid "1.7GHz"
+msgstr "1.7GHz"
+
+msgid "100 Czech crowns ticket"
+msgstr "Stokorunová poukázka"
+
+msgid "1024 MB"
+msgstr "1024 MB"
+
+msgid "112 g"
+msgstr "112 g"
+
+msgid "12 Mpix"
+msgstr "12 Mpix"
+
+msgid "123.8x58.6 mm"
+msgstr "123.8x58.6x7.6mm"
+
+msgid "12800"
+msgstr "12800"
+
+msgid "13 Mpx"
+msgstr "13 Mpx"
+
+msgid "1366×768 (HD Ready)"
+msgstr "1366×768 (HD Ready)"
+
+msgid "14 Mpix"
+msgstr "14 Mpix"
+
+msgid "15 bar"
+msgstr "15 bar"
+
+msgid "150 g"
+msgstr "150 g"
+
+msgid "16mil."
+msgstr "16mil."
+
+msgid "18 Mpix"
+msgstr "18 Mpix"
+
+msgid "1800"
+msgstr "1800"
+
+msgid "1920×1080 (Full HD)"
+msgstr "1920×1080 (Full HD)"
+
+msgid "2"
+msgstr "2"
+
+msgid "2 l"
+msgstr "2 l"
+
+msgid "2.0"
+msgstr "2.0"
+
+msgid "21\""
+msgstr "21\""
+
+msgid "21,5” Hyundai 22MT44"
+msgstr "21,5” Hyundai 22MT44"
+
+msgid "210 MB"
+msgstr "210 MB"
+
+msgid "22\" Sencor SLE 22F46DM4 HELLO KITTY"
+msgstr "22\" Sencor SLE 22F46DM4 HELLO KITTY"
+
+msgid "220 x 250 x 9 mm"
+msgstr "220 x 250 x 9 mm"
+
+msgid "240 x 205 x 15 mm"
+msgstr "240 x 205 x 15 mm, klazeta s aktivnim uhlikem"
+
+msgid "2400x600"
+msgstr "2400x600"
+
+msgid "250"
+msgstr "250"
+
+msgid "250 g"
+msgstr "250 g"
+
+msgid "250 kWh/year"
+msgstr "250 kWh/rok"
+
+msgid "255 x 255 x 15"
+msgstr "255 x 255 x 15"
+
+msgid "27\""
+msgstr "27\""
+
+msgid "275 kWh/year"
+msgstr "275 kWh/rok"
+
+msgid "27” Hyundai T27D590EY"
+msgstr "27” Hyundai T27D590EY"
+
+msgid "27” Hyundai T27D590EZ"
+msgstr "27” Hyundai T27D590EZ"
+
+msgid "295 x 240 x 15 mm cartridge with active carbon"
+msgstr "295 x 240 x 15 mm, kazeta s aktivnim uhlikem"
+
+msgid "295 x 245 x 15 mm cartridge with active carbon"
+msgstr "295 x 245 x 15 mm kazeta s aktivnim uhlikem"
+
+msgid "2W"
+msgstr "2 W"
+
+msgid "3.5 kg"
+msgstr "3.5 kg"
+
+msgid "30\""
+msgstr "30\""
+
+msgid "30” Hyundai 22MT44D"
+msgstr "30” Hyundai 22MT44D"
+
+msgid "310 x 285 x 15 mm"
+msgstr "310 x 285 x 15 mm"
+
+msgid "310 x 480 x 10"
+msgstr "310 x 480 x 10"
+
+msgid "32\" Philips 32PFL4308"
+msgstr "32\" Philips 32PFL4308"
+
+msgid "320 x 300 x 10 mm"
+msgstr "320 x 300 x 10 mm"
+
+msgid "32” Hyundai 32PFL4400"
+msgstr "Hyundai 32PFL4400"
+
+msgid "36\""
+msgstr "36\""
+
+msgid "36\" Hyundai 32PFL4308"
+msgstr "36\" Hyundai 32PFL4360"
+
+msgid "36\" Philips 32PFL4308"
+msgstr "36\" Philips 32PFL4308"
+
+msgid "380 g"
+msgstr "380 g"
+
+msgid "3“"
+msgstr "3“"
+
+msgid "4 W"
+msgstr "4 W"
+
+msgid "4.5\""
+msgstr "4.5\""
+
+msgid "400 g"
+msgstr "400 g"
+
+msgid "426x306x145 mm"
+msgstr "426x306x145 mm"
+
+msgid "440 x 345 x 40 mm"
+msgstr "440 x 345 x 40 mm"
+
+msgid "449x304x152 mm"
+msgstr "449x304x152 mm"
+
+msgid "47 \"LG 47LA790V Luxury TV from the South Korean company LG bears 47LA790S. At first glance its beautiful design that pleases the eye of every lover of pure and precise shapes."
+msgstr "Cinema 3D Smart TV LG 47LA790V se Cinema 3D Screen Designem je 3D televizor s technologií LG Cinema 3D a úhlopříčkou 47", který určitě splní vaše očekávání. Oplývá veškerou moderní obrazovou technologií LG, která je zárukou výjimečné kvality obrazu s vysokou věrností barev a hlubším kontrastem včetně konverze z 2D na 3D, která vám umožní sledovat běžné televizní vysílání ve 3D prostorovém obrazu."
+
+msgid "47\""
+msgstr "47\""
+
+msgid "47\" LG 47LA790V (FHD)"
+msgstr "47\" LG 47LA790V (FHD)"
+
+msgid "48"
+msgstr "48"
+
+msgid "480 x 310 x 10 mm
The filter is a need to adjust the scissors to cover the entire surface of the grease filter."
+msgstr "480 x 310 x 10 mm
Filtr je potreba si nůžkami upravit pro zakrytí celeho povrchu tukového filtru."
+
+msgid "480 x 310 x 10 mm. The filter is a need to adjust the scissors to cover the entire surface of the grease filter."
+msgstr "480 x 310 x 10 mm. Filtr je potreba si nůžkami upravit pro zakrytí celeho povrchu tukového filtru."
+
+msgid "4800x1200"
+msgstr "4800x1200"
+
+msgid "495 x 200 x 8 mm"
+msgstr "495 x 200 x 8 mm"
+
+msgid "4“"
+msgstr "4“"
+
+msgid "5"
+msgstr "5"
+
+msgid "5 Mpx"
+msgstr "5 Mpx"
+
+msgid "5.4 kg"
+msgstr "5.4 kg"
+
+msgid "5.5\""
+msgstr "5.5\""
+
+msgid "50"
+msgstr "50"
+
+msgid "50 g"
+msgstr "50 g"
+
+msgid "51,5” Hyundai 22HD44D"
+msgstr "51,5” Hyundai 22HD44D"
+
+msgid "54\""
+msgstr "54\""
+
+msgid "54\" Philips 32PFL4308"
+msgstr "54\" Philips 32PFL4308"
+
+msgid "55"
+msgstr "55"
+
+msgid "560 g"
+msgstr "560 g"
+
+msgid "580 g"
+msgstr "580 g"
+
+msgid "580 kg"
+msgstr "580 g"
+
+msgid "5“"
+msgstr "5“"
+
+msgid "60\""
+msgstr "60\""
+
+msgid "600 ml"
+msgstr "600 ml"
+
+msgid "60” Hyundai 22HD44D"
+msgstr "60” Hyundai 22HD44D"
+
+msgid "6400"
+msgstr "6400"
+
+msgid "75\""
+msgstr "75\""
+
+msgid "800 × 480 px"
+msgstr "800 × 480 px"
+
+msgid "80x70x70 mm"
+msgstr "80x70x70 mm"
+
+msgid "9 Mpix"
+msgstr "9 Mpix"
+
+msgid "You have chosen payment by credit card. Please finish it in two business days."
+msgstr "Zvolili jste platbu kreditní kartou. Prosím proveďte ji do dvou pracovních dnů."
+
+msgid "
Cookbook
What can be cooked in a steam oven? Using a steamer Concept is surprisingly versatile. It can be used to prepare appetizers, soups, meat, fish, vegetables, vegetarian dishes, dumplings, rice, fruit and desserts. 75 pages of cookbooks Concept - cook healthy steamed - contains recipes with practical procedures. Each recipe includes:
The list of ingredients
Method
How many people
Preparation time
The degree of difficulty
+ time + temperature
From under the lids give you some tips - Asparagus with tuna sauce, salmon in vermouth sauce, soup minestrone, chicken mint surprise Cabbage leaves stuffed with minced meat, grilled chop with vegetables, potatoes baked with blue cheese, pear with chocolate sauce, roasted mandelimi and ice cream, etc."
+msgstr "
Kuchařka
Co vše lze vařit v parní troubě? Použití parní trouby Concept je překvapivě všestranné. Lze v ní připravit předkrmy, polévky, maso, ryby, zeleninu, vegetariánská jídla, knedlíky, rýži, ovoce i dezerty. 75 stran kuchařky Concept – Vaříme zdravě, vaříme v páře - obsahuje recepty s praktickými postupy. Každý recept obsahuje:
Seznam ingrediencí
Postup
Pro kolik osob
Doba přípravy
Stupeň obtížnosti
Funkce + doba + teplota
Z pod pokličky prozradíme pár tipů – Chřest s tuňákovou omáčkou, Losos ve vermutové omáčce, Polévka minestrone, Kuřecí mátové překvapení, Zelné listy plněné mletým masem, Grilovaná kotleta se zeleninou, Brambory zapékané s nivou, Hruška s čokoládovou omáčkou, praženými mandelimi a zmrzlinou atd.
Minimální vzdálenost od elektrické varné desky: 650 mm
Minimální vzdálenost od plynové varné desky: 750 mm
Netto hmotnost: 4,5 kg
Napětí: 230 V ~ 50Hz
Příkon: 150 W
Délka přívodního kabelu:1,5 m
"
+
+msgid "
47 \"LG 47LA790V
> Luxury TV from the South Korean company LG bears 47LA790S . At first glance its beautiful design That pleases the eye of every lover of pure and precise shapes. Inside the TV is hidden except M13 dual-core processor number of extra features. I so belong to the energy class A + . Micro Pixel Control function is performed local dimming backlight and thus significantly reduces up to 64 W. This is so gigantic screen with really great.
This TV is considerate to your eyes because of the image eliminates the annoying flicker caused by conventional 3D glasses, and you so you can enjoy long evenings of film without fatigue and eye pain . User-friendly environment allows adjust the 3D depth effect and yourself, you can choose whether you prefer comfort or deeper experience when watching 3D content. You could very well happen that while watching a football match flips the ball right into your living room Because special functions for image conversion improve any broadcasting the third dimension .
Avid gamers will appreciate the Dual Play When television broadcasts two separate 2D images and each player using glasses to see their part to the full screen area. No more worry when a split screen. Intel WiDi (Wireless Display), respectively. wireless transmission of video and audio, allows quick and easy connection of TVs and laptops without cables or an Internet connection. It is very convenient and fast you'll love this feature."
+msgstr "
Cinema 3D Smart TV LG 47LA790V se Cinema 3D Screen Designem je 3D televizor s technologií LG Cinema 3D a úhlopříčkou 47", který určitě splní vaše očekávání. Oplývá veškerou moderní obrazovou technologií LG, která je zárukou výjimečné kvality obrazu s vysokou věrností barev a hlubším kontrastem včetně konverze z 2D na 3D, která vám umožní sledovat běžné televizní vysílání ve 3D prostorovém obrazu.
Příjemným překvapením pro vaše děti bude také funkce Dual Play umožňující hraní her ve dvou lidech bez rozdělení obrazovky televize. Tento model Cinema 3D LED TV poskytuje kromě snížení spotřeby energie také různé možností konektivity, disponuje integrovanými DVB-T/C/S2 tunery a technologií Smart Energy Saving. Oproti nižším řadám je vybaven lepším dvoujádrovým procesorem a Magickým stojanem a lze k němu dokoupit TV kameru AN-VC500. Poznejte bohatý a stále se rozšiřující svět 3D zábavy, který máte na dosah ruky - stačí jen použít Magický dálkový ovladač Karta Svět 3D v menu LG TV nabízí nekonečné množství 3D obsahu, který zahrnuje filmy, sport, hudbu, videa, vzdělávací pořady a mnoho dalšího!
FLICKER FREE - 3D OBRAZ BEZ BLIKÁNÍ
Užívejte si 3D TV, jejíž sledování je mnohem příjemnější pro Vaše oči, protože obraz vůbec nebliká. Na rozdíl od běžných 3D TV, LG CINEMA 3D Smart TV vůbec nebliká a 3D obraz je mnohem jasnější. To je mnohem příjemnější pro Vaše oči a obraz je čistší a ostřejší, takže Vám přijde, jako by vystupoval úplně z obrazovky. Cinema 3D Smart TV LG 47LA790V se Cinema 3D Screen Designem je 3D televizor s technologií LG Cinema 3D a úhlopříčkou 47", který určitě splní vaše očekávání. Oplývá veškerou moderní obrazovou technologií LG, která je zárukou výjimečné kvality obrazu s vysokou věrností barev a hlubším kontrastem včetně konverze z 2D na 3D, která vám umožní sledovat běžné televizní vysílání ve 3D prostorovém obrazu. Příjemným překvapením pro vaše děti bude také funkce Dual Play umožňující hraní her ve dvou lidech bez rozdělení obrazovky televize. Tento model Cinema 3D LED TV poskytuje kromě snížení spotřeby energie také různé možností konektivity, disponuje integrovanými DVB-T/C/S2 tunery a technologií Smart Energy Saving. Oproti nižším řadám je vybaven lepším dvoujádrovým procesorem a Magickým stojanem a lze k němu dokoupit TV kameru AN-VC500. Poznejte bohatý a stále se rozšiřující svět 3D zábavy, který máte na dosah ruky - stačí jen použít Magický dálkový ovladač Karta Svět 3D v menu LG TV nabízí nekonečné množství 3D obsahu, který zahrnuje filmy, sport, hudbu, videa, vzdělávací pořady a mnoho dalšího!
"
+
+msgid "
A4tech X710BK
Playing computer mouse has five buttons and scrolovacím button for easier browsing documents or Internet pages. News is a key 3XFire that in one pressing regulating a triple clicks. The mouse has five options to set up the sensor sensitivity and in steps 400, 600, 1200, 1600 and 2000 DPI. The mouse has an ergonomic design, it connects via high-speed USB interface and is equipped with 16 Kb internal memory that is possible with the Oscar Mouse Editor to record scripts to control your favorite games. It is fully compatible with all modern operating systems including Windows Vista.
Specifications:
Interface: USB 2.0 Reduction in PS/2
OS Compatibility: Microsoft Windows 2000/XP/2003/Vista"
+msgstr "
Herní počítačová myš A4Tech X-710BK s pěti tlačítky a scrolovacím kolečkem pro snadnější ovládání dokumentů, či prohlížení internetových stránek.
Novinkou u této série je 3XFire tlačítko, které při jednom zmáčknutí reaguje jako troj-klik. Další inovací je 5 DPI změna citlivosti snímáče a to v krocích 400/600/1200/1600/2000 DPI. Myš je pohodlně tvarovaná a připojuje se pomocí USB rozhraní. Novinkou je 16KB interní paměť do které je možné pomocí programu Oskar Mouse Editor nahrávat scripty na Vaše oblíbené hry. A4tech X710BK Herní počítačová myš vybavená pěti tlačítky a scrolovacím tlačítkem pro snadnější ovládání dokumentů nebo prohlížení internetových stránek. Novinkou je pak tlačítko 3XFire, které při jednom zmáčknutí reguje jako trojité kliknutí. Myš disponuje možností nastavit až pět citlivostí snímače a to v krocích 400, 600, 1200, 1600 a 2000 DPI. Myš má ergonomický design, připojuje se přes vysokorychlostní USB rozhraní a je vybavena 16 Kb interní paměti, do které je možné pomocí programu Oscar Mouse Editor nahrávat scripty pro ovládání vašich oblíbených her.
Je plně kompatibilní se všemi moderními operačními systémy včetně Windows Vista.
Parametry a specifikace:
Rozhraní: USB 2.0
Redukce do PS/2
Kompatibilita OS: Microsoft Windows 2000/XP/2003/Vista.
"
+
+msgid "
Canon EH-22L
High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm."
+msgstr "Canon EH-22L - pouzdro pro EOS 650D"
+
+msgid "
Canon EH-22L
High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm."
+msgstr "Canon EH-22L - pouzdro pro EOS 650D"
+
+msgid "
Canon PIXMA MG2450
Stylish and affordable, accessible multifunction devices for the home. Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components. The printing machine uses an innovative print FINE technology Which guarantee excellent print quality. The printer has a system of four ink colors hidden in two ink cartridges, which provide easy user service and stable print quality throughout the life. You can reach the XL cartridges FINE, which provide significantly greater number of print pages between ink replacement. This is ideal if you are printing large volumes.
Software My Image Garden will reveal the full range of functions PIXMA printers. It offers solutions for the layout and printing photos, scanning, and access to online services. Due to advanced features such as face detection, it will scan all the pictures on your computer (even those long forgotten), and compile them into great designs to print. Service CREATIVE PARK PREMIUM you can download and print photos, images and artwork from internationally recognized photographers and artists. Create greeting cards, calendars or stunning 3D paper products, such as the space shuttle Endeavour.
"
+msgstr "Multifunkční tiskárna CANON PIXMA MG2450, A4, print/scan/copy, USB, Vysoce kvalitní tisk s až 4 800 dpi a technologií kazet FINE, software pro inteligentní tisk z webů"
+
+msgid "
Canon PIXMA MG3350 black
Features of modern and elegantly prepared MFPs s new wireless capabilities. Function automatic two-sided printing printing on both sides, which saves paper while producing professional looking documents. The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridgesThat provide easy user service and stable print quality throughout the life. You reach for XL FINE cartridges provide printing multiple pages significantly between individual ink replacement. This is ideal if you often print.
Do smart device application download Canon PIXMA Printing Solutions a straight print or scan. In addition, you can check the printer status and ink levels. They also supported services Apple AirPrint and access to the Internet and Google Cloud Print. Software My Image Garden has a solution for organizing and printing photos, scanning, and access to online services. Due to advanced features such as face detection, you will always find exactly what you're looking for.
Additional information:
Print: Technology: 4-ink (in 2 packs) ChromaLife100 system, the head of FINE (2 pl) Borderless printing: A4, Letter, 20 x 25 cm, 13 x 18 cm, 10 x 15 cm Automatic two-sided printing: A4, A5, B5, Letter Printing from Application PIXMA Printing Solutions, Google Cloud Print, Apple AirPrint
"
+msgstr "Stylové kompaktní multifunkční zařízení s Wi-Fi a snadným mobilním tiskem. Stylové kompaktní multifunkční zařízení s Wi-Fi pro sdílení a používání odkudkoli v domácnosti. Nabízí rychlý, vysoce kvalitní tisk, kopírování a skenování a podporuje služby Google Cloud Print a Apple AirPrint."
+
+msgid "
Canon PIXMA MG3350 black
Features of modern and elegantly prepared MFPs s new wireless capabilities. Function automatic two-sided printing printing on both sides, which saves paper while producing professional looking documents. The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridgesThat provide easy user service and stable print quality throughout the life. You reach for XL FINE cartridges provide printing multiple pages significantly between individual ink replacement. This is ideal if you often print.
Do smart device application download Canon PIXMA Printing Solutions a straight print or scan. In addition, you can check the printer status and ink levels. They also supported services Apple AirPrint and access to the Internet and Google Cloud Print. Software My Image Garden has a solution for organizing and printing photos, scanning, and access to online services. Due to advanced features such as face detection, you will always find exactly what you're looking for. Additional information: Print: Technology: 4-ink (in 2 packs) ChromaLife100 system, the head of FINE (2 pl) Borderless printing: A4, Letter, 20 x 25 cm, 13 x 18 cm, 10 x 15 cm Automatic two-sided printing: A4, A5, B5, Letter Printing from Application PIXMA Printing Solutions, Google Cloud Print, Apple AirPrint
"
+msgstr "Stylové kompaktní multifunkční zařízení s Wi-Fi a snadným mobilním tiskem. Stylové kompaktní multifunkční zařízení s Wi-Fi pro sdílení a používání odkudkoli v domácnosti. Nabízí rychlý, vysoce kvalitní tisk, kopírování a skenování a podporuje služby Google Cloud Print a Apple AirPrint."
+
+msgid "
D-Link DGS-105/E
The switch provides a cost-effective way to create a small network or extend existing ones. Connect not only computers, but also a number of network devices such as IP cameras, network printers and more. The switch is equipped with five Gigabit Ethernet ports with auto-sensing speeds, so you shall always have the best performance. To communicate without delay and smooth video streaming has integrated QoS optimization .
Switch functions quickly and easily without complicated setting. But consistently low power detect used ports, and if stopping traffic enters Sleep mode. Rugged metal body is sufficient for cooling without fan . Together with its small size you can find a place almost anywhere. Also available is a set of wall mounting and it can also protect against theft Kensington."
+msgstr "
Prvni
Druha
Treti
"
+
+msgid "
Defender SPK-480
Defender SPK 480, two portable and practical 2\" broadband speakers. They have 4 watt output and are powered by USB. They're made of durable plastic and their compact size is portable and easy to fit into any bag or backpack. The speakers connect to notebooks or portable music players via the built-in 3.5 mm jack. Each speaker features its own volume control, and they can be placed near monitors without disturbing image quality due to their magnetic shielding. The silver and black design is simple and modern."
+msgstr "reproduktory 2.0, jednopásmové, výkon 2x2W RMS, 90Hz až 20kHz, USB napájení"
+
+msgid "
DéLonghi ECAM 44.660.B
Start the morning with your favorite drink with the DeLonghi ECAM 44.660.B Eletta automatic coffee maker. A built in special hot steam/water jet automatically prepares a thick milk froth for cappuccino and tea. Drip coffee lovers can also press their own coffee.
Magic Milk Menu button
A special function is the Milk Menu button, which gives you a choice of milk-based beverages. In addition to the classic cappuccino, latte macchiato, or Latte, you can prepare rare drinks such as Espresso macchiato and a flat white. For a quick and easy treat, you can prepare hot cocoa or a cup of frothed milk, and the size of the beverage can be adjusted based on the cup.
"
+msgstr "DeLonghi ECAM 44.660 B Luxusní plnoautomatický kávovar Eletta Plus v černé barvě s nerezovými částmi,1450 W"
+
+msgid "
GENIUS SP-M120 black
Sleek and compact stereo speakers in combination of black and metallic surface. Speakers provide basic computer sound system with an output of 2 W RMS. On the front is virtually placed in a large volume control, but not forgotten even the popular headphone jack. Specifications: Performance: 2 x 1 W RMS Frequency Range: 100 Hz - 20KHz Signal/noise ratio: 75 db Dimensions: 50 x 90 mm
"
+msgstr "Jednopásmové stereo reproduktory SP-M120 s celkovým hudebním výkonem 2 W, černým lesklým povrchem a elegantním kovovým krytem. Přední panel obsahuje 2 ovládací prvky (ovládání hlasitosti, zapnutí/vypnutí) a výstup pro sluchátka."
+
+msgid "
GIGABYTE GK-KM7580 Black
Quality set keyboard and optical mouse from Gigabyte. Both components are color-matched to the sleek glossy black color. The keyboard has 15 multimedia keys for quick access to the Internet, email and other applications. The multimedia keys also used for various tasks (volume control, ...). Optical mouse has a sensor with a resolution of 500 to 1000 DPI resolution can be switched. Mouse fits both the left and the right hand. Wireless communication provides a miniature USB receiver for keyboard and mouse. This set will contrast nicely on any desk.
Specifications:
Multimedia keys: 15 hotkeys
Interface: USB receiver
Communication: wireless, 2.4 GHz band
Power: Keyboard: 2x AAA Mouse: 2x AAA"
+msgstr "klávesnice s myší, multimediální, bezdrátová rádiová 2.4GHz, nano přijímač na USB, 15 multimediálních kláves, dosah až 5m, napájení klávesnice a myši 4x AAA, hmotnost 518 a 60 gramů, klávesnice obsahuje české znaky"
+
+msgid "
Genius SP-HF150 Black
Compact Speakers Genius SP-HF150 are the perfect accessory for portable computers. It is powered only by the USB port. Yet they can generate high power 4 W RMS. The sound of the smaller 2.5 \"drives is airy, yet does not lack sufficient bass fundament. All of the elegant veneer finish imitating a hidden volume control. Specifications:
Sound characteristics: Power: 2 x 2 W RMS Drivers: 2.5 \"(širokpásmové) Frequency range: 200 to 20 000 Hz Signal-to-Noise Ratio: 70 db
Connectors: 3.5 mm audio USB for power"
+msgstr "REPRO Genius SP-U150X černozelené 4W 2.0"
+
+msgid "
Genius SlimStar i222 CZ+SK Black
GENIUS LuxeMate I222 is a stylish black keyboard, which at first glance invites you to use your Apple design. It will decorate your desk at home or in the office. In addition to the standard layout will delight and a large variety of function keys that enhance control of the internet, email and also a multimedia player. Low profile you use for long periods still feel comfortable. The computer keyboard GENIUS LuxeMate I222 connects via USB interface.
Specifications:
Type: conduction Layout: Czech Interface: USB Design: Apple design"
+msgstr "klávesnice s myší, bezdrátová, ultratenká, nano přijímač s konektorem USB, s bezdrátovou optickou myší s turborolováním, dosah až 10m, klávesnice obsahuje české znaky"
+
+msgid "
JURA IMPRESSA Z9 One Touch TFT Pianoblack
Luxury automatic coffee machine Jura Impressa Z9 One Touch packed with Swiss precision and elegance, which sets new standards. This machine brings you jeich on several levels, such as coffee quality, easy to use and attractive design. The purpose is always the most advanced technology to achieve real, authentic results. The powerful device has intuitive controls and except large 3.5 \"TFT color display. Together with rotary dial allows you to choose between 11 specialties and goes to prepare any coffee you can think of. With the coffee a la carte, allowing you to quickly change settings according to your needs, your options are almost limitless.
For an authentic experience and to ensure optimal conditions for coffee are two Thermoblocks. The first coffee and hot water, the second is intended to couple. With every cup of coffee is also possible to set the correct brewing temperature, amount of water and grind. Mill technology + Aroma is quiet and up to twice faster than previously used. Grains of coffee while grinding so much heat and so there is no negative influence of taste of coffee.
Foam crown in drinks Latte macchiato, cappuccino and other specialty are the world extremely popular. Automatic coffee machine in the model IMPRESSA Z9 One Touch is a distinctive design with a combination of pure luxury and sophistication. But technology also has a soft foam that each of trendy coffee specialties will adjust fluffy crown. S cappuccino outlets, which can be adjusted up to 153 mm, there is no problem to use a glass or a latte macchiato. Formed with Swiss precision and elegance with which you prepare the perfect espresso, cappuccino or caffe latte.
You will enjoy a very low power consumption. If the espresso is separated from the mains power switch, patented innovation JURY Zero Energy Switch (zero energy consumption) will remove any energy at all. Before turning off the espresso is automatically purged and cleansed, which provides him with long life. The unique geometry with finer teeth grinding and new technology supports the lower noise machine when grinding coffee.
Modern stereo speakers in a stylish black design, with an output of 2.3 W, suitable only for desktops and laptops, but also for CD or MP3 players, and other devices. They are connected via standard stereo jack 3,5 mm. The speakers have a frequency response of 50 Hz to 20 kHz. Easily accessible controls are located on the side of the right speaker with headphone outlet.
Specifications: Performance: 2.3 W (2 x 1.15 W RMS)
Frequency response: 50 Hz to 20 kHz "
+msgstr "Standardní sterefonní reproduktory, které jsou svou velikostí vhodné např. k notebookům."
+
+msgid "
Nikon EH-22L
High quality, elegant, soft, and yet reliably protecting brand case for your Nikon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm."
+msgstr "Nikon ND-22L - pouzdro pro EOS 650D"
+
+msgid "
Steam iron Concept ZN8009 wattage 2200 Watt security system AUTO - SHUT OFF lets much easier and more convenient ironing.
Its other advantage is easy operation and many other practical functions and features, such as 3 m long supply cable through which you will not have to move ironing. Specifications:
Stainless steel soleplate
Even steam dosage: 20 g / min
Auto-off function AUTO SHUT-OFF Audible : turn off after 30 seconds in horizontal position and after 8 minutes in the vertical position irons
The water tank: 300 ml
Airbrush
The anti-drip ANTI-DRIP
Self-cleaning function Self Clean
The descaling function ANTI-CALC
Vertical steam
Notification light
Thermostat
3 m power cable (with swivel 360 °)
Color: blue + silver
Power consumption: 2200 W
Voltage: 230 V
Accessories: container to refill their water"
+msgstr "
Napařovací žehlička Concept ZN8009 o příkonu 2200 W s bezpečnostním systémem AUTO - SHUT OFF vám umožní mnohem snazší a pohodlnější žehlení.
Její další předností je jednoduché ovládání a mnoho dalších praktických funkcí a vlastností, jako třeba 3 m dlouhý přívodní kabel, díky kterému se nebudete muset s žehlením stěhovat:
Napařovací žehlička ZN8009 Ferrate:
Technické parametry:
Nerezová žehlící plocha
Rovnoměrné dávkování páry: 20 g/min
Funkce automatického vypnutí AUTO-SHUT OFF se zvukovou signalizací: vypne po 30ti vteřinách v horizontální poloze a po 8 minutách ve vertikální poloze žehličky
Zásobník na vodu: 300 ml
Rozprašovač
Funkce proti odkapávání ANTI-DRIP
Samočistící funkce SELF CLEAN
Odvápňovací funkce ANTI-CALC
Vertikální napařování
Světelná signalizace
Termostat
Přívodní kabel 3 m (s otočným kloubem o 360°)
Barva: modrá + stříbrná
Příkon: 2200 W
Napětí: 230 V
Příslušenství:
Nádobka na dolévání vody Vice informaci o domácích elektrospotřebičích značky Concept najdete "
+
+msgid "
A perfectly clean glass ceramic cooktop without leaving stains and does not endanger the environment.
remove leftover food, grease, nicotine coating and many other impurities
does not harm rubber and plastics
does not AOX - Adsorbable organic halogens
biologically degradable by OECD
"
+msgstr "
Dokonale čistí sklokeramické desky bez zanechání skvrn a neohrožuje životní prostředí.
odstraňuje zbytky potravin, tuku, nikotinového povlaku a mnoho dalších nečistot
Enjoy quick cooking with special cooking HI-LIGHT zones which warms almost immediately.
Reasons to opt just for built-in ceramic plate Concept SDV-3360:
The built-in ceramic hob SDV-3360 you will be astonished handy touch controls .
Special radiators cooking zones HI-LIGHT are able to warm up to a maximum of a few seconds.
The residual heat indicator H - will protect you against nasty burns. Indicates residual temperature of the cooking zone even after power off.
If you want to directly select the time that you want to cook, be sure to take the opportunity of the off-delay .
Specifications:
Height: 50mm
Width: 590 mm
Depth: 520 mm
Glass ceramics
Accessories cleaning scraper
Touch control
The residual heat indicator - H
Without frame, orthogonal edges Grounded
4 cooking zones
Auto-off function - EXTRA SECURE
The off-delay
Beep
Control Panel front center
Child lock
The ON state
Details:
Dimensions for installation (HxWxD): 46 x 560 x 490 mm
Main switch
Left Front plate: Circular HI-LIGHT
The diameter of the front left plates: 200 mm
Input left front plate: 1800 W
Rear left hotplate: Circular HI-LIGHT
The diameter of the rear left of the plate 165 mm
Input left rear plate: 1200 W
The right rear plate: Circular HI-LIGHT
The diameter of the rear right plate: 200mm
Input right rear plates : 1800 W
The front right plate: Circular HI-lihgt
The diameter of the front right plate 165 mm
Input right front plate: 1200 W
Max.příkon-el .: 5500-6600 W
Weight: 9 kg
Voltage: 220-240 / 400 V 2N ~ 50/60 Hz
"
+msgstr "
Dopřejte si rychlé vaření se speciálními varnými HI-LIGHT zónami, které hřejí téměř okamžitě.
Důvody proč se rozhodnout právě pro vestavnou sklokeramickou desku Concept SDV-3360:
Tato vestavná sklokeramická deska SDV-3360 Vás jistě zaujme praktickým dotykovým ovládáním.
Speciální topná tělesa varných zón HI-LIGHT se dokáží rozehřát na maximum během několika málo sekund.
Ukazatel zbytkového tepla –H- Vás ochrání před nepříjemným popálením. Signalizuje zbytkovou teplotu varné zóny i po jejím vypnutí.
Jestliže si chcete přímo navolit čas, po který chcete vařit, určitě využijete možnosti funkce zpožděného vypnutí.
Technické parametry:
Výška: 50 mm
Šířka: 590 mm
Hloubka: 520 mm
Sklokeramika
V příslušenství čistící škrabka
Dotykové ovládání
Ukazatel zbytkového tepla - H
Bez rámu, kolmé zabroušené hrany
4 varné zóny
Funkce automatického vypnutí - EXTRA BEZPEČNÁ
Funkce zpožděného vypnutí
Akustický signál
Ovládací panel vpředu uprostřed
Dětská pojistka
Ukazatel zapnutého stavu
Detailní popis:
Rozměry pro vestavbu (vxšxh): 46 x 560 x 490 mm
Hlavní vypínač
Přední levá plotna: kruhová HI-LIGHT
Průměr přední levé plotny: 200 mm
Příkon přední levé plotny: 1800 W
Zadní levá plotna: kruhová HI-LIGHT
Průměr zadní levé plotny: 165 mm
Příkon zadní levé plotny: 1200 W
Zadní pravá plotna: kruhová HI-LIGHT
Průměr zadní pravé plotny: 200mm
Příkon zadní pravé plotny: 1800 W
Přední pravá plotna: kruhová HI-LIHGT
Průměr přední pravé plotny: 165 mm
Příkon přední pravé plotny: 1200 W
Max.příkon-el.: 5500 - 6600 W
Hmotnost: 9 kg
Napětí: 220-240/400 V 2N ~ 50/60 Hz
"
+
+msgid "
Hand printing adhesive labels Brother especially suitable for easy marking in warehouses, offices and wherever it is required records or quickly usable labels. The printer boasts a very easy to use, ensuring a perfect look label width from 3.5 mm to 18 mm. You can create labels, barcodes, labels for folders, address and shipping labels, or labels on CD and DVD media. Everything can be created by using the keyboard directly to the printer manual.
The printer is in addition to ease of use and versatility also very fast. It can print up to 2 cm plate for one second. Very please direct thermal printing technology, which reduces the cost of toner and ink. The printer can be powered by AC adapter, rechargeable battery or alkaline batteries 6 x AA.
Additional information:
Print technology: Thermal
Width TZ tapes: 3.5/6/9/12/18 (mm) Display: 16 characters x 2 lines Print speed: 20 mm/s Odsřih: handmade Font style: 14
Symbols: 617
Characters in mind: 2800
Other features: vertical printing, barcode printing
Possible sources of supply: AC adapter AD-E001 - (not included) rechargeable battery BA-E001 - (not included) Alkaline Batteries 6 x AA - (not included) Package Contents: Printer PT-H300 starting tape TZe-241 (18 mm black on white, length 4 m) documentation
"
+msgstr "tiskárna samolepících štítků, ruční, rychlost tisku 20 mm/s, klávesnice QWERTZ, grafický podsvícený displej, tisk na štítky 6, 9, 12 a 18mm, tisk čárových kódů, pouze TZE pásky, napájení 6x AA baterie"
+
+msgid "
It is safe for you to your loved ones as important as us? In that case, you will appreciate with hob SDV-3460 feature residual heat indicators - H that you and your loved ones will protect against nasty burns. The residual heat indicator signals a residual temperature of the cooking zone even after power off.
Reasons to opt just for built-in ceramic plate Concept SDV-3460:
The built-in ceramic hob SDV-3460 you will be astonished handy touch controls .
Special radiators cooking zones HI-LIGHT are able to warm up to a maximum of a few seconds.
The residual heat indicator H - protects you against nasty burns. Indicates residual temperature of the cooking zone even after power off.
If you want to directly select the time that you want to cook, be sure to take the opportunity of the off-delay .
Specifications:
Height: 60 mm
Width: 590 mm
Depth: 520 mm
Glass ceramics
Accessories cleaning scraper
Touch control
The residual heat indicator - H
Without frame, angled edges Grounded
4 cooking zones
Auto-off function - EXTRA SECURE
The off-delay
Beep
Control Panel front center
Child lock
The ON state
Details:
Dimensions for installation (HxWxD): 50 x 560 x 490 mm
Main switch
Left Front plate:
The diameter of the front left plates: 165x265 mm
Input left front plate: 1100/2000 W
Rear Left plate: Circular HI-LIGHT
The diameter of the rear left of the plate 165 mm
Input left rear plate: 1200 W
The right rear plate: Circular HI-LIGHT
The diameter of the rear right plate: 200mm
wattage right rear plate: 1800 W
The front right plate: Circular HI-lihgt
The diameter of the front right plate: 165 mm
Input right front plate: 1200 W
Max.příkon-el .: 5700-6800 W
Weight: 10 kg
Voltage: 220-240 / 400 V 2N ~ 50/60 Hz
"
+msgstr "
Je pro Vás bezpečí Vašich blízkých stejně důležité jako pro nás? V tom případě uvítáte u varné desky SDV-3460 funkci ukazatele zbytkového tepla - H, která Vás a Vaše blízké uchrání před nepříjemným popálením. Ukazatel zbytkového tepla signalizuje zbytkovou teplotu varné zóny i po jejím vypnutí.
Důvody proč se rozhodnout právě pro vestavnou sklokeramickou desku Concept SDV-3460:
Tato vestavná sklokeramická deska SDV-3460 Vás jistě zaujme praktickým dotykovým ovládáním.
Speciální topná tělesa varných zón HI-LIGHT se dokáží rozehřát na maximum během několika málo sekund.
Ukazatel zbytkového tepla –H- Vás ochrání před nepříjemným popálením. Signalizuje zbytkovou teplotu varné zóny i po jejím vypnutí.
Jestliže si chcete přímo navolit čas, po který chcete vařit, určitě využijete možnosti funkce zpožděného vypnutí.
Technické parametry:
Výška: 60 mm
Šířka: 590 mm
Hloubka: 520 mm
Sklokeramika
V příslušenství čistící škrabka
Dotykové ovládání
Ukazatel zbytkového tepla - H
Bez rámu, šikmé zabroušené hrany
4 varné zóny
Funkce automatického vypnutí - EXTRA BEZPEČNÁ
Funkce zpožděného vypnutí
Akustický signál
Ovládací panel vpředu uprostřed
Dětská pojistka
Ukazatel zapnutého stavu
Detailní popis:
Rozměry pro vestavbu (vxšxh): 50 x 560 x 490 mm
Hlavní vypínač
Průměr přední levé plotny: 165x265 mm
Příkon přední levé plotny: 1100/2000 W
Zadní levá plotna: kruhová HI-LIGHT
Průměr zadní levé plotny: 165 mm
Příkon zadní levé plotny: 1200 W
Zadní pravá plotna: kruhová HI-LIGHT
Průměr zadní pravé plotny: 200mm
Příkon zadní pravé plotny: 1800 W
Přední pravá plotna: kruhová HI-LIHGT
Průměr přední pravé plotny: 165 mm
Příkon přední pravé plotny: 1200 W
Max.příkon-el.: 5700 - 6800 W
Hmotnost: 10 kg
Napětí: 220-240/400 V 2N ~ 50/60 Hz
"
+
+msgid "
Order number {number} has been sent, thank you for your purchase. We will contact you about next order status.
Track the status of your order. {transport_instructions} {payment_instructions}
"
+msgstr "
Objednávka číslo {number} byla odeslána, děkujeme za Váš nákup. Budeme Vás kontaktovat o dalším průběhu vyřizování.
The minimum space requirements excels sub-mounting range hood OPP-2060th Suitable for very small kitchens. Metal buttons provide ease of use and precise adjustment of the corresponding stage performance.
Reasons to choose just the sub-mounting range hood Concept OPP-2060:
Performance is the most important parameter hoods and should be at least equal to ten times the volume of the room. The sub-mounting range hood brand Concept OPP-2060 will surprise performance 186 m3 per hour .
Very practical is the ability to select 4 Ways exhaust .
Model OPP-2060 is equipped with a practical metal grease filter , its maintenance is very easy and unlimited lifespan. If you can not pay out of steam, you can choose instead of exhaust classic recirculation system using a carbon filter, which can be bought."
+msgstr "
Minimální prostorovou náročností vyniká podstavný odsavač par OPP-2060. Vhodný i pro velmi malé kuchyně. Kovová tlačítka zajišťují jednoduchost ovládání a přesné nastavení odpovídajícího stupně výkonu.
Důvody, proč se rozhodnout právě pro podstavný odsavač par Concept OPP-2060:
Výkon je nejdůležitějším parametrem odsavačů a měl by odpovídat minimálně desetinásobku objemu místnosti. Podstavný odsavač par značky Concept OPP-2060 Vás překvapí výkonem 186 m3 za hodinu.
Velice praktická je možnost navolit 4 způsoby odtahu.
Model OPP-2060 je vybaven praktickým kovovým filtrem proti mastnotám, jeho údržba je velice snadná a životnost neomezená. Pokud nemáte možnost odvést páry ven, můžete zvolit namísto klasického odtahu systém recirkulaces užitím uhlíkového filtru, který lze dokoupit. Jakmile bude filtr znečištěný, odsavač Vás sám upozorní.
Technické parametry:
Výška: 150 mm
Šířka: 600 mm
Hloubka: 490 mm
Příslušenství: zpětná klapka
Nerezové provedení
Možnost horního, zadního, bočního levého a pravého odtahu nebo recirkulace
Minimální vzdálenost od elektrické varné desky: 650 mm
Minimální vzdálenost od plynové varné desky: 750 mm
Netto hmotnost: 4,8 kg
Napětí: 230 V ~ 50Hz
Příkon: 150 W
Délka přívodního kabelu: 1,2 m
"
+
+msgid "
CD/DVD/Blu-ray/HD-DVDis an affordable program for burning CD/DVD/Blu-ray/HD-DVD media. Intuitive operation with its easy to handle even a novice in this field. Another big advantage is the use of technology burning \"on the fly\", which is spared not only your time but also the capacity of the disk, because the process does not create any storage (temporary) files on your hard disk.
Worth mentioning is also the fact that for its operation baking does not use any components of Windows or other manufacturers. Its functionality is not needed any external libraries or DLL. This makes the software provides high stability, even if your system is corrupted Windows. This gives you the ability to backup before reinstalling Broken System. The program is completely in the Czech language.
"
+msgstr "Existují stovky programů pro vypalování, avšak vyznat se v nich není ani pro zkušeného uživatele vůbec jednoduché. Právě proto jsme pro vás s autorem českých bestsellerů připravili 2. aktualizované vydání této úspěšné publikace. S knihou získáte nejen průvodce nejrůznějším vypalováním na CD a DVD, ale všechny programy a aplikace si můžete okamžitě vyzkoušet, neboť je obsahuje přiložené DVD."
+
+msgid "
Hewlett-Packard was founded in the difficult times of the Great Depression. The founders were a pair of friends whose name the company still proudly bears. They started their business in an unobtrusive garage near the city of Palo Alto. It is now a national monument. HP’s success lay not in copying existing products, but in the ability and courage to come up with something new.
The first commercial triumph was an oscillator that surpassed all competition in quality, yet sold at a quarter of the price. In 1968, HP released their first desktop computer - a desktop calculator. The company currently manufactures products primarily related to computer technology - computers and laptops, printers, scanners, digital cameras, servers, and last but not least, calculators.
Unless otherwise indicated in the product description, packaging does not contain a USB interface cable.
"
+msgstr "S touto jednoduchou a cenově dostupnou multifunkční tiskárnou HP Deskjet můžete tisknout, skenovat i kopírovat. Tiskněte více za méně peněz s levnými inkousty. Ušetřete místo díky kompaktnímu provedení, které lze umístit kamkoli, a začněte pracovat během pár okamžiků díky rychlé a jednoduché instalaci."
+
+msgid "
Meet the latest generation of LED TVs Philips, which include the thinSmart TV running Android. Gets you a fine painting, innovative technologies, including image processing Ambilight and honest materials used in production. It features cutting-edge design structures with an eye for detail that fits into modern interiors. Like basis was inclined central pedestal that represents the geometric pun. On TV it will always look nice even when switched off.
The main advantages:
Ambilight backlighting - projecting a glow on the wall
Sharp and smooth image
Android operating system with applications
Internet connection
Remote control with keyboard
Superior picture
Ambilight backlighting will forever change your perception of television. This is a unique technology that expands the display area outside the boundaries of the panel itself. 2 Sided glow lit from two sides of the screen to the surrounding walls and creates a breathtaking effect. Natural Motion technology ensures smooth and crisp moving images without blur by increasing the number of frames per second to double. It's handy for example when movie action scenes or sports broadcasts.
Micro Dimming Pro conveys a realistic visual experience day and night. It uses a light sensor and a special software to optimize the contrast of the screen on the basis of light conditions in the environment. The image is analyzed 6400 in different zones, thereby providing authentic and undisturbed experience. Sharp moving images with breathtaking contrast, detail and depth ensure Pixel Precise HD.
Android - richer television viewing experience
Built-in WiFi module, and an Ethernet port expands the possibilities of television. Are you tired of watching okoukaných series? Then drop into online content. Waiting for you Archives TV stations, social networks, YouTube and other corners of the Internet via a web browser. Smart TV is based on Android OS 5.0 (Lollipop), has pre-installed applications and more can be found at Google Play. Use remote control with keyboard for easy typing text or even voice control. Advantage based on Android is also always up to date firmware. And all of you will be taken without waiting for a nimble run television is not only the old operating system, but also 2jádrový processor.
Saving operation
Manufacturer did not forget to decent connective equipment. It includes a quartet of HDMI connectors, one Scart and a trio of USB connectors for recording or playback of content by connecting USB disks. There is also support for HbbTV function or even suspend broadcasts EPG 8 days. Tuners are represented DVB-T / T2 / C and television unequivocal advantage of the economic operation. The TV comes to energy class A +, and for a very decent cuts only 45 kWh.
Additional information:
Picture Enhancement: Natural Motion 500Hz Perfect Motion Rate Pixel Precise HD Micro Dimming Pro
Smart TV: User interaction - multiroom Client and Server, SimplyShare, certified Wi-Fi Certified Miracast Interactive television - HbbTV Program - Suspension of television broadcasting, USB recording Applications SmartTV - Online video store, open an Internet browser, Social TV service, Spotify, TV on Demand, YouTube Easy Installation - Automatic detection equipment Philips Connection Wizard equipment, Network Setup Wizard, the Setup Wizard Easy to use - Universal Smart Menu button, on-screen User Guide Firmware upgradeable - Guide cars. update, Firmware upgradeable via USB, Firmware Update online Screen Format Adjustments - Basic - Fill Screen, Fit to Screen, Advanced - Pan, Zoom, Stretch Philips TV Remote - Applications Channels, Control, NowOnTV, TV guide, Video on demand Remote control - Keyboard
Ambilight: Versions of Ambilight - 2 pages Ambilight - The adaptation of the color of walls, Lounge Mode, Game Mode, Ambilight + hue
Multimedia applications: Video playback formats - Containers: AVI, MKV, H264 / MPEG-4 AVC, MPEG-1, MPEG-2, MPEG-4, WMV9 / VC1, HEVC Format Support subtitles - .SMI, .SRT, .ssa, .SUB, .TXT, .ass Play music formats - AAC, MP3, WAV, WMA (v2 to v9.2), PRO-WMA (v9 and v10) Picture Playback Formats - JPEG, BMP, GIF, JPS, PNG, PNS, BMS, MIT
Connectivity:4 x HDMI1 x Scart (RGB / CVBS)3 x USBWireless Dual Band Wi-Fi Direct, Integrated Wi-Fi 11n 2 × 2Other connections: Antenna IEC75, Common Interface Plus (CI +), Ethernet-LAN ??RJ-45, Digital audio output (optical), Audio L / R, Audio Input (DVI), Headphone out, Service connector, the connector SatelliteHDMI features - Audio Return ChannelEasyLink (HDMI-CEC) - Pass the remote control signal, System audio control, System standby, One touch play
Supplied Remote control 2 x AAA Batteries Table top stand Power cable Quick start guide use Brochure Legal and safety information
"
+msgstr "
Televize PHILIPS 32PFL4308 3D LED TV 4300 series
32"(81 cm)
Full HD
200PMR
DVB-T/C
HDMI
USB
Full HD LED TV
Na kvalitě obrazu záleží.
Obyčejné televizory HDTV přinášejí kvalitu,ale vy očekáváte to nejlepší. Představte si úchvatně ostré detaily ve spojení s vysokým jasem,neuvěřitelným kontrastem,ostrým vykreslením pohybu,realistickými barvami a věrným obrazem - a také se sníženou spotřebou energie. Tak už nemusíte dále hledat. Televizor Full HD LED vám poskytne více detailů než standardní televizory HDTV. A více detailů obrazu pro vás znamená intenzivnější zážitek ze sledování. 200 Hz PMR Společnost Philips vytvořila technologii PMR pro zobrazení pohybu,které je přesné,plynulé a přirozené. PMR je standard pro měření ostrosti pohyblivého obrazu. Technologie Perfect Motion Rate je výsledkem spojení jedinečného zpracování obrazu,počtu snímků za sekundu a obnovovací frekvence jednotlivých snímků,dokonalých funkcí stmívání a technologie podsvícení. Vyšší číslo PMR přispívá k většímu kontrastu a zřetelnějšímu obrazu - což pro vás znamená obraz vynikající kvality.
Pixel Plus HD
Pokročilá technologie pro zpracování digitálního obrazu zvyšuje počet řádků a pixelů. Výsledek znamená vždy obraz ostrý jako břitva s neuvěřitelnými detaily a hloubkou z jakéhokoli zdroje. Služba Pause TV a nahrávání na zařízení USB Potřebujete si udělat přestávku a pokračovat ve sledování televize později? Funkce pozastavení znamená,že už nikdy nebudete muset čekat na reklamu - nebo ji sledovat! Chcete si nahrát živé digitální televizní vysílání a sledovat je,až se vám to bude hodit? Najděte své oblíbené programy pomocí Elektronického programového průvodce (EPG) a můžete snadno naplánovat nahrávání. Jednoduchým připojením pevného disku USB k televizoru se vysílání pohodlně uloží,abyste je mohli shlédnout později. Televize PHILIPS 32PFL4308 3D LED TV 4300 series, 32"(81 cm), Full HD, 200PMR, DVB-T/C, HDMI,USB Full HD LED TV Na kvalitě obrazu záleží. Obyčejné televizory HDTV přinášejí kvalitu,ale vy očekáváte to nejlepší. Představte si úchvatně ostré detaily ve spojení s vysokým jasem,neuvěřitelným kontrastem,ostrým vykreslením pohybu,realistickými barvami a věrným obrazem - a také se sníženou spotřebou energie. Tak už nemusíte dále hledat. Televizor Full HD LED vám poskytne více detailů než standardní televizory HDTV. A více detailů obrazu pro vás znamená intenzivnější zážitek ze sledování. 200 Hz PMR Společnost Philips vytvořila technologii PMR pro zobrazení pohybu,které je přesné,plynulé a přirozené. PMR je standard pro měření ostrosti pohyblivého obrazu. Technologie Perfect Motion Rate je výsledkem spojení jedinečného zpracování obrazu,počtu snímků za sekundu a obnovovací frekvence jednotlivých snímků,dokonalých funkcí stmívání a technologie podsvícení. Vyšší číslo PMR přispívá k většímu kontrastu a zřetelnějšímu obrazu - což pro vás znamená obraz vynikající kvality. Pixel Plus HD Pokročilá technologie pro zpracování digitálního obrazu zvyšuje počet řádků a pixelů. Výsledek znamená vždy obraz ostrý jako břitva s neuvěřitelnými detaily a hloubkou z jakéhokoli zdroje.
Služba Pause TV a nahrávání na zařízení USB
Potřebujete si udělat přestávku a pokračovat ve sledování televize později? Funkce pozastavení znamená,že už nikdy nebudete muset čekat na reklamu - nebo ji sledovat! Chcete si nahrát živé digitální televizní vysílání a sledovat je,až se vám to bude hodit? Najděte své oblíbené programy pomocí Elektronického programového průvodce (EPG) a můžete snadno naplánovat nahrávání. Jednoduchým připojením pevného disku USB k televizoru se vysílání pohodlně uloží,abyste je mohli shlédnout později.
"
+
+msgid "
This product is not an independently functional unit and may require professional installation.
"
+msgstr "Přenosný pevný disk GT SuperSpeed USB 3.0 se inspiruje dlouhou historií sportovních vozů, a proto jej zdobí známé bílé závodní pruhy, které jsou obvyklé na závodních okruzích po celém světě. Červené kontrolky LED na jeho zadní straně přispívají ke vzhledu podobnému závodním vozům.Díky lehkosti a kombinaci velké kapacity s atraktivním vzhledem je disk GT SuperSpeed ideální k nošení a dodá vašemu pracovišti styl a spolehlivost – ať už je to kdekoli. Disk GT SuperSpeed je napájen přes sběrnici USB 3.0 a nevyžaduje žádné externí napájení. Stačí jej jednoduše zapojit a ihned jej můžete začít používat. Je také naformátován systémem FAT32, takže jej můžete používat v operačních systémech Windows i Mac. Přenosný pevný disk GT SuperSpeed USB 3.0 se dodává společně s bohatým předinstalovaným softwarovým balíčkem. Tento balíček zahrnuje software Nero Backup, software pro úsporu energie Grey Button, software pro formátování a uživatelské příručky. Přepínač ochrany proti zápisu na zadní straně disku je nová funkce umožňující ochranu před neúmyslným odstraněním dat. Funguje na stejném principu jako přepínač ochrany proti zápisu na disketách nebo kartách SD."
+
+msgid "
Type nozzles: Universal
Diameter: 32 mm
Turbobrush Big
"
+msgstr "
Typ hubice: Univerzální
Průměr: 32 mm
Turbokartáč: Velký
"
+
+msgid "A"
+msgstr "A"
+
+msgid "A and micro B"
+msgstr "A a micro B"
+
+msgid "A book is a set of written, printed, illustrated, or blank sheets, made of ink, paper, parchment, or other materials, fastened together to hinge at one side. A single sheet within a book is a leaf, and each side of a leaf is a page. A set of text-filled or illustrated pages produced in electronic format is known as an electronic book, or e-book."
+msgstr "Kniha je sešitý nebo slepený svazek listů nebo skládaný arch papíru, kartonu, pergamenu nebo jiného materiálu, popsaný, potištěný nebo prázdný s vazbou a opatřený přebalem."
+
+msgid "A cable HDMI - HDMI AM / M 2 m gold-plated connector High Speed HDMI Cable with Ethernet 1.4 support 1080p FULL HD"
+msgstr "Kabel HDMI A - HDMI A M/M 2m zlacene konektory High Speed HDMI kabel s Ethernetem 1.4 podpora 1080p FULL HD"
+
+msgid "A camera is an optical instrument for recording or capturing images, which may be stored locally, transmitted to another location, or both."
+msgstr "Fotoaparát je zařízení sloužící k pořizování a zaznamenání fotografií. Každý fotoaparát je v principu světlotěsně uzavřená komora s malým otvorem (nebo nějakou složitější optickou soustavou – objektivem), jímž dovnitř vstupuje světlo, a nějakým druhem světlocitlivé záznamové vrstvy na druhé straně, na níž dopadající světlo kreslí obraz."
+
+msgid "A garden tool is any one of many tools made for gardens and gardening and overlaps with the range of tools made for agriculture and horticulture. Garden tools can also be hand tools and power tools."
+msgstr "Oddělení zahradního náčiní je jedno z největších oddělení v naší nabídce. Za pozornost stojí zejména naše filtry různých druhů nečistot, avšak doporučujeme popatřit zrakem i na naše boční držáky plechů."
+
+msgid "A personal computer (PC) is a general-purpose computer whose size, capabilities, and original sale price make it useful for individuals, and is intended to be operated directly by an end-user with no intervening computer time-sharing models that allowed larger, more expensive minicomputer and mainframe systems to be used by many people, usually at the same time."
+msgstr "Počítač je zařízení a výpočetní technika, která zpracovává data pomocí předem vytvořeného programu. Současný počítač je elektronický a skládá se z hardwaru, který představuje fyzické části počítače (mikroprocesor, klávesnice, monitor atd.) a ze softwaru (operační systém a programy). Počítač je zpravidla ovládán uživatelem, který poskytuje počítači data ke zpracování prostřednictvím jeho vstupních zařízení a počítač výsledky prezentuje pomocí výstupních zařízení. V současnosti jsou počítače využívány téměř ve všech oborech lidské činnosti."
+
+msgid "A printer is a peripheral which makes a persistent human readable representation of graphics or text on paper or similar physical media."
+msgstr "Tiskárna je periferní výstupní zařízení, které slouží k přenosu dat uložených v elektronické podobě na papír nebo jiné médium (fotopapír, kompaktní disk apod.). Tiskárnu připojujeme k počítači, ale může fungovat i samostatně."
+
+msgid "A telephone is a telecommunications device that permits two or more users to conduct a conversation when they are too far apart to be heard directly. A telephone converts sound, typically and most efficiently the human voice, into electronic signals suitable for transmission via cables or other transmission media over long distances, and replays such signals simultaneously in audible form to its user."
+msgstr "Mobilní telefony umožňují nejen komunikaci v rámci mobilní sítě, ale i spojení s pevnou telefonní sítí přímo volbou telefonního čísla na vestavěné klávesnici a poskytují širokou škálu dalších telekomunikačních služeb, jako jsou SMS, MMS, WAP a připojení na Internet. Protože patří k nejrozšířenějším elektronickým zařízením, výrobci je vybavují také dalšími funkcemi."
+
+msgid "A toy is an item that can be used for play. Toys are generally played with by children and pets. Playing with toys is an enjoyable means of training young children for life in society. Different materials are used to make toys enjoyable to all ages."
+msgstr "Hračka je předmět používaný ke hře dětí, ale někdy i dospělých. Slouží k upoutání pozornosti dítěte, jeho zabavení, ale také k rozvíjení jeho motorických a psychických schopností. Hračky existují již po tisíce let. Panenky, zvířátka, vojáčci a miniatury nástrojů dospělých jsou nacházeny v archeologických vykopávkách od nepaměti."
+
+msgid "A3"
+msgstr "A3"
+
+msgid "A4"
+msgstr "A4"
+
+msgid "A4tech X710BK Playing computer mouse has five buttons and scrolovacím button for easier browsing documents or Internet pages."
+msgstr "Herní počítačová myš A4Tech X-710BK s pěti tlačítky a scrolovacím kolečkem pro snadnější ovládání dokumentů, či prohlížení internetových stránek."
+
+msgid "A4tech mouse X-710BK, OSCAR Game, 2000DPI, black,"
+msgstr "A4tech myš X-710BK, OSCAR Game, 2000DPI, černá"
+
+msgid "Action"
+msgstr "Akce"
+
+msgid "Active"
+msgstr "Aktivní"
+
+msgid "Active/Passive"
+msgstr "Aktivní/Pasivní"
+
+msgid "Annual energy consumption"
+msgstr "Roční spotřeba energie"
+
+msgid "Apple iPhone 5S 64GB, gold"
+msgstr "Apple iPhone 5S 64GB, zlatý"
+
+msgid "Aquila Aquagym non-carbonated spring water"
+msgstr "Aquila Aquagym Pramenitá voda neperlivá"
+
+msgid "BROTHER PT-H300"
+msgstr "BROTHER PT-H300"
+
+msgid "Bluetooth"
+msgstr "Bluetooth"
+
+msgid "Book 55 best programs for burning CDs and DVDs"
+msgstr "Kniha 55 nejlepších programů pro vypalování CD a DVD"
+
+msgid "Book Computer for Dummies Digital Photography II"
+msgstr "Kniha Jak na počítač Digitální fotografie II"
+
+msgid "Book of procedures for dealing with traffic accidents"
+msgstr "Kniha Postup pří zvládání dopravní nehody"
+
+msgid "Book of traditional Czech fairy tales"
+msgstr "Kniha Křemílek a Vochomůrka"
+
+msgid "Book scoring system and traffic regulations"
+msgstr "Kniha Bodový systém a pravidla silničního provozu"
+
+msgid "Books"
+msgstr "Knihy"
+
+msgid "By entering an email below, you can download your personal and other information (for example, order history) from our online store. An email with a link will be sent to you after entering your email address, to verify your identity. Clicking on the link will take you to a page where you’ll be able to download these informations in readable format - it will be the data registered to given email address on this online store domain."
+msgstr "Zadáním emailu níže si můžete stáhnout své osobní a jiné informace (například historii objednávek) z našeho internetového obchodu. Pro ověření vaší totožnosti vám po zadání emailové adresy bude zaslán email s odkazem. Klikem na odkaz se dostanete na stránku s s možností stažení těchto informací ve strojově čitelném formátu - půjde o údaje evidované k dané emailové adrese na této doméně internetového obchodu."
+
+msgid "By entering an email below, you can view your personal information that we register in our online store. An email with a link will be sent to you after entering your email address, to verify your identity. Clicking on the link will take you to a page listing all the personal details we have connected to your email address."
+msgstr "Zadáním emailu níže si můžete nechat zobrazit vaše osobní údaje, která evidujeme v našem internetovém obchodu. Pro ověření vaší totožnosti vám po zadání emailové adresy bude zaslán email s odkazem. Klikem na odkaz se dostanete na stránku s přehledem těchto osobních údajů - půjde o všechny údaje evidované k dané emailové adrese."
+
+msgid "CD-R VERBATIM 210MB"
+msgstr "CD-R VERBATIM 210MB"
+
+msgid "Camera type"
+msgstr "Typ fotoaparátu"
+
+msgid "Cameras & Photo"
+msgstr "Fotoaparáty"
+
+msgid "Canceled"
+msgstr "Stornována"
+
+msgid "Canon EH-22L"
+msgstr "Canon EH-22L"
+
+msgid "Canon EH-22L. High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D."
+msgstr "Canon EH-22L - pouzdro pro EOS 650D"
+
+msgid "Canon EH-22M"
+msgstr "Canon EH-22L"
+
+msgid "Canon EOS 700D"
+msgstr "Canon EOS 700D"
+
+msgid "Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels"
+msgstr "Nikon COS 700D + EF-S 18-55mm DC III + 75-300mm DC III Kvalitní digitální zrcadlovka s CMOS snímačem s rozlišením 18 megapixelů"
+
+msgid "Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light"
+msgstr "Canon EOS 700D + EF-S 18-55mm DC III + 75-300mm DC III Kvalitní digitální zrcadlovka s CMOS snímačem s rozlišením 18 megapixelů, se kterou pořídíte špičkové fotografie v profesionálním stylu. Inovovaný procesor DIGIC 5 přináší výkonné zpracování obrazu v jakékoli situaci."
+
+msgid "Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light, even without a flash. Automatic smart scene mode analyzes the scene and automatically selects the best settings for the camera. View images, focus, or even pictures can be taken using a 3 \"touch screen TFT Clear View II with a whopping resolution of 1.04 million pixels and a vari-angle. With this camera out of you in a moment become a professional cameraman. It makes it possible to shoot stunning movies in Full HD 1080p. Hybrid AF technology enables continuous focus during movie shooting and using the built-in microphone ozvučíme your images are high quality stereo sound. Autofocus system comprising nine cross-type AF points to capture fast-moving objects without any blurring. Thanks to continuous shooting at up to 5 frames per second, you'll never miss a crucial moment for getting the best picture possible.The HDR Backlight Control mode, the camera takes three different exposures and combines them into one, in order to preserve details in shadows and areas with high brightness. In Night Scene mode, the camera takes the hand of multiple images at high shutter speeds and combining them together and thus prevents blurring. Captured images and videos simply adding it to an SD Memory Card, SDHC and SDXC, thanks to the integrated connector is miniHDMI you can conveniently viewed on your LCD or plasma TV. The camera can buy a wide range of lenses, flashes and accessories that are compatible with the EOS system."
+msgstr "Canon EOS 700D + EF-S 18-55mm DC III + 75-300mm DC III Kvalitní digitální zrcadlovka s CMOS snímačem s rozlišením 18 megapixelů, se kterou pořídíte špičkové fotografie v profesionálním stylu. Inovovaný procesor DIGIC 5 přináší výkonné zpracování obrazu v jakékoli situaci. Vysoký rozsah citlivosti až do 12 800 ISO vám umožní pořizovat skvělé snímky i za slabého osvětlení, a to i bez použití blesku. Automatický inteligentní scénický režim analyzuje scénu a automaticky vybírá nejvhodnější nastavení pro fotoaparát. Prohlížet snímky, zaostřovat nebo dokonce fotografovat můžete pomocí 3\" dotykového displeje TFT Clear View II s rozlišením neskutečných 1 040 000 obrazových bodů a variabilním úhlem natočení. S tímto fotoaparátem se z vás během chvíle stane profesionální kameraman. Umožňuje totiž natáčet úchvatné videozáznamy ve Full HD rozlišení 1080p. Technologie Hybrid AF umožňuje průběžně zaostřovat při pořizování filmu a pomocí vestavěného mikrofonu ozvučíte vaše snímky kvalitním stereo zvukem. Systém automatického zaostřování obsahující 9 křížových AF bodů umožní zachytit rychle se pohybující objekty bez zbytečného rozmazání. Zásluhou kontinuálního snímání rychlostí až 5 snímků za vteřinu již nikdy nezmeškáte rozhodující okamžik pro pořízení nejlepší možné fotografie. V režimu ovládání HDR podsvětlení fotoaparát pořizuje tři různé expozice a spojuje je v jednu, aby zachoval detaily ve stínech a oblastech s vysokým jasem. V režimu Noční scéna z ruky fotoaparát pořizuje více snímků při vysokých rychlostech závěrky a spojuje je dohromady, a tím zabraňuje rozmazání. Pořízené snímky a videa jednoduše uložíte na paměťové karty typu SD, SDHC a SDXC, díky integrovaného konektoru miniHDMI si je můžete pohodlně prohlédnout na vaší LCD nebo plazmové televizi. K fotoaparátu je možné dokoupit velkou řadu objektivů, příslušenství a blesků, které jsou kompatibilní se systémem EOS."
+
+msgid "Canon EOS 700E"
+msgstr "Canon EOS 700E"
+
+msgid "Canon MG3550"
+msgstr "Canon MG3550"
+
+msgid "Canon MG3650"
+msgstr "Canon MG3650"
+
+msgid "Canon PIXMA MG2450"
+msgstr "Canon PIXMA MG2450"
+
+msgid "Canon PIXMA MG2650"
+msgstr "Canon PIXMA MG2650"
+
+msgid "Canon PIXMA iP7250"
+msgstr "Canon PIXMA iP7250"
+
+msgid "Canon PIXMA iP7350"
+msgstr "Canon PIXMA iP7350"
+
+msgid "Cap with air conditioning, convenient for hot days."
+msgstr "Kšiltovka s ventilátorem se bude hodit každému, kdo ocení geniální nápady pro zpříjemnění horkých dnů."
+
+msgid "Cap with solar-powered fan, white"
+msgstr "Solární čepice s ventilátorkem, bílá"
+
+msgid "Capacity"
+msgstr "kapacita"
+
+msgid "Cash"
+msgstr "Hotově"
+
+msgid "Cash on delivery"
+msgstr "Dobírka"
+
+msgid "Circumaural"
+msgstr "Okolo uší - Circumaurální"
+
+msgid "Cleaner 3in1 stainless steel appliances (4039286078461)"
+msgstr "Čistič nerezových spotřebičů 3v1 ( 4039286078461 )"
+
+msgid "Coarse grater blade RM-3240/3250"
+msgstr "Nůž strouhací hrubý RM-3240/3250"
+
+msgid "Coffee Machines"
+msgstr "Kávovary"
+
+msgid "Coffeemakers or coffee machines are cooking appliances used to brew coffee. While there are many different types of coffeemakers using a number of different brewing principles, in the most common devices, coffee grounds are placed in a paper or metal filter inside a funnel, which is set over a glass or ceramic coffee pot, a cooking pot in the kettle family. Cold water is poured into a separate chamber, which is than heated up to the boiling point, and directed into the funnel."
+msgstr "Kávovar je stroj určený pro výrobu kávy takovým způsobem, aby se voda nemusela vařit v oddělené nádobě. Existuje obrovské množství kávovarů, nicméně princip přípravy kávy je vždy stejný: do kovového či papírového filtru se vloží rozemletá káva. Filtr s kávou se vloží do kávovaru, kde se přes něj (většinou pod tlakem) nechá přetéct horká voda vytékající do připravené nádoby na kávu (hrnek, sklenici apod.)."
+
+msgid "Collection of classical Czech fairy tales."
+msgstr "Prohlížejte obrázky a vyprávějte si s dětmi příběhy veselých mužíčků, Křemílka a Vochomůrky!"
+
+msgid "Color"
+msgstr "Barva"
+
+msgid "Color printing"
+msgstr "Barevný tisk"
+
+msgid "Compact Speakers Genius SP-HF150 are the perfect accessory for portable computers."
+msgstr "REPRO Genius SP-U150X černozelené 4W 2.0"
+
+msgid "Connectors"
+msgstr "Konektory"
+
+msgid "Construction"
+msgstr "Konstrukce"
+
+msgid "Contact"
+msgstr "Kontakty"
+
+msgid "Coupon valued to 100 Czech crowns. You can cash it at any exchange office"
+msgstr "Poukázka na 100 Kč. Můžete ji využít v libovolné směnárně."
+
+msgid "Cover"
+msgstr "Přebal"
+
+msgid "Credit card"
+msgstr "Kreditní kartou"
+
+msgid "Crevice nozzle VP-4290"
+msgstr "Hubice štěrbinová VP-4290"
+
+msgid "Cyklocomputer – cyklonavigation with preset maps, color display 3\", training programmes, WiFi"
+msgstr "Cyklocomputer - cyklonavigace s předinstalovanými mapami silnic a cyklotras, barevný dotykový displej 3\"."
+
+msgid "Czech"
+msgstr "česká"
+
+msgid "Czech post"
+msgstr "Česká pošta - balík do ruky"
+
+msgid "Czech republic"
+msgstr "Česká republika"
+
+msgid "D-Link"
+msgstr "D-Link"
+
+msgid "DVB-T"
+msgstr "DVB-T"
+
+msgid "DVB-T Receiver HD - MPEG4, MPEG2, USB recording, timeshift"
+msgstr "Kompaktní DVB-T přijímač (Set Top Box) Sencor SDB 4002M4 pro pozemní digitální vysílání neplacených digitálních programů (FTA)"
+
+msgid "DVB-T Receiver HD - MPEG4, MPEG2, USB recording, timeshift, EPG, HDMI 1.3, USB, SCART, coaxial output, power antenna 5V/50mA"
+msgstr "Kompaktní DVB-T přijímač (Set Top Box) Sencor SDB 4002M4 pro pozemní digitální vysílání neplacených digitálních programů (FTA) přes vnitřní nebo venkovní anténu. Možnost připojení k televizoru přes SCART kabel."
+
+msgid "DeLonghi ECAM 44.660 B Eletta Plus"
+msgstr "DeLonghi ECAM 44.660 B Eletta Plus"
+
+msgid "Dear customer,
based on your email {email}, we are sending you a link to your personal details. By clicking on the link below, you will be taken to a page listing all the personal details which we have in evidence in our online store {domain}.
To overview your personal information please click here - {url} The link is valid for next 24 hours. Best Regards
team of {domain}"
+msgstr "Vážený zákazníku,
na základě vašeho zadaného emailu {email}, Vám zasíláme odkaz na zobrazení osobních údajů. Klikem na odkaz níže se dostanete na stránku s přehledem všech osobních údajů, které k Vašemu emailu evidujeme na našem e-shopu {domain}.
Pro zobrazení osobních údajů klikněte zde - {url} Odkaz je platný 24 hodin.
S pozdravem tým {domain}"
+
+msgid "Dear customer,
Processing your order has been finished."
+msgstr "Vážený zákazníku,
zpracování objednávky bylo dokončeno."
+
+msgid "Dear customer,
Your order has been cancelled."
+msgstr "Vážený zákazníku,
Vaše objednávka byla zrušena."
+
+msgid "Dear customer,
Your order is being processed."
+msgstr "Vážený zákazníku,
Vaše objednávka se zpracovává."
+
+msgid "Dear customer,
your registration is completed. Name: {first_name} {last_name} Email: {email} E-shop link: {url} Log in page: {login_page}"
+msgstr "Vážený zákazníku,
based on your email {email}, we are sending you a link where you can download your personal details registered on our online store in readable format. Clicking on the link will take you to a page where you’ll be able to download these informations, which we have in evidence in our online store {domain}.
To download your personal information please click here - {url} The link is valid for next 24 hours.
Best regards team of {domain}"
+msgstr "Vážený zákazníku,
na základě vašeho zadaného emailu {email}, Vám zasíláme odkaz ke stažení Vašich údajů evidovaných na našem internetovém obchodě ve strojově čitelném formátu. Klikem na odkaz se dostanete na stránku s s možností stažení těchto informací, které k Vašemu emailu evidujeme na našem internetovém obchodu {domain}.
Pro přechod na stažení údajů, prosím, klikněte zde - {url} Odkaz je platný 24 hodin.
S pozdravem tým {domain}"
+
+msgid "Dear customer,
Your order has been placed successfully.
You will be contacted when the order state changes. Order number: {number} Date and time of creation: {date} E-shop link: {url} Order detail link: {order_detail_url} Shipping: {transport} Payment: {payment} Total price including VAT: {total_price} Billing address: {billing_address} Delivery address: {delivery_address} Note: {note} Products: {products} {transport_instructions} {payment_instructions}"
+msgstr "Dobrý den,
Vaše objednávka byla úspěšně vytvořena.
O dalších stavech objednávky Vás budeme informovat. Čislo objednávky: {number} Datum a čas vytvoření: {date} URL adresa eshopu: {url} URL adresa na detail objednávky: {order_detail_url} Doprava: {transport} Platba: {payment} Celková cena s DPH: {total_price} Fakturační adresa: {billing_address} Doručovací adresa: {delivery_address} Poznámka: {note} Produkty: {products} {transport_instructions} {payment_instructions}'"
+
+msgid "Dear customer.
You can set a new password following this link: {new_password_url}"
+msgstr "Vážený zákazníku,
na tomto odkazu můžete nastavit nové heslo: {new_password_url}'"
+
+msgid "Deep baking sheet ETV-2560/2860/2960 / 3160bc"
+msgstr "Plech pečicí hluboký ETV-2560/2860/2960/3160bc"
+
+msgid "Defender 2.0 SPK-480"
+msgstr "Defender 2.0 SPK-480"
+
+msgid "Defender SPK-480, easy to fit into any bag or backpack"
+msgstr "reproduktory 2.0, jednopásmové, výkon 2x2W RMS, 90Hz až 20kHz, USB napájení"
+
+msgid "Demo advert"
+msgstr "Demo reklama"
+
+msgid "Determination"
+msgstr "Určení"
+
+msgid "Digital Camera - Waterproof, shockproof, freezeproof, 16.1 Mpx CCD"
+msgstr "DMC FT5EP-K je špičkový odolný fotoaparát pro všechny venkovní aktivity."
+
+msgid "Digital Camera - Waterproof, shockproof, freezeproof, 16.1 Mpx CCD, 4x zoom (29-108 mm), 2.7\" LCD display, Li-Ion, HD video, SD/SDHC/SDXC, time lapse recording, stabilizer"
+msgstr "DMC FT5EP-K je špičkový odolný fotoaparát pro všechny venkovní aktivity. Model DMC-FT5 je vodotěsný do hloubky 13 m a prachotěsný podle standardů „IPX8“ a „IP6X“. Je odolný vůči nárazům, např. vůči pádu až ze 2 m, mrazuvzdorný do -10°C a snáší tlak do 0.107 kg/cm. Nově je vybavený sklem proti zamlžení způsobeném vodní párou. Vezměte fotoaparát s sebou na ryby, na táboření, potápění, surfování, horolezecký výstup, lyžování nebo na snowboard - DMC-FT5 vás může doprovázet po celý rok a znamenat úchvatné okamžiky."
+
+msgid "Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 \"LCD, Li-Ion, FullHD video, histogram, HDR"
+msgstr "Hledáte fotoaparát, se kterým zachytíte každodenní radosti i strasti vašeho života? Pak přivítejte elegantní kompaktní fotoaparát Nikon VH-520"
+
+msgid "Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 \"LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB"
+msgstr "Hledáte fotoaparát, se kterým zachytíte každodenní radosti i strasti vašeho života? Pak přivítejte elegantní kompaktní fotoaparát VH-520 s jedinečnými fotografickými schopnostmi! I přes extrémně kompaktní rozměry je VH-520 vybaven nejmodernějšími technologickými prvky, včetně 14 megapixelového CMOS senzoru, výkonného obrazového procesoru a technologií zpracování obrazu iHS, která produkuje dokonale jasné a ostré fotky s věrným barevným podáním.'"
+
+msgid "Digital Camera CMOS Exmor R1 20.2 megapixel, 3.6x zoom"
+msgstr "Ať cestujete kamkoli, využijte 20,2megapixelový snímač, kreativní ovládání a kompaktní design na maximum."
+
+msgid "Digital Camera CMOS Exmor R1 20.2 megapixel, 3.6x zoom (28-100 mm F1.8), Full HD video (1920 x 1080) 50p, 3 \"LCD, Li-Ion, MS DUO + \\u200b\\u200bSD/SDHC/SDXC, Face Detection, Intelligent stabilizer"
+msgstr "Ať cestujete kamkoli, využijte 20,2megapixelový snímač, kreativní ovládání a kompaktní design na maximum. Získejte výsledky jako profesionálové. Když to spojíte s vysoce výkonným procesorem BIONZ, získáte jeden z nejvýkonnějších kompaktů, jaký je dnes na trhu."
+
+msgid "Digital Camera Nikon VH-520 16 megapixel, 24x zoom, 3.0 \"LCD, Li-Ion, FullHD video"
+msgstr "Hledáte fotoaparát, se kterým zachytíte každodenní radosti i strasti vašeho života? Pak přivítejte elegantní kompaktní fotoaparát Nikon VH-520"
+
+msgid "Digital Camera Nikon VH-520 16 megapixel, 24x zoom, 3.0 \"LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB"
+msgstr "Hledáte fotoaparát, se kterým zachytíte každodenní radosti i strasti vašeho života? Pak přivítejte elegantní kompaktní fotoaparát Nikon VH-520 s jedinečnými fotografickými schopnostmi! I přes extrémně kompaktní rozměry je VH-520 vybaven nejmodernějšími technologickými prvky, včetně 14 megapixelového CMOS senzoru, výkonného obrazového procesoru a technologií zpracování obrazu iHS, která produkuje dokonale jasné a ostré fotky s věrným barevným podáním.'"
+
+msgid "Digital Voice Reco.rder Olympus VN-733PC is profiled primarily intuitive operation and long battery lif."
+msgstr "Stolní směrový mikrofon vhodný pro záznam přednášek, prodlužovací kabel o délce 1m"
+
+msgid "Digital Voice Reco.rder Olympus VN-733PC is profiled primarily intuitive operation and long battery life . Its user offers 4 gigabytes internal memory and a new slot for microSD cards. O capacity certainly will not be a shortage in power saving mode, LP handle record up to 1600 hours of recording"
+msgstr "Stolní směrový mikrofon vhodný pro záznam přednášek, prodlužovací kabel o délce 1m"
+
+msgid "Dimensions"
+msgstr "Rozměry"
+
+msgid "Discover the secret of people with us."
+msgstr "Máte již za sebou první krůčky s digitálním fotoaparátem? Chcete proniknout do tajemství pěkných snímků? V této knížečce se dozvíte, na co si dát před zmáčknutím spouště pozor, aby vaše fotografie netrpěla typickými chybami začátečníků, jak se fotografují různé typy objektů (portrét, krajina, mometky aj.) a jak snímky doladit v počítači, aby výsledný dojem byl dokonalý."
+
+msgid "Display"
+msgstr "Displej"
+
+msgid "Display Size"
+msgstr "Úhlopříčka displeje"
+
+msgid "Display size"
+msgstr "Velikost displeje"
+
+msgid "Display type"
+msgstr "Typ displeje"
+
+msgid "Done"
+msgstr "Vyřízena"
+
+msgid "Donec at dolor mi. Nullam ornare, massa in cursus imperdiet, felis nisl auctor ante, vel aliquet tortor lacus sit amet ipsum. Proin ultrices euismod elementum. Integer sodales hendrerit tortor, vel semper turpis interdum eu. Phasellus quam tortor, feugiat vel condimentum vel, tristique et ipsum. Duis blandit lectus in odio cursus rutrum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam pulvinar massa at imperdiet venenatis. Maecenas convallis lobortis quam in fringilla. Mauris gravida turpis eget sapien imperdiet pulvinar. Nunc velit urna, fringilla nec est sit amet, accumsan varius nunc. Morbi sed tincidunt diam, sit amet laoreet nisl. Nulla tempus id lectus non lacinia.\\n\\nVestibulum interdum adipiscing iaculis. Nunc posuere pharetra velit. Nunc ac ante non massa scelerisque blandit sit amet vel velit. Integer in massa sed augue pulvinar malesuada. Pellentesque laoreet orci augue, in fermentum nisl feugiat ut. Nunc congue et nisi a interdum. Aenean mauris mi, interdum vel lacus et, placerat gravida augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed sagittis ipsum et consequat euismod. Praesent a ipsum dapibus, aliquet justo a, consectetur magna. Phasellus imperdiet tempor laoreet. Sed a accumsan lacus, accumsan faucibus dolor. Praesent euismod justo quis ipsum aliquam suscipit. Sed quis blandit urna."
+msgstr "Donec at dolor mi. Nullam ornare, massa in cursus imperdiet, felis nisl auctor ante, vel aliquet tortor lacus sit amet ipsum. Proin ultrices euismod elementum. Integer sodales hendrerit tortor, vel semper turpis interdum eu. Phasellus quam tortor, feugiat vel condimentum vel, tristique et ipsum. Duis blandit lectus in odio cursus rutrum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam pulvinar massa at imperdiet venenatis. Maecenas convallis lobortis quam in fringilla. Mauris gravida turpis eget sapien imperdiet pulvinar. Nunc velit urna, fringilla nec est sit amet, accumsan varius nunc. Morbi sed tincidunt diam, sit amet laoreet nisl. Nulla tempus id lectus non lacinia.\\n\\nVestibulum interdum adipiscing iaculis. Nunc posuere pharetra velit. Nunc ac ante non massa scelerisque blandit sit amet vel velit. Integer in massa sed augue pulvinar malesuada. Pellentesque laoreet orci augue, in fermentum nisl feugiat ut. Nunc congue et nisi a interdum. Aenean mauris mi, interdum vel lacus et, placerat gravida augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed sagittis ipsum et consequat euismod. Praesent a ipsum dapibus, aliquet justo a, consectetur magna. Phasellus imperdiet tempor laoreet. Sed a accumsan lacus, accumsan faucibus dolor. Praesent euismod justo quis ipsum aliquam suscipit. Sed quis blandit urna."
+
+msgid "DéLonghi ECAM 44.660.B. Start the morning with your favorite drink with the DeLonghi ECAM 44.660.B Eletta automatic coffee maker"
+msgstr "DeLonghi ECAM 44.660 B Luxusní plnoautomatický kávovar Eletta Plus v černé barvě s nerezovými částmi,1450 W"
+
+msgid "Ear Coupling"
+msgstr "Uložení - Ear coupling"
+
+msgid "Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components."
+msgstr "Multifunkční tiskárna CANON PIXMA MG2450, A4, print/scan/copy, USB, Vysoce kvalitní tisk"
+
+msgid "Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components. The printing machine uses an innovative print FINE technology Which guarantee excellent print quality."
+msgstr "Multifunkční tiskárna CANON PIXMA MG2450, A4, print/scan/copy, USB, Vysoce kvalitní tisk"
+
+msgid "Electronics"
+msgstr "Elektro"
+
+msgid "Element arrangement"
+msgstr "Uspořádání prvků"
+
+msgid "Energy efficiency class"
+msgstr "Třída energetické účinnosti"
+
+msgid "Enjoy quick cooking with special cooking HI-LIGHT zones"
+msgstr "Dopřejte si rychlé vaření se speciálními varnými HI-LIGHT zónami"
+
+msgid "Enter"
+msgstr "Enter"
+
+msgid "Ergonomics"
+msgstr "Ergonomie"
+
+msgid "Extension rod plastic TM-4610"
+msgstr "Nástavec tyčový plast TM-4610"
+
+msgid "Features of modern and elegantly prepared MFPs with new wireless capabilities. Function automatic two-sided printing"
+msgstr "Stylové kompaktní multifunkční zařízení s Wi-Fi a snadným mobilním tiskem."
+
+msgid "Filter carbon OPK4290"
+msgstr "Filtr uhlíkový OPK4290"
+
+msgid "Filter input VP-9161 / SF-9162 / SF-8210"
+msgstr "Filtr vstupní VP-9161/VP-9162/VP-8210"
+
+msgid "Floor nozzle metal VP-9310"
+msgstr "Hubice podlahová kovová VP-9310"
+
+msgid "Floor nozzle metal yellow VP-9141ye"
+msgstr "Hubice podlahová kovová žlutá VP-9141ye"
+
+msgid "Fluorescent green laces. Visible at any condition."
+msgstr "Svítící tkaničky zelené. Najdete je i potmě."
+
+msgid "Fluorescent laces, green"
+msgstr "Svítící tkaničky zelené"
+
+msgid "Fold-up"
+msgstr "Skládání"
+
+msgid "Food"
+msgstr "Jídlo"
+
+msgid "Food is any substance consumed to provide nutritional support for the body. It is usually of plant or animal origin, and contains essential nutrients, such as fats, proteins, vitamins, or minerals. The substance is ingested by an organism and assimilated by the organism's cells to provide energy, maintain life, or stimulate growth."
+msgstr "Potravina je výrobek nebo látka určená pro výživu lidí a konzumovaná ústy v nezměněném nebo upraveném stavu. Potraviny se dělí na poživatiny a pochutiny. Potraviny mohou být rostlinného, živočišného nebo jiného původu."
+
+msgid "GENIUS LuxeMate I222 is a stylish black keyboard, which at first glance invites you to use your Apple design."
+msgstr "klávesnice s myší, bezdrátová, ultratenká, nano přijímač s konektorem USB, s bezdrátovou optickou myší s turborolováním, dosah až 10m, klávesnice obsahuje české znaky"
+
+msgid "GIGABYTE KM7580 CZ"
+msgstr "GIGABYTE KM7580 CZ"
+
+msgid "GPS module"
+msgstr "GPS modul"
+
+msgid "Gaming mouse"
+msgstr "Herní myš"
+
+msgid "Garden tools"
+msgstr "Zahradní náčiní"
+
+msgid "Genius NetScroll 310 silver"
+msgstr "Genius NetScroll 310 stříbrná"
+
+msgid "Genius SP-U150X black-green"
+msgstr "Genius SP-U150X černozelené"
+
+msgid "Genius SlimStar i820"
+msgstr "Genius SlimStar i820"
+
+msgid "Genius repro SP-M120 black"
+msgstr "Genius repro SP-M120 černá"
+
+msgid "Glass cleaner and a glass-ceramic plates (4019786908123)"
+msgstr "Čistič skla a sklokeramických desek ( 4019786908123 )"
+
+msgid "HDMI"
+msgstr "HDMI"
+
+msgid "HEPA filter CN-9240 (VP-9241)"
+msgstr "HEPA filtr CN-9240 (VP-9241)"
+
+msgid "HEPA filter SF-9161 / SF-8210"
+msgstr "HEPA filtr VP-9161/VP-8210"
+
+msgid "HEPA filter VP-9241"
+msgstr "HEPA filtr VP-9241"
+
+msgid "HEPA filter VP-9711/12"
+msgstr "HEPA filtr VP-9711/12"
+
+msgid "HP Deskjet Ink Advantage 1515 (B2L57C)"
+msgstr "HP Deskjet Ink Advantage 1515 (B2L57C)"
+
+msgid "HP Deskjet Ink Advantage 1615 (B2L57C)"
+msgstr "HP Deskjet Ink Advantage 1615 (B2L57C)"
+
+msgid "HQ speakers from well known brand."
+msgstr "Pokračující inovace v nabídce špičkových sluchátek firmy Sennheiser zrodila nejnovější high-end model - HD 700."
+
+msgid "HTC Desire 816 White"
+msgstr "HTC Desire 816 White"
+
+msgid "Hand printing adhesive labels Brother especially suitable for easy marking in warehouses, offices and wherever it is required records or quickly usable labels. The printer boasts a very easy to us"
+msgstr "tiskárna samolepících štítků, ruční, rychlost tisku 20 mm/s, klávesnice QWERTZ, grafický podsvícený displej"
+
+msgid "Have you ever experienced an accident and didn't know how to react? Or are you going to? This book is just for you!"
+msgstr "Karta je vyrobena z odolného materiálu a obsahuje přehledný návod na poskytnutí první pomoci"
+
+msgid "Hewlett-Packard was founded in the difficult times of the Great Depression."
+msgstr "S touto jednoduchou a cenově dostupnou multifunkční tiskárnou HP Deskjet můžete tisknout, skenovat i kopírovat."
+
+msgid "Hewlett-Packard was founded in the difficult times of the Great Depression. The founders were a pair of friends whose name the company still proudly bears."
+msgstr "S touto jednoduchou a cenově dostupnou multifunkční tiskárnou HP Deskjet můžete tisknout, skenovat i kopírovat."
+
+msgid "High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D."
+msgstr "Canon EH-22L - pouzdro pro EOS 650D"
+
+msgid "Home Listening"
+msgstr "Domácí poslech"
+
+msgid "Hose VP-9241"
+msgstr "Hadice VP-9241"
+
+msgid "Hose VP-9310"
+msgstr "Hadice VP-9310"
+
+msgid "Hyundai 22HD44D"
+msgstr "Hyundai 22HD44D"
+
+msgid "In Progress"
+msgstr "Vyřizuje se"
+
+msgid "In stock"
+msgstr "Skladem"
+
+msgid "Information about cookies"
+msgstr "Informace o cookies"
+
+msgid "Interface"
+msgstr "Rozhraní"
+
+msgid "Intuitive operation with its easy to handle even a novice in this field. Another big advantage is the use of technology burning \"on the fly\", which is spared not only your time but also the capacity of the disk, because the process does not create any storage (temporary) files on your hard disk."
+msgstr "Existují stovky programů pro vypalování, avšak vyznat se v nich není ani pro zkušeného uživatele vůbec jednoduché. Právě proto jsme pro vás s autorem českých bestsellerů připravili 2. aktualizované vydání této úspěšné publikace. S knihou získáte nejen průvodce nejrůznějším vypalováním na CD a DVD, ale všechny programy a aplikace si můžete okamžitě vyzkoušet, neboť je obsahuje přiložené DVD."
+
+msgid "JURA Impressa J9 TFT Carbon"
+msgstr "JURA Impressa J9 TFT Carbon"
+
+msgid "Kabel HDMI A - HDMI A M/M 2m gold-plated connectors High Speed HD"
+msgstr "Kabel HDMI A - HDMI A M/M 2m zlacene konektory High Speed HD"
+
+msgid "Knife potato RM-3240/3250"
+msgstr "Nůž na bramboráky RM-3240/3250"
+
+msgid "LCD"
+msgstr "LCD"
+
+msgid "LED"
+msgstr "LED"
+
+msgid "LG 22MT44D 21,5\""
+msgstr "LG 22MT44D 21,5\""
+
+msgid "LG 22MT44D 30\""
+msgstr "LG 22MT44D 30\""
+
+msgid "LG 22MT44D 51,5\""
+msgstr "LG 22MT44D 51,5\""
+
+msgid "LG 22MT44D 60\""
+msgstr "LG 22MT44D 60\""
+
+msgid "LG 47LA790W (FHD)"
+msgstr "LG 47LA790W (FHD)"
+
+msgid "LG 58LA790W (FHD)"
+msgstr "LG 58LA790W (FHD)"
+
+msgid "LG E410 Optimus L1 II White"
+msgstr "LG E410 Optimus L1 II White"
+
+msgid "Localization"
+msgstr "Lokalizace"
+
+msgid "Logitech S120 black"
+msgstr "Logitech S120 black"
+
+msgid "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus felis nisi, tincidunt sollicitudin augue eu, laoreet blandit sem. Donec rutrum augue a elit imperdiet, eu vehicula tortor porta. Vivamus pulvinar sem non auctor dictum. Morbi eleifend semper enim, eu faucibus tortor posuere vitae. Donec tincidunt ipsum ullamcorper nisi accumsan tincidunt. Aenean sed velit massa. Nullam interdum eget est ut convallis. Vestibulum et mauris condimentum, rutrum sem congue, suscipit arcu.\\nSed tristique vehicula ipsum, ut vulputate tortor feugiat eu. Vivamus convallis quam vulputate faucibus facilisis. Curabitur tincidunt pulvinar leo, eu dapibus augue lacinia a. Fusce sed tincidunt nunc. Morbi a nisi a odio pharetra laoreet nec eget quam. In in nisl tortor. Ut fringilla vitae lectus eu venenatis. Nullam interdum sed odio a posuere. Fusce pellentesque dui vel tortor blandit, a dictum nunc congue."
+msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus felis nisi, tincidunt sollicitudin augue eu, laoreet blandit sem. Donec rutrum augue a elit imperdiet, eu vehicula tortor porta. Vivamus pulvinar sem non auctor dictum. Morbi eleifend semper enim, eu faucibus tortor posuere vitae. Donec tincidunt ipsum ullamcorper nisi accumsan tincidunt. Aenean sed velit massa. Nullam interdum eget est ut convallis. Vestibulum et mauris condimentum, rutrum sem congue, suscipit arcu.\\nSed tristique vehicula ipsum, ut vulputate tortor feugiat eu. Vivamus convallis quam vulputate faucibus facilisis. Curabitur tincidunt pulvinar leo, eu dapibus augue lacinia a. Fusce sed tincidunt nunc. Morbi a nisi a odio pharetra laoreet nec eget quam. In in nisl tortor. Ut fringilla vitae lectus eu venenatis. Nullam interdum sed odio a posuere. Fusce pellentesque dui vel tortor blandit, a dictum nunc congue."
+
+msgid "Luxury automatic coffee machine Jura Impressa Z9 One Touch packed with Swiss precision and elegance, which sets new standards. This machine brings you jeich on several levels, such as coffee quality, easy to use and attractive design."
+msgstr "JURA Impressa J9 TFT Carbon Automatický kávovar/espresso,barevný LCD"
+
+msgid "MIO Cyclo 100, bicycle computer, 1,8\""
+msgstr "MIO Cyclo 100, cyklopočítač na jízdní kolo, 1,8\""
+
+msgid "Magazine capacity for beans"
+msgstr "Kapacita zásobníku na zrna"
+
+msgid "Maximum size"
+msgstr "Maximální formát"
+
+msgid "Media type"
+msgstr "Typ média"
+
+msgid "Meet the latest generation of LED TVs Philips, which include the thin Smart TV running Android."
+msgstr "Televize PHILIPS 32PFL4308 3D LED TV 4300 series, 81 cm, Full HD, 200PMR, DVB-T/C, HDMI, USB, Full HD LED TV, Na kvalitě obrazu záleží"
+
+msgid "Memory card support"
+msgstr "Možnost pamětové karty"
+
+msgid "Metal grease filter OPK-4290"
+msgstr "Filtr tukový kovový OPK-4290"
+
+msgid "Metal grease filter OPK-5660 / OPK-5760 / OPK-6690"
+msgstr "Filtr tukový kovový OPK-5660/OPK-5760/OPK-6690"
+
+msgid "Metal grease filter OPV-3260"
+msgstr "Filtr tukový kovový OPV-3260"
+
+msgid "Microsoft Basic Optical Mouse, black"
+msgstr "Microsoft Basic Optical Mouse, černá"
+
+msgid "Milk reservoir capacity"
+msgstr "Objem zásobníku na mléko"
+
+msgid "Million-euro toilet paper"
+msgstr "Milionový toaleťák euro"
+
+msgid "Mini CD-R 8 cm"
+msgstr "Mini CD-R 8 cm"
+
+msgid "Mobile Phones"
+msgstr "Mobilní telefony"
+
+msgid "Mobile phone - Apple A7 with 64-bit architecture, 4\" Retina Touch display 1136x640, 32GB internal memory, WiFi 802.11a/b/g/n, Bluetooth 4.0, 8 Mpx camera with LED flash, GPS, Fingerprint sensor, iOS 7"
+msgstr "Apple iPhone 5S je smysluplně vymyšlený. Pečlivě zvážený. Precizně zpracovaný. Není jen tím, co je technologicky možné. Ale tím, co je technologicky užitečné. Není tím, co přijde. Ale tím, co by mělo přijít. Inovovaný a opět o hodně vylepšený smartphone od společnosti Apple, to je iPhone 5S."
+
+msgid "Mobile phone 4.5 \"800x480, processor, Quad-Core 1.2GHz, RAM 768 megabytes internal memory of 4GB"
+msgstr "Smartphone,1.2GHz DC, Android 4.2, BT4.0, A-GPS"
+
+msgid "Mobile phone 4.5 \"800x480, processor, Quad-Core 1.2GHz, RAM 768 megabytes internal memory of 4GB, microSD up to 64GB, 5 megapixel camera, GPS, WiFi, Bluetooth 4.0, NFC, 3G, microUSB, Li-Ion 2000 mAh, Android 4.4"
+msgstr "Smartphone,1.2GHz DC, Android 4.2, BT4.0, A-GPS, Wi-Fi 802.11b/g/n, 5Mpx kam., HSDPA/EDGE, GSM Quad-Band, 4GB flash, 768MB RAM, microSDHC slot, kapacitní 4.3\" TFT LCD 480x800, Li-Ion 1800mAh, NFC, CZ"
+
+msgid "Mobile phone 4.6 \"1280x720, Qualcomm MSM8960Pro 1.7 GHz"
+msgstr "Mobilní telefon pochází z oficiální české distribuce, má české menu a českou dokumentaci a je na něj poskytována plná záruka"
+
+msgid "Mobile phone 4.6 \"1280x720, Qualcomm MSM8960Pro 1.7 GHz, 1GB RAM, 8GB 8MPx camera, GPS, WiFi, Bluetooth, FM, micro USB, Android 4.1"
+msgstr "Mobilní telefon pochází z oficiální české distribuce, má české menu a českou dokumentaci a je na něj poskytována plná záruka jak u naší firmy, tak u výrobce. Více info na http://tsblog.cz/informace-pro-zakazniky/co-je-sedy-dovoz-a-proc-je-nebezpecny.html"
+
+msgid "Mobile phone 4.7\" 720x1280, procesor 1,5GHz, internal memory 16GB, camera 8mpx, GPS, WiFi, Bluetooth, 3G, FM, microSD, micro USB, Android 4.0"
+msgstr "Model LG E410 Optimus L1 II zaujme uživatele elegatním vzhledem řady L style a praktickou velikostí."
+
+msgid "Modern stereo speakers in a stylish black design, with an output of 2.3 W, suitable only for desktops and laptops, but also for CD or MP3 players."
+msgstr "Standardní sterefonní reproduktory, které jsou svou velikostí vhodné např. k notebookům."
+
+msgid "Morbi posuere mauris dolor, quis accumsan dolor ullamcorper eget. Phasellus at elementum magna, et pretium neque. Praesent tristique lorem mi, eget varius quam aliquam eget. Vivamus ultrices interdum nisi, sed placerat lectus fermentum non. Phasellus ac quam vitae nisi aliquam vestibulum. Sed rhoncus tortor a arcu sagittis placerat. Nulla lectus nunc, ultrices ac faucibus sed, accumsan nec diam. Nam auctor neque quis tincidunt tempus. Nunc eget risus tristique, lobortis metus vitae, pellentesque leo. Vivamus placerat turpis ac dolor vehicula tincidunt. Sed venenatis, ante id ultrices convallis, lacus elit porttitor dolor, non porta risus ipsum ac justo. Integer id pretium quam, id placerat nulla."
+msgstr "Morbi posuere mauris dolor, quis accumsan dolor ullamcorper eget. Phasellus at elementum magna, et pretium neque. Praesent tristique lorem mi, eget varius quam aliquam eget. Vivamus ultrices interdum nisi, sed placerat lectus fermentum non. Phasellus ac quam vitae nisi aliquam vestibulum. Sed rhoncus tortor a arcu sagittis placerat. Nulla lectus nunc, ultrices ac faucibus sed, accumsan nec diam. Nam auctor neque quis tincidunt tempus. Nunc eget risus tristique, lobortis metus vitae, pellentesque leo. Vivamus placerat turpis ac dolor vehicula tincidunt. Sed venenatis, ante id ultrices convallis, lacus elit porttitor dolor, non porta risus ipsum ac justo. Integer id pretium quam, id placerat nulla."
+
+msgid "Mouse game, 8200dpi laser sensor, 7 programmable buttons + 2D wheel 12000fps, 1ms response, EasyShift, USB, LED backlight, Turbo Core V2, Black"
+msgstr "Optická myš od Roccat je to pravé pro opravdové hráče. Skvěle padne díky ergonomickému tvaru a o 9 % menším rozměrům oproti klasické. Roccat Kone"
+
+msgid "Multimedia"
+msgstr "Multimédia"
+
+msgid "NFC"
+msgstr "NFC"
+
+msgid "NS-9020 Limpio/Clipper/Nino replacement paper bags for VP902/3/9010"
+msgstr "NS-9020 Limpio/Clipper/Nino náhradní papírové sáčky pro VP902_/3_/9010"
+
+msgid "NS-9030 Clipper replacement paper bags for VP-903/913"
+msgstr "NS-9030 Clipper náhradní papírové sáčky pro VP-903/913"
+
+msgid "NS-9040 Jumbo replacement paper bags for VP-9040"
+msgstr "NS-9040 Jumbo náhradní papírové sáčky pro VP-9040"
+
+msgid "NS-9310 Infant replacement bags of paper for the VP-9310"
+msgstr "NS-9310 Infant náhradní sáčky papírové pro VP-9310"
+
+msgid "NS-9710 Prominent replacement paper bags for VP-9711/12/13"
+msgstr "NS-9710 Prominent náhradní sáčky papírové pro VP-9711/12/13"
+
+msgid "New [adjective]"
+msgstr "Nová"
+
+msgid "New [noun]"
+msgstr "Novinka"
+
+msgid "New driving rules and tips just for you!"
+msgstr "Prostudujte si nová pravidla silničního provozu platná od 1. července 2006!"
+
+msgid "News"
+msgstr "Novinky"
+
+msgid "Nikon COS 700D"
+msgstr "Nikon COS 700D"
+
+msgid "Nikon DMC FT5EP"
+msgstr "Nikon DMC FT5EP"
+
+msgid "Nikon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light, even without a flash. Automatic smart scene mode analyzes the scene and automatically selects the best settings for the camera. View images, focus, or even pictures can be taken using a 3 \"touch screen TFT Clear View II with a whopping resolution of 1.04 million pixels and a vari-angle. With this camera out of you in a moment become a professional cameraman. It makes it possible to shoot stunning movies in Full HD 1080p. Hybrid AF technology enables continuous focus during movie shooting and using the built-in microphone ozvučíme your images are high quality stereo sound. Autofocus system comprising nine cross-type AF points to capture fast-moving objects without any blurring. Thanks to continuous shooting at up to 5 frames per second, you'll never miss a crucial moment for getting the best picture possible.The HDR Backlight Control mode, the camera takes three different exposures and combines them into one, in order to preserve details in shadows and areas with high brightness. In Night Scene mode, the camera takes the hand of multiple images at high shutter speeds and combining them together and thus prevents blurring. Captured images and videos simply adding it to an SD Memory Card, SDHC and SDXC, thanks to the integrated connector is miniHDMI you can conveniently viewed on your LCD or plasma TV. The camera can buy a wide range of lenses, flashes and accessories that are compatible with the EOS system."
+msgstr "Nikon COS 700D + EF-S 18-55mm DC III + 75-300mm DC III Kvalitní digitální zrcadlovka s CMOS snímačem s rozlišením 18 megapixelů, se kterou pořídíte špičkové fotografie v profesionálním stylu. Inovovaný procesor DIGIC 5 přináší výkonné zpracování obrazu v jakékoli situaci. Vysoký rozsah citlivosti až do 12 800 ISO vám umožní pořizovat skvělé snímky i za slabého osvětlení, a to i bez použití blesku. Automatický inteligentní scénický režim analyzuje scénu a automaticky vybírá nejvhodnější nastavení pro fotoaparát. Prohlížet snímky, zaostřovat nebo dokonce fotografovat můžete pomocí 3\" dotykového displeje TFT Clear View II s rozlišením neskutečných 1 040 000 obrazových bodů a variabilním úhlem natočení. S tímto fotoaparátem se z vás během chvíle stane profesionální kameraman. Umožňuje totiž natáčet úchvatné videozáznamy ve Full HD rozlišení 1080p. Technologie Hybrid AF umožňuje průběžně zaostřovat při pořizování filmu a pomocí vestavěného mikrofonu ozvučíte vaše snímky kvalitním stereo zvukem. Systém automatického zaostřování obsahující 9 křížových AF bodů umožní zachytit rychle se pohybující objekty bez zbytečného rozmazání. Zásluhou kontinuálního snímání rychlostí až 5 snímků za vteřinu již nikdy nezmeškáte rozhodující okamžik pro pořízení nejlepší možné fotografie. V režimu ovládání HDR podsvětlení fotoaparát pořizuje tři různé expozice a spojuje je v jednu, aby zachoval detaily ve stínech a oblastech s vysokým jasem. V režimu Noční scéna z ruky fotoaparát pořizuje více snímků při vysokých rychlostech závěrky a spojuje je dohromady, a tím zabraňuje rozmazání. Pořízené snímky a videa jednoduše uložíte na paměťové karty typu SD, SDHC a SDXC, díky integrovaného konektoru miniHDMI si je můžete pohodlně prohlédnout na vaší LCD nebo plazmové televizi. K fotoaparátu je možné dokoupit velkou řadu objektivů, příslušenství a blesků, které jsou kompatibilní se systémem EOS."
+
+msgid "Nikon ND-22L"
+msgstr "Nikon ND-22L"
+
+msgid "Nikon TS-800"
+msgstr "Nikon TS-800"
+
+msgid "Nikon VH-520"
+msgstr "Nikon VH-520"
+
+msgid "No"
+msgstr "Ne"
+
+msgid "Nozzle with brush VP-4290"
+msgstr "Hubice s kartáčem VP-4290"
+
+msgid "Number of buttons"
+msgstr "Počet tlačítek"
+
+msgid "Number of colors"
+msgstr "Počet barev"
+
+msgid "Number of processor cores"
+msgstr "Počet jader procesoru"
+
+msgid "OKI MC861cdxm"
+msgstr "OKI MC861cdxm"
+
+msgid "OKI MC861cdxn+ (01318206)"
+msgstr "OKI MC861cdxn+ (01318206)"
+
+msgid "OLYMPUS ME-34 Compact directional microphone suitable for recording lectures"
+msgstr "OLYMPUS ME-34 Kompaktní směrový mikrofon vhodný pro záznam přednášek"
+
+msgid "OLYMPUS VH-520"
+msgstr "OLYMPUS VH-520"
+
+msgid "OLYMPUS VH-620"
+msgstr "OLYMPUS VH-620"
+
+msgid "OPK44xx carbon filter / OPK-5690 / OPK5790 / OPO55xx"
+msgstr "Filtr uhlíkový OPK44xx / OPK-5690 / OPK5790 / OPO55xx"
+
+msgid "OPK5660 carbon filter / OPK5760 / OPK6690"
+msgstr "Filtr uhlíkový OPK5660 / OPK5760 / OPK6690"
+
+msgid "OPP-1060 Hood sub-mounting 60 cm"
+msgstr "OPP-1060 Odsavač par podstavný 60 cm"
+
+msgid "OPP-2060 Hood sub-mounting 60 cm"
+msgstr "OPP-2060 Odsavač par podstavný 60 cm"
+
+msgid "OPV-3260 Built-in retractable hood is 60 cm"
+msgstr "OPV-3260 Vestavný odsavač výsuvný 60cm"
+
+msgid "On request"
+msgstr "Na dotaz"
+
+msgid "Open"
+msgstr "Otevřená"
+
+msgid "Optical"
+msgstr "Optická"
+
+msgid "Orava LT-823 C82B"
+msgstr "Orava LT-823 C82B"
+
+msgid "Orava LT-823 C82C"
+msgstr "Orava LT-823 C82C"
+
+msgid "Order status has changed"
+msgstr "Stav objednávky se změnil"
+
+msgid "Ordinary customer"
+msgstr "Obyčejný zákazník"
+
+msgid "Other"
+msgstr "Pevné"
+
+msgid "Our electronics include devices used for entertainment (flat screen TVs, DVD players, DVD movies, iPods, video games, remote control cars, etc.), communications (telephones, cell phones, email-capable laptops, etc.) and home office activities (e.g., desktop computers, printers, paper shredders, etc.)."
+msgstr "Spotřební elektronika zahrnuje elektronická zařízení každodenního (nebo alespoň častého) použití pro komunikaci, v kanceláři i doma."
+
+msgid "Out of stock"
+msgstr "Nedostupné"
+
+msgid "Overall performance"
+msgstr "Celkový výkon"
+
+msgid "PANASONIC DMC FT5EP"
+msgstr "PANASONIC DMC FT5EP"
+
+msgid "POS cookbook_steam oven GB"
+msgstr "POS kuchařka_parní trouba CZ"
+
+msgid "PPL"
+msgstr "PPL"
+
+msgid "PRIMECOOLER PC-AD2 3D glasses"
+msgstr "PRIMECOOLER PC-AD2 3D brýle"
+
+msgid "Pages count"
+msgstr "Počet stránek"
+
+msgid "Parallel port"
+msgstr "Paralelní port"
+
+msgid "Partner"
+msgstr "Partner"
+
+msgid "Perfectly cleans, treats and protects stainless steel surfaces in one step.
remove without smudges dust, dirt, fingerprints and grease
long-lasting protective film repellent water and prevents new settling of dirt
acts antistatically
"
+msgstr "
Dokonale čistí, ošetřuje a chrání nerezové plochy v jednom pracovním kroku.
odstraňuje bez šmouh prach, špínu, otisky prstů a mastnotu
dlouhotrvající ochranný film odpuzující vodu a zabraňující novému usazování špíny
působí antistaticky
neobsahuje silikon
"
+
+msgid "Personal Computers & accessories"
+msgstr "Počítače & příslušenství"
+
+msgid "Personal collection"
+msgstr "Osobní převzetí"
+
+msgid "Personal information export - {domain}"
+msgstr "Export osobních údajů - {domain}"
+
+msgid "Personal information overview - {domain}"
+msgstr "Přehled osobních údajů - {domain}"
+
+msgid "Philips 32PFL4308"
+msgstr "Philips 32PFL4308"
+
+msgid "Photographer's dream. Main camera with 13-megapixel front camera and a 5 megapixel guarantee photos in high definition on each side. Thanks to the built-in tools for editing and sharing can capture moving images in HD and combine the results to show from multiple angles."
+msgstr "Fotografův sen. Hlavní fotoaparát s 13 megapixely a přední fotoaparát s 5 megapixely zaručují fotky ve vysokém rozlišení z každé strany. Díky vestavěným nástrojům pro úpravu a sdílení můžete zachytit pohyblivé obrázky v HD kvalitě a kombinovat výsledky do zobrazení z více úhlů."
+
+msgid "Photographer's dream. Main camera with 13-megapixel front camera and a 5 megapixel guarantee photos in high definition on each side. Thanks to the built-in tools for editing and sharing can capture moving images in HD and combine the results to show from multiple angles. Incredible design, giant 5,5palcový display with HD resolution, two front stereo speakers, customized channels with real-time information and a quad-core processor - all combine to form one of the best smartphones in the world."
+msgstr "Fotografův sen. Hlavní fotoaparát s 13 megapixely a přední fotoaparát s 5 megapixely zaručují fotky ve vysokém rozlišení z každé strany. Díky vestavěným nástrojům pro úpravu a sdílení můžete zachytit pohyblivé obrázky v HD kvalitě a kombinovat výsledky do zobrazení z více úhlů. Neuvěřitelný design, obří 5,5palcový displej s HD rozlišením, dva přední stereo reproduktory, přizpůsobené kanály s informacemi v reálném čase a čtyřjádrový procesor – to vše dohromady tvoří jeden z nejvýhodnějších smartphonů na světě."
+
+msgid "Pot holder, black"
+msgstr "Držák na hrnce, černý"
+
+msgid "Power supply"
+msgstr "Napájení"
+
+msgid "Powerful color inkjet printer A4 size, quality photo printing"
+msgstr "Výkonná barevná inkoustová tiskárna, formát A4, kvalitní tisk fotografií"
+
+msgid "Powerful color inkjet printer A4 size, quality photo printing, high resolution up to 9600 x 2400dpi, the rate of up to 15 st. / Min in monochrome and up to 10 st. / Min in color, duplex printing, tray for up to 125 sheets, USB 2.0, WiFi 802.11b / g / n, possibility of printing discs. Canon PIXMA iP7250 is a compact portable printer for home or office thous. This is a quality color inkjet printer up to A4 with gentle tiskem.Má stylish and compact design with a hinged upper portion serving as a feeder print media. It is intended primarily for use as a small family or a printer portable printer - especially for printing photographs. It allows users to print documents and fotografií.Je equipped with precision 1 picolitre FINE for printing with tiny particles. It allows you to achieve resolutions up to 9600 x 2400dpi. The printer has five individual ink tanks with the ChromaLife100 + .Tiskárna can print borderless photos. Maximum print speed is 15 pages per minute in black and white or 10 in color. E.g. print borderless 10 x 15 cm photo takes about 21 seconds. The printer also offers direct disc printing and automatic two-sided tisk.Připojení to the computer is done via the USB 2.0 port or through a wireless interface, WiFi 802.11b / g / n. The printer has the dimensions 451 x 368 x 128 mm and weighs 6.6 kg. The included software for easy photo printing My Image Garden."
+msgstr "Výkonná barevná inkoustová tiskárna, formát A4, kvalitní tisk fotografií, vysoké rozlišení až 9600 x 2400dpi, rychlost až 15 st./min černobíle a až 10 st./min barevně, duplexní tisk, zásobník pro až 125 listů, rozhraní USB 2.0, WiFi 802.11b/g/n, možnost potisku disků. Canon PIXMA iP7250 je kompaktní přenosná tiskárna pro domácí nebo kancelářský tis. Jedná se o kvalitní barevnou inkoustovou tiskárnu až do formátu A4 s šetrným tiskem.Má stylový a kompaktní design s vrchní odklopnou částí, sloužící jako podavač tiskových médií. Je určena především pro použití jako malá rodinná tiskárna nebo přenosná tiskárna - a to především pro tisk fotografií. Umožňuje kvalitní tisk dokumentů i fotografií.Je vybavena precizní 1 pikolitrovou technologií FINE pro tisk s miniaturními částečkami. Ta umožňuje dosáhnout rozlišení až 9600 x 2400dpi. Tiskárna má celkem pět samostatných zásobníků inkoustu se systémem ChromaLife100+.Tiskárna dokáže tisknout bezokrajové fotografie. Maximální rychlosti tisku jsou 15 stránek za minutu černobíle, případně 10 barevně. Např. bezokrajový tisk 10 x 15cm fotografie zabere přibližně 21 sekund. Tiskárna nabídne i přímý potisk disků a automatický oboustranný tisk.Připojení k počítači se realizuje přes USB 2.0 port nebo pomocí bezdrátové rozhraní WiFi 802.11b/g/n. Tiskárna má rozměry 451 x 368 x 128mm a váží 6.6kg. Součástí balení je i software pro snadný tisk fotografií My Image Garden."
+
+msgid "Powerful color inkjet printer A4 size, quality photo printing, high resolution up to 9600 x 2400dpi, the rate of up to 15 st. / Min in monochrome and up to 10 st. / Min in color, duplex printing, tray for up to 125 sheets, USB 2.0, WiFi 802.11b / g / n, possibility of printing discs. Canon PIXMA iP7250 is a compact portable printer for home or office thous. This is a quality color inkjet printer up to A4 with gentle tiskem.Má stylish and compact design with a hinged upper portion serving as a feeder print media. It is intended primarily for use as a small family or a printer portable printer - especially for printing photographs. It allows users to print documents and fotografií.Je equipped with precision 1 picolitre FINE for printing with tiny particles. It allows you to achieve resolutions up to 9600 x 2400dpi. The printer has five individual ink tanks with the ChromaLife100 +. Printer can print borderless photos. Maximum print speed is 15 pages per minute in black and white or 10 in color. E.g. print borderless 10 x 15 cm photo takes about 21 seconds. The printer also offers direct disc printing and automatic two-sided tisk.Připojení to the computer is done via the USB 2.0 port or through a wireless interface, WiFi 802.11b / g / n. The printer has the dimensions 451 x 368 x 128 mm and weighs 6.6 kg. The included software for easy photo printing My Image Garden."
+msgstr "Výkonná barevná inkoustová tiskárna, formát A4, kvalitní tisk fotografií, vysoké rozlišení až 9600 x 2400dpi, rychlost až 15 st./min černobíle a až 10 st./min barevně, duplexní tisk, zásobník pro až 125 listů, rozhraní USB 2.0, WiFi 802.11b/g/n, možnost potisku disků. Canon PIXMA iP7250 je kompaktní přenosná tiskárna pro domácí nebo kancelářský tis. Jedná se o kvalitní barevnou inkoustovou tiskárnu až do formátu A4 s šetrným tiskem.Má stylový a kompaktní design s vrchní odklopnou částí, sloužící jako podavač tiskových médií. Je určena především pro použití jako malá rodinná tiskárna nebo přenosná tiskárna - a to především pro tisk fotografií. Umožňuje kvalitní tisk dokumentů i fotografií.Je vybavena precizní 1 pikolitrovou technologií FINE pro tisk s miniaturními částečkami. Ta umožňuje dosáhnout rozlišení až 9600 x 2400dpi. Tiskárna má celkem pět samostatných zásobníků inkoustu se systémem ChromaLife100+.Tiskárna dokáže tisknout bezokrajové fotografie. Maximální rychlosti tisku jsou 15 stránek za minutu černobíle, případně 10 barevně. Např. bezokrajový tisk 10 x 15cm fotografie zabere přibližně 21 sekund. Tiskárna nabídne i přímý potisk disků a automatický oboustranný tisk.Připojení k počítači se realizuje přes USB 2.0 port nebo pomocí bezdrátové rozhraní WiFi 802.11b/g/n. Tiskárna má rozměry 451 x 368 x 128mm a váží 6.6kg. Součástí balení je i software pro snadný tisk fotografií My Image Garden."
+
+msgid "Practical and stylish optical mouse ideal for everyday office use.With its ergonomic shape fits perfect and is suitable for left and for right-handers."
+msgstr "Tato USB myš funguje spolehlivě na téměř libovolném povrchu a je uzpůsobená pro ovládání pravou i levou rukou."
+
+msgid "Practical and stylish optical mouse ideal for everyday office use.With its ergonomic shape fits perfect and is suitable for left and for right-handers.Using an optical sensor with high sensitivity is move the cursor on the screen fast and smooth.Benefits are also programmable buttons to help with easy access to the programs and documents you use most often.The computer mouse simply connect using a cable with a USB connector and the support Plug and Play, no need to install drivers and you can immediately get to work."
+msgstr "Tato USB myš funguje spolehlivě na téměř libovolném povrchu a je uzpůsobená pro ovládání pravou i levou rukou."
+
+msgid "PremiumCord micro USB, A-B, 1m"
+msgstr "PremiumCord micro USB, A-B, 1m"
+
+msgid "Preparing"
+msgstr "Připravuje se"
+
+msgid "Pressure"
+msgstr "Tlak"
+
+msgid "Prime flour 1 kg"
+msgstr "Mouka hladká 1 kg"
+
+msgid "Prime flour for creating your own cake. Now with special discount."
+msgstr "Hladká mouka pro tvorbu home-made pečených dobrot. Nyní za zvláštní cenu."
+
+msgid "Print resolution"
+msgstr "Rozlišení tisku"
+
+msgid "Print technology"
+msgstr "Technologie tisku"
+
+msgid "Printers"
+msgstr "Tiskárny"
+
+msgid "Privacy policy"
+msgstr "Zásady ochrany osobních údajů"
+
+msgid "Processor frequency"
+msgstr "Frekvence procesoru"
+
+msgid "Quality digital camera with CMOS sensor with a resolution of 18 megapixels"
+msgstr "Kvalitní digitální zrcadlovka s CMOS snímačem s rozlišením 18 megapixelů"
+
+msgid "Quality set keyboard and optical mouse from Gigabyte. Both components are color-matched to the sleek glossy black color."
+msgstr "klávesnice s myší, multimediální, bezdrátová rádiová 2.4GHz, nano přijímač na USB, 15 multimediálních kláves, dosah až 5m, napájení klávesnice a myši 4x AAA, hmotnost 518 a 60 gramů, klávesnice obsahuje české znaky"
+
+msgid "Quick, cheap and reliable!"
+msgstr "Rychle, levně a spolehlivě!"
+
+msgid "RAM"
+msgstr "Paměť RAM"
+
+msgid "ROCCAT Kone Pure Optical Gaming Mouse"
+msgstr "ROCCAT Kone Pure Optical Gaming Mouse"
+
+msgid "Recording on"
+msgstr "Záznam na"
+
+msgid "Red and green paper glasses for watching"
+msgstr "papírové brýle růžovo-zelené pro prohlížení 3D obrázků nebo sledování 3D filmů"
+
+msgid "Reducing the diameter of 35 mm to 32 mm"
+msgstr "Redukce průměru z 35 mm na 32 mm"
+
+msgid "Reduction Avg. OPK OPO 150/120 mm"
+msgstr "Redukce prům. OPK OPO 150/120mm"
+
+msgid "Reflective tape for safe movement on the road"
+msgstr "Reflexní páska pro bezpečný pohyb na cestě"
+
+msgid "Registration completed"
+msgstr "Registrace byla dokončena"
+
+msgid "Replacement textile bag for vacuum cleaners CONCEPT Sprinter - VP9070. Package: 1 pc"
+msgstr "Náhradní textilní sáček pro vysavače CONCEPT Sprinter - VP9070. Balení: 1 ks"
+
+msgid "Reset password request"
+msgstr "Žádost o heslo"
+
+msgid "Resolution"
+msgstr "Rozlišení"
+
+msgid "Resolution of rear camera"
+msgstr "Rozlišení standardní zadní kamery"
+
+msgid "Right-handed"
+msgstr "Pravoruká"
+
+msgid "SDV 3360-built ceramic plate 60 cm"
+msgstr "SDV-3360 Sklokeramická deska vestavná 60 cm"
+
+msgid "SDV 3460-built ceramic plate 60 cm"
+msgstr "SDV-3460 Sklokeramická deska vestavná 60 cm"
+
+msgid "SLR"
+msgstr "zrcadlovky"
+
+msgid "SMS-9170 SMS IQ SPACE spare bags"
+msgstr "SMS-9170 IQ SPACE SMS náhradní sáčky"
+
+msgid "SONY DSCRX100"
+msgstr "SONY DSCRX100"
+
+msgid "SONY Xperia SP C5303"
+msgstr "SONY Xperia SP C5303"
+
+msgid "Samsung Galaxy Core 2 (SM-G355) - black"
+msgstr "Samsung Galaxy Core 2 (SM-G355) - černý"
+
+msgid "Samsung Galaxy Core Plus (SM-G350) - white"
+msgstr "Samsung Galaxy Core Plus (SM-G350) - bílý"
+
+msgid "Samsung T27D590EW"
+msgstr "Samsung T27D590EW"
+
+msgid "Samsung T27D590EX"
+msgstr "Samsung T27D590EX"
+
+msgid "Samsung T27D590EY"
+msgstr "Samsung T27D590EY"
+
+msgid "Samsung T27D590EZ"
+msgstr "Samsung T27D590EZ"
+
+msgid "Samsung UE75HU7500 (UHD)"
+msgstr "Samsung UE75HU7500 (UHD)"
+
+msgid "Screen size"
+msgstr "Úhlopříčka"
+
+msgid "Sencor SDB 4002M4"
+msgstr "Sencor SDB 4002M4 (HDMI)"
+
+msgid "Sennheiser HD 700"
+msgstr "Sennheiser HD 700"
+
+msgid "Sensitivity (ISO)"
+msgstr "Citlivost (ISO)"
+
+msgid "Shopping guide"
+msgstr "Jak nakupovat"
+
+msgid "Shopsys Framework - Title page"
+msgstr "Shopsys Framework - Titulní strana"
+
+msgid "Shopsys Framework - the best solution for your eshop."
+msgstr "Shopsys Framework - nejlepší řešení pro váš internetový obchod."
+
+msgid "Side mount plates - few ETV-2860"
+msgstr "Boční držák plechů - pár ETV-2860"
+
+msgid "Simple Genius Mouse NetScroll 310 offers the most widely used functional elements of a basic ergonomics. It has an optical sensor with a resolution of 800 DPI, which can handle work on a large number of standard surfaces."
+msgstr "myš optická, konektor USB, 1200dpi, vhodná pro notebooky"
+
+msgid "Simple Genius Mouse NetScroll 310 offers the most widely used functional elements of a basic ergonomics. It has an optical sensor with a resolution of 800 DPI, which can handle work on a large number of standard surfaces. There are two classic buttons and the third with the paging function wheel. Genius NetScroll 310 is equipped with modern USB interface and finds use in conserving ambidextrous or in an office environment. Specifications: Supported OS: Microsoft Windows 7, Vista, XP, 2003, 2000, 98SE Mac OS 8.6 or later"
+msgstr "myš optická, konektor USB, 1200dpi, vhodná pro notebooky"
+
+msgid "Sleek and compact stereo speakers in combination of black and metallic surface."
+msgstr "Jednopásmové stereo reproduktory SP-M120 s celkovým hudebním výkonem 2 W, černým lesklým povrchem a elegantním kovovým krytem."
+
+msgid "Slicer Pizza ETV-2860"
+msgstr "Kráječ na pizzu ETV-2860"
+
+msgid "Slovakia"
+msgstr "Slovensko"
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Clipper 9030/31/32/33 VP and VP 9130/31/32"
+msgstr "Náhradní papírové sáčky pro vysavače CONCEPT Clipper VP 9030/31/32/33 a VP 9130/31/32"
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Clipper 9030/31/32/33 VP and VP 9130/31/32. Packaging: 5 pieces of bags + input and output filter."
+msgstr "Náhradní papírové sáčky pro vysavače CONCEPT Clipper VP 9030/31/32/33 a VP 9130/31/32. Balení: 5 ks sáčků + vstupní a výstupní filtr."
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT INFANT VP 9310th Package: 5 pieces of bags + 2."
+msgstr "Náhradní papírové sáčky pro vysavače CONCEPT INFANT VP 9310. Balení: 5 ks sáčků + 2."
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Jumbo VP 9"
+msgstr "Náhradní papírové sáčky pro vysavače CONCEPT Jumbo VP 9041"
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Jumbo VP 9,041th Package: 5 pieces of bags + input and output filter."
+msgstr "Náhradní papírové sáčky pro vysavače CONCEPT Jumbo VP 9041. Balení: 5 ks sáčků + vstupní a výstupní filtr."
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Limpio VP 9020/21"
+msgstr "Náhradní papírové sáčky pro vysavače CONCEPT Limpio VP 9020/21"
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Limpio VP 9020/21, Clipper VP and VP 913_ 903_, Nino VP 9010 Packaging: 5 pieces of bags + input and output filter."
+msgstr "Náhradní papírové sáčky pro vysavače CONCEPT Limpio VP 9020/21, Clipper VP 903_ a VP 913_, Nino VP 9010. Balení: 5 ks sáčků + vstupní a výstupní filtr."
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Prominent VP 9711/12/13"
+msgstr "Náhradní papírové sáčky pro vysavače CONCEPT Prominent VP 9711/12/13"
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Prominent VP 9711/12/13. Packaging: 5 pieces of bags + input and output filter."
+msgstr "Náhradní papírové sáčky pro vysavače CONCEPT Prominent VP 9711/12/13. Balení: 5 ks sáčků + vstupní a výstupní filtr."
+
+msgid "Speakers 2 x 3W RMS, 2.0 stereo, portable, volume control, frequency range of 150Hz-20kHz, sensitivity 80dB"
+msgstr "Kapesní reproduktor pro MP3 přehrávače, mobilní telefony, počítače, notebooky, tablety atd."
+
+msgid "Speakers 2 x 3W RMS, 2.0 stereo, portable, volume control, frequency range of 150Hz-20kHz, sensitivity 80dB, 4Ohm impedance, power supply via USB, 3.5 mm audio jack, dimensions 85x85x107mm, weight 550 g"
+msgstr "Kapesní reproduktor pro MP3 přehrávače, mobilní telefony, počítače, notebooky, tablety atd. Stačí vybalit, zapojit a spustit přehrávání. S tímto reproduktorem získáte 360° zvukový zážitek na cestách."
+
+msgid "Super LCD"
+msgstr "Super LCD"
+
+msgid "Supported OS"
+msgstr "Podporovaný OS"
+
+msgid "System type"
+msgstr "Typ soustavy"
+
+msgid "TFT"
+msgstr "TFT"
+
+msgid "TK-9710 Turbo brush Prominent VP 971"
+msgstr "TK-9710 Turbo kartáč Prominent VP 971"
+
+msgid "TOP"
+msgstr "Nejprodávanější"
+
+msgid "TS-9080 replacement bag for textile VP-9080"
+msgstr "TS-9080 náhradní sáček textilní pro VP-9080"
+
+msgid "TS-9170 replacement bag for textile VP-9171"
+msgstr "TS-9170 náhradní sáček textilní pro VP-9171"
+
+msgid "TV Cinema 3D LED SMART diagonal 119 cm, 700 MCI, 1920x1080 Full HD"
+msgstr "Televize Cinema 3D SMART LED, úhlopříčka 119cm, MCI 700, FullHD 1920x1080"
+
+msgid "TV Cinema 3D LED SMART diagonal 119 cm, 700 MCI, 1920x1080 Full HD, DVB-S / S2 / T / T2 / C, 3x HDMI, 3x USB, CI, SCART, MHL, LAN, HbbTV, WiFi, Miracast / WiDi, WebOS, Web browser, Dual Core, 2 pieces 3D glasses AG-F310, magical driver energ. Class A +"
+msgstr "Televize Cinema 3D SMART LED, úhlopříčka 119cm, MCI 700, FullHD 1920x1080, DVB-S/S2/T/T2/C, 3x HDMI, 3x USB, CI, SCART, MHL, LAN, HbbTV, WiFi, Miracast/WiDi, WebOS, webový prohlížeč, Dual Core, 2ks 3D brýle AG-F310, magický ovladač, energ. třída A+"
+
+msgid "TV LED, 100Hz, diagonal 32 inches 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +"
+msgstr "Televize LED, 100Hz, úhlopříčka 32 palců, 100Hz, Full HD 1920×1080, DVB-T/C, 2x HDMI, USB, CI+, VGA, SCART, repro 16W, energ. třída A+"
+
+msgid "TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +"
+msgstr "Televize LED, 100Hz, úhlopříčka 80cm, 100Hz, Full HD 1920×1080, DVB-T/C, 2x HDMI, USB, CI+, VGA, SCART, repro 16W, energ. třída A+"
+
+msgid "TV SMART LED TV, 147 cm diagonal, 4K Ultra HD 3840x2160 4K upscaler"
+msgstr "Televize SMART LED TV, úhlopříčka 147cm, 4K Ultra HD 3840x2160, 4K Upscaler"
+
+msgid "TV SMART LED TV, 147 cm diagonal, 4K Ultra HD 3840x2160 4K upscaler, DVB-S2 / T2 / C, H.265, 3x HDMI, 3x USB, Scart, CI +, LAN, WiFi, Miracast, DLNA, MHL, HbbTV, Web browser, webOS 2.0, 2x10W speakers, magical MR15 driver, energ. Class A +"
+msgstr "Televize SMART LED TV, úhlopříčka 147cm, 4K Ultra HD 3840x2160, 4K Upscaler, DVB-S2/T2/C, H.265, 3x HDMI, 3x USB, Scart, CI+, LAN, WiFi, Miracast, DLNA, MHL, HbbTV, webový prohlížeč, webOS 2.0, repro 2x10W, magický ovladač MR15, energ. třída A+"
+
+msgid "TV, audio"
+msgstr "Televize, audio"
+
+msgid "Technology"
+msgstr "Technologie"
+
+msgid "Telescopic metal pipes VP-9161"
+msgstr "Trubky teleskopické kovové VP-9161"
+
+msgid "Telescopic pipe VP918x VP802x"
+msgstr "Trubka teleskopická VP918x VP802x"
+
+msgid "Television LED, 55 cm diagonal, 1920x1080 Full HD, DVB-T MPEG4 tuner with USB recording and playback"
+msgstr "Sencor SLE 22F46DM4 Hello Kitty je televizor LED pro ty, kteří hledají pro své děti něco, co mají rádi a co by je potěšilo . Televizor s motivy populární Hello Kity a provedením v růžové barvě vaše dítko určitě zaujme!"
+
+msgid "Television LED, 55 cm diagonal, 1920x1080 Full HD, DVB-T MPEG4 tuner with USB recording and playback (DivX, XviD, MP3, WMA, JPEG), HDMI, SCART, VGA, pink execution, energ. Class B"
+msgstr "
Sencor SLE 22F46DM4 Hello Kitty je televizor LED pro ty, kteří hledají pro své děti něco, co mají rádi a co by je potěšilo . Televizor s motivy populární Hello Kity a provedením v růžové barvě vaše dítko určitě zaujme!
Úhlopříčka 55 cm (21,5")
LED podsvícení displeje
Integrovaný DVD/DivX přehrávač
Nahrávání na USB disk (formát TS) / přehrávání z USB disku (PVR)
Timeshift (časový posun)
rozlišení displeje 1920x1080 bodů
Vestavěný HD DVB-T/C MPEG4 tuner
USB port (přehrávání z externího disku)
Připojení: HDMI, SCART, AV vstup, YPbPr, VGA kabel, PC Audio vstup, USB 2.0
Podporované formáty: DivX, XviD, MP3,WMA, JPEG
Kontrast 1000:1 Jas 250 cd/m2 Rychlost odezvy 5 ms Progressive Scan PAL, SECAM BG/DK/A2/NICAM, AV vstup i NTSC 4,43 Široký pozorovací úhel 170°/160° Elektronický programový průvodce (EPG) Teletext Vícejazyčné menu Obvody pro zlepšení obrazu (DNR) Digitální hřebenový filtr (DCF 3D) AVL ZOOM Ekvalizér Hodiny Časovač vypnutí Dětská pojistka Jednoduchý hotelový mód. Sencor SLE 22F46DM4 Hello Kitty je televizor LED pro ty, kteří hledají pro své děti něco, co mají rádi a co by je potěšilo . Televizor s motivy populární Hello Kity a provedením v růžové barvě vaše dítko určitě zaujme! LED televize Sencor SLE 22F46DM4 HELLO KITTY LED Full HD televizor Úhlopříčka 55 cm (21,5") LED podsvícení displeje Integrovaný DVD/DivX přehrávač Nahrávání na USB disk (formát TS) / přehrávání z USB disku (PVR) Timeshift (časový posun) na připojený USB disk Full HD rozlišení displeje 1920x1080 bodů Vestavěný HD DVB-T/C MPEG4 tuner USB port (přehrávání z externího disku) Podporované formáty: DivX, XviD, MP3,WMA, JPEG Kontrast 1000:1 Jas 250 cd/m2 Rychlost odezvy 5 ms Progressive Scan PAL, SECAM BG/DK/A2/NICAM, AV vstup i NTSC 4,43 Široký pozorovací úhel 170°/160° Elektronický programový průvodce (EPG) Teletext Vícejazyčné menu Obvody pro zlepšení obrazu (DNR) Digitální hřebenový filtr (DCF 3D) AVL ZOOM Ekvalizér Hodiny Časovač vypnutí Dětská pojistka Jednoduchý hotelový mód
"
+
+msgid "Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner"
+msgstr "Televize LED, úhlopříčka 82 cm, 1366x768, DVB-T/C MPEG4 tuner"
+
+msgid "Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI"
+msgstr "Televize LED, úhlopříčka 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI, USB"
+
+msgid "Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI, USB, SCART, VGA, headphone jack, USB/HDD recording, hotel mode, Energ. Class A"
+msgstr "Televize LED, úhlopříčka 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI, USB, SCART, VGA, sluchátkový výstup, USB/HDD nahrávání, hotelový mód, energ. třída B"
+
+msgid "Television SMART 3D LED, 189 cm diagonal, CMR 1000 4K Ultra HD 3840x2160, DVB-S2 / T2 / C, 4x HDMI, 3x USB, CI +, LAN, WiFi, DLNA, MHL, HbbTV, Tizen OS, energ. Class A"
+msgstr "Díky technologii Color Brilliance uvidíte všechno přesně tak, jak to příroda zamýšlela. Televizor podává barevné odstíny s ohromující přesností – jako byste byli součástí děje. Všechno, co vidíte na obrazovce, je jasné a syté. Barvy ožívají v nádherné intenzitě a obraz vypadá přirozeně a věrně. Nyní se můžete ponořit do mimořádně živého obrazu UHD, který je skutečně brilantní."
+
+msgid "Television SMART 3D LED, 189 cm diagonal."
+msgstr "Díky technologii Color Brilliance uvidíte všechno přesně tak, jak to příroda zamýšlela."
+
+msgid "Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080"
+msgstr "LED monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVI, D-Sub, VESA 75x75, matný"
+
+msgid "Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080, DVB-S2/T2/C, 2x HDMI, USB, SCART, 2 x 5W speakers, energ. Class A"
+msgstr "LED monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVI, D-Sub, VESA 75x75, matný"
+
+msgid "Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms"
+msgstr "Televizní monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080"
+
+msgid "Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768"
+msgstr "Televizní monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080"
+
+msgid "Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768, DVB-T/C, HDMI, SCART, D-Sub, USB, speakers, Energ. Class A"
+msgstr "Televizní monitor IPS, 5M:1, 250cd/m2, 5ms GTG, FullHD 1920x1080, DVB-T/C tuner, 2x HDMI, USB, SCART, D-Sub, 2x5W repro, VESA 75x75, hotelový mód s USB cloning, energ. třída A"
+
+msgid "Television or TV is a telecommunication medium used for transmitting sound with moving images in monochrome (black-and-white), or in color, and in two or three dimensions"
+msgstr "Televize (z řeckého tele – daleko a latinského vize – vidět) je široce používané jednosměrné dálkové plošné vysílání (tzv. broadcasting) a individuální přijímání televizního vysílání – obrazu a zvuku do televizoru. Výrazně přispívá k celkové socializaci lidí takřka po celém světě."
+
+msgid "Terms and conditions"
+msgstr "Obchodní podmínky"
+
+msgid "Thank you for your order no. {number} placed at {date}"
+msgstr "Děkujeme za objednávku č. {number} ze dne {date}"
+
+msgid "The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control"
+msgstr "Televizní monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP+, 2x HDMI, MHL, USB, CI, Scart, 2x 5W repro, dálkový ovladač"
+
+msgid "The filter carbon OPK-4360/4390"
+msgstr "Filtr uhlíkový OPK-4360/4390"
+
+msgid "The filter carbon OPK-7790"
+msgstr "Filtr uhlíkový OPK-7790"
+
+msgid "The filter carbon OPP-1060"
+msgstr "Filtr uhlíkový OPP-1060"
+
+msgid "The filter carbon OPP-2060"
+msgstr "Filtr uhlíkový OPP-2060"
+
+msgid "The minimum space requirements excels sub-mounting range hood OPP-2060th"
+msgstr "Minimální prostorovou náročností vyniká podstavný odsavač par OPP-2060."
+
+msgid "The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridges"
+msgstr "Stylové kompaktní multifunkční zařízení s Wi-Fi a snadným mobilním tiskem."
+
+msgid "The switch provides a cost-effective way to create a small network or extend existing ones. Connect not only computers, but also a number of network devices such as IP cameras, network printers and more."
+msgstr "Prvni, Druha, Treti"
+
+msgid "The telescopic hood is very elegant and practical variant of the classical extractor with minimum space requirements"
+msgstr "Výsuvný odsavač par je velice elegantní a praktickou variantou klasického odsavače s minimální prostorovou náročností"
+
+msgid "The telescopic hood is very elegant and practical variant of the classical extractor with minimum space requirements, making it suitable for small kitchens. Stainless steel front bar with rocker switch for easy operation.
Reasons to opt just for telescopic cooker hood Concept OPV-3260:
Performance is the most important parameter hoods and should be at least equal to ten times the volume of the room. Telescopic cooker hood Brand Concept OPV-3260 will surprise you output of 198 m3 per hour .
Model AL-3260 is equipped with two mA practical metal grease filters, whose maintenance is very easy and unlimited lifespan. If you can not pay out of steam, you can choose instead of exhaust classic recirculation system using two carbon filters, which can be bought (kat.číslo: 61990005).
Specifications:
Height: 175 mm
Width: 600 mm
Depth: 310-470 mm
Accessories: backflow preventer
Stainless steel front bar
Ability to upper exhaust or recirculation
Rocker Switch
2 power levels
Max. Performance 198 m3 / h.
Max.hlučnost the highest level of 66 db (A)
The bulb 40 W
2x the grease filter
diameter: 120 mm
Detailed description:
Optional Accessories: 2x carbon filter 61990005
1 motor / fan
Minimum distance from electric hob 650 mm
Minimum distance from gas hob: 750 mm
Dimensions for installation (HxWxD): 133 x 560 x 272 mm
Net weight: 5.9 kg
Voltage: 230 V ~ 50Hz
Power: 150 W
Cord Length: 2.2 m
"
+msgstr "
Výsuvný odsavač par je velice elegantní a praktickou variantou klasického odsavače s minimální prostorovou náročností, proto je vhodný i pro malé kuchyně. Nerezová přední lišta s kolébkovým přepínačem umožňuje snadné ovládání.
Důvody, proč se rozhodnout právě pro výsuvný odsavač par Concept OPV-3260:
Výkon je nejdůležitějším parametrem odsavačů a měl by odpovídat minimálně desetinásobku objemu místnosti. Výsuvný odsavač par značky Concept OPV-3260 Vás překvapí výkonem 198 m3 za hodinu.
Model OPV-3260 je vybaven dvěma praktickými kovovými filtry proti mastnotám, jejichž údržba je velice snadná a životnost neomezená. Pokud nemáte možnost odvést páry ven, můžete zvolit namísto klasického odtahu systém recirkulace s užitím 2 uhlíkových filtrů, které lze dokoupit (kat.číslo: 61990005).
Minimální vzdálenost od elektrické varné desky: 650 mm
Minimální vzdálenost od plynové varné desky: 750 mm
Rozměry pro zabudování (vxšxh): 133 x 560 x 272 mm
Netto hmotnost: 5,9 kg
Napětí: 230 V ~ 50 Hz
Příkon: 150 W
Délka přívodního kabelu: 2,2 m
"
+
+msgid "This is description of brand %brandName%."
+msgstr "Toto je popis značky %brandName%."
+
+msgid "This luminiscent tape might prevent you from dying."
+msgstr "Svítící reflexní páska pro bezpečný pohyb na cestě, která zajistí ještě větší viditelnost bruslařům, cyklistům nebo chodcům za snížené viditelnosti."
+
+msgid "This pot holder is used to hold pots. No more burnt kitchen tables!"
+msgstr "Konec nemotornému odkládání hrnců na novou kuchyňskou linku nebo na prkénko určené ke krájení zeleniny. Usnadněte tímto dárkem partnerovi vaření."
+
+msgid "This product is not an independently functional unit and may require professional installation."
+msgstr "Přenosný pevný disk GT SuperSpeed USB 3.0 se inspiruje dlouhou historií sportovních vozů"
+
+msgid "Toilet paper with Euro pictures. Even you can feel rich now!"
+msgstr "toaleťák s potiskem bankovek EURO, pocit z použití tohoto toaletního papíru dá zapomenout na jakékoliv trable spojené s finanční krizí"
+
+msgid "Toner for MC861/ 851, 7000 pages"
+msgstr "OKI MC861cdxn+, barevná A3 34/26 ppm ProQ2400 dpi PCL/PS,USB 2.0,LPT,LAN"
+
+msgid "Toys"
+msgstr "Hračky a další"
+
+msgid "Tube type: Universal. Diameter: 32mm."
+msgstr "Typ hubice: Univerzální. Průměr: 32 mm."
+
+msgid "Tuner"
+msgstr "Tuner"
+
+msgid "Type nozzles: Universal. Diameter: 32 mm. Turbobrush: Big."
+msgstr "Typ hubice: Univerzální. Průměr: 32 mm. Turbokartáč: Velký."
+
+msgid "USB"
+msgstr "USB"
+
+msgid "Using a steamer Concept is surprisingly versatile. It can be used to prepare appetizers, soups, meat, fish, vegetables, vegetarian dishes, dumplings, rice, fruit and desserts."
+msgstr "Použití parní trouby Concept je překvapivě všestranné. Lze v ní připravit předkrmy, polévky, maso, ryby, zeleninu, vegetariánská jídla, knedlíky, rýži, ovoce i dezerty."
+
+msgid "VERBATIM 1TB external HDD 2,5\" USB 3.0 GT SuperSpeed red"
+msgstr "VERBATIM 1TB externí disk 2,5\" USB 3.0 GT SuperSpeed červený"
+
+msgid "VIP customer"
+msgstr "VIP zákazník"
+
+msgid "Video"
+msgstr "Video"
+
+msgid "Viewfinder type"
+msgstr "Typ hledáčku"
+
+msgid "Watch broadcast in stunning Full HD, while at the same stylish devices work."
+msgstr "Sledujte vysílání v úžasném rozlišení Full HD a zároveň na stejném stylovém zařízení pracujte."
+
+msgid "Watch broadcast in stunning Full HD, while at the same stylish devices work. TD590 Monitor allows you to quickly and easily switch between TV and computer monitor or test your multitasking skills and watch TV while working on a split screen. In addition, it offers flexible connectivity options to your entertainment and multimedia can be enjoyed to the fullest. This monitor is perfect for studio flats, rooms in dormitories and small living rooms. Why should you buy two devices when one can do it more?"
+msgstr "Sledujte vysílání v úžasném rozlišení Full HD a zároveň na stejném stylovém zařízení pracujte. Monitor TD590 vám umožňuje snadno a rychle přepínat mezi počítačovým monitorem a televizorem anebo si vyzkoušet své multitaskingové schopnosti a sledovat televizi a zároveň pracovat na rozdělené obrazovce. Kromě toho vám nabízí flexibilní možnosti připojení, abyste si svou zábavu a multimédia mohli vychutnávat naplno. Tento monitor se dokonale hodí do garsonek, pokojů na kolejích a malých obývacích pokojů. Proč byste měli kupovat dvě zařízení, když toho na jednom zvládnete více?"
+
+msgid "Water reservoir capacity"
+msgstr "Objem zásobníku na vodu"
+
+msgid "We are looking forward to your visit."
+msgstr "Těšíme se na Vaši návštěvu."
+
+msgid "Weight"
+msgstr "Hmotnost"
+
+msgid "Well known USB cable with A and micro B connectors."
+msgstr "Značkový USB kabel s koncovkami A a micro B, délka kabelu 1 metr, vhodné k vybraným mobilním zařízením a fotoaparátům."
+
+msgid "WiFi"
+msgstr "WiFi"
+
+msgid "Winch throttle silver VP-9711/12"
+msgstr "Klapka navijáku stříbrná VP-9711/12"
+
+msgid "Windows 2000/XP/Vista/7"
+msgstr "Windows 2000/XP/Vista/7"
+
+msgid "Wired"
+msgstr "Drátová"
+
+msgid "Xtreamer SW4"
+msgstr "Xtreamer SW4"
+
+msgid "Xtreamer SW4 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions"
+msgstr "Xtreamer SW4 je ucelený systém domácí zábavy, který přináší do Vaší televize zábavu, hry, filmy a mnoho dalších funkcí"
+
+msgid "Xtreamer SW4 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions in HD quality"
+msgstr "Xtreamer SW4 je ucelený systém domácí zábavy, který přináší do Vaší televize zábavu, hry, filmy a mnoho dalších funkcí v HD rozlišení až 1080P. Navíc je osazen tunerem DVBT/DVBT2 pro příjem digitálního vysílání. S pomocí technologií AirPlay, MiraCast nebo DLNA můžete streamovat video, hudbu a fotky přímo z Vašeho tabletu nebo mobilného telefonu na televizi."
+
+msgid "Xtreamer SW5"
+msgstr "Xtreamer SW5"
+
+msgid "Xtreamer SW5 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions"
+msgstr "Xtreamer SW5 je ucelený systém domácí zábavy, který přináší do Vaší televize zábavu, hry, filmy a mnoho dalších funkcí"
+
+msgid "Xtreamer SW5 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions in HD quality"
+msgstr "Xtreamer SW5 je ucelený systém domácí zábavy, který přináší do Vaší televize zábavu, hry, filmy a mnoho dalších funkcí v HD rozlišení až 1080P. Navíc je osazen tunerem DVBT/DVBT2 pro příjem digitálního vysílání. S pomocí technologií AirPlay, MiraCast nebo DLNA můžete streamovat video, hudbu a fotky přímo z Vašeho tabletu nebo mobilného telefonu na televizi."
+
+msgid "YENKEE YSP 1005WH white"
+msgstr "YENKEE YSP 1005WH bílé"
+
+msgid "Yes"
+msgstr "Ano"
+
+msgid "You will be welcomed by friendly staff!"
+msgstr "Uvítá Vás milý personál!"
+
+msgid "ZN-8009 steam iron Ferrato stainless steel 2200 Watt Blue"
+msgstr "ZN-8009 napařovací žehlička Ferratte nerez 2200 W modrá"
+
+msgid "battery"
+msgstr "akumulátor"
+
+msgid "black"
+msgstr "černá"
+
+msgid "classic"
+msgstr "klasické"
+
+msgid "fits into VP812x VP9520"
+msgstr "pasuje do VP812x VP9520"
+
+msgid "flash disk"
+msgstr "flash disk"
+
+msgid "hardcover"
+msgstr "pevný"
+
+msgid "inkjet"
+msgstr "inkoustové"
+
+msgid "media 210MB, 24min., writing speed 24x, slim box"
+msgstr "médium 210MB, 24min., rychlost zápisu 24x, slim box"
+
+msgid "m³"
+msgstr "m³"
+
+msgid "no-reply@shopsys.com"
+msgstr "no-reply@shopsys.cz"
+
+msgid "one-slotted"
+msgstr "jednořádkový"
+
+msgid "optical"
+msgstr "optický"
+
+msgid "paper"
+msgstr "papír"
+
+msgid "pcs"
+msgstr "ks"
+
+msgid "white"
+msgstr "bílá"
+
+msgid "| Demo eshop"
+msgstr "| Demo obchod"
diff --git a/src/Shopsys/ShopBundle/Resources/translations/dataFixtures.de.po b/src/Shopsys/ShopBundle/Resources/translations/dataFixtures.de.po
new file mode 100644
index 000000000..be81ed97c
--- /dev/null
+++ b/src/Shopsys/ShopBundle/Resources/translations/dataFixtures.de.po
@@ -0,0 +1,1647 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: de\n"
+
+msgid "(Mon - Sat: 9 - 10 a.m. to 8 - 10 p.m.)"
+msgstr ""
+
+msgid "+1-234-567-8989"
+msgstr ""
+
+msgid "1 kg"
+msgstr ""
+
+msgid "1.7GHz"
+msgstr ""
+
+msgid "100 Czech crowns ticket"
+msgstr ""
+
+msgid "1024 MB"
+msgstr ""
+
+msgid "112 g"
+msgstr ""
+
+msgid "12 Mpix"
+msgstr ""
+
+msgid "123.8x58.6 mm"
+msgstr ""
+
+msgid "12800"
+msgstr ""
+
+msgid "13 Mpx"
+msgstr ""
+
+msgid "1366×768 (HD Ready)"
+msgstr ""
+
+msgid "14 Mpix"
+msgstr ""
+
+msgid "15 bar"
+msgstr ""
+
+msgid "150 g"
+msgstr ""
+
+msgid "16mil."
+msgstr ""
+
+msgid "18 Mpix"
+msgstr ""
+
+msgid "1800"
+msgstr ""
+
+msgid "1920×1080 (Full HD)"
+msgstr ""
+
+msgid "2"
+msgstr ""
+
+msgid "2 l"
+msgstr ""
+
+msgid "2.0"
+msgstr ""
+
+msgid "21\""
+msgstr ""
+
+msgid "21,5” Hyundai 22MT44"
+msgstr ""
+
+msgid "210 MB"
+msgstr ""
+
+msgid "22\" Sencor SLE 22F46DM4 HELLO KITTY"
+msgstr ""
+
+msgid "220 x 250 x 9 mm"
+msgstr ""
+
+msgid "240 x 205 x 15 mm"
+msgstr ""
+
+msgid "2400x600"
+msgstr ""
+
+msgid "250"
+msgstr ""
+
+msgid "250 g"
+msgstr ""
+
+msgid "250 kWh/year"
+msgstr ""
+
+msgid "255 x 255 x 15"
+msgstr ""
+
+msgid "27\""
+msgstr ""
+
+msgid "275 kWh/year"
+msgstr ""
+
+msgid "27” Hyundai T27D590EY"
+msgstr ""
+
+msgid "27” Hyundai T27D590EZ"
+msgstr ""
+
+msgid "295 x 240 x 15 mm cartridge with active carbon"
+msgstr ""
+
+msgid "295 x 245 x 15 mm cartridge with active carbon"
+msgstr ""
+
+msgid "2W"
+msgstr ""
+
+msgid "3.5 kg"
+msgstr ""
+
+msgid "30\""
+msgstr ""
+
+msgid "30” Hyundai 22MT44D"
+msgstr ""
+
+msgid "310 x 285 x 15 mm"
+msgstr ""
+
+msgid "310 x 480 x 10"
+msgstr ""
+
+msgid "32\" Philips 32PFL4308"
+msgstr ""
+
+msgid "320 x 300 x 10 mm"
+msgstr ""
+
+msgid "32” Hyundai 32PFL4400"
+msgstr ""
+
+msgid "36\""
+msgstr ""
+
+msgid "36\" Hyundai 32PFL4308"
+msgstr ""
+
+msgid "36\" Philips 32PFL4308"
+msgstr ""
+
+msgid "380 g"
+msgstr ""
+
+msgid "3“"
+msgstr ""
+
+msgid "4 W"
+msgstr ""
+
+msgid "4.5\""
+msgstr ""
+
+msgid "400 g"
+msgstr ""
+
+msgid "426x306x145 mm"
+msgstr ""
+
+msgid "440 x 345 x 40 mm"
+msgstr ""
+
+msgid "449x304x152 mm"
+msgstr ""
+
+msgid "47 \"LG 47LA790V Luxury TV from the South Korean company LG bears 47LA790S. At first glance its beautiful design that pleases the eye of every lover of pure and precise shapes."
+msgstr ""
+
+msgid "47\""
+msgstr ""
+
+msgid "47\" LG 47LA790V (FHD)"
+msgstr ""
+
+msgid "48"
+msgstr ""
+
+msgid "480 x 310 x 10 mm
The filter is a need to adjust the scissors to cover the entire surface of the grease filter."
+msgstr ""
+
+msgid "480 x 310 x 10 mm. The filter is a need to adjust the scissors to cover the entire surface of the grease filter."
+msgstr ""
+
+msgid "4800x1200"
+msgstr ""
+
+msgid "495 x 200 x 8 mm"
+msgstr ""
+
+msgid "4“"
+msgstr ""
+
+msgid "5"
+msgstr ""
+
+msgid "5 Mpx"
+msgstr ""
+
+msgid "5.4 kg"
+msgstr ""
+
+msgid "5.5\""
+msgstr ""
+
+msgid "50"
+msgstr ""
+
+msgid "50 g"
+msgstr ""
+
+msgid "51,5” Hyundai 22HD44D"
+msgstr ""
+
+msgid "54\""
+msgstr ""
+
+msgid "54\" Philips 32PFL4308"
+msgstr ""
+
+msgid "55"
+msgstr ""
+
+msgid "560 g"
+msgstr ""
+
+msgid "580 g"
+msgstr ""
+
+msgid "580 kg"
+msgstr ""
+
+msgid "5“"
+msgstr ""
+
+msgid "60\""
+msgstr ""
+
+msgid "600 ml"
+msgstr ""
+
+msgid "60” Hyundai 22HD44D"
+msgstr ""
+
+msgid "6400"
+msgstr ""
+
+msgid "75\""
+msgstr ""
+
+msgid "800 × 480 px"
+msgstr ""
+
+msgid "80x70x70 mm"
+msgstr ""
+
+msgid "9 Mpix"
+msgstr ""
+
+msgid "You have chosen payment by credit card. Please finish it in two business days."
+msgstr ""
+
+msgid "
Cookbook
What can be cooked in a steam oven? Using a steamer Concept is surprisingly versatile. It can be used to prepare appetizers, soups, meat, fish, vegetables, vegetarian dishes, dumplings, rice, fruit and desserts. 75 pages of cookbooks Concept - cook healthy steamed - contains recipes with practical procedures. Each recipe includes:
The list of ingredients
Method
How many people
Preparation time
The degree of difficulty
+ time + temperature
From under the lids give you some tips - Asparagus with tuna sauce, salmon in vermouth sauce, soup minestrone, chicken mint surprise Cabbage leaves stuffed with minced meat, grilled chop with vegetables, potatoes baked with blue cheese, pear with chocolate sauce, roasted mandelimi and ice cream, etc."
+msgstr ""
+
+msgid "
> Luxury TV from the South Korean company LG bears 47LA790S . At first glance its beautiful design That pleases the eye of every lover of pure and precise shapes. Inside the TV is hidden except M13 dual-core processor number of extra features. I so belong to the energy class A + . Micro Pixel Control function is performed local dimming backlight and thus significantly reduces up to 64 W. This is so gigantic screen with really great.
This TV is considerate to your eyes because of the image eliminates the annoying flicker caused by conventional 3D glasses, and you so you can enjoy long evenings of film without fatigue and eye pain . User-friendly environment allows adjust the 3D depth effect and yourself, you can choose whether you prefer comfort or deeper experience when watching 3D content. You could very well happen that while watching a football match flips the ball right into your living room Because special functions for image conversion improve any broadcasting the third dimension .
Avid gamers will appreciate the Dual Play When television broadcasts two separate 2D images and each player using glasses to see their part to the full screen area. No more worry when a split screen. Intel WiDi (Wireless Display), respectively. wireless transmission of video and audio, allows quick and easy connection of TVs and laptops without cables or an Internet connection. It is very convenient and fast you'll love this feature."
+msgstr ""
+
+msgid "
A4tech X710BK
Playing computer mouse has five buttons and scrolovacím button for easier browsing documents or Internet pages. News is a key 3XFire that in one pressing regulating a triple clicks. The mouse has five options to set up the sensor sensitivity and in steps 400, 600, 1200, 1600 and 2000 DPI. The mouse has an ergonomic design, it connects via high-speed USB interface and is equipped with 16 Kb internal memory that is possible with the Oscar Mouse Editor to record scripts to control your favorite games. It is fully compatible with all modern operating systems including Windows Vista.
Specifications:
Interface: USB 2.0 Reduction in PS/2
OS Compatibility: Microsoft Windows 2000/XP/2003/Vista"
+msgstr ""
+
+msgid "
Canon EH-22L
High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm."
+msgstr ""
+
+msgid "
Canon EH-22L
High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm."
+msgstr ""
+
+msgid "
Canon PIXMA MG2450
Stylish and affordable, accessible multifunction devices for the home. Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components. The printing machine uses an innovative print FINE technology Which guarantee excellent print quality. The printer has a system of four ink colors hidden in two ink cartridges, which provide easy user service and stable print quality throughout the life. You can reach the XL cartridges FINE, which provide significantly greater number of print pages between ink replacement. This is ideal if you are printing large volumes.
Software My Image Garden will reveal the full range of functions PIXMA printers. It offers solutions for the layout and printing photos, scanning, and access to online services. Due to advanced features such as face detection, it will scan all the pictures on your computer (even those long forgotten), and compile them into great designs to print. Service CREATIVE PARK PREMIUM you can download and print photos, images and artwork from internationally recognized photographers and artists. Create greeting cards, calendars or stunning 3D paper products, such as the space shuttle Endeavour.
"
+msgstr ""
+
+msgid "
Canon PIXMA MG3350 black
Features of modern and elegantly prepared MFPs s new wireless capabilities. Function automatic two-sided printing printing on both sides, which saves paper while producing professional looking documents. The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridgesThat provide easy user service and stable print quality throughout the life. You reach for XL FINE cartridges provide printing multiple pages significantly between individual ink replacement. This is ideal if you often print.
Do smart device application download Canon PIXMA Printing Solutions a straight print or scan. In addition, you can check the printer status and ink levels. They also supported services Apple AirPrint and access to the Internet and Google Cloud Print. Software My Image Garden has a solution for organizing and printing photos, scanning, and access to online services. Due to advanced features such as face detection, you will always find exactly what you're looking for.
Additional information:
Print: Technology: 4-ink (in 2 packs) ChromaLife100 system, the head of FINE (2 pl) Borderless printing: A4, Letter, 20 x 25 cm, 13 x 18 cm, 10 x 15 cm Automatic two-sided printing: A4, A5, B5, Letter Printing from Application PIXMA Printing Solutions, Google Cloud Print, Apple AirPrint
"
+msgstr ""
+
+msgid "
Canon PIXMA MG3350 black
Features of modern and elegantly prepared MFPs s new wireless capabilities. Function automatic two-sided printing printing on both sides, which saves paper while producing professional looking documents. The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridgesThat provide easy user service and stable print quality throughout the life. You reach for XL FINE cartridges provide printing multiple pages significantly between individual ink replacement. This is ideal if you often print.
Do smart device application download Canon PIXMA Printing Solutions a straight print or scan. In addition, you can check the printer status and ink levels. They also supported services Apple AirPrint and access to the Internet and Google Cloud Print. Software My Image Garden has a solution for organizing and printing photos, scanning, and access to online services. Due to advanced features such as face detection, you will always find exactly what you're looking for. Additional information: Print: Technology: 4-ink (in 2 packs) ChromaLife100 system, the head of FINE (2 pl) Borderless printing: A4, Letter, 20 x 25 cm, 13 x 18 cm, 10 x 15 cm Automatic two-sided printing: A4, A5, B5, Letter Printing from Application PIXMA Printing Solutions, Google Cloud Print, Apple AirPrint
"
+msgstr ""
+
+msgid "
D-Link DGS-105/E
The switch provides a cost-effective way to create a small network or extend existing ones. Connect not only computers, but also a number of network devices such as IP cameras, network printers and more. The switch is equipped with five Gigabit Ethernet ports with auto-sensing speeds, so you shall always have the best performance. To communicate without delay and smooth video streaming has integrated QoS optimization .
Switch functions quickly and easily without complicated setting. But consistently low power detect used ports, and if stopping traffic enters Sleep mode. Rugged metal body is sufficient for cooling without fan . Together with its small size you can find a place almost anywhere. Also available is a set of wall mounting and it can also protect against theft Kensington."
+msgstr ""
+
+msgid "
Defender SPK-480
Defender SPK 480, two portable and practical 2\" broadband speakers. They have 4 watt output and are powered by USB. They're made of durable plastic and their compact size is portable and easy to fit into any bag or backpack. The speakers connect to notebooks or portable music players via the built-in 3.5 mm jack. Each speaker features its own volume control, and they can be placed near monitors without disturbing image quality due to their magnetic shielding. The silver and black design is simple and modern."
+msgstr ""
+
+msgid "
DéLonghi ECAM 44.660.B
Start the morning with your favorite drink with the DeLonghi ECAM 44.660.B Eletta automatic coffee maker. A built in special hot steam/water jet automatically prepares a thick milk froth for cappuccino and tea. Drip coffee lovers can also press their own coffee.
Magic Milk Menu button
A special function is the Milk Menu button, which gives you a choice of milk-based beverages. In addition to the classic cappuccino, latte macchiato, or Latte, you can prepare rare drinks such as Espresso macchiato and a flat white. For a quick and easy treat, you can prepare hot cocoa or a cup of frothed milk, and the size of the beverage can be adjusted based on the cup.
"
+msgstr ""
+
+msgid "
GENIUS SP-M120 black
Sleek and compact stereo speakers in combination of black and metallic surface. Speakers provide basic computer sound system with an output of 2 W RMS. On the front is virtually placed in a large volume control, but not forgotten even the popular headphone jack. Specifications: Performance: 2 x 1 W RMS Frequency Range: 100 Hz - 20KHz Signal/noise ratio: 75 db Dimensions: 50 x 90 mm
"
+msgstr ""
+
+msgid "
GIGABYTE GK-KM7580 Black
Quality set keyboard and optical mouse from Gigabyte. Both components are color-matched to the sleek glossy black color. The keyboard has 15 multimedia keys for quick access to the Internet, email and other applications. The multimedia keys also used for various tasks (volume control, ...). Optical mouse has a sensor with a resolution of 500 to 1000 DPI resolution can be switched. Mouse fits both the left and the right hand. Wireless communication provides a miniature USB receiver for keyboard and mouse. This set will contrast nicely on any desk.
Compact Speakers Genius SP-HF150 are the perfect accessory for portable computers. It is powered only by the USB port. Yet they can generate high power 4 W RMS. The sound of the smaller 2.5 \"drives is airy, yet does not lack sufficient bass fundament. All of the elegant veneer finish imitating a hidden volume control. Specifications:
Sound characteristics: Power: 2 x 2 W RMS Drivers: 2.5 \"(širokpásmové) Frequency range: 200 to 20 000 Hz Signal-to-Noise Ratio: 70 db
Connectors: 3.5 mm audio USB for power"
+msgstr ""
+
+msgid "
Genius SlimStar i222 CZ+SK Black
GENIUS LuxeMate I222 is a stylish black keyboard, which at first glance invites you to use your Apple design. It will decorate your desk at home or in the office. In addition to the standard layout will delight and a large variety of function keys that enhance control of the internet, email and also a multimedia player. Low profile you use for long periods still feel comfortable. The computer keyboard GENIUS LuxeMate I222 connects via USB interface.
Specifications:
Type: conduction Layout: Czech Interface: USB Design: Apple design"
+msgstr ""
+
+msgid "
JURA IMPRESSA Z9 One Touch TFT Pianoblack
Luxury automatic coffee machine Jura Impressa Z9 One Touch packed with Swiss precision and elegance, which sets new standards. This machine brings you jeich on several levels, such as coffee quality, easy to use and attractive design. The purpose is always the most advanced technology to achieve real, authentic results. The powerful device has intuitive controls and except large 3.5 \"TFT color display. Together with rotary dial allows you to choose between 11 specialties and goes to prepare any coffee you can think of. With the coffee a la carte, allowing you to quickly change settings according to your needs, your options are almost limitless.
For an authentic experience and to ensure optimal conditions for coffee are two Thermoblocks. The first coffee and hot water, the second is intended to couple. With every cup of coffee is also possible to set the correct brewing temperature, amount of water and grind. Mill technology + Aroma is quiet and up to twice faster than previously used. Grains of coffee while grinding so much heat and so there is no negative influence of taste of coffee.
Foam crown in drinks Latte macchiato, cappuccino and other specialty are the world extremely popular. Automatic coffee machine in the model IMPRESSA Z9 One Touch is a distinctive design with a combination of pure luxury and sophistication. But technology also has a soft foam that each of trendy coffee specialties will adjust fluffy crown. S cappuccino outlets, which can be adjusted up to 153 mm, there is no problem to use a glass or a latte macchiato. Formed with Swiss precision and elegance with which you prepare the perfect espresso, cappuccino or caffe latte.
You will enjoy a very low power consumption. If the espresso is separated from the mains power switch, patented innovation JURY Zero Energy Switch (zero energy consumption) will remove any energy at all. Before turning off the espresso is automatically purged and cleansed, which provides him with long life. The unique geometry with finer teeth grinding and new technology supports the lower noise machine when grinding coffee.
"
+msgstr ""
+
+msgid "
Logitech S-120 Speaker System
Modern stereo speakers in a stylish black design, with an output of 2.3 W, suitable only for desktops and laptops, but also for CD or MP3 players, and other devices. They are connected via standard stereo jack 3,5 mm. The speakers have a frequency response of 50 Hz to 20 kHz. Easily accessible controls are located on the side of the right speaker with headphone outlet.
Specifications: Performance: 2.3 W (2 x 1.15 W RMS)
Frequency response: 50 Hz to 20 kHz "
+msgstr ""
+
+msgid "
Nikon EH-22L
High quality, elegant, soft, and yet reliably protecting brand case for your Nikon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm."
+msgstr ""
+
+msgid "
Steam iron Concept ZN8009 wattage 2200 Watt security system AUTO - SHUT OFF lets much easier and more convenient ironing.
Its other advantage is easy operation and many other practical functions and features, such as 3 m long supply cable through which you will not have to move ironing. Specifications:
Stainless steel soleplate
Even steam dosage: 20 g / min
Auto-off function AUTO SHUT-OFF Audible : turn off after 30 seconds in horizontal position and after 8 minutes in the vertical position irons
The water tank: 300 ml
Airbrush
The anti-drip ANTI-DRIP
Self-cleaning function Self Clean
The descaling function ANTI-CALC
Vertical steam
Notification light
Thermostat
3 m power cable (with swivel 360 °)
Color: blue + silver
Power consumption: 2200 W
Voltage: 230 V
Accessories: container to refill their water"
+msgstr ""
+
+msgid "
A perfectly clean glass ceramic cooktop without leaving stains and does not endanger the environment.
remove leftover food, grease, nicotine coating and many other impurities
does not harm rubber and plastics
does not AOX - Adsorbable organic halogens
biologically degradable by OECD
"
+msgstr ""
+
+msgid "
Enjoy quick cooking with special cooking HI-LIGHT zones which warms almost immediately.
Reasons to opt just for built-in ceramic plate Concept SDV-3360:
The built-in ceramic hob SDV-3360 you will be astonished handy touch controls .
Special radiators cooking zones HI-LIGHT are able to warm up to a maximum of a few seconds.
The residual heat indicator H - will protect you against nasty burns. Indicates residual temperature of the cooking zone even after power off.
If you want to directly select the time that you want to cook, be sure to take the opportunity of the off-delay .
Specifications:
Height: 50mm
Width: 590 mm
Depth: 520 mm
Glass ceramics
Accessories cleaning scraper
Touch control
The residual heat indicator - H
Without frame, orthogonal edges Grounded
4 cooking zones
Auto-off function - EXTRA SECURE
The off-delay
Beep
Control Panel front center
Child lock
The ON state
Details:
Dimensions for installation (HxWxD): 46 x 560 x 490 mm
Main switch
Left Front plate: Circular HI-LIGHT
The diameter of the front left plates: 200 mm
Input left front plate: 1800 W
Rear left hotplate: Circular HI-LIGHT
The diameter of the rear left of the plate 165 mm
Input left rear plate: 1200 W
The right rear plate: Circular HI-LIGHT
The diameter of the rear right plate: 200mm
Input right rear plates : 1800 W
The front right plate: Circular HI-lihgt
The diameter of the front right plate 165 mm
Input right front plate: 1200 W
Max.příkon-el .: 5500-6600 W
Weight: 9 kg
Voltage: 220-240 / 400 V 2N ~ 50/60 Hz
"
+msgstr ""
+
+msgid "
Hand printing adhesive labels Brother especially suitable for easy marking in warehouses, offices and wherever it is required records or quickly usable labels. The printer boasts a very easy to use, ensuring a perfect look label width from 3.5 mm to 18 mm. You can create labels, barcodes, labels for folders, address and shipping labels, or labels on CD and DVD media. Everything can be created by using the keyboard directly to the printer manual.
The printer is in addition to ease of use and versatility also very fast. It can print up to 2 cm plate for one second. Very please direct thermal printing technology, which reduces the cost of toner and ink. The printer can be powered by AC adapter, rechargeable battery or alkaline batteries 6 x AA.
Additional information:
Print technology: Thermal
Width TZ tapes: 3.5/6/9/12/18 (mm) Display: 16 characters x 2 lines Print speed: 20 mm/s Odsřih: handmade Font style: 14
Symbols: 617
Characters in mind: 2800
Other features: vertical printing, barcode printing
Possible sources of supply: AC adapter AD-E001 - (not included) rechargeable battery BA-E001 - (not included) Alkaline Batteries 6 x AA - (not included) Package Contents: Printer PT-H300 starting tape TZe-241 (18 mm black on white, length 4 m) documentation
"
+msgstr ""
+
+msgid "
It is safe for you to your loved ones as important as us? In that case, you will appreciate with hob SDV-3460 feature residual heat indicators - H that you and your loved ones will protect against nasty burns. The residual heat indicator signals a residual temperature of the cooking zone even after power off.
Reasons to opt just for built-in ceramic plate Concept SDV-3460:
The built-in ceramic hob SDV-3460 you will be astonished handy touch controls .
Special radiators cooking zones HI-LIGHT are able to warm up to a maximum of a few seconds.
The residual heat indicator H - protects you against nasty burns. Indicates residual temperature of the cooking zone even after power off.
If you want to directly select the time that you want to cook, be sure to take the opportunity of the off-delay .
Specifications:
Height: 60 mm
Width: 590 mm
Depth: 520 mm
Glass ceramics
Accessories cleaning scraper
Touch control
The residual heat indicator - H
Without frame, angled edges Grounded
4 cooking zones
Auto-off function - EXTRA SECURE
The off-delay
Beep
Control Panel front center
Child lock
The ON state
Details:
Dimensions for installation (HxWxD): 50 x 560 x 490 mm
Main switch
Left Front plate:
The diameter of the front left plates: 165x265 mm
Input left front plate: 1100/2000 W
Rear Left plate: Circular HI-LIGHT
The diameter of the rear left of the plate 165 mm
Input left rear plate: 1200 W
The right rear plate: Circular HI-LIGHT
The diameter of the rear right plate: 200mm
wattage right rear plate: 1800 W
The front right plate: Circular HI-lihgt
The diameter of the front right plate: 165 mm
Input right front plate: 1200 W
Max.příkon-el .: 5700-6800 W
Weight: 10 kg
Voltage: 220-240 / 400 V 2N ~ 50/60 Hz
"
+msgstr ""
+
+msgid "
Order number {number} has been sent, thank you for your purchase. We will contact you about next order status.
Track the status of your order. {transport_instructions} {payment_instructions}
"
+msgstr ""
+
+msgid "
The minimum space requirements excels sub-mounting range hood OPP-2060th Suitable for very small kitchens. Metal buttons provide ease of use and precise adjustment of the corresponding stage performance.
Reasons to choose just the sub-mounting range hood Concept OPP-2060:
Performance is the most important parameter hoods and should be at least equal to ten times the volume of the room. The sub-mounting range hood brand Concept OPP-2060 will surprise performance 186 m3 per hour .
Very practical is the ability to select 4 Ways exhaust .
Model OPP-2060 is equipped with a practical metal grease filter , its maintenance is very easy and unlimited lifespan. If you can not pay out of steam, you can choose instead of exhaust classic recirculation system using a carbon filter, which can be bought."
+msgstr ""
+
+msgid "
CD/DVD/Blu-ray/HD-DVDis an affordable program for burning CD/DVD/Blu-ray/HD-DVD media. Intuitive operation with its easy to handle even a novice in this field. Another big advantage is the use of technology burning \"on the fly\", which is spared not only your time but also the capacity of the disk, because the process does not create any storage (temporary) files on your hard disk.
Worth mentioning is also the fact that for its operation baking does not use any components of Windows or other manufacturers. Its functionality is not needed any external libraries or DLL. This makes the software provides high stability, even if your system is corrupted Windows. This gives you the ability to backup before reinstalling Broken System. The program is completely in the Czech language.
"
+msgstr ""
+
+msgid "
Hewlett-Packard was founded in the difficult times of the Great Depression. The founders were a pair of friends whose name the company still proudly bears. They started their business in an unobtrusive garage near the city of Palo Alto. It is now a national monument. HP’s success lay not in copying existing products, but in the ability and courage to come up with something new.
The first commercial triumph was an oscillator that surpassed all competition in quality, yet sold at a quarter of the price. In 1968, HP released their first desktop computer - a desktop calculator. The company currently manufactures products primarily related to computer technology - computers and laptops, printers, scanners, digital cameras, servers, and last but not least, calculators.
Unless otherwise indicated in the product description, packaging does not contain a USB interface cable.
"
+msgstr ""
+
+msgid "
Meet the latest generation of LED TVs Philips, which include the thinSmart TV running Android. Gets you a fine painting, innovative technologies, including image processing Ambilight and honest materials used in production. It features cutting-edge design structures with an eye for detail that fits into modern interiors. Like basis was inclined central pedestal that represents the geometric pun. On TV it will always look nice even when switched off.
The main advantages:
Ambilight backlighting - projecting a glow on the wall
Sharp and smooth image
Android operating system with applications
Internet connection
Remote control with keyboard
Superior picture
Ambilight backlighting will forever change your perception of television. This is a unique technology that expands the display area outside the boundaries of the panel itself. 2 Sided glow lit from two sides of the screen to the surrounding walls and creates a breathtaking effect. Natural Motion technology ensures smooth and crisp moving images without blur by increasing the number of frames per second to double. It's handy for example when movie action scenes or sports broadcasts.
Micro Dimming Pro conveys a realistic visual experience day and night. It uses a light sensor and a special software to optimize the contrast of the screen on the basis of light conditions in the environment. The image is analyzed 6400 in different zones, thereby providing authentic and undisturbed experience. Sharp moving images with breathtaking contrast, detail and depth ensure Pixel Precise HD.
Android - richer television viewing experience
Built-in WiFi module, and an Ethernet port expands the possibilities of television. Are you tired of watching okoukaných series? Then drop into online content. Waiting for you Archives TV stations, social networks, YouTube and other corners of the Internet via a web browser. Smart TV is based on Android OS 5.0 (Lollipop), has pre-installed applications and more can be found at Google Play. Use remote control with keyboard for easy typing text or even voice control. Advantage based on Android is also always up to date firmware. And all of you will be taken without waiting for a nimble run television is not only the old operating system, but also 2jádrový processor.
Saving operation
Manufacturer did not forget to decent connective equipment. It includes a quartet of HDMI connectors, one Scart and a trio of USB connectors for recording or playback of content by connecting USB disks. There is also support for HbbTV function or even suspend broadcasts EPG 8 days. Tuners are represented DVB-T / T2 / C and television unequivocal advantage of the economic operation. The TV comes to energy class A +, and for a very decent cuts only 45 kWh.
Additional information:
Picture Enhancement: Natural Motion 500Hz Perfect Motion Rate Pixel Precise HD Micro Dimming Pro
Smart TV: User interaction - multiroom Client and Server, SimplyShare, certified Wi-Fi Certified Miracast Interactive television - HbbTV Program - Suspension of television broadcasting, USB recording Applications SmartTV - Online video store, open an Internet browser, Social TV service, Spotify, TV on Demand, YouTube Easy Installation - Automatic detection equipment Philips Connection Wizard equipment, Network Setup Wizard, the Setup Wizard Easy to use - Universal Smart Menu button, on-screen User Guide Firmware upgradeable - Guide cars. update, Firmware upgradeable via USB, Firmware Update online Screen Format Adjustments - Basic - Fill Screen, Fit to Screen, Advanced - Pan, Zoom, Stretch Philips TV Remote - Applications Channels, Control, NowOnTV, TV guide, Video on demand Remote control - Keyboard
Ambilight: Versions of Ambilight - 2 pages Ambilight - The adaptation of the color of walls, Lounge Mode, Game Mode, Ambilight + hue
Multimedia applications: Video playback formats - Containers: AVI, MKV, H264 / MPEG-4 AVC, MPEG-1, MPEG-2, MPEG-4, WMV9 / VC1, HEVC Format Support subtitles - .SMI, .SRT, .ssa, .SUB, .TXT, .ass Play music formats - AAC, MP3, WAV, WMA (v2 to v9.2), PRO-WMA (v9 and v10) Picture Playback Formats - JPEG, BMP, GIF, JPS, PNG, PNS, BMS, MIT
Connectivity:4 x HDMI1 x Scart (RGB / CVBS)3 x USBWireless Dual Band Wi-Fi Direct, Integrated Wi-Fi 11n 2 × 2Other connections: Antenna IEC75, Common Interface Plus (CI +), Ethernet-LAN ??RJ-45, Digital audio output (optical), Audio L / R, Audio Input (DVI), Headphone out, Service connector, the connector SatelliteHDMI features - Audio Return ChannelEasyLink (HDMI-CEC) - Pass the remote control signal, System audio control, System standby, One touch play
Supplied Remote control 2 x AAA Batteries Table top stand Power cable Quick start guide use Brochure Legal and safety information
"
+msgstr ""
+
+msgid "
This product is not an independently functional unit and may require professional installation.
"
+msgstr ""
+
+msgid "
Type nozzles: Universal
Diameter: 32 mm
Turbobrush Big
"
+msgstr ""
+
+msgid "A"
+msgstr ""
+
+msgid "A and micro B"
+msgstr ""
+
+msgid "A book is a set of written, printed, illustrated, or blank sheets, made of ink, paper, parchment, or other materials, fastened together to hinge at one side. A single sheet within a book is a leaf, and each side of a leaf is a page. A set of text-filled or illustrated pages produced in electronic format is known as an electronic book, or e-book."
+msgstr ""
+
+msgid "A cable HDMI - HDMI AM / M 2 m gold-plated connector High Speed HDMI Cable with Ethernet 1.4 support 1080p FULL HD"
+msgstr ""
+
+msgid "A camera is an optical instrument for recording or capturing images, which may be stored locally, transmitted to another location, or both."
+msgstr ""
+
+msgid "A garden tool is any one of many tools made for gardens and gardening and overlaps with the range of tools made for agriculture and horticulture. Garden tools can also be hand tools and power tools."
+msgstr ""
+
+msgid "A personal computer (PC) is a general-purpose computer whose size, capabilities, and original sale price make it useful for individuals, and is intended to be operated directly by an end-user with no intervening computer time-sharing models that allowed larger, more expensive minicomputer and mainframe systems to be used by many people, usually at the same time."
+msgstr ""
+
+msgid "A printer is a peripheral which makes a persistent human readable representation of graphics or text on paper or similar physical media."
+msgstr ""
+
+msgid "A telephone is a telecommunications device that permits two or more users to conduct a conversation when they are too far apart to be heard directly. A telephone converts sound, typically and most efficiently the human voice, into electronic signals suitable for transmission via cables or other transmission media over long distances, and replays such signals simultaneously in audible form to its user."
+msgstr ""
+
+msgid "A toy is an item that can be used for play. Toys are generally played with by children and pets. Playing with toys is an enjoyable means of training young children for life in society. Different materials are used to make toys enjoyable to all ages."
+msgstr ""
+
+msgid "A3"
+msgstr ""
+
+msgid "A4"
+msgstr ""
+
+msgid "A4tech X710BK Playing computer mouse has five buttons and scrolovacím button for easier browsing documents or Internet pages."
+msgstr ""
+
+msgid "A4tech mouse X-710BK, OSCAR Game, 2000DPI, black,"
+msgstr ""
+
+msgid "Action"
+msgstr ""
+
+msgid "Active"
+msgstr ""
+
+msgid "Active/Passive"
+msgstr ""
+
+msgid "Annual energy consumption"
+msgstr ""
+
+msgid "Apple iPhone 5S 64GB, gold"
+msgstr ""
+
+msgid "Aquila Aquagym non-carbonated spring water"
+msgstr ""
+
+msgid "BROTHER PT-H300"
+msgstr ""
+
+msgid "Bluetooth"
+msgstr ""
+
+msgid "Book 55 best programs for burning CDs and DVDs"
+msgstr ""
+
+msgid "Book Computer for Dummies Digital Photography II"
+msgstr ""
+
+msgid "Book of procedures for dealing with traffic accidents"
+msgstr ""
+
+msgid "Book of traditional Czech fairy tales"
+msgstr ""
+
+msgid "Book scoring system and traffic regulations"
+msgstr ""
+
+msgid "Books"
+msgstr ""
+
+msgid "By entering an email below, you can download your personal and other information (for example, order history) from our online store. An email with a link will be sent to you after entering your email address, to verify your identity. Clicking on the link will take you to a page where you’ll be able to download these informations in readable format - it will be the data registered to given email address on this online store domain."
+msgstr ""
+
+msgid "By entering an email below, you can view your personal information that we register in our online store. An email with a link will be sent to you after entering your email address, to verify your identity. Clicking on the link will take you to a page listing all the personal details we have connected to your email address."
+msgstr ""
+
+msgid "CD-R VERBATIM 210MB"
+msgstr ""
+
+msgid "Camera type"
+msgstr ""
+
+msgid "Cameras & Photo"
+msgstr ""
+
+msgid "Canceled"
+msgstr ""
+
+msgid "Canon EH-22L"
+msgstr ""
+
+msgid "Canon EH-22L. High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D."
+msgstr ""
+
+msgid "Canon EH-22M"
+msgstr ""
+
+msgid "Canon EOS 700D"
+msgstr ""
+
+msgid "Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels"
+msgstr ""
+
+msgid "Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light"
+msgstr ""
+
+msgid "Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light, even without a flash. Automatic smart scene mode analyzes the scene and automatically selects the best settings for the camera. View images, focus, or even pictures can be taken using a 3 \"touch screen TFT Clear View II with a whopping resolution of 1.04 million pixels and a vari-angle. With this camera out of you in a moment become a professional cameraman. It makes it possible to shoot stunning movies in Full HD 1080p. Hybrid AF technology enables continuous focus during movie shooting and using the built-in microphone ozvučíme your images are high quality stereo sound. Autofocus system comprising nine cross-type AF points to capture fast-moving objects without any blurring. Thanks to continuous shooting at up to 5 frames per second, you'll never miss a crucial moment for getting the best picture possible.The HDR Backlight Control mode, the camera takes three different exposures and combines them into one, in order to preserve details in shadows and areas with high brightness. In Night Scene mode, the camera takes the hand of multiple images at high shutter speeds and combining them together and thus prevents blurring. Captured images and videos simply adding it to an SD Memory Card, SDHC and SDXC, thanks to the integrated connector is miniHDMI you can conveniently viewed on your LCD or plasma TV. The camera can buy a wide range of lenses, flashes and accessories that are compatible with the EOS system."
+msgstr ""
+
+msgid "Canon EOS 700E"
+msgstr ""
+
+msgid "Canon MG3550"
+msgstr ""
+
+msgid "Canon MG3650"
+msgstr ""
+
+msgid "Canon PIXMA MG2450"
+msgstr ""
+
+msgid "Canon PIXMA MG2650"
+msgstr ""
+
+msgid "Canon PIXMA iP7250"
+msgstr ""
+
+msgid "Canon PIXMA iP7350"
+msgstr ""
+
+msgid "Cap with air conditioning, convenient for hot days."
+msgstr ""
+
+msgid "Cap with solar-powered fan, white"
+msgstr ""
+
+msgid "Capacity"
+msgstr ""
+
+msgid "Cash"
+msgstr ""
+
+msgid "Cash on delivery"
+msgstr ""
+
+msgid "Circumaural"
+msgstr ""
+
+msgid "Cleaner 3in1 stainless steel appliances (4039286078461)"
+msgstr ""
+
+msgid "Coarse grater blade RM-3240/3250"
+msgstr ""
+
+msgid "Coffee Machines"
+msgstr ""
+
+msgid "Coffeemakers or coffee machines are cooking appliances used to brew coffee. While there are many different types of coffeemakers using a number of different brewing principles, in the most common devices, coffee grounds are placed in a paper or metal filter inside a funnel, which is set over a glass or ceramic coffee pot, a cooking pot in the kettle family. Cold water is poured into a separate chamber, which is than heated up to the boiling point, and directed into the funnel."
+msgstr ""
+
+msgid "Collection of classical Czech fairy tales."
+msgstr ""
+
+msgid "Color"
+msgstr ""
+
+msgid "Color printing"
+msgstr ""
+
+msgid "Compact Speakers Genius SP-HF150 are the perfect accessory for portable computers."
+msgstr ""
+
+msgid "Connectors"
+msgstr ""
+
+msgid "Construction"
+msgstr ""
+
+msgid "Contact"
+msgstr ""
+
+msgid "Coupon valued to 100 Czech crowns. You can cash it at any exchange office"
+msgstr ""
+
+msgid "Cover"
+msgstr ""
+
+msgid "Credit card"
+msgstr ""
+
+msgid "Crevice nozzle VP-4290"
+msgstr ""
+
+msgid "Cyklocomputer – cyklonavigation with preset maps, color display 3\", training programmes, WiFi"
+msgstr ""
+
+msgid "Czech"
+msgstr ""
+
+msgid "Czech post"
+msgstr ""
+
+msgid "Czech republic"
+msgstr ""
+
+msgid "D-Link"
+msgstr ""
+
+msgid "DVB-T"
+msgstr ""
+
+msgid "DVB-T Receiver HD - MPEG4, MPEG2, USB recording, timeshift"
+msgstr ""
+
+msgid "DVB-T Receiver HD - MPEG4, MPEG2, USB recording, timeshift, EPG, HDMI 1.3, USB, SCART, coaxial output, power antenna 5V/50mA"
+msgstr ""
+
+msgid "DeLonghi ECAM 44.660 B Eletta Plus"
+msgstr ""
+
+msgid "Dear customer,
based on your email {email}, we are sending you a link to your personal details. By clicking on the link below, you will be taken to a page listing all the personal details which we have in evidence in our online store {domain}.
To overview your personal information please click here - {url} The link is valid for next 24 hours. Best Regards
team of {domain}"
+msgstr ""
+
+msgid "Dear customer,
Processing your order has been finished."
+msgstr ""
+
+msgid "Dear customer,
Your order has been cancelled."
+msgstr ""
+
+msgid "Dear customer,
Your order is being processed."
+msgstr ""
+
+msgid "Dear customer,
your registration is completed. Name: {first_name} {last_name} Email: {email} E-shop link: {url} Log in page: {login_page}"
+msgstr ""
+
+msgid "Dear customer,
based on your email {email}, we are sending you a link where you can download your personal details registered on our online store in readable format. Clicking on the link will take you to a page where you’ll be able to download these informations, which we have in evidence in our online store {domain}.
To download your personal information please click here - {url} The link is valid for next 24 hours.
Best regards team of {domain}"
+msgstr ""
+
+msgid "Dear customer,
Your order has been placed successfully.
You will be contacted when the order state changes. Order number: {number} Date and time of creation: {date} E-shop link: {url} Order detail link: {order_detail_url} Shipping: {transport} Payment: {payment} Total price including VAT: {total_price} Billing address: {billing_address} Delivery address: {delivery_address} Note: {note} Products: {products} {transport_instructions} {payment_instructions}"
+msgstr ""
+
+msgid "Dear customer.
You can set a new password following this link: {new_password_url}"
+msgstr ""
+
+msgid "Deep baking sheet ETV-2560/2860/2960 / 3160bc"
+msgstr ""
+
+msgid "Defender 2.0 SPK-480"
+msgstr ""
+
+msgid "Defender SPK-480, easy to fit into any bag or backpack"
+msgstr ""
+
+msgid "Demo advert"
+msgstr ""
+
+msgid "Determination"
+msgstr ""
+
+msgid "Digital Camera - Waterproof, shockproof, freezeproof, 16.1 Mpx CCD"
+msgstr ""
+
+msgid "Digital Camera - Waterproof, shockproof, freezeproof, 16.1 Mpx CCD, 4x zoom (29-108 mm), 2.7\" LCD display, Li-Ion, HD video, SD/SDHC/SDXC, time lapse recording, stabilizer"
+msgstr ""
+
+msgid "Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 \"LCD, Li-Ion, FullHD video, histogram, HDR"
+msgstr ""
+
+msgid "Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 \"LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB"
+msgstr ""
+
+msgid "Digital Camera CMOS Exmor R1 20.2 megapixel, 3.6x zoom"
+msgstr ""
+
+msgid "Digital Camera CMOS Exmor R1 20.2 megapixel, 3.6x zoom (28-100 mm F1.8), Full HD video (1920 x 1080) 50p, 3 \"LCD, Li-Ion, MS DUO + \\u200b\\u200bSD/SDHC/SDXC, Face Detection, Intelligent stabilizer"
+msgstr ""
+
+msgid "Digital Camera Nikon VH-520 16 megapixel, 24x zoom, 3.0 \"LCD, Li-Ion, FullHD video"
+msgstr ""
+
+msgid "Digital Camera Nikon VH-520 16 megapixel, 24x zoom, 3.0 \"LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB"
+msgstr ""
+
+msgid "Digital Voice Reco.rder Olympus VN-733PC is profiled primarily intuitive operation and long battery lif."
+msgstr ""
+
+msgid "Digital Voice Reco.rder Olympus VN-733PC is profiled primarily intuitive operation and long battery life . Its user offers 4 gigabytes internal memory and a new slot for microSD cards. O capacity certainly will not be a shortage in power saving mode, LP handle record up to 1600 hours of recording"
+msgstr ""
+
+msgid "Dimensions"
+msgstr ""
+
+msgid "Discover the secret of people with us."
+msgstr ""
+
+msgid "Display"
+msgstr ""
+
+msgid "Display Size"
+msgstr ""
+
+msgid "Display size"
+msgstr ""
+
+msgid "Display type"
+msgstr ""
+
+msgid "Done"
+msgstr ""
+
+msgid "Donec at dolor mi. Nullam ornare, massa in cursus imperdiet, felis nisl auctor ante, vel aliquet tortor lacus sit amet ipsum. Proin ultrices euismod elementum. Integer sodales hendrerit tortor, vel semper turpis interdum eu. Phasellus quam tortor, feugiat vel condimentum vel, tristique et ipsum. Duis blandit lectus in odio cursus rutrum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam pulvinar massa at imperdiet venenatis. Maecenas convallis lobortis quam in fringilla. Mauris gravida turpis eget sapien imperdiet pulvinar. Nunc velit urna, fringilla nec est sit amet, accumsan varius nunc. Morbi sed tincidunt diam, sit amet laoreet nisl. Nulla tempus id lectus non lacinia.\\n\\nVestibulum interdum adipiscing iaculis. Nunc posuere pharetra velit. Nunc ac ante non massa scelerisque blandit sit amet vel velit. Integer in massa sed augue pulvinar malesuada. Pellentesque laoreet orci augue, in fermentum nisl feugiat ut. Nunc congue et nisi a interdum. Aenean mauris mi, interdum vel lacus et, placerat gravida augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed sagittis ipsum et consequat euismod. Praesent a ipsum dapibus, aliquet justo a, consectetur magna. Phasellus imperdiet tempor laoreet. Sed a accumsan lacus, accumsan faucibus dolor. Praesent euismod justo quis ipsum aliquam suscipit. Sed quis blandit urna."
+msgstr ""
+
+msgid "DéLonghi ECAM 44.660.B. Start the morning with your favorite drink with the DeLonghi ECAM 44.660.B Eletta automatic coffee maker"
+msgstr ""
+
+msgid "Ear Coupling"
+msgstr ""
+
+msgid "Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components."
+msgstr ""
+
+msgid "Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components. The printing machine uses an innovative print FINE technology Which guarantee excellent print quality."
+msgstr ""
+
+msgid "Electronics"
+msgstr ""
+
+msgid "Element arrangement"
+msgstr ""
+
+msgid "Energy efficiency class"
+msgstr ""
+
+msgid "Enjoy quick cooking with special cooking HI-LIGHT zones"
+msgstr ""
+
+msgid "Enter"
+msgstr ""
+
+msgid "Ergonomics"
+msgstr ""
+
+msgid "Extension rod plastic TM-4610"
+msgstr ""
+
+msgid "Features of modern and elegantly prepared MFPs with new wireless capabilities. Function automatic two-sided printing"
+msgstr ""
+
+msgid "Filter carbon OPK4290"
+msgstr ""
+
+msgid "Filter input VP-9161 / SF-9162 / SF-8210"
+msgstr ""
+
+msgid "Floor nozzle metal VP-9310"
+msgstr ""
+
+msgid "Floor nozzle metal yellow VP-9141ye"
+msgstr ""
+
+msgid "Fluorescent green laces. Visible at any condition."
+msgstr ""
+
+msgid "Fluorescent laces, green"
+msgstr ""
+
+msgid "Fold-up"
+msgstr ""
+
+msgid "Food"
+msgstr ""
+
+msgid "Food is any substance consumed to provide nutritional support for the body. It is usually of plant or animal origin, and contains essential nutrients, such as fats, proteins, vitamins, or minerals. The substance is ingested by an organism and assimilated by the organism's cells to provide energy, maintain life, or stimulate growth."
+msgstr ""
+
+msgid "GENIUS LuxeMate I222 is a stylish black keyboard, which at first glance invites you to use your Apple design."
+msgstr ""
+
+msgid "GIGABYTE KM7580 CZ"
+msgstr ""
+
+msgid "GPS module"
+msgstr ""
+
+msgid "Gaming mouse"
+msgstr ""
+
+msgid "Garden tools"
+msgstr ""
+
+msgid "Genius NetScroll 310 silver"
+msgstr ""
+
+msgid "Genius SP-U150X black-green"
+msgstr ""
+
+msgid "Genius SlimStar i820"
+msgstr ""
+
+msgid "Genius repro SP-M120 black"
+msgstr ""
+
+msgid "Glass cleaner and a glass-ceramic plates (4019786908123)"
+msgstr ""
+
+msgid "HDMI"
+msgstr ""
+
+msgid "HEPA filter CN-9240 (VP-9241)"
+msgstr ""
+
+msgid "HEPA filter SF-9161 / SF-8210"
+msgstr ""
+
+msgid "HEPA filter VP-9241"
+msgstr ""
+
+msgid "HEPA filter VP-9711/12"
+msgstr ""
+
+msgid "HP Deskjet Ink Advantage 1515 (B2L57C)"
+msgstr ""
+
+msgid "HP Deskjet Ink Advantage 1615 (B2L57C)"
+msgstr ""
+
+msgid "HQ speakers from well known brand."
+msgstr ""
+
+msgid "HTC Desire 816 White"
+msgstr ""
+
+msgid "Hand printing adhesive labels Brother especially suitable for easy marking in warehouses, offices and wherever it is required records or quickly usable labels. The printer boasts a very easy to us"
+msgstr ""
+
+msgid "Have you ever experienced an accident and didn't know how to react? Or are you going to? This book is just for you!"
+msgstr ""
+
+msgid "Hewlett-Packard was founded in the difficult times of the Great Depression."
+msgstr ""
+
+msgid "Hewlett-Packard was founded in the difficult times of the Great Depression. The founders were a pair of friends whose name the company still proudly bears."
+msgstr ""
+
+msgid "High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D."
+msgstr ""
+
+msgid "Home Listening"
+msgstr ""
+
+msgid "Hose VP-9241"
+msgstr ""
+
+msgid "Hose VP-9310"
+msgstr ""
+
+msgid "Hyundai 22HD44D"
+msgstr ""
+
+msgid "In Progress"
+msgstr ""
+
+msgid "In stock"
+msgstr ""
+
+msgid "Information about cookies"
+msgstr ""
+
+msgid "Interface"
+msgstr ""
+
+msgid "Intuitive operation with its easy to handle even a novice in this field. Another big advantage is the use of technology burning \"on the fly\", which is spared not only your time but also the capacity of the disk, because the process does not create any storage (temporary) files on your hard disk."
+msgstr ""
+
+msgid "JURA Impressa J9 TFT Carbon"
+msgstr ""
+
+msgid "Kabel HDMI A - HDMI A M/M 2m gold-plated connectors High Speed HD"
+msgstr ""
+
+msgid "Knife potato RM-3240/3250"
+msgstr ""
+
+msgid "LCD"
+msgstr ""
+
+msgid "LED"
+msgstr ""
+
+msgid "LG 22MT44D 21,5\""
+msgstr ""
+
+msgid "LG 22MT44D 30\""
+msgstr ""
+
+msgid "LG 22MT44D 51,5\""
+msgstr ""
+
+msgid "LG 22MT44D 60\""
+msgstr ""
+
+msgid "LG 47LA790W (FHD)"
+msgstr ""
+
+msgid "LG 58LA790W (FHD)"
+msgstr ""
+
+msgid "LG E410 Optimus L1 II White"
+msgstr ""
+
+msgid "Localization"
+msgstr ""
+
+msgid "Logitech S120 black"
+msgstr ""
+
+msgid "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus felis nisi, tincidunt sollicitudin augue eu, laoreet blandit sem. Donec rutrum augue a elit imperdiet, eu vehicula tortor porta. Vivamus pulvinar sem non auctor dictum. Morbi eleifend semper enim, eu faucibus tortor posuere vitae. Donec tincidunt ipsum ullamcorper nisi accumsan tincidunt. Aenean sed velit massa. Nullam interdum eget est ut convallis. Vestibulum et mauris condimentum, rutrum sem congue, suscipit arcu.\\nSed tristique vehicula ipsum, ut vulputate tortor feugiat eu. Vivamus convallis quam vulputate faucibus facilisis. Curabitur tincidunt pulvinar leo, eu dapibus augue lacinia a. Fusce sed tincidunt nunc. Morbi a nisi a odio pharetra laoreet nec eget quam. In in nisl tortor. Ut fringilla vitae lectus eu venenatis. Nullam interdum sed odio a posuere. Fusce pellentesque dui vel tortor blandit, a dictum nunc congue."
+msgstr ""
+
+msgid "Luxury automatic coffee machine Jura Impressa Z9 One Touch packed with Swiss precision and elegance, which sets new standards. This machine brings you jeich on several levels, such as coffee quality, easy to use and attractive design."
+msgstr ""
+
+msgid "MIO Cyclo 100, bicycle computer, 1,8\""
+msgstr ""
+
+msgid "Magazine capacity for beans"
+msgstr ""
+
+msgid "Maximum size"
+msgstr ""
+
+msgid "Media type"
+msgstr ""
+
+msgid "Meet the latest generation of LED TVs Philips, which include the thin Smart TV running Android."
+msgstr ""
+
+msgid "Memory card support"
+msgstr ""
+
+msgid "Metal grease filter OPK-4290"
+msgstr ""
+
+msgid "Metal grease filter OPK-5660 / OPK-5760 / OPK-6690"
+msgstr ""
+
+msgid "Metal grease filter OPV-3260"
+msgstr ""
+
+msgid "Microsoft Basic Optical Mouse, black"
+msgstr ""
+
+msgid "Milk reservoir capacity"
+msgstr ""
+
+msgid "Million-euro toilet paper"
+msgstr ""
+
+msgid "Mini CD-R 8 cm"
+msgstr ""
+
+msgid "Mobile Phones"
+msgstr ""
+
+msgid "Mobile phone - Apple A7 with 64-bit architecture, 4\" Retina Touch display 1136x640, 32GB internal memory, WiFi 802.11a/b/g/n, Bluetooth 4.0, 8 Mpx camera with LED flash, GPS, Fingerprint sensor, iOS 7"
+msgstr ""
+
+msgid "Mobile phone 4.5 \"800x480, processor, Quad-Core 1.2GHz, RAM 768 megabytes internal memory of 4GB"
+msgstr ""
+
+msgid "Mobile phone 4.5 \"800x480, processor, Quad-Core 1.2GHz, RAM 768 megabytes internal memory of 4GB, microSD up to 64GB, 5 megapixel camera, GPS, WiFi, Bluetooth 4.0, NFC, 3G, microUSB, Li-Ion 2000 mAh, Android 4.4"
+msgstr ""
+
+msgid "Mobile phone 4.6 \"1280x720, Qualcomm MSM8960Pro 1.7 GHz"
+msgstr ""
+
+msgid "Mobile phone 4.6 \"1280x720, Qualcomm MSM8960Pro 1.7 GHz, 1GB RAM, 8GB 8MPx camera, GPS, WiFi, Bluetooth, FM, micro USB, Android 4.1"
+msgstr ""
+
+msgid "Mobile phone 4.7\" 720x1280, procesor 1,5GHz, internal memory 16GB, camera 8mpx, GPS, WiFi, Bluetooth, 3G, FM, microSD, micro USB, Android 4.0"
+msgstr ""
+
+msgid "Modern stereo speakers in a stylish black design, with an output of 2.3 W, suitable only for desktops and laptops, but also for CD or MP3 players."
+msgstr ""
+
+msgid "Morbi posuere mauris dolor, quis accumsan dolor ullamcorper eget. Phasellus at elementum magna, et pretium neque. Praesent tristique lorem mi, eget varius quam aliquam eget. Vivamus ultrices interdum nisi, sed placerat lectus fermentum non. Phasellus ac quam vitae nisi aliquam vestibulum. Sed rhoncus tortor a arcu sagittis placerat. Nulla lectus nunc, ultrices ac faucibus sed, accumsan nec diam. Nam auctor neque quis tincidunt tempus. Nunc eget risus tristique, lobortis metus vitae, pellentesque leo. Vivamus placerat turpis ac dolor vehicula tincidunt. Sed venenatis, ante id ultrices convallis, lacus elit porttitor dolor, non porta risus ipsum ac justo. Integer id pretium quam, id placerat nulla."
+msgstr ""
+
+msgid "Mouse game, 8200dpi laser sensor, 7 programmable buttons + 2D wheel 12000fps, 1ms response, EasyShift, USB, LED backlight, Turbo Core V2, Black"
+msgstr ""
+
+msgid "Multimedia"
+msgstr ""
+
+msgid "NFC"
+msgstr ""
+
+msgid "NS-9020 Limpio/Clipper/Nino replacement paper bags for VP902/3/9010"
+msgstr ""
+
+msgid "NS-9030 Clipper replacement paper bags for VP-903/913"
+msgstr ""
+
+msgid "NS-9040 Jumbo replacement paper bags for VP-9040"
+msgstr ""
+
+msgid "NS-9310 Infant replacement bags of paper for the VP-9310"
+msgstr ""
+
+msgid "NS-9710 Prominent replacement paper bags for VP-9711/12/13"
+msgstr ""
+
+msgid "New [adjective]"
+msgstr "New"
+
+msgid "New [noun]"
+msgstr "New"
+
+msgid "New driving rules and tips just for you!"
+msgstr ""
+
+msgid "News"
+msgstr ""
+
+msgid "Nikon COS 700D"
+msgstr ""
+
+msgid "Nikon DMC FT5EP"
+msgstr ""
+
+msgid "Nikon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light, even without a flash. Automatic smart scene mode analyzes the scene and automatically selects the best settings for the camera. View images, focus, or even pictures can be taken using a 3 \"touch screen TFT Clear View II with a whopping resolution of 1.04 million pixels and a vari-angle. With this camera out of you in a moment become a professional cameraman. It makes it possible to shoot stunning movies in Full HD 1080p. Hybrid AF technology enables continuous focus during movie shooting and using the built-in microphone ozvučíme your images are high quality stereo sound. Autofocus system comprising nine cross-type AF points to capture fast-moving objects without any blurring. Thanks to continuous shooting at up to 5 frames per second, you'll never miss a crucial moment for getting the best picture possible.The HDR Backlight Control mode, the camera takes three different exposures and combines them into one, in order to preserve details in shadows and areas with high brightness. In Night Scene mode, the camera takes the hand of multiple images at high shutter speeds and combining them together and thus prevents blurring. Captured images and videos simply adding it to an SD Memory Card, SDHC and SDXC, thanks to the integrated connector is miniHDMI you can conveniently viewed on your LCD or plasma TV. The camera can buy a wide range of lenses, flashes and accessories that are compatible with the EOS system."
+msgstr ""
+
+msgid "Nikon ND-22L"
+msgstr ""
+
+msgid "Nikon TS-800"
+msgstr ""
+
+msgid "Nikon VH-520"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid "Nozzle with brush VP-4290"
+msgstr ""
+
+msgid "Number of buttons"
+msgstr ""
+
+msgid "Number of colors"
+msgstr ""
+
+msgid "Number of processor cores"
+msgstr ""
+
+msgid "OKI MC861cdxm"
+msgstr ""
+
+msgid "OKI MC861cdxn+ (01318206)"
+msgstr ""
+
+msgid "OLYMPUS ME-34 Compact directional microphone suitable for recording lectures"
+msgstr ""
+
+msgid "OLYMPUS VH-520"
+msgstr ""
+
+msgid "OLYMPUS VH-620"
+msgstr ""
+
+msgid "OPK44xx carbon filter / OPK-5690 / OPK5790 / OPO55xx"
+msgstr ""
+
+msgid "OPK5660 carbon filter / OPK5760 / OPK6690"
+msgstr ""
+
+msgid "OPP-1060 Hood sub-mounting 60 cm"
+msgstr ""
+
+msgid "OPP-2060 Hood sub-mounting 60 cm"
+msgstr ""
+
+msgid "OPV-3260 Built-in retractable hood is 60 cm"
+msgstr ""
+
+msgid "On request"
+msgstr ""
+
+msgid "Open"
+msgstr ""
+
+msgid "Optical"
+msgstr ""
+
+msgid "Orava LT-823 C82B"
+msgstr ""
+
+msgid "Orava LT-823 C82C"
+msgstr ""
+
+msgid "Order status has changed"
+msgstr ""
+
+msgid "Ordinary customer"
+msgstr ""
+
+msgid "Other"
+msgstr ""
+
+msgid "Our electronics include devices used for entertainment (flat screen TVs, DVD players, DVD movies, iPods, video games, remote control cars, etc.), communications (telephones, cell phones, email-capable laptops, etc.) and home office activities (e.g., desktop computers, printers, paper shredders, etc.)."
+msgstr ""
+
+msgid "Out of stock"
+msgstr ""
+
+msgid "Overall performance"
+msgstr ""
+
+msgid "PANASONIC DMC FT5EP"
+msgstr ""
+
+msgid "POS cookbook_steam oven GB"
+msgstr ""
+
+msgid "PPL"
+msgstr ""
+
+msgid "PRIMECOOLER PC-AD2 3D glasses"
+msgstr ""
+
+msgid "Pages count"
+msgstr ""
+
+msgid "Parallel port"
+msgstr ""
+
+msgid "Partner"
+msgstr ""
+
+msgid "Perfectly cleans, treats and protects stainless steel surfaces in one step.
remove without smudges dust, dirt, fingerprints and grease
long-lasting protective film repellent water and prevents new settling of dirt
acts antistatically
"
+msgstr ""
+
+msgid "Personal Computers & accessories"
+msgstr ""
+
+msgid "Personal collection"
+msgstr ""
+
+msgid "Personal information export - {domain}"
+msgstr ""
+
+msgid "Personal information overview - {domain}"
+msgstr ""
+
+msgid "Philips 32PFL4308"
+msgstr ""
+
+msgid "Photographer's dream. Main camera with 13-megapixel front camera and a 5 megapixel guarantee photos in high definition on each side. Thanks to the built-in tools for editing and sharing can capture moving images in HD and combine the results to show from multiple angles."
+msgstr ""
+
+msgid "Photographer's dream. Main camera with 13-megapixel front camera and a 5 megapixel guarantee photos in high definition on each side. Thanks to the built-in tools for editing and sharing can capture moving images in HD and combine the results to show from multiple angles. Incredible design, giant 5,5palcový display with HD resolution, two front stereo speakers, customized channels with real-time information and a quad-core processor - all combine to form one of the best smartphones in the world."
+msgstr ""
+
+msgid "Pot holder, black"
+msgstr ""
+
+msgid "Power supply"
+msgstr ""
+
+msgid "Powerful color inkjet printer A4 size, quality photo printing"
+msgstr ""
+
+msgid "Powerful color inkjet printer A4 size, quality photo printing, high resolution up to 9600 x 2400dpi, the rate of up to 15 st. / Min in monochrome and up to 10 st. / Min in color, duplex printing, tray for up to 125 sheets, USB 2.0, WiFi 802.11b / g / n, possibility of printing discs. Canon PIXMA iP7250 is a compact portable printer for home or office thous. This is a quality color inkjet printer up to A4 with gentle tiskem.Má stylish and compact design with a hinged upper portion serving as a feeder print media. It is intended primarily for use as a small family or a printer portable printer - especially for printing photographs. It allows users to print documents and fotografií.Je equipped with precision 1 picolitre FINE for printing with tiny particles. It allows you to achieve resolutions up to 9600 x 2400dpi. The printer has five individual ink tanks with the ChromaLife100 + .Tiskárna can print borderless photos. Maximum print speed is 15 pages per minute in black and white or 10 in color. E.g. print borderless 10 x 15 cm photo takes about 21 seconds. The printer also offers direct disc printing and automatic two-sided tisk.Připojení to the computer is done via the USB 2.0 port or through a wireless interface, WiFi 802.11b / g / n. The printer has the dimensions 451 x 368 x 128 mm and weighs 6.6 kg. The included software for easy photo printing My Image Garden."
+msgstr ""
+
+msgid "Powerful color inkjet printer A4 size, quality photo printing, high resolution up to 9600 x 2400dpi, the rate of up to 15 st. / Min in monochrome and up to 10 st. / Min in color, duplex printing, tray for up to 125 sheets, USB 2.0, WiFi 802.11b / g / n, possibility of printing discs. Canon PIXMA iP7250 is a compact portable printer for home or office thous. This is a quality color inkjet printer up to A4 with gentle tiskem.Má stylish and compact design with a hinged upper portion serving as a feeder print media. It is intended primarily for use as a small family or a printer portable printer - especially for printing photographs. It allows users to print documents and fotografií.Je equipped with precision 1 picolitre FINE for printing with tiny particles. It allows you to achieve resolutions up to 9600 x 2400dpi. The printer has five individual ink tanks with the ChromaLife100 +. Printer can print borderless photos. Maximum print speed is 15 pages per minute in black and white or 10 in color. E.g. print borderless 10 x 15 cm photo takes about 21 seconds. The printer also offers direct disc printing and automatic two-sided tisk.Připojení to the computer is done via the USB 2.0 port or through a wireless interface, WiFi 802.11b / g / n. The printer has the dimensions 451 x 368 x 128 mm and weighs 6.6 kg. The included software for easy photo printing My Image Garden."
+msgstr ""
+
+msgid "Practical and stylish optical mouse ideal for everyday office use.With its ergonomic shape fits perfect and is suitable for left and for right-handers."
+msgstr ""
+
+msgid "Practical and stylish optical mouse ideal for everyday office use.With its ergonomic shape fits perfect and is suitable for left and for right-handers.Using an optical sensor with high sensitivity is move the cursor on the screen fast and smooth.Benefits are also programmable buttons to help with easy access to the programs and documents you use most often.The computer mouse simply connect using a cable with a USB connector and the support Plug and Play, no need to install drivers and you can immediately get to work."
+msgstr ""
+
+msgid "PremiumCord micro USB, A-B, 1m"
+msgstr ""
+
+msgid "Preparing"
+msgstr ""
+
+msgid "Pressure"
+msgstr ""
+
+msgid "Prime flour 1 kg"
+msgstr ""
+
+msgid "Prime flour for creating your own cake. Now with special discount."
+msgstr ""
+
+msgid "Print resolution"
+msgstr ""
+
+msgid "Print technology"
+msgstr ""
+
+msgid "Printers"
+msgstr ""
+
+msgid "Privacy policy"
+msgstr ""
+
+msgid "Processor frequency"
+msgstr ""
+
+msgid "Quality digital camera with CMOS sensor with a resolution of 18 megapixels"
+msgstr ""
+
+msgid "Quality set keyboard and optical mouse from Gigabyte. Both components are color-matched to the sleek glossy black color."
+msgstr ""
+
+msgid "Quick, cheap and reliable!"
+msgstr ""
+
+msgid "RAM"
+msgstr ""
+
+msgid "ROCCAT Kone Pure Optical Gaming Mouse"
+msgstr ""
+
+msgid "Recording on"
+msgstr ""
+
+msgid "Red and green paper glasses for watching"
+msgstr ""
+
+msgid "Reducing the diameter of 35 mm to 32 mm"
+msgstr ""
+
+msgid "Reduction Avg. OPK OPO 150/120 mm"
+msgstr ""
+
+msgid "Reflective tape for safe movement on the road"
+msgstr ""
+
+msgid "Registration completed"
+msgstr ""
+
+msgid "Replacement textile bag for vacuum cleaners CONCEPT Sprinter - VP9070. Package: 1 pc"
+msgstr ""
+
+msgid "Reset password request"
+msgstr ""
+
+msgid "Resolution"
+msgstr ""
+
+msgid "Resolution of rear camera"
+msgstr ""
+
+msgid "Right-handed"
+msgstr ""
+
+msgid "SDV 3360-built ceramic plate 60 cm"
+msgstr ""
+
+msgid "SDV 3460-built ceramic plate 60 cm"
+msgstr ""
+
+msgid "SLR"
+msgstr ""
+
+msgid "SMS-9170 SMS IQ SPACE spare bags"
+msgstr ""
+
+msgid "SONY DSCRX100"
+msgstr ""
+
+msgid "SONY Xperia SP C5303"
+msgstr ""
+
+msgid "Samsung Galaxy Core 2 (SM-G355) - black"
+msgstr ""
+
+msgid "Samsung Galaxy Core Plus (SM-G350) - white"
+msgstr ""
+
+msgid "Samsung T27D590EW"
+msgstr ""
+
+msgid "Samsung T27D590EX"
+msgstr ""
+
+msgid "Samsung T27D590EY"
+msgstr ""
+
+msgid "Samsung T27D590EZ"
+msgstr ""
+
+msgid "Samsung UE75HU7500 (UHD)"
+msgstr ""
+
+msgid "Screen size"
+msgstr ""
+
+msgid "Sencor SDB 4002M4"
+msgstr ""
+
+msgid "Sennheiser HD 700"
+msgstr ""
+
+msgid "Sensitivity (ISO)"
+msgstr ""
+
+msgid "Shopping guide"
+msgstr ""
+
+msgid "Shopsys Framework - Title page"
+msgstr ""
+
+msgid "Shopsys Framework - the best solution for your eshop."
+msgstr ""
+
+msgid "Side mount plates - few ETV-2860"
+msgstr ""
+
+msgid "Simple Genius Mouse NetScroll 310 offers the most widely used functional elements of a basic ergonomics. It has an optical sensor with a resolution of 800 DPI, which can handle work on a large number of standard surfaces."
+msgstr ""
+
+msgid "Simple Genius Mouse NetScroll 310 offers the most widely used functional elements of a basic ergonomics. It has an optical sensor with a resolution of 800 DPI, which can handle work on a large number of standard surfaces. There are two classic buttons and the third with the paging function wheel. Genius NetScroll 310 is equipped with modern USB interface and finds use in conserving ambidextrous or in an office environment. Specifications: Supported OS: Microsoft Windows 7, Vista, XP, 2003, 2000, 98SE Mac OS 8.6 or later"
+msgstr ""
+
+msgid "Sleek and compact stereo speakers in combination of black and metallic surface."
+msgstr ""
+
+msgid "Slicer Pizza ETV-2860"
+msgstr ""
+
+msgid "Slovakia"
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Clipper 9030/31/32/33 VP and VP 9130/31/32"
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Clipper 9030/31/32/33 VP and VP 9130/31/32. Packaging: 5 pieces of bags + input and output filter."
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT INFANT VP 9310th Package: 5 pieces of bags + 2."
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Jumbo VP 9"
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Jumbo VP 9,041th Package: 5 pieces of bags + input and output filter."
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Limpio VP 9020/21"
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Limpio VP 9020/21, Clipper VP and VP 913_ 903_, Nino VP 9010 Packaging: 5 pieces of bags + input and output filter."
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Prominent VP 9711/12/13"
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Prominent VP 9711/12/13. Packaging: 5 pieces of bags + input and output filter."
+msgstr ""
+
+msgid "Speakers 2 x 3W RMS, 2.0 stereo, portable, volume control, frequency range of 150Hz-20kHz, sensitivity 80dB"
+msgstr ""
+
+msgid "Speakers 2 x 3W RMS, 2.0 stereo, portable, volume control, frequency range of 150Hz-20kHz, sensitivity 80dB, 4Ohm impedance, power supply via USB, 3.5 mm audio jack, dimensions 85x85x107mm, weight 550 g"
+msgstr ""
+
+msgid "Super LCD"
+msgstr ""
+
+msgid "Supported OS"
+msgstr ""
+
+msgid "System type"
+msgstr ""
+
+msgid "TFT"
+msgstr ""
+
+msgid "TK-9710 Turbo brush Prominent VP 971"
+msgstr ""
+
+msgid "TOP"
+msgstr ""
+
+msgid "TS-9080 replacement bag for textile VP-9080"
+msgstr ""
+
+msgid "TS-9170 replacement bag for textile VP-9171"
+msgstr ""
+
+msgid "TV Cinema 3D LED SMART diagonal 119 cm, 700 MCI, 1920x1080 Full HD"
+msgstr ""
+
+msgid "TV Cinema 3D LED SMART diagonal 119 cm, 700 MCI, 1920x1080 Full HD, DVB-S / S2 / T / T2 / C, 3x HDMI, 3x USB, CI, SCART, MHL, LAN, HbbTV, WiFi, Miracast / WiDi, WebOS, Web browser, Dual Core, 2 pieces 3D glasses AG-F310, magical driver energ. Class A +"
+msgstr ""
+
+msgid "TV LED, 100Hz, diagonal 32 inches 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +"
+msgstr ""
+
+msgid "TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +"
+msgstr ""
+
+msgid "TV SMART LED TV, 147 cm diagonal, 4K Ultra HD 3840x2160 4K upscaler"
+msgstr ""
+
+msgid "TV SMART LED TV, 147 cm diagonal, 4K Ultra HD 3840x2160 4K upscaler, DVB-S2 / T2 / C, H.265, 3x HDMI, 3x USB, Scart, CI +, LAN, WiFi, Miracast, DLNA, MHL, HbbTV, Web browser, webOS 2.0, 2x10W speakers, magical MR15 driver, energ. Class A +"
+msgstr ""
+
+msgid "TV, audio"
+msgstr ""
+
+msgid "Technology"
+msgstr ""
+
+msgid "Telescopic metal pipes VP-9161"
+msgstr ""
+
+msgid "Telescopic pipe VP918x VP802x"
+msgstr ""
+
+msgid "Television LED, 55 cm diagonal, 1920x1080 Full HD, DVB-T MPEG4 tuner with USB recording and playback"
+msgstr ""
+
+msgid "Television LED, 55 cm diagonal, 1920x1080 Full HD, DVB-T MPEG4 tuner with USB recording and playback (DivX, XviD, MP3, WMA, JPEG), HDMI, SCART, VGA, pink execution, energ. Class B"
+msgstr ""
+
+msgid "Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner"
+msgstr ""
+
+msgid "Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI"
+msgstr ""
+
+msgid "Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI, USB, SCART, VGA, headphone jack, USB/HDD recording, hotel mode, Energ. Class A"
+msgstr ""
+
+msgid "Television SMART 3D LED, 189 cm diagonal, CMR 1000 4K Ultra HD 3840x2160, DVB-S2 / T2 / C, 4x HDMI, 3x USB, CI +, LAN, WiFi, DLNA, MHL, HbbTV, Tizen OS, energ. Class A"
+msgstr ""
+
+msgid "Television SMART 3D LED, 189 cm diagonal."
+msgstr ""
+
+msgid "Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080"
+msgstr ""
+
+msgid "Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080, DVB-S2/T2/C, 2x HDMI, USB, SCART, 2 x 5W speakers, energ. Class A"
+msgstr ""
+
+msgid "Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms"
+msgstr ""
+
+msgid "Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768"
+msgstr ""
+
+msgid "Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768, DVB-T/C, HDMI, SCART, D-Sub, USB, speakers, Energ. Class A"
+msgstr ""
+
+msgid "Television or TV is a telecommunication medium used for transmitting sound with moving images in monochrome (black-and-white), or in color, and in two or three dimensions"
+msgstr ""
+
+msgid "Terms and conditions"
+msgstr ""
+
+msgid "Thank you for your order no. {number} placed at {date}"
+msgstr ""
+
+msgid "The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control"
+msgstr ""
+
+msgid "The filter carbon OPK-4360/4390"
+msgstr ""
+
+msgid "The filter carbon OPK-7790"
+msgstr ""
+
+msgid "The filter carbon OPP-1060"
+msgstr ""
+
+msgid "The filter carbon OPP-2060"
+msgstr ""
+
+msgid "The minimum space requirements excels sub-mounting range hood OPP-2060th"
+msgstr ""
+
+msgid "The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridges"
+msgstr ""
+
+msgid "The switch provides a cost-effective way to create a small network or extend existing ones. Connect not only computers, but also a number of network devices such as IP cameras, network printers and more."
+msgstr ""
+
+msgid "The telescopic hood is very elegant and practical variant of the classical extractor with minimum space requirements"
+msgstr ""
+
+msgid "The telescopic hood is very elegant and practical variant of the classical extractor with minimum space requirements, making it suitable for small kitchens. Stainless steel front bar with rocker switch for easy operation.
Reasons to opt just for telescopic cooker hood Concept OPV-3260:
Performance is the most important parameter hoods and should be at least equal to ten times the volume of the room. Telescopic cooker hood Brand Concept OPV-3260 will surprise you output of 198 m3 per hour .
Model AL-3260 is equipped with two mA practical metal grease filters, whose maintenance is very easy and unlimited lifespan. If you can not pay out of steam, you can choose instead of exhaust classic recirculation system using two carbon filters, which can be bought (kat.číslo: 61990005).
Specifications:
Height: 175 mm
Width: 600 mm
Depth: 310-470 mm
Accessories: backflow preventer
Stainless steel front bar
Ability to upper exhaust or recirculation
Rocker Switch
2 power levels
Max. Performance 198 m3 / h.
Max.hlučnost the highest level of 66 db (A)
The bulb 40 W
2x the grease filter
diameter: 120 mm
Detailed description:
Optional Accessories: 2x carbon filter 61990005
1 motor / fan
Minimum distance from electric hob 650 mm
Minimum distance from gas hob: 750 mm
Dimensions for installation (HxWxD): 133 x 560 x 272 mm
Net weight: 5.9 kg
Voltage: 230 V ~ 50Hz
Power: 150 W
Cord Length: 2.2 m
"
+msgstr ""
+
+msgid "This is description of brand %brandName%."
+msgstr ""
+
+msgid "This luminiscent tape might prevent you from dying."
+msgstr ""
+
+msgid "This pot holder is used to hold pots. No more burnt kitchen tables!"
+msgstr ""
+
+msgid "This product is not an independently functional unit and may require professional installation."
+msgstr ""
+
+msgid "Toilet paper with Euro pictures. Even you can feel rich now!"
+msgstr ""
+
+msgid "Toner for MC861/ 851, 7000 pages"
+msgstr ""
+
+msgid "Toys"
+msgstr ""
+
+msgid "Tube type: Universal. Diameter: 32mm."
+msgstr ""
+
+msgid "Tuner"
+msgstr ""
+
+msgid "Type nozzles: Universal. Diameter: 32 mm. Turbobrush: Big."
+msgstr ""
+
+msgid "USB"
+msgstr ""
+
+msgid "Using a steamer Concept is surprisingly versatile. It can be used to prepare appetizers, soups, meat, fish, vegetables, vegetarian dishes, dumplings, rice, fruit and desserts."
+msgstr ""
+
+msgid "VERBATIM 1TB external HDD 2,5\" USB 3.0 GT SuperSpeed red"
+msgstr ""
+
+msgid "VIP customer"
+msgstr ""
+
+msgid "Video"
+msgstr ""
+
+msgid "Viewfinder type"
+msgstr ""
+
+msgid "Watch broadcast in stunning Full HD, while at the same stylish devices work."
+msgstr ""
+
+msgid "Watch broadcast in stunning Full HD, while at the same stylish devices work. TD590 Monitor allows you to quickly and easily switch between TV and computer monitor or test your multitasking skills and watch TV while working on a split screen. In addition, it offers flexible connectivity options to your entertainment and multimedia can be enjoyed to the fullest. This monitor is perfect for studio flats, rooms in dormitories and small living rooms. Why should you buy two devices when one can do it more?"
+msgstr ""
+
+msgid "Water reservoir capacity"
+msgstr ""
+
+msgid "We are looking forward to your visit."
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Well known USB cable with A and micro B connectors."
+msgstr ""
+
+msgid "WiFi"
+msgstr ""
+
+msgid "Winch throttle silver VP-9711/12"
+msgstr ""
+
+msgid "Windows 2000/XP/Vista/7"
+msgstr ""
+
+msgid "Wired"
+msgstr ""
+
+msgid "Xtreamer SW4"
+msgstr ""
+
+msgid "Xtreamer SW4 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions"
+msgstr ""
+
+msgid "Xtreamer SW4 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions in HD quality"
+msgstr ""
+
+msgid "Xtreamer SW5"
+msgstr ""
+
+msgid "Xtreamer SW5 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions"
+msgstr ""
+
+msgid "Xtreamer SW5 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions in HD quality"
+msgstr ""
+
+msgid "YENKEE YSP 1005WH white"
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "You will be welcomed by friendly staff!"
+msgstr ""
+
+msgid "ZN-8009 steam iron Ferrato stainless steel 2200 Watt Blue"
+msgstr ""
+
+msgid "battery"
+msgstr ""
+
+msgid "black"
+msgstr ""
+
+msgid "classic"
+msgstr ""
+
+msgid "fits into VP812x VP9520"
+msgstr ""
+
+msgid "flash disk"
+msgstr ""
+
+msgid "hardcover"
+msgstr ""
+
+msgid "inkjet"
+msgstr ""
+
+msgid "media 210MB, 24min., writing speed 24x, slim box"
+msgstr ""
+
+msgid "m³"
+msgstr ""
+
+msgid "no-reply@shopsys.com"
+msgstr ""
+
+msgid "one-slotted"
+msgstr ""
+
+msgid "optical"
+msgstr ""
+
+msgid "paper"
+msgstr ""
+
+msgid "pcs"
+msgstr ""
+
+msgid "white"
+msgstr ""
+
+msgid "| Demo eshop"
+msgstr ""
+
diff --git a/src/Shopsys/ShopBundle/Resources/translations/dataFixtures.en.po b/src/Shopsys/ShopBundle/Resources/translations/dataFixtures.en.po
new file mode 100644
index 000000000..d7d645786
--- /dev/null
+++ b/src/Shopsys/ShopBundle/Resources/translations/dataFixtures.en.po
@@ -0,0 +1,1647 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: en\n"
+
+msgid "(Mon - Sat: 9 - 10 a.m. to 8 - 10 p.m.)"
+msgstr ""
+
+msgid "+1-234-567-8989"
+msgstr ""
+
+msgid "1 kg"
+msgstr ""
+
+msgid "1.7GHz"
+msgstr ""
+
+msgid "100 Czech crowns ticket"
+msgstr ""
+
+msgid "1024 MB"
+msgstr ""
+
+msgid "112 g"
+msgstr ""
+
+msgid "12 Mpix"
+msgstr ""
+
+msgid "123.8x58.6 mm"
+msgstr ""
+
+msgid "12800"
+msgstr ""
+
+msgid "13 Mpx"
+msgstr ""
+
+msgid "1366×768 (HD Ready)"
+msgstr ""
+
+msgid "14 Mpix"
+msgstr ""
+
+msgid "15 bar"
+msgstr ""
+
+msgid "150 g"
+msgstr ""
+
+msgid "16mil."
+msgstr ""
+
+msgid "18 Mpix"
+msgstr ""
+
+msgid "1800"
+msgstr ""
+
+msgid "1920×1080 (Full HD)"
+msgstr ""
+
+msgid "2"
+msgstr ""
+
+msgid "2 l"
+msgstr ""
+
+msgid "2.0"
+msgstr ""
+
+msgid "21\""
+msgstr ""
+
+msgid "21,5” Hyundai 22MT44"
+msgstr ""
+
+msgid "210 MB"
+msgstr ""
+
+msgid "22\" Sencor SLE 22F46DM4 HELLO KITTY"
+msgstr ""
+
+msgid "220 x 250 x 9 mm"
+msgstr ""
+
+msgid "240 x 205 x 15 mm"
+msgstr ""
+
+msgid "2400x600"
+msgstr ""
+
+msgid "250"
+msgstr ""
+
+msgid "250 g"
+msgstr ""
+
+msgid "250 kWh/year"
+msgstr ""
+
+msgid "255 x 255 x 15"
+msgstr ""
+
+msgid "27\""
+msgstr ""
+
+msgid "275 kWh/year"
+msgstr ""
+
+msgid "27” Hyundai T27D590EY"
+msgstr ""
+
+msgid "27” Hyundai T27D590EZ"
+msgstr ""
+
+msgid "295 x 240 x 15 mm cartridge with active carbon"
+msgstr ""
+
+msgid "295 x 245 x 15 mm cartridge with active carbon"
+msgstr ""
+
+msgid "2W"
+msgstr ""
+
+msgid "3.5 kg"
+msgstr ""
+
+msgid "30\""
+msgstr ""
+
+msgid "30” Hyundai 22MT44D"
+msgstr ""
+
+msgid "310 x 285 x 15 mm"
+msgstr ""
+
+msgid "310 x 480 x 10"
+msgstr ""
+
+msgid "32\" Philips 32PFL4308"
+msgstr ""
+
+msgid "320 x 300 x 10 mm"
+msgstr ""
+
+msgid "32” Hyundai 32PFL4400"
+msgstr ""
+
+msgid "36\""
+msgstr ""
+
+msgid "36\" Hyundai 32PFL4308"
+msgstr ""
+
+msgid "36\" Philips 32PFL4308"
+msgstr ""
+
+msgid "380 g"
+msgstr ""
+
+msgid "3“"
+msgstr ""
+
+msgid "4 W"
+msgstr ""
+
+msgid "4.5\""
+msgstr ""
+
+msgid "400 g"
+msgstr ""
+
+msgid "426x306x145 mm"
+msgstr ""
+
+msgid "440 x 345 x 40 mm"
+msgstr ""
+
+msgid "449x304x152 mm"
+msgstr ""
+
+msgid "47 \"LG 47LA790V Luxury TV from the South Korean company LG bears 47LA790S. At first glance its beautiful design that pleases the eye of every lover of pure and precise shapes."
+msgstr ""
+
+msgid "47\""
+msgstr ""
+
+msgid "47\" LG 47LA790V (FHD)"
+msgstr ""
+
+msgid "48"
+msgstr ""
+
+msgid "480 x 310 x 10 mm
The filter is a need to adjust the scissors to cover the entire surface of the grease filter."
+msgstr ""
+
+msgid "480 x 310 x 10 mm. The filter is a need to adjust the scissors to cover the entire surface of the grease filter."
+msgstr ""
+
+msgid "4800x1200"
+msgstr ""
+
+msgid "495 x 200 x 8 mm"
+msgstr ""
+
+msgid "4“"
+msgstr ""
+
+msgid "5"
+msgstr ""
+
+msgid "5 Mpx"
+msgstr ""
+
+msgid "5.4 kg"
+msgstr ""
+
+msgid "5.5\""
+msgstr ""
+
+msgid "50"
+msgstr ""
+
+msgid "50 g"
+msgstr ""
+
+msgid "51,5” Hyundai 22HD44D"
+msgstr ""
+
+msgid "54\""
+msgstr ""
+
+msgid "54\" Philips 32PFL4308"
+msgstr ""
+
+msgid "55"
+msgstr ""
+
+msgid "560 g"
+msgstr ""
+
+msgid "580 g"
+msgstr ""
+
+msgid "580 kg"
+msgstr ""
+
+msgid "5“"
+msgstr ""
+
+msgid "60\""
+msgstr ""
+
+msgid "600 ml"
+msgstr ""
+
+msgid "60” Hyundai 22HD44D"
+msgstr ""
+
+msgid "6400"
+msgstr ""
+
+msgid "75\""
+msgstr ""
+
+msgid "800 × 480 px"
+msgstr ""
+
+msgid "80x70x70 mm"
+msgstr ""
+
+msgid "9 Mpix"
+msgstr ""
+
+msgid "You have chosen payment by credit card. Please finish it in two business days."
+msgstr ""
+
+msgid "
Cookbook
What can be cooked in a steam oven? Using a steamer Concept is surprisingly versatile. It can be used to prepare appetizers, soups, meat, fish, vegetables, vegetarian dishes, dumplings, rice, fruit and desserts. 75 pages of cookbooks Concept - cook healthy steamed - contains recipes with practical procedures. Each recipe includes:
The list of ingredients
Method
How many people
Preparation time
The degree of difficulty
+ time + temperature
From under the lids give you some tips - Asparagus with tuna sauce, salmon in vermouth sauce, soup minestrone, chicken mint surprise Cabbage leaves stuffed with minced meat, grilled chop with vegetables, potatoes baked with blue cheese, pear with chocolate sauce, roasted mandelimi and ice cream, etc."
+msgstr ""
+
+msgid "
> Luxury TV from the South Korean company LG bears 47LA790S . At first glance its beautiful design That pleases the eye of every lover of pure and precise shapes. Inside the TV is hidden except M13 dual-core processor number of extra features. I so belong to the energy class A + . Micro Pixel Control function is performed local dimming backlight and thus significantly reduces up to 64 W. This is so gigantic screen with really great.
This TV is considerate to your eyes because of the image eliminates the annoying flicker caused by conventional 3D glasses, and you so you can enjoy long evenings of film without fatigue and eye pain . User-friendly environment allows adjust the 3D depth effect and yourself, you can choose whether you prefer comfort or deeper experience when watching 3D content. You could very well happen that while watching a football match flips the ball right into your living room Because special functions for image conversion improve any broadcasting the third dimension .
Avid gamers will appreciate the Dual Play When television broadcasts two separate 2D images and each player using glasses to see their part to the full screen area. No more worry when a split screen. Intel WiDi (Wireless Display), respectively. wireless transmission of video and audio, allows quick and easy connection of TVs and laptops without cables or an Internet connection. It is very convenient and fast you'll love this feature."
+msgstr ""
+
+msgid "
A4tech X710BK
Playing computer mouse has five buttons and scrolovacím button for easier browsing documents or Internet pages. News is a key 3XFire that in one pressing regulating a triple clicks. The mouse has five options to set up the sensor sensitivity and in steps 400, 600, 1200, 1600 and 2000 DPI. The mouse has an ergonomic design, it connects via high-speed USB interface and is equipped with 16 Kb internal memory that is possible with the Oscar Mouse Editor to record scripts to control your favorite games. It is fully compatible with all modern operating systems including Windows Vista.
Specifications:
Interface: USB 2.0 Reduction in PS/2
OS Compatibility: Microsoft Windows 2000/XP/2003/Vista"
+msgstr ""
+
+msgid "
Canon EH-22L
High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm."
+msgstr ""
+
+msgid "
Canon EH-22L
High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm."
+msgstr ""
+
+msgid "
Canon PIXMA MG2450
Stylish and affordable, accessible multifunction devices for the home. Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components. The printing machine uses an innovative print FINE technology Which guarantee excellent print quality. The printer has a system of four ink colors hidden in two ink cartridges, which provide easy user service and stable print quality throughout the life. You can reach the XL cartridges FINE, which provide significantly greater number of print pages between ink replacement. This is ideal if you are printing large volumes.
Software My Image Garden will reveal the full range of functions PIXMA printers. It offers solutions for the layout and printing photos, scanning, and access to online services. Due to advanced features such as face detection, it will scan all the pictures on your computer (even those long forgotten), and compile them into great designs to print. Service CREATIVE PARK PREMIUM you can download and print photos, images and artwork from internationally recognized photographers and artists. Create greeting cards, calendars or stunning 3D paper products, such as the space shuttle Endeavour.
"
+msgstr ""
+
+msgid "
Canon PIXMA MG3350 black
Features of modern and elegantly prepared MFPs s new wireless capabilities. Function automatic two-sided printing printing on both sides, which saves paper while producing professional looking documents. The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridgesThat provide easy user service and stable print quality throughout the life. You reach for XL FINE cartridges provide printing multiple pages significantly between individual ink replacement. This is ideal if you often print.
Do smart device application download Canon PIXMA Printing Solutions a straight print or scan. In addition, you can check the printer status and ink levels. They also supported services Apple AirPrint and access to the Internet and Google Cloud Print. Software My Image Garden has a solution for organizing and printing photos, scanning, and access to online services. Due to advanced features such as face detection, you will always find exactly what you're looking for.
Additional information:
Print: Technology: 4-ink (in 2 packs) ChromaLife100 system, the head of FINE (2 pl) Borderless printing: A4, Letter, 20 x 25 cm, 13 x 18 cm, 10 x 15 cm Automatic two-sided printing: A4, A5, B5, Letter Printing from Application PIXMA Printing Solutions, Google Cloud Print, Apple AirPrint
"
+msgstr ""
+
+msgid "
Canon PIXMA MG3350 black
Features of modern and elegantly prepared MFPs s new wireless capabilities. Function automatic two-sided printing printing on both sides, which saves paper while producing professional looking documents. The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridgesThat provide easy user service and stable print quality throughout the life. You reach for XL FINE cartridges provide printing multiple pages significantly between individual ink replacement. This is ideal if you often print.
Do smart device application download Canon PIXMA Printing Solutions a straight print or scan. In addition, you can check the printer status and ink levels. They also supported services Apple AirPrint and access to the Internet and Google Cloud Print. Software My Image Garden has a solution for organizing and printing photos, scanning, and access to online services. Due to advanced features such as face detection, you will always find exactly what you're looking for. Additional information: Print: Technology: 4-ink (in 2 packs) ChromaLife100 system, the head of FINE (2 pl) Borderless printing: A4, Letter, 20 x 25 cm, 13 x 18 cm, 10 x 15 cm Automatic two-sided printing: A4, A5, B5, Letter Printing from Application PIXMA Printing Solutions, Google Cloud Print, Apple AirPrint
"
+msgstr ""
+
+msgid "
D-Link DGS-105/E
The switch provides a cost-effective way to create a small network or extend existing ones. Connect not only computers, but also a number of network devices such as IP cameras, network printers and more. The switch is equipped with five Gigabit Ethernet ports with auto-sensing speeds, so you shall always have the best performance. To communicate without delay and smooth video streaming has integrated QoS optimization .
Switch functions quickly and easily without complicated setting. But consistently low power detect used ports, and if stopping traffic enters Sleep mode. Rugged metal body is sufficient for cooling without fan . Together with its small size you can find a place almost anywhere. Also available is a set of wall mounting and it can also protect against theft Kensington."
+msgstr ""
+
+msgid "
Defender SPK-480
Defender SPK 480, two portable and practical 2\" broadband speakers. They have 4 watt output and are powered by USB. They're made of durable plastic and their compact size is portable and easy to fit into any bag or backpack. The speakers connect to notebooks or portable music players via the built-in 3.5 mm jack. Each speaker features its own volume control, and they can be placed near monitors without disturbing image quality due to their magnetic shielding. The silver and black design is simple and modern."
+msgstr ""
+
+msgid "
DéLonghi ECAM 44.660.B
Start the morning with your favorite drink with the DeLonghi ECAM 44.660.B Eletta automatic coffee maker. A built in special hot steam/water jet automatically prepares a thick milk froth for cappuccino and tea. Drip coffee lovers can also press their own coffee.
Magic Milk Menu button
A special function is the Milk Menu button, which gives you a choice of milk-based beverages. In addition to the classic cappuccino, latte macchiato, or Latte, you can prepare rare drinks such as Espresso macchiato and a flat white. For a quick and easy treat, you can prepare hot cocoa or a cup of frothed milk, and the size of the beverage can be adjusted based on the cup.
"
+msgstr ""
+
+msgid "
GENIUS SP-M120 black
Sleek and compact stereo speakers in combination of black and metallic surface. Speakers provide basic computer sound system with an output of 2 W RMS. On the front is virtually placed in a large volume control, but not forgotten even the popular headphone jack. Specifications: Performance: 2 x 1 W RMS Frequency Range: 100 Hz - 20KHz Signal/noise ratio: 75 db Dimensions: 50 x 90 mm
"
+msgstr ""
+
+msgid "
GIGABYTE GK-KM7580 Black
Quality set keyboard and optical mouse from Gigabyte. Both components are color-matched to the sleek glossy black color. The keyboard has 15 multimedia keys for quick access to the Internet, email and other applications. The multimedia keys also used for various tasks (volume control, ...). Optical mouse has a sensor with a resolution of 500 to 1000 DPI resolution can be switched. Mouse fits both the left and the right hand. Wireless communication provides a miniature USB receiver for keyboard and mouse. This set will contrast nicely on any desk.
Compact Speakers Genius SP-HF150 are the perfect accessory for portable computers. It is powered only by the USB port. Yet they can generate high power 4 W RMS. The sound of the smaller 2.5 \"drives is airy, yet does not lack sufficient bass fundament. All of the elegant veneer finish imitating a hidden volume control. Specifications:
Sound characteristics: Power: 2 x 2 W RMS Drivers: 2.5 \"(širokpásmové) Frequency range: 200 to 20 000 Hz Signal-to-Noise Ratio: 70 db
Connectors: 3.5 mm audio USB for power"
+msgstr ""
+
+msgid "
Genius SlimStar i222 CZ+SK Black
GENIUS LuxeMate I222 is a stylish black keyboard, which at first glance invites you to use your Apple design. It will decorate your desk at home or in the office. In addition to the standard layout will delight and a large variety of function keys that enhance control of the internet, email and also a multimedia player. Low profile you use for long periods still feel comfortable. The computer keyboard GENIUS LuxeMate I222 connects via USB interface.
Specifications:
Type: conduction Layout: Czech Interface: USB Design: Apple design"
+msgstr ""
+
+msgid "
JURA IMPRESSA Z9 One Touch TFT Pianoblack
Luxury automatic coffee machine Jura Impressa Z9 One Touch packed with Swiss precision and elegance, which sets new standards. This machine brings you jeich on several levels, such as coffee quality, easy to use and attractive design. The purpose is always the most advanced technology to achieve real, authentic results. The powerful device has intuitive controls and except large 3.5 \"TFT color display. Together with rotary dial allows you to choose between 11 specialties and goes to prepare any coffee you can think of. With the coffee a la carte, allowing you to quickly change settings according to your needs, your options are almost limitless.
For an authentic experience and to ensure optimal conditions for coffee are two Thermoblocks. The first coffee and hot water, the second is intended to couple. With every cup of coffee is also possible to set the correct brewing temperature, amount of water and grind. Mill technology + Aroma is quiet and up to twice faster than previously used. Grains of coffee while grinding so much heat and so there is no negative influence of taste of coffee.
Foam crown in drinks Latte macchiato, cappuccino and other specialty are the world extremely popular. Automatic coffee machine in the model IMPRESSA Z9 One Touch is a distinctive design with a combination of pure luxury and sophistication. But technology also has a soft foam that each of trendy coffee specialties will adjust fluffy crown. S cappuccino outlets, which can be adjusted up to 153 mm, there is no problem to use a glass or a latte macchiato. Formed with Swiss precision and elegance with which you prepare the perfect espresso, cappuccino or caffe latte.
You will enjoy a very low power consumption. If the espresso is separated from the mains power switch, patented innovation JURY Zero Energy Switch (zero energy consumption) will remove any energy at all. Before turning off the espresso is automatically purged and cleansed, which provides him with long life. The unique geometry with finer teeth grinding and new technology supports the lower noise machine when grinding coffee.
"
+msgstr ""
+
+msgid "
Logitech S-120 Speaker System
Modern stereo speakers in a stylish black design, with an output of 2.3 W, suitable only for desktops and laptops, but also for CD or MP3 players, and other devices. They are connected via standard stereo jack 3,5 mm. The speakers have a frequency response of 50 Hz to 20 kHz. Easily accessible controls are located on the side of the right speaker with headphone outlet.
Specifications: Performance: 2.3 W (2 x 1.15 W RMS)
Frequency response: 50 Hz to 20 kHz "
+msgstr ""
+
+msgid "
Nikon EH-22L
High quality, elegant, soft, and yet reliably protecting brand case for your Nikon digital camera CANON EOS 650D or 700D. Provides protection while traveling from dust, scratches and other negative influences. You also have the camera ready at hand. It fits into the unit with lens 18-55 mm."
+msgstr ""
+
+msgid "
Steam iron Concept ZN8009 wattage 2200 Watt security system AUTO - SHUT OFF lets much easier and more convenient ironing.
Its other advantage is easy operation and many other practical functions and features, such as 3 m long supply cable through which you will not have to move ironing. Specifications:
Stainless steel soleplate
Even steam dosage: 20 g / min
Auto-off function AUTO SHUT-OFF Audible : turn off after 30 seconds in horizontal position and after 8 minutes in the vertical position irons
The water tank: 300 ml
Airbrush
The anti-drip ANTI-DRIP
Self-cleaning function Self Clean
The descaling function ANTI-CALC
Vertical steam
Notification light
Thermostat
3 m power cable (with swivel 360 °)
Color: blue + silver
Power consumption: 2200 W
Voltage: 230 V
Accessories: container to refill their water"
+msgstr ""
+
+msgid "
A perfectly clean glass ceramic cooktop without leaving stains and does not endanger the environment.
remove leftover food, grease, nicotine coating and many other impurities
does not harm rubber and plastics
does not AOX - Adsorbable organic halogens
biologically degradable by OECD
"
+msgstr ""
+
+msgid "
Enjoy quick cooking with special cooking HI-LIGHT zones which warms almost immediately.
Reasons to opt just for built-in ceramic plate Concept SDV-3360:
The built-in ceramic hob SDV-3360 you will be astonished handy touch controls .
Special radiators cooking zones HI-LIGHT are able to warm up to a maximum of a few seconds.
The residual heat indicator H - will protect you against nasty burns. Indicates residual temperature of the cooking zone even after power off.
If you want to directly select the time that you want to cook, be sure to take the opportunity of the off-delay .
Specifications:
Height: 50mm
Width: 590 mm
Depth: 520 mm
Glass ceramics
Accessories cleaning scraper
Touch control
The residual heat indicator - H
Without frame, orthogonal edges Grounded
4 cooking zones
Auto-off function - EXTRA SECURE
The off-delay
Beep
Control Panel front center
Child lock
The ON state
Details:
Dimensions for installation (HxWxD): 46 x 560 x 490 mm
Main switch
Left Front plate: Circular HI-LIGHT
The diameter of the front left plates: 200 mm
Input left front plate: 1800 W
Rear left hotplate: Circular HI-LIGHT
The diameter of the rear left of the plate 165 mm
Input left rear plate: 1200 W
The right rear plate: Circular HI-LIGHT
The diameter of the rear right plate: 200mm
Input right rear plates : 1800 W
The front right plate: Circular HI-lihgt
The diameter of the front right plate 165 mm
Input right front plate: 1200 W
Max.příkon-el .: 5500-6600 W
Weight: 9 kg
Voltage: 220-240 / 400 V 2N ~ 50/60 Hz
"
+msgstr ""
+
+msgid "
Hand printing adhesive labels Brother especially suitable for easy marking in warehouses, offices and wherever it is required records or quickly usable labels. The printer boasts a very easy to use, ensuring a perfect look label width from 3.5 mm to 18 mm. You can create labels, barcodes, labels for folders, address and shipping labels, or labels on CD and DVD media. Everything can be created by using the keyboard directly to the printer manual.
The printer is in addition to ease of use and versatility also very fast. It can print up to 2 cm plate for one second. Very please direct thermal printing technology, which reduces the cost of toner and ink. The printer can be powered by AC adapter, rechargeable battery or alkaline batteries 6 x AA.
Additional information:
Print technology: Thermal
Width TZ tapes: 3.5/6/9/12/18 (mm) Display: 16 characters x 2 lines Print speed: 20 mm/s Odsřih: handmade Font style: 14
Symbols: 617
Characters in mind: 2800
Other features: vertical printing, barcode printing
Possible sources of supply: AC adapter AD-E001 - (not included) rechargeable battery BA-E001 - (not included) Alkaline Batteries 6 x AA - (not included) Package Contents: Printer PT-H300 starting tape TZe-241 (18 mm black on white, length 4 m) documentation
"
+msgstr ""
+
+msgid "
It is safe for you to your loved ones as important as us? In that case, you will appreciate with hob SDV-3460 feature residual heat indicators - H that you and your loved ones will protect against nasty burns. The residual heat indicator signals a residual temperature of the cooking zone even after power off.
Reasons to opt just for built-in ceramic plate Concept SDV-3460:
The built-in ceramic hob SDV-3460 you will be astonished handy touch controls .
Special radiators cooking zones HI-LIGHT are able to warm up to a maximum of a few seconds.
The residual heat indicator H - protects you against nasty burns. Indicates residual temperature of the cooking zone even after power off.
If you want to directly select the time that you want to cook, be sure to take the opportunity of the off-delay .
Specifications:
Height: 60 mm
Width: 590 mm
Depth: 520 mm
Glass ceramics
Accessories cleaning scraper
Touch control
The residual heat indicator - H
Without frame, angled edges Grounded
4 cooking zones
Auto-off function - EXTRA SECURE
The off-delay
Beep
Control Panel front center
Child lock
The ON state
Details:
Dimensions for installation (HxWxD): 50 x 560 x 490 mm
Main switch
Left Front plate:
The diameter of the front left plates: 165x265 mm
Input left front plate: 1100/2000 W
Rear Left plate: Circular HI-LIGHT
The diameter of the rear left of the plate 165 mm
Input left rear plate: 1200 W
The right rear plate: Circular HI-LIGHT
The diameter of the rear right plate: 200mm
wattage right rear plate: 1800 W
The front right plate: Circular HI-lihgt
The diameter of the front right plate: 165 mm
Input right front plate: 1200 W
Max.příkon-el .: 5700-6800 W
Weight: 10 kg
Voltage: 220-240 / 400 V 2N ~ 50/60 Hz
"
+msgstr ""
+
+msgid "
Order number {number} has been sent, thank you for your purchase. We will contact you about next order status.
Track the status of your order. {transport_instructions} {payment_instructions}
"
+msgstr ""
+
+msgid "
The minimum space requirements excels sub-mounting range hood OPP-2060th Suitable for very small kitchens. Metal buttons provide ease of use and precise adjustment of the corresponding stage performance.
Reasons to choose just the sub-mounting range hood Concept OPP-2060:
Performance is the most important parameter hoods and should be at least equal to ten times the volume of the room. The sub-mounting range hood brand Concept OPP-2060 will surprise performance 186 m3 per hour .
Very practical is the ability to select 4 Ways exhaust .
Model OPP-2060 is equipped with a practical metal grease filter , its maintenance is very easy and unlimited lifespan. If you can not pay out of steam, you can choose instead of exhaust classic recirculation system using a carbon filter, which can be bought."
+msgstr ""
+
+msgid "
CD/DVD/Blu-ray/HD-DVDis an affordable program for burning CD/DVD/Blu-ray/HD-DVD media. Intuitive operation with its easy to handle even a novice in this field. Another big advantage is the use of technology burning \"on the fly\", which is spared not only your time but also the capacity of the disk, because the process does not create any storage (temporary) files on your hard disk.
Worth mentioning is also the fact that for its operation baking does not use any components of Windows or other manufacturers. Its functionality is not needed any external libraries or DLL. This makes the software provides high stability, even if your system is corrupted Windows. This gives you the ability to backup before reinstalling Broken System. The program is completely in the Czech language.
"
+msgstr ""
+
+msgid "
Hewlett-Packard was founded in the difficult times of the Great Depression. The founders were a pair of friends whose name the company still proudly bears. They started their business in an unobtrusive garage near the city of Palo Alto. It is now a national monument. HP’s success lay not in copying existing products, but in the ability and courage to come up with something new.
The first commercial triumph was an oscillator that surpassed all competition in quality, yet sold at a quarter of the price. In 1968, HP released their first desktop computer - a desktop calculator. The company currently manufactures products primarily related to computer technology - computers and laptops, printers, scanners, digital cameras, servers, and last but not least, calculators.
Unless otherwise indicated in the product description, packaging does not contain a USB interface cable.
"
+msgstr ""
+
+msgid "
Meet the latest generation of LED TVs Philips, which include the thinSmart TV running Android. Gets you a fine painting, innovative technologies, including image processing Ambilight and honest materials used in production. It features cutting-edge design structures with an eye for detail that fits into modern interiors. Like basis was inclined central pedestal that represents the geometric pun. On TV it will always look nice even when switched off.
The main advantages:
Ambilight backlighting - projecting a glow on the wall
Sharp and smooth image
Android operating system with applications
Internet connection
Remote control with keyboard
Superior picture
Ambilight backlighting will forever change your perception of television. This is a unique technology that expands the display area outside the boundaries of the panel itself. 2 Sided glow lit from two sides of the screen to the surrounding walls and creates a breathtaking effect. Natural Motion technology ensures smooth and crisp moving images without blur by increasing the number of frames per second to double. It's handy for example when movie action scenes or sports broadcasts.
Micro Dimming Pro conveys a realistic visual experience day and night. It uses a light sensor and a special software to optimize the contrast of the screen on the basis of light conditions in the environment. The image is analyzed 6400 in different zones, thereby providing authentic and undisturbed experience. Sharp moving images with breathtaking contrast, detail and depth ensure Pixel Precise HD.
Android - richer television viewing experience
Built-in WiFi module, and an Ethernet port expands the possibilities of television. Are you tired of watching okoukaných series? Then drop into online content. Waiting for you Archives TV stations, social networks, YouTube and other corners of the Internet via a web browser. Smart TV is based on Android OS 5.0 (Lollipop), has pre-installed applications and more can be found at Google Play. Use remote control with keyboard for easy typing text or even voice control. Advantage based on Android is also always up to date firmware. And all of you will be taken without waiting for a nimble run television is not only the old operating system, but also 2jádrový processor.
Saving operation
Manufacturer did not forget to decent connective equipment. It includes a quartet of HDMI connectors, one Scart and a trio of USB connectors for recording or playback of content by connecting USB disks. There is also support for HbbTV function or even suspend broadcasts EPG 8 days. Tuners are represented DVB-T / T2 / C and television unequivocal advantage of the economic operation. The TV comes to energy class A +, and for a very decent cuts only 45 kWh.
Additional information:
Picture Enhancement: Natural Motion 500Hz Perfect Motion Rate Pixel Precise HD Micro Dimming Pro
Smart TV: User interaction - multiroom Client and Server, SimplyShare, certified Wi-Fi Certified Miracast Interactive television - HbbTV Program - Suspension of television broadcasting, USB recording Applications SmartTV - Online video store, open an Internet browser, Social TV service, Spotify, TV on Demand, YouTube Easy Installation - Automatic detection equipment Philips Connection Wizard equipment, Network Setup Wizard, the Setup Wizard Easy to use - Universal Smart Menu button, on-screen User Guide Firmware upgradeable - Guide cars. update, Firmware upgradeable via USB, Firmware Update online Screen Format Adjustments - Basic - Fill Screen, Fit to Screen, Advanced - Pan, Zoom, Stretch Philips TV Remote - Applications Channels, Control, NowOnTV, TV guide, Video on demand Remote control - Keyboard
Ambilight: Versions of Ambilight - 2 pages Ambilight - The adaptation of the color of walls, Lounge Mode, Game Mode, Ambilight + hue
Multimedia applications: Video playback formats - Containers: AVI, MKV, H264 / MPEG-4 AVC, MPEG-1, MPEG-2, MPEG-4, WMV9 / VC1, HEVC Format Support subtitles - .SMI, .SRT, .ssa, .SUB, .TXT, .ass Play music formats - AAC, MP3, WAV, WMA (v2 to v9.2), PRO-WMA (v9 and v10) Picture Playback Formats - JPEG, BMP, GIF, JPS, PNG, PNS, BMS, MIT
Connectivity:4 x HDMI1 x Scart (RGB / CVBS)3 x USBWireless Dual Band Wi-Fi Direct, Integrated Wi-Fi 11n 2 × 2Other connections: Antenna IEC75, Common Interface Plus (CI +), Ethernet-LAN ??RJ-45, Digital audio output (optical), Audio L / R, Audio Input (DVI), Headphone out, Service connector, the connector SatelliteHDMI features - Audio Return ChannelEasyLink (HDMI-CEC) - Pass the remote control signal, System audio control, System standby, One touch play
Supplied Remote control 2 x AAA Batteries Table top stand Power cable Quick start guide use Brochure Legal and safety information
"
+msgstr ""
+
+msgid "
This product is not an independently functional unit and may require professional installation.
"
+msgstr ""
+
+msgid "
Type nozzles: Universal
Diameter: 32 mm
Turbobrush Big
"
+msgstr ""
+
+msgid "A"
+msgstr ""
+
+msgid "A and micro B"
+msgstr ""
+
+msgid "A book is a set of written, printed, illustrated, or blank sheets, made of ink, paper, parchment, or other materials, fastened together to hinge at one side. A single sheet within a book is a leaf, and each side of a leaf is a page. A set of text-filled or illustrated pages produced in electronic format is known as an electronic book, or e-book."
+msgstr ""
+
+msgid "A cable HDMI - HDMI AM / M 2 m gold-plated connector High Speed HDMI Cable with Ethernet 1.4 support 1080p FULL HD"
+msgstr ""
+
+msgid "A camera is an optical instrument for recording or capturing images, which may be stored locally, transmitted to another location, or both."
+msgstr ""
+
+msgid "A garden tool is any one of many tools made for gardens and gardening and overlaps with the range of tools made for agriculture and horticulture. Garden tools can also be hand tools and power tools."
+msgstr ""
+
+msgid "A personal computer (PC) is a general-purpose computer whose size, capabilities, and original sale price make it useful for individuals, and is intended to be operated directly by an end-user with no intervening computer time-sharing models that allowed larger, more expensive minicomputer and mainframe systems to be used by many people, usually at the same time."
+msgstr ""
+
+msgid "A printer is a peripheral which makes a persistent human readable representation of graphics or text on paper or similar physical media."
+msgstr ""
+
+msgid "A telephone is a telecommunications device that permits two or more users to conduct a conversation when they are too far apart to be heard directly. A telephone converts sound, typically and most efficiently the human voice, into electronic signals suitable for transmission via cables or other transmission media over long distances, and replays such signals simultaneously in audible form to its user."
+msgstr ""
+
+msgid "A toy is an item that can be used for play. Toys are generally played with by children and pets. Playing with toys is an enjoyable means of training young children for life in society. Different materials are used to make toys enjoyable to all ages."
+msgstr ""
+
+msgid "A3"
+msgstr ""
+
+msgid "A4"
+msgstr ""
+
+msgid "A4tech X710BK Playing computer mouse has five buttons and scrolovacím button for easier browsing documents or Internet pages."
+msgstr ""
+
+msgid "A4tech mouse X-710BK, OSCAR Game, 2000DPI, black,"
+msgstr ""
+
+msgid "Action"
+msgstr ""
+
+msgid "Active"
+msgstr ""
+
+msgid "Active/Passive"
+msgstr ""
+
+msgid "Annual energy consumption"
+msgstr ""
+
+msgid "Apple iPhone 5S 64GB, gold"
+msgstr ""
+
+msgid "Aquila Aquagym non-carbonated spring water"
+msgstr ""
+
+msgid "BROTHER PT-H300"
+msgstr ""
+
+msgid "Bluetooth"
+msgstr ""
+
+msgid "Book 55 best programs for burning CDs and DVDs"
+msgstr ""
+
+msgid "Book Computer for Dummies Digital Photography II"
+msgstr ""
+
+msgid "Book of procedures for dealing with traffic accidents"
+msgstr ""
+
+msgid "Book of traditional Czech fairy tales"
+msgstr ""
+
+msgid "Book scoring system and traffic regulations"
+msgstr ""
+
+msgid "Books"
+msgstr ""
+
+msgid "By entering an email below, you can download your personal and other information (for example, order history) from our online store. An email with a link will be sent to you after entering your email address, to verify your identity. Clicking on the link will take you to a page where you’ll be able to download these informations in readable format - it will be the data registered to given email address on this online store domain."
+msgstr ""
+
+msgid "By entering an email below, you can view your personal information that we register in our online store. An email with a link will be sent to you after entering your email address, to verify your identity. Clicking on the link will take you to a page listing all the personal details we have connected to your email address."
+msgstr ""
+
+msgid "CD-R VERBATIM 210MB"
+msgstr ""
+
+msgid "Camera type"
+msgstr ""
+
+msgid "Cameras & Photo"
+msgstr ""
+
+msgid "Canceled"
+msgstr ""
+
+msgid "Canon EH-22L"
+msgstr ""
+
+msgid "Canon EH-22L. High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D."
+msgstr ""
+
+msgid "Canon EH-22M"
+msgstr ""
+
+msgid "Canon EOS 700D"
+msgstr ""
+
+msgid "Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels"
+msgstr ""
+
+msgid "Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light"
+msgstr ""
+
+msgid "Canon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light, even without a flash. Automatic smart scene mode analyzes the scene and automatically selects the best settings for the camera. View images, focus, or even pictures can be taken using a 3 \"touch screen TFT Clear View II with a whopping resolution of 1.04 million pixels and a vari-angle. With this camera out of you in a moment become a professional cameraman. It makes it possible to shoot stunning movies in Full HD 1080p. Hybrid AF technology enables continuous focus during movie shooting and using the built-in microphone ozvučíme your images are high quality stereo sound. Autofocus system comprising nine cross-type AF points to capture fast-moving objects without any blurring. Thanks to continuous shooting at up to 5 frames per second, you'll never miss a crucial moment for getting the best picture possible.The HDR Backlight Control mode, the camera takes three different exposures and combines them into one, in order to preserve details in shadows and areas with high brightness. In Night Scene mode, the camera takes the hand of multiple images at high shutter speeds and combining them together and thus prevents blurring. Captured images and videos simply adding it to an SD Memory Card, SDHC and SDXC, thanks to the integrated connector is miniHDMI you can conveniently viewed on your LCD or plasma TV. The camera can buy a wide range of lenses, flashes and accessories that are compatible with the EOS system."
+msgstr ""
+
+msgid "Canon EOS 700E"
+msgstr ""
+
+msgid "Canon MG3550"
+msgstr ""
+
+msgid "Canon MG3650"
+msgstr ""
+
+msgid "Canon PIXMA MG2450"
+msgstr ""
+
+msgid "Canon PIXMA MG2650"
+msgstr ""
+
+msgid "Canon PIXMA iP7250"
+msgstr ""
+
+msgid "Canon PIXMA iP7350"
+msgstr ""
+
+msgid "Cap with air conditioning, convenient for hot days."
+msgstr ""
+
+msgid "Cap with solar-powered fan, white"
+msgstr ""
+
+msgid "Capacity"
+msgstr ""
+
+msgid "Cash"
+msgstr ""
+
+msgid "Cash on delivery"
+msgstr ""
+
+msgid "Circumaural"
+msgstr ""
+
+msgid "Cleaner 3in1 stainless steel appliances (4039286078461)"
+msgstr ""
+
+msgid "Coarse grater blade RM-3240/3250"
+msgstr ""
+
+msgid "Coffee Machines"
+msgstr ""
+
+msgid "Coffeemakers or coffee machines are cooking appliances used to brew coffee. While there are many different types of coffeemakers using a number of different brewing principles, in the most common devices, coffee grounds are placed in a paper or metal filter inside a funnel, which is set over a glass or ceramic coffee pot, a cooking pot in the kettle family. Cold water is poured into a separate chamber, which is than heated up to the boiling point, and directed into the funnel."
+msgstr ""
+
+msgid "Collection of classical Czech fairy tales."
+msgstr ""
+
+msgid "Color"
+msgstr ""
+
+msgid "Color printing"
+msgstr ""
+
+msgid "Compact Speakers Genius SP-HF150 are the perfect accessory for portable computers."
+msgstr ""
+
+msgid "Connectors"
+msgstr ""
+
+msgid "Construction"
+msgstr ""
+
+msgid "Contact"
+msgstr ""
+
+msgid "Coupon valued to 100 Czech crowns. You can cash it at any exchange office"
+msgstr ""
+
+msgid "Cover"
+msgstr ""
+
+msgid "Credit card"
+msgstr ""
+
+msgid "Crevice nozzle VP-4290"
+msgstr ""
+
+msgid "Cyklocomputer – cyklonavigation with preset maps, color display 3\", training programmes, WiFi"
+msgstr ""
+
+msgid "Czech"
+msgstr ""
+
+msgid "Czech post"
+msgstr ""
+
+msgid "Czech republic"
+msgstr ""
+
+msgid "D-Link"
+msgstr ""
+
+msgid "DVB-T"
+msgstr ""
+
+msgid "DVB-T Receiver HD - MPEG4, MPEG2, USB recording, timeshift"
+msgstr ""
+
+msgid "DVB-T Receiver HD - MPEG4, MPEG2, USB recording, timeshift, EPG, HDMI 1.3, USB, SCART, coaxial output, power antenna 5V/50mA"
+msgstr ""
+
+msgid "DeLonghi ECAM 44.660 B Eletta Plus"
+msgstr ""
+
+msgid "Dear customer,
based on your email {email}, we are sending you a link to your personal details. By clicking on the link below, you will be taken to a page listing all the personal details which we have in evidence in our online store {domain}.
To overview your personal information please click here - {url} The link is valid for next 24 hours. Best Regards
team of {domain}"
+msgstr ""
+
+msgid "Dear customer,
Processing your order has been finished."
+msgstr ""
+
+msgid "Dear customer,
Your order has been cancelled."
+msgstr ""
+
+msgid "Dear customer,
Your order is being processed."
+msgstr ""
+
+msgid "Dear customer,
your registration is completed. Name: {first_name} {last_name} Email: {email} E-shop link: {url} Log in page: {login_page}"
+msgstr ""
+
+msgid "Dear customer,
based on your email {email}, we are sending you a link where you can download your personal details registered on our online store in readable format. Clicking on the link will take you to a page where you’ll be able to download these informations, which we have in evidence in our online store {domain}.
To download your personal information please click here - {url} The link is valid for next 24 hours.
Best regards team of {domain}"
+msgstr ""
+
+msgid "Dear customer,
Your order has been placed successfully.
You will be contacted when the order state changes. Order number: {number} Date and time of creation: {date} E-shop link: {url} Order detail link: {order_detail_url} Shipping: {transport} Payment: {payment} Total price including VAT: {total_price} Billing address: {billing_address} Delivery address: {delivery_address} Note: {note} Products: {products} {transport_instructions} {payment_instructions}"
+msgstr ""
+
+msgid "Dear customer.
You can set a new password following this link: {new_password_url}"
+msgstr ""
+
+msgid "Deep baking sheet ETV-2560/2860/2960 / 3160bc"
+msgstr ""
+
+msgid "Defender 2.0 SPK-480"
+msgstr ""
+
+msgid "Defender SPK-480, easy to fit into any bag or backpack"
+msgstr ""
+
+msgid "Demo advert"
+msgstr ""
+
+msgid "Determination"
+msgstr ""
+
+msgid "Digital Camera - Waterproof, shockproof, freezeproof, 16.1 Mpx CCD"
+msgstr ""
+
+msgid "Digital Camera - Waterproof, shockproof, freezeproof, 16.1 Mpx CCD, 4x zoom (29-108 mm), 2.7\" LCD display, Li-Ion, HD video, SD/SDHC/SDXC, time lapse recording, stabilizer"
+msgstr ""
+
+msgid "Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 \"LCD, Li-Ion, FullHD video, histogram, HDR"
+msgstr ""
+
+msgid "Digital Camera CMOS 16 megapixel, 24x zoom, 3.0 \"LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB"
+msgstr ""
+
+msgid "Digital Camera CMOS Exmor R1 20.2 megapixel, 3.6x zoom"
+msgstr ""
+
+msgid "Digital Camera CMOS Exmor R1 20.2 megapixel, 3.6x zoom (28-100 mm F1.8), Full HD video (1920 x 1080) 50p, 3 \"LCD, Li-Ion, MS DUO + \\u200b\\u200bSD/SDHC/SDXC, Face Detection, Intelligent stabilizer"
+msgstr ""
+
+msgid "Digital Camera Nikon VH-520 16 megapixel, 24x zoom, 3.0 \"LCD, Li-Ion, FullHD video"
+msgstr ""
+
+msgid "Digital Camera Nikon VH-520 16 megapixel, 24x zoom, 3.0 \"LCD, Li-Ion, FullHD video, histogram, HDR, optical stabilizer, SD/SDHC/SDXC, face detection, USB"
+msgstr ""
+
+msgid "Digital Voice Reco.rder Olympus VN-733PC is profiled primarily intuitive operation and long battery lif."
+msgstr ""
+
+msgid "Digital Voice Reco.rder Olympus VN-733PC is profiled primarily intuitive operation and long battery life . Its user offers 4 gigabytes internal memory and a new slot for microSD cards. O capacity certainly will not be a shortage in power saving mode, LP handle record up to 1600 hours of recording"
+msgstr ""
+
+msgid "Dimensions"
+msgstr ""
+
+msgid "Discover the secret of people with us."
+msgstr ""
+
+msgid "Display"
+msgstr ""
+
+msgid "Display Size"
+msgstr ""
+
+msgid "Display size"
+msgstr ""
+
+msgid "Display type"
+msgstr ""
+
+msgid "Done"
+msgstr ""
+
+msgid "Donec at dolor mi. Nullam ornare, massa in cursus imperdiet, felis nisl auctor ante, vel aliquet tortor lacus sit amet ipsum. Proin ultrices euismod elementum. Integer sodales hendrerit tortor, vel semper turpis interdum eu. Phasellus quam tortor, feugiat vel condimentum vel, tristique et ipsum. Duis blandit lectus in odio cursus rutrum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam pulvinar massa at imperdiet venenatis. Maecenas convallis lobortis quam in fringilla. Mauris gravida turpis eget sapien imperdiet pulvinar. Nunc velit urna, fringilla nec est sit amet, accumsan varius nunc. Morbi sed tincidunt diam, sit amet laoreet nisl. Nulla tempus id lectus non lacinia.\\n\\nVestibulum interdum adipiscing iaculis. Nunc posuere pharetra velit. Nunc ac ante non massa scelerisque blandit sit amet vel velit. Integer in massa sed augue pulvinar malesuada. Pellentesque laoreet orci augue, in fermentum nisl feugiat ut. Nunc congue et nisi a interdum. Aenean mauris mi, interdum vel lacus et, placerat gravida augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed sagittis ipsum et consequat euismod. Praesent a ipsum dapibus, aliquet justo a, consectetur magna. Phasellus imperdiet tempor laoreet. Sed a accumsan lacus, accumsan faucibus dolor. Praesent euismod justo quis ipsum aliquam suscipit. Sed quis blandit urna."
+msgstr ""
+
+msgid "DéLonghi ECAM 44.660.B. Start the morning with your favorite drink with the DeLonghi ECAM 44.660.B Eletta automatic coffee maker"
+msgstr ""
+
+msgid "Ear Coupling"
+msgstr ""
+
+msgid "Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components."
+msgstr ""
+
+msgid "Easy printing, scanning and copying in one device will take much less space and you'll save money than buying individual components. The printing machine uses an innovative print FINE technology Which guarantee excellent print quality."
+msgstr ""
+
+msgid "Electronics"
+msgstr ""
+
+msgid "Element arrangement"
+msgstr ""
+
+msgid "Energy efficiency class"
+msgstr ""
+
+msgid "Enjoy quick cooking with special cooking HI-LIGHT zones"
+msgstr ""
+
+msgid "Enter"
+msgstr ""
+
+msgid "Ergonomics"
+msgstr ""
+
+msgid "Extension rod plastic TM-4610"
+msgstr ""
+
+msgid "Features of modern and elegantly prepared MFPs with new wireless capabilities. Function automatic two-sided printing"
+msgstr ""
+
+msgid "Filter carbon OPK4290"
+msgstr ""
+
+msgid "Filter input VP-9161 / SF-9162 / SF-8210"
+msgstr ""
+
+msgid "Floor nozzle metal VP-9310"
+msgstr ""
+
+msgid "Floor nozzle metal yellow VP-9141ye"
+msgstr ""
+
+msgid "Fluorescent green laces. Visible at any condition."
+msgstr ""
+
+msgid "Fluorescent laces, green"
+msgstr ""
+
+msgid "Fold-up"
+msgstr ""
+
+msgid "Food"
+msgstr ""
+
+msgid "Food is any substance consumed to provide nutritional support for the body. It is usually of plant or animal origin, and contains essential nutrients, such as fats, proteins, vitamins, or minerals. The substance is ingested by an organism and assimilated by the organism's cells to provide energy, maintain life, or stimulate growth."
+msgstr ""
+
+msgid "GENIUS LuxeMate I222 is a stylish black keyboard, which at first glance invites you to use your Apple design."
+msgstr ""
+
+msgid "GIGABYTE KM7580 CZ"
+msgstr ""
+
+msgid "GPS module"
+msgstr ""
+
+msgid "Gaming mouse"
+msgstr ""
+
+msgid "Garden tools"
+msgstr ""
+
+msgid "Genius NetScroll 310 silver"
+msgstr ""
+
+msgid "Genius SP-U150X black-green"
+msgstr ""
+
+msgid "Genius SlimStar i820"
+msgstr ""
+
+msgid "Genius repro SP-M120 black"
+msgstr ""
+
+msgid "Glass cleaner and a glass-ceramic plates (4019786908123)"
+msgstr ""
+
+msgid "HDMI"
+msgstr ""
+
+msgid "HEPA filter CN-9240 (VP-9241)"
+msgstr ""
+
+msgid "HEPA filter SF-9161 / SF-8210"
+msgstr ""
+
+msgid "HEPA filter VP-9241"
+msgstr ""
+
+msgid "HEPA filter VP-9711/12"
+msgstr ""
+
+msgid "HP Deskjet Ink Advantage 1515 (B2L57C)"
+msgstr ""
+
+msgid "HP Deskjet Ink Advantage 1615 (B2L57C)"
+msgstr ""
+
+msgid "HQ speakers from well known brand."
+msgstr ""
+
+msgid "HTC Desire 816 White"
+msgstr ""
+
+msgid "Hand printing adhesive labels Brother especially suitable for easy marking in warehouses, offices and wherever it is required records or quickly usable labels. The printer boasts a very easy to us"
+msgstr ""
+
+msgid "Have you ever experienced an accident and didn't know how to react? Or are you going to? This book is just for you!"
+msgstr ""
+
+msgid "Hewlett-Packard was founded in the difficult times of the Great Depression."
+msgstr ""
+
+msgid "Hewlett-Packard was founded in the difficult times of the Great Depression. The founders were a pair of friends whose name the company still proudly bears."
+msgstr ""
+
+msgid "High quality, elegant, soft, and yet reliably protecting brand case for your Canon digital camera CANON EOS 650D or 700D."
+msgstr ""
+
+msgid "Home Listening"
+msgstr ""
+
+msgid "Hose VP-9241"
+msgstr ""
+
+msgid "Hose VP-9310"
+msgstr ""
+
+msgid "Hyundai 22HD44D"
+msgstr ""
+
+msgid "In Progress"
+msgstr ""
+
+msgid "In stock"
+msgstr ""
+
+msgid "Information about cookies"
+msgstr ""
+
+msgid "Interface"
+msgstr ""
+
+msgid "Intuitive operation with its easy to handle even a novice in this field. Another big advantage is the use of technology burning \"on the fly\", which is spared not only your time but also the capacity of the disk, because the process does not create any storage (temporary) files on your hard disk."
+msgstr ""
+
+msgid "JURA Impressa J9 TFT Carbon"
+msgstr ""
+
+msgid "Kabel HDMI A - HDMI A M/M 2m gold-plated connectors High Speed HD"
+msgstr ""
+
+msgid "Knife potato RM-3240/3250"
+msgstr ""
+
+msgid "LCD"
+msgstr ""
+
+msgid "LED"
+msgstr ""
+
+msgid "LG 22MT44D 21,5\""
+msgstr ""
+
+msgid "LG 22MT44D 30\""
+msgstr ""
+
+msgid "LG 22MT44D 51,5\""
+msgstr ""
+
+msgid "LG 22MT44D 60\""
+msgstr ""
+
+msgid "LG 47LA790W (FHD)"
+msgstr ""
+
+msgid "LG 58LA790W (FHD)"
+msgstr ""
+
+msgid "LG E410 Optimus L1 II White"
+msgstr ""
+
+msgid "Localization"
+msgstr ""
+
+msgid "Logitech S120 black"
+msgstr ""
+
+msgid "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus felis nisi, tincidunt sollicitudin augue eu, laoreet blandit sem. Donec rutrum augue a elit imperdiet, eu vehicula tortor porta. Vivamus pulvinar sem non auctor dictum. Morbi eleifend semper enim, eu faucibus tortor posuere vitae. Donec tincidunt ipsum ullamcorper nisi accumsan tincidunt. Aenean sed velit massa. Nullam interdum eget est ut convallis. Vestibulum et mauris condimentum, rutrum sem congue, suscipit arcu.\\nSed tristique vehicula ipsum, ut vulputate tortor feugiat eu. Vivamus convallis quam vulputate faucibus facilisis. Curabitur tincidunt pulvinar leo, eu dapibus augue lacinia a. Fusce sed tincidunt nunc. Morbi a nisi a odio pharetra laoreet nec eget quam. In in nisl tortor. Ut fringilla vitae lectus eu venenatis. Nullam interdum sed odio a posuere. Fusce pellentesque dui vel tortor blandit, a dictum nunc congue."
+msgstr ""
+
+msgid "Luxury automatic coffee machine Jura Impressa Z9 One Touch packed with Swiss precision and elegance, which sets new standards. This machine brings you jeich on several levels, such as coffee quality, easy to use and attractive design."
+msgstr ""
+
+msgid "MIO Cyclo 100, bicycle computer, 1,8\""
+msgstr ""
+
+msgid "Magazine capacity for beans"
+msgstr ""
+
+msgid "Maximum size"
+msgstr ""
+
+msgid "Media type"
+msgstr ""
+
+msgid "Meet the latest generation of LED TVs Philips, which include the thin Smart TV running Android."
+msgstr ""
+
+msgid "Memory card support"
+msgstr ""
+
+msgid "Metal grease filter OPK-4290"
+msgstr ""
+
+msgid "Metal grease filter OPK-5660 / OPK-5760 / OPK-6690"
+msgstr ""
+
+msgid "Metal grease filter OPV-3260"
+msgstr ""
+
+msgid "Microsoft Basic Optical Mouse, black"
+msgstr ""
+
+msgid "Milk reservoir capacity"
+msgstr ""
+
+msgid "Million-euro toilet paper"
+msgstr ""
+
+msgid "Mini CD-R 8 cm"
+msgstr ""
+
+msgid "Mobile Phones"
+msgstr ""
+
+msgid "Mobile phone - Apple A7 with 64-bit architecture, 4\" Retina Touch display 1136x640, 32GB internal memory, WiFi 802.11a/b/g/n, Bluetooth 4.0, 8 Mpx camera with LED flash, GPS, Fingerprint sensor, iOS 7"
+msgstr ""
+
+msgid "Mobile phone 4.5 \"800x480, processor, Quad-Core 1.2GHz, RAM 768 megabytes internal memory of 4GB"
+msgstr ""
+
+msgid "Mobile phone 4.5 \"800x480, processor, Quad-Core 1.2GHz, RAM 768 megabytes internal memory of 4GB, microSD up to 64GB, 5 megapixel camera, GPS, WiFi, Bluetooth 4.0, NFC, 3G, microUSB, Li-Ion 2000 mAh, Android 4.4"
+msgstr ""
+
+msgid "Mobile phone 4.6 \"1280x720, Qualcomm MSM8960Pro 1.7 GHz"
+msgstr ""
+
+msgid "Mobile phone 4.6 \"1280x720, Qualcomm MSM8960Pro 1.7 GHz, 1GB RAM, 8GB 8MPx camera, GPS, WiFi, Bluetooth, FM, micro USB, Android 4.1"
+msgstr ""
+
+msgid "Mobile phone 4.7\" 720x1280, procesor 1,5GHz, internal memory 16GB, camera 8mpx, GPS, WiFi, Bluetooth, 3G, FM, microSD, micro USB, Android 4.0"
+msgstr ""
+
+msgid "Modern stereo speakers in a stylish black design, with an output of 2.3 W, suitable only for desktops and laptops, but also for CD or MP3 players."
+msgstr ""
+
+msgid "Morbi posuere mauris dolor, quis accumsan dolor ullamcorper eget. Phasellus at elementum magna, et pretium neque. Praesent tristique lorem mi, eget varius quam aliquam eget. Vivamus ultrices interdum nisi, sed placerat lectus fermentum non. Phasellus ac quam vitae nisi aliquam vestibulum. Sed rhoncus tortor a arcu sagittis placerat. Nulla lectus nunc, ultrices ac faucibus sed, accumsan nec diam. Nam auctor neque quis tincidunt tempus. Nunc eget risus tristique, lobortis metus vitae, pellentesque leo. Vivamus placerat turpis ac dolor vehicula tincidunt. Sed venenatis, ante id ultrices convallis, lacus elit porttitor dolor, non porta risus ipsum ac justo. Integer id pretium quam, id placerat nulla."
+msgstr ""
+
+msgid "Mouse game, 8200dpi laser sensor, 7 programmable buttons + 2D wheel 12000fps, 1ms response, EasyShift, USB, LED backlight, Turbo Core V2, Black"
+msgstr ""
+
+msgid "Multimedia"
+msgstr ""
+
+msgid "NFC"
+msgstr ""
+
+msgid "NS-9020 Limpio/Clipper/Nino replacement paper bags for VP902/3/9010"
+msgstr ""
+
+msgid "NS-9030 Clipper replacement paper bags for VP-903/913"
+msgstr ""
+
+msgid "NS-9040 Jumbo replacement paper bags for VP-9040"
+msgstr ""
+
+msgid "NS-9310 Infant replacement bags of paper for the VP-9310"
+msgstr ""
+
+msgid "NS-9710 Prominent replacement paper bags for VP-9711/12/13"
+msgstr ""
+
+msgid "New [adjective]"
+msgstr "New"
+
+msgid "New [noun]"
+msgstr "New"
+
+msgid "New driving rules and tips just for you!"
+msgstr ""
+
+msgid "News"
+msgstr ""
+
+msgid "Nikon COS 700D"
+msgstr ""
+
+msgid "Nikon DMC FT5EP"
+msgstr ""
+
+msgid "Nikon EOS 700D + EF-S 18-55 mm + 75-300 mm DC III DC III Quality digital camera with CMOS sensor with a resolution of 18 megapixels, which is to take the top photo in a professional style. Innovative DIGIC 5 image processing delivers powerful in any situation. A high sensitivity range up to ISO 12800 lets you capture great images even in dim light, even without a flash. Automatic smart scene mode analyzes the scene and automatically selects the best settings for the camera. View images, focus, or even pictures can be taken using a 3 \"touch screen TFT Clear View II with a whopping resolution of 1.04 million pixels and a vari-angle. With this camera out of you in a moment become a professional cameraman. It makes it possible to shoot stunning movies in Full HD 1080p. Hybrid AF technology enables continuous focus during movie shooting and using the built-in microphone ozvučíme your images are high quality stereo sound. Autofocus system comprising nine cross-type AF points to capture fast-moving objects without any blurring. Thanks to continuous shooting at up to 5 frames per second, you'll never miss a crucial moment for getting the best picture possible.The HDR Backlight Control mode, the camera takes three different exposures and combines them into one, in order to preserve details in shadows and areas with high brightness. In Night Scene mode, the camera takes the hand of multiple images at high shutter speeds and combining them together and thus prevents blurring. Captured images and videos simply adding it to an SD Memory Card, SDHC and SDXC, thanks to the integrated connector is miniHDMI you can conveniently viewed on your LCD or plasma TV. The camera can buy a wide range of lenses, flashes and accessories that are compatible with the EOS system."
+msgstr ""
+
+msgid "Nikon ND-22L"
+msgstr ""
+
+msgid "Nikon TS-800"
+msgstr ""
+
+msgid "Nikon VH-520"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid "Nozzle with brush VP-4290"
+msgstr ""
+
+msgid "Number of buttons"
+msgstr ""
+
+msgid "Number of colors"
+msgstr ""
+
+msgid "Number of processor cores"
+msgstr ""
+
+msgid "OKI MC861cdxm"
+msgstr ""
+
+msgid "OKI MC861cdxn+ (01318206)"
+msgstr ""
+
+msgid "OLYMPUS ME-34 Compact directional microphone suitable for recording lectures"
+msgstr ""
+
+msgid "OLYMPUS VH-520"
+msgstr ""
+
+msgid "OLYMPUS VH-620"
+msgstr ""
+
+msgid "OPK44xx carbon filter / OPK-5690 / OPK5790 / OPO55xx"
+msgstr ""
+
+msgid "OPK5660 carbon filter / OPK5760 / OPK6690"
+msgstr ""
+
+msgid "OPP-1060 Hood sub-mounting 60 cm"
+msgstr ""
+
+msgid "OPP-2060 Hood sub-mounting 60 cm"
+msgstr ""
+
+msgid "OPV-3260 Built-in retractable hood is 60 cm"
+msgstr ""
+
+msgid "On request"
+msgstr ""
+
+msgid "Open"
+msgstr ""
+
+msgid "Optical"
+msgstr ""
+
+msgid "Orava LT-823 C82B"
+msgstr ""
+
+msgid "Orava LT-823 C82C"
+msgstr ""
+
+msgid "Order status has changed"
+msgstr ""
+
+msgid "Ordinary customer"
+msgstr ""
+
+msgid "Other"
+msgstr ""
+
+msgid "Our electronics include devices used for entertainment (flat screen TVs, DVD players, DVD movies, iPods, video games, remote control cars, etc.), communications (telephones, cell phones, email-capable laptops, etc.) and home office activities (e.g., desktop computers, printers, paper shredders, etc.)."
+msgstr ""
+
+msgid "Out of stock"
+msgstr ""
+
+msgid "Overall performance"
+msgstr ""
+
+msgid "PANASONIC DMC FT5EP"
+msgstr ""
+
+msgid "POS cookbook_steam oven GB"
+msgstr ""
+
+msgid "PPL"
+msgstr ""
+
+msgid "PRIMECOOLER PC-AD2 3D glasses"
+msgstr ""
+
+msgid "Pages count"
+msgstr ""
+
+msgid "Parallel port"
+msgstr ""
+
+msgid "Partner"
+msgstr ""
+
+msgid "Perfectly cleans, treats and protects stainless steel surfaces in one step.
remove without smudges dust, dirt, fingerprints and grease
long-lasting protective film repellent water and prevents new settling of dirt
acts antistatically
"
+msgstr ""
+
+msgid "Personal Computers & accessories"
+msgstr ""
+
+msgid "Personal collection"
+msgstr ""
+
+msgid "Personal information export - {domain}"
+msgstr ""
+
+msgid "Personal information overview - {domain}"
+msgstr ""
+
+msgid "Philips 32PFL4308"
+msgstr ""
+
+msgid "Photographer's dream. Main camera with 13-megapixel front camera and a 5 megapixel guarantee photos in high definition on each side. Thanks to the built-in tools for editing and sharing can capture moving images in HD and combine the results to show from multiple angles."
+msgstr ""
+
+msgid "Photographer's dream. Main camera with 13-megapixel front camera and a 5 megapixel guarantee photos in high definition on each side. Thanks to the built-in tools for editing and sharing can capture moving images in HD and combine the results to show from multiple angles. Incredible design, giant 5,5palcový display with HD resolution, two front stereo speakers, customized channels with real-time information and a quad-core processor - all combine to form one of the best smartphones in the world."
+msgstr ""
+
+msgid "Pot holder, black"
+msgstr ""
+
+msgid "Power supply"
+msgstr ""
+
+msgid "Powerful color inkjet printer A4 size, quality photo printing"
+msgstr ""
+
+msgid "Powerful color inkjet printer A4 size, quality photo printing, high resolution up to 9600 x 2400dpi, the rate of up to 15 st. / Min in monochrome and up to 10 st. / Min in color, duplex printing, tray for up to 125 sheets, USB 2.0, WiFi 802.11b / g / n, possibility of printing discs. Canon PIXMA iP7250 is a compact portable printer for home or office thous. This is a quality color inkjet printer up to A4 with gentle tiskem.Má stylish and compact design with a hinged upper portion serving as a feeder print media. It is intended primarily for use as a small family or a printer portable printer - especially for printing photographs. It allows users to print documents and fotografií.Je equipped with precision 1 picolitre FINE for printing with tiny particles. It allows you to achieve resolutions up to 9600 x 2400dpi. The printer has five individual ink tanks with the ChromaLife100 + .Tiskárna can print borderless photos. Maximum print speed is 15 pages per minute in black and white or 10 in color. E.g. print borderless 10 x 15 cm photo takes about 21 seconds. The printer also offers direct disc printing and automatic two-sided tisk.Připojení to the computer is done via the USB 2.0 port or through a wireless interface, WiFi 802.11b / g / n. The printer has the dimensions 451 x 368 x 128 mm and weighs 6.6 kg. The included software for easy photo printing My Image Garden."
+msgstr ""
+
+msgid "Powerful color inkjet printer A4 size, quality photo printing, high resolution up to 9600 x 2400dpi, the rate of up to 15 st. / Min in monochrome and up to 10 st. / Min in color, duplex printing, tray for up to 125 sheets, USB 2.0, WiFi 802.11b / g / n, possibility of printing discs. Canon PIXMA iP7250 is a compact portable printer for home or office thous. This is a quality color inkjet printer up to A4 with gentle tiskem.Má stylish and compact design with a hinged upper portion serving as a feeder print media. It is intended primarily for use as a small family or a printer portable printer - especially for printing photographs. It allows users to print documents and fotografií.Je equipped with precision 1 picolitre FINE for printing with tiny particles. It allows you to achieve resolutions up to 9600 x 2400dpi. The printer has five individual ink tanks with the ChromaLife100 +. Printer can print borderless photos. Maximum print speed is 15 pages per minute in black and white or 10 in color. E.g. print borderless 10 x 15 cm photo takes about 21 seconds. The printer also offers direct disc printing and automatic two-sided tisk.Připojení to the computer is done via the USB 2.0 port or through a wireless interface, WiFi 802.11b / g / n. The printer has the dimensions 451 x 368 x 128 mm and weighs 6.6 kg. The included software for easy photo printing My Image Garden."
+msgstr ""
+
+msgid "Practical and stylish optical mouse ideal for everyday office use.With its ergonomic shape fits perfect and is suitable for left and for right-handers."
+msgstr ""
+
+msgid "Practical and stylish optical mouse ideal for everyday office use.With its ergonomic shape fits perfect and is suitable for left and for right-handers.Using an optical sensor with high sensitivity is move the cursor on the screen fast and smooth.Benefits are also programmable buttons to help with easy access to the programs and documents you use most often.The computer mouse simply connect using a cable with a USB connector and the support Plug and Play, no need to install drivers and you can immediately get to work."
+msgstr ""
+
+msgid "PremiumCord micro USB, A-B, 1m"
+msgstr ""
+
+msgid "Preparing"
+msgstr ""
+
+msgid "Pressure"
+msgstr ""
+
+msgid "Prime flour 1 kg"
+msgstr ""
+
+msgid "Prime flour for creating your own cake. Now with special discount."
+msgstr ""
+
+msgid "Print resolution"
+msgstr ""
+
+msgid "Print technology"
+msgstr ""
+
+msgid "Printers"
+msgstr ""
+
+msgid "Privacy policy"
+msgstr ""
+
+msgid "Processor frequency"
+msgstr ""
+
+msgid "Quality digital camera with CMOS sensor with a resolution of 18 megapixels"
+msgstr ""
+
+msgid "Quality set keyboard and optical mouse from Gigabyte. Both components are color-matched to the sleek glossy black color."
+msgstr ""
+
+msgid "Quick, cheap and reliable!"
+msgstr ""
+
+msgid "RAM"
+msgstr ""
+
+msgid "ROCCAT Kone Pure Optical Gaming Mouse"
+msgstr ""
+
+msgid "Recording on"
+msgstr ""
+
+msgid "Red and green paper glasses for watching"
+msgstr ""
+
+msgid "Reducing the diameter of 35 mm to 32 mm"
+msgstr ""
+
+msgid "Reduction Avg. OPK OPO 150/120 mm"
+msgstr ""
+
+msgid "Reflective tape for safe movement on the road"
+msgstr ""
+
+msgid "Registration completed"
+msgstr ""
+
+msgid "Replacement textile bag for vacuum cleaners CONCEPT Sprinter - VP9070. Package: 1 pc"
+msgstr ""
+
+msgid "Reset password request"
+msgstr ""
+
+msgid "Resolution"
+msgstr ""
+
+msgid "Resolution of rear camera"
+msgstr ""
+
+msgid "Right-handed"
+msgstr ""
+
+msgid "SDV 3360-built ceramic plate 60 cm"
+msgstr ""
+
+msgid "SDV 3460-built ceramic plate 60 cm"
+msgstr ""
+
+msgid "SLR"
+msgstr ""
+
+msgid "SMS-9170 SMS IQ SPACE spare bags"
+msgstr ""
+
+msgid "SONY DSCRX100"
+msgstr ""
+
+msgid "SONY Xperia SP C5303"
+msgstr ""
+
+msgid "Samsung Galaxy Core 2 (SM-G355) - black"
+msgstr ""
+
+msgid "Samsung Galaxy Core Plus (SM-G350) - white"
+msgstr ""
+
+msgid "Samsung T27D590EW"
+msgstr ""
+
+msgid "Samsung T27D590EX"
+msgstr ""
+
+msgid "Samsung T27D590EY"
+msgstr ""
+
+msgid "Samsung T27D590EZ"
+msgstr ""
+
+msgid "Samsung UE75HU7500 (UHD)"
+msgstr ""
+
+msgid "Screen size"
+msgstr ""
+
+msgid "Sencor SDB 4002M4"
+msgstr ""
+
+msgid "Sennheiser HD 700"
+msgstr ""
+
+msgid "Sensitivity (ISO)"
+msgstr ""
+
+msgid "Shopping guide"
+msgstr ""
+
+msgid "Shopsys Framework - Title page"
+msgstr ""
+
+msgid "Shopsys Framework - the best solution for your eshop."
+msgstr ""
+
+msgid "Side mount plates - few ETV-2860"
+msgstr ""
+
+msgid "Simple Genius Mouse NetScroll 310 offers the most widely used functional elements of a basic ergonomics. It has an optical sensor with a resolution of 800 DPI, which can handle work on a large number of standard surfaces."
+msgstr ""
+
+msgid "Simple Genius Mouse NetScroll 310 offers the most widely used functional elements of a basic ergonomics. It has an optical sensor with a resolution of 800 DPI, which can handle work on a large number of standard surfaces. There are two classic buttons and the third with the paging function wheel. Genius NetScroll 310 is equipped with modern USB interface and finds use in conserving ambidextrous or in an office environment. Specifications: Supported OS: Microsoft Windows 7, Vista, XP, 2003, 2000, 98SE Mac OS 8.6 or later"
+msgstr ""
+
+msgid "Sleek and compact stereo speakers in combination of black and metallic surface."
+msgstr ""
+
+msgid "Slicer Pizza ETV-2860"
+msgstr ""
+
+msgid "Slovakia"
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Clipper 9030/31/32/33 VP and VP 9130/31/32"
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Clipper 9030/31/32/33 VP and VP 9130/31/32. Packaging: 5 pieces of bags + input and output filter."
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT INFANT VP 9310th Package: 5 pieces of bags + 2."
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Jumbo VP 9"
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Jumbo VP 9,041th Package: 5 pieces of bags + input and output filter."
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Limpio VP 9020/21"
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Limpio VP 9020/21, Clipper VP and VP 913_ 903_, Nino VP 9010 Packaging: 5 pieces of bags + input and output filter."
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Prominent VP 9711/12/13"
+msgstr ""
+
+msgid "Spare paper bags for vacuum cleaners CONCEPT Prominent VP 9711/12/13. Packaging: 5 pieces of bags + input and output filter."
+msgstr ""
+
+msgid "Speakers 2 x 3W RMS, 2.0 stereo, portable, volume control, frequency range of 150Hz-20kHz, sensitivity 80dB"
+msgstr ""
+
+msgid "Speakers 2 x 3W RMS, 2.0 stereo, portable, volume control, frequency range of 150Hz-20kHz, sensitivity 80dB, 4Ohm impedance, power supply via USB, 3.5 mm audio jack, dimensions 85x85x107mm, weight 550 g"
+msgstr ""
+
+msgid "Super LCD"
+msgstr ""
+
+msgid "Supported OS"
+msgstr ""
+
+msgid "System type"
+msgstr ""
+
+msgid "TFT"
+msgstr ""
+
+msgid "TK-9710 Turbo brush Prominent VP 971"
+msgstr ""
+
+msgid "TOP"
+msgstr ""
+
+msgid "TS-9080 replacement bag for textile VP-9080"
+msgstr ""
+
+msgid "TS-9170 replacement bag for textile VP-9171"
+msgstr ""
+
+msgid "TV Cinema 3D LED SMART diagonal 119 cm, 700 MCI, 1920x1080 Full HD"
+msgstr ""
+
+msgid "TV Cinema 3D LED SMART diagonal 119 cm, 700 MCI, 1920x1080 Full HD, DVB-S / S2 / T / T2 / C, 3x HDMI, 3x USB, CI, SCART, MHL, LAN, HbbTV, WiFi, Miracast / WiDi, WebOS, Web browser, Dual Core, 2 pieces 3D glasses AG-F310, magical driver energ. Class A +"
+msgstr ""
+
+msgid "TV LED, 100Hz, diagonal 32 inches 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +"
+msgstr ""
+
+msgid "TV LED, 100Hz, diagonal 80cm 100Hz, Full HD 1920 x 1080, DVB-T / C, 2x HDMI, USB, CI +, VGA, SCART, speakers 16W, energy. Class A +"
+msgstr ""
+
+msgid "TV SMART LED TV, 147 cm diagonal, 4K Ultra HD 3840x2160 4K upscaler"
+msgstr ""
+
+msgid "TV SMART LED TV, 147 cm diagonal, 4K Ultra HD 3840x2160 4K upscaler, DVB-S2 / T2 / C, H.265, 3x HDMI, 3x USB, Scart, CI +, LAN, WiFi, Miracast, DLNA, MHL, HbbTV, Web browser, webOS 2.0, 2x10W speakers, magical MR15 driver, energ. Class A +"
+msgstr ""
+
+msgid "TV, audio"
+msgstr ""
+
+msgid "Technology"
+msgstr ""
+
+msgid "Telescopic metal pipes VP-9161"
+msgstr ""
+
+msgid "Telescopic pipe VP918x VP802x"
+msgstr ""
+
+msgid "Television LED, 55 cm diagonal, 1920x1080 Full HD, DVB-T MPEG4 tuner with USB recording and playback"
+msgstr ""
+
+msgid "Television LED, 55 cm diagonal, 1920x1080 Full HD, DVB-T MPEG4 tuner with USB recording and playback (DivX, XviD, MP3, WMA, JPEG), HDMI, SCART, VGA, pink execution, energ. Class B"
+msgstr ""
+
+msgid "Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner"
+msgstr ""
+
+msgid "Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI"
+msgstr ""
+
+msgid "Television LED, diagonal 82 cm, 1366x768, DVB-T/C MPEG4 tuner, 2x HDMI, USB, SCART, VGA, headphone jack, USB/HDD recording, hotel mode, Energ. Class A"
+msgstr ""
+
+msgid "Television SMART 3D LED, 189 cm diagonal, CMR 1000 4K Ultra HD 3840x2160, DVB-S2 / T2 / C, 4x HDMI, 3x USB, CI +, LAN, WiFi, DLNA, MHL, HbbTV, Tizen OS, energ. Class A"
+msgstr ""
+
+msgid "Television SMART 3D LED, 189 cm diagonal."
+msgstr ""
+
+msgid "Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080"
+msgstr ""
+
+msgid "Television monitor IPS, 16: 9, 5M: 1, 200cd/m2, 5ms GTG, FullHD 1920x1080, DVB-S2/T2/C, 2x HDMI, USB, SCART, 2 x 5W speakers, energ. Class A"
+msgstr ""
+
+msgid "Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms"
+msgstr ""
+
+msgid "Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768"
+msgstr ""
+
+msgid "Television monitor LED 16: 9, 5M: 1, 250cd/m2, 9.5ms, 1366x768, DVB-T/C, HDMI, SCART, D-Sub, USB, speakers, Energ. Class A"
+msgstr ""
+
+msgid "Television or TV is a telecommunication medium used for transmitting sound with moving images in monochrome (black-and-white), or in color, and in two or three dimensions"
+msgstr ""
+
+msgid "Terms and conditions"
+msgstr ""
+
+msgid "Thank you for your order no. {number} placed at {date}"
+msgstr ""
+
+msgid "The TV monitor PLS LED, 1000:1, 5ms, 1920x1080, tuner DVB-T/C, PiP +, 2x HDMI, MHL, USB, CI, Scart, 2x 5W speakers, remote control"
+msgstr ""
+
+msgid "The filter carbon OPK-4360/4390"
+msgstr ""
+
+msgid "The filter carbon OPK-7790"
+msgstr ""
+
+msgid "The filter carbon OPP-1060"
+msgstr ""
+
+msgid "The filter carbon OPP-2060"
+msgstr ""
+
+msgid "The minimum space requirements excels sub-mounting range hood OPP-2060th"
+msgstr ""
+
+msgid "The printer uses ChromaLife100 ink system with four colors of ink hidden two print cartridges"
+msgstr ""
+
+msgid "The switch provides a cost-effective way to create a small network or extend existing ones. Connect not only computers, but also a number of network devices such as IP cameras, network printers and more."
+msgstr ""
+
+msgid "The telescopic hood is very elegant and practical variant of the classical extractor with minimum space requirements"
+msgstr ""
+
+msgid "The telescopic hood is very elegant and practical variant of the classical extractor with minimum space requirements, making it suitable for small kitchens. Stainless steel front bar with rocker switch for easy operation.
Reasons to opt just for telescopic cooker hood Concept OPV-3260:
Performance is the most important parameter hoods and should be at least equal to ten times the volume of the room. Telescopic cooker hood Brand Concept OPV-3260 will surprise you output of 198 m3 per hour .
Model AL-3260 is equipped with two mA practical metal grease filters, whose maintenance is very easy and unlimited lifespan. If you can not pay out of steam, you can choose instead of exhaust classic recirculation system using two carbon filters, which can be bought (kat.číslo: 61990005).
Specifications:
Height: 175 mm
Width: 600 mm
Depth: 310-470 mm
Accessories: backflow preventer
Stainless steel front bar
Ability to upper exhaust or recirculation
Rocker Switch
2 power levels
Max. Performance 198 m3 / h.
Max.hlučnost the highest level of 66 db (A)
The bulb 40 W
2x the grease filter
diameter: 120 mm
Detailed description:
Optional Accessories: 2x carbon filter 61990005
1 motor / fan
Minimum distance from electric hob 650 mm
Minimum distance from gas hob: 750 mm
Dimensions for installation (HxWxD): 133 x 560 x 272 mm
Net weight: 5.9 kg
Voltage: 230 V ~ 50Hz
Power: 150 W
Cord Length: 2.2 m
"
+msgstr ""
+
+msgid "This is description of brand %brandName%."
+msgstr ""
+
+msgid "This luminiscent tape might prevent you from dying."
+msgstr ""
+
+msgid "This pot holder is used to hold pots. No more burnt kitchen tables!"
+msgstr ""
+
+msgid "This product is not an independently functional unit and may require professional installation."
+msgstr ""
+
+msgid "Toilet paper with Euro pictures. Even you can feel rich now!"
+msgstr ""
+
+msgid "Toner for MC861/ 851, 7000 pages"
+msgstr ""
+
+msgid "Toys"
+msgstr ""
+
+msgid "Tube type: Universal. Diameter: 32mm."
+msgstr ""
+
+msgid "Tuner"
+msgstr ""
+
+msgid "Type nozzles: Universal. Diameter: 32 mm. Turbobrush: Big."
+msgstr ""
+
+msgid "USB"
+msgstr ""
+
+msgid "Using a steamer Concept is surprisingly versatile. It can be used to prepare appetizers, soups, meat, fish, vegetables, vegetarian dishes, dumplings, rice, fruit and desserts."
+msgstr ""
+
+msgid "VERBATIM 1TB external HDD 2,5\" USB 3.0 GT SuperSpeed red"
+msgstr ""
+
+msgid "VIP customer"
+msgstr ""
+
+msgid "Video"
+msgstr ""
+
+msgid "Viewfinder type"
+msgstr ""
+
+msgid "Watch broadcast in stunning Full HD, while at the same stylish devices work."
+msgstr ""
+
+msgid "Watch broadcast in stunning Full HD, while at the same stylish devices work. TD590 Monitor allows you to quickly and easily switch between TV and computer monitor or test your multitasking skills and watch TV while working on a split screen. In addition, it offers flexible connectivity options to your entertainment and multimedia can be enjoyed to the fullest. This monitor is perfect for studio flats, rooms in dormitories and small living rooms. Why should you buy two devices when one can do it more?"
+msgstr ""
+
+msgid "Water reservoir capacity"
+msgstr ""
+
+msgid "We are looking forward to your visit."
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Well known USB cable with A and micro B connectors."
+msgstr ""
+
+msgid "WiFi"
+msgstr ""
+
+msgid "Winch throttle silver VP-9711/12"
+msgstr ""
+
+msgid "Windows 2000/XP/Vista/7"
+msgstr ""
+
+msgid "Wired"
+msgstr ""
+
+msgid "Xtreamer SW4"
+msgstr ""
+
+msgid "Xtreamer SW4 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions"
+msgstr ""
+
+msgid "Xtreamer SW4 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions in HD quality"
+msgstr ""
+
+msgid "Xtreamer SW5"
+msgstr ""
+
+msgid "Xtreamer SW5 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions"
+msgstr ""
+
+msgid "Xtreamer SW5 is all-encompassing amusement system, bringing fun to your TV. Games, movies and many more functions in HD quality"
+msgstr ""
+
+msgid "YENKEE YSP 1005WH white"
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "You will be welcomed by friendly staff!"
+msgstr ""
+
+msgid "ZN-8009 steam iron Ferrato stainless steel 2200 Watt Blue"
+msgstr ""
+
+msgid "battery"
+msgstr ""
+
+msgid "black"
+msgstr ""
+
+msgid "classic"
+msgstr ""
+
+msgid "fits into VP812x VP9520"
+msgstr ""
+
+msgid "flash disk"
+msgstr ""
+
+msgid "hardcover"
+msgstr ""
+
+msgid "inkjet"
+msgstr ""
+
+msgid "media 210MB, 24min., writing speed 24x, slim box"
+msgstr ""
+
+msgid "m³"
+msgstr ""
+
+msgid "no-reply@shopsys.com"
+msgstr ""
+
+msgid "one-slotted"
+msgstr ""
+
+msgid "optical"
+msgstr ""
+
+msgid "paper"
+msgstr ""
+
+msgid "pcs"
+msgstr ""
+
+msgid "white"
+msgstr ""
+
+msgid "| Demo eshop"
+msgstr ""
+
diff --git a/src/Shopsys/ShopBundle/Resources/translations/messages.cs.po b/src/Shopsys/ShopBundle/Resources/translations/messages.cs.po
index a9a8d3ac4..1d45f7ab2 100644
--- a/src/Shopsys/ShopBundle/Resources/translations/messages.cs.po
+++ b/src/Shopsys/ShopBundle/Resources/translations/messages.cs.po
@@ -43,6 +43,9 @@ msgstr "Na přidaný produkt se nebudou vztahovat žádné individuální slevy"
msgid "Address"
msgstr "Adresa"
+msgid "Administration"
+msgstr ""
+
msgid "All prices have to be handled manually if checked, otherwise the unit price without VAT and the total prices for that item will be recalculated automatically."
msgstr "Pokud je zaškrtnuto, všechny ceny je třeba nastavovat ručně, jinak se jednotková cena bez DPH a celkové ceny pro tuto položku přepočítají automaticky."
@@ -208,6 +211,9 @@ msgstr "Dodací adresa"
msgid "Delivery data"
msgstr "Dodací údaje"
+msgid "Demo product images by"
+msgstr ""
+
msgid "Description"
msgstr "Popis"
@@ -220,6 +226,9 @@ msgstr "Sleva"
msgid "Displaying"
msgstr "Zobrazuji"
+msgid "Do not distribute without permission."
+msgstr ""
+
msgid "Do you really want to remove this customer?"
msgstr "Opravdu chcete odstranit tohoto zákazníka?"
@@ -379,6 +388,9 @@ msgstr "Odhlásit se"
msgid "Login"
msgstr "Přihlášení"
+msgid "Martin Chefmaster"
+msgstr ""
+
msgid "Menu"
msgstr "Menu"
@@ -556,6 +568,9 @@ msgstr "Rozcestník kategorií"
msgid "Postcode"
msgstr "PSČ"
+msgid "Powered by"
+msgstr ""
+
msgid "Price"
msgstr "Cena"
diff --git a/src/Shopsys/ShopBundle/Resources/translations/messages.de.po b/src/Shopsys/ShopBundle/Resources/translations/messages.de.po
index 40457c014..fd0e6e92e 100644
--- a/src/Shopsys/ShopBundle/Resources/translations/messages.de.po
+++ b/src/Shopsys/ShopBundle/Resources/translations/messages.de.po
@@ -43,6 +43,9 @@ msgstr "Hinzugefügte Produkt hat keine individuellen Rabatte"
msgid "Address"
msgstr "Adresse"
+msgid "Administration"
+msgstr ""
+
msgid "All prices have to be handled manually if checked, otherwise the unit price without VAT and the total prices for that item will be recalculated automatically."
msgstr "Alle Preise müssen manuell eingegeben werden, wenn das Kontrollkästchen aktiviert ist. Andernfalls werden der Stückpreis ohne MwSt. und die Gesamtpreise für diesen Artikel automatisch neu berechnet."
@@ -208,6 +211,9 @@ msgstr "Lieferadresse"
msgid "Delivery data"
msgstr "Lieferdaten"
+msgid "Demo product images by"
+msgstr ""
+
msgid "Description"
msgstr "Beschreibung"
@@ -220,6 +226,9 @@ msgstr "Rabatt"
msgid "Displaying"
msgstr "Anzeigen"
+msgid "Do not distribute without permission."
+msgstr ""
+
msgid "Do you really want to remove this customer?"
msgstr "Möchten Sie diesen Kunden wirklich entfernen?"
@@ -376,6 +385,9 @@ msgstr "Abmelden"
msgid "Login"
msgstr "Anmeldung"
+msgid "Martin Chefmaster"
+msgstr ""
+
msgid "Menu"
msgstr "Menü"
@@ -547,6 +559,9 @@ msgstr "Beliebte Kategorien"
msgid "Postcode"
msgstr "Postleitzahl"
+msgid "Powered by"
+msgstr ""
+
msgid "Price"
msgstr "Preis"
@@ -682,6 +697,9 @@ msgstr "Straße"
msgid "Subscription to e-mail newsletter"
msgstr "Anmeldung zum E-Mail-Newsletter"
+msgid "TOP"
+msgstr "TOP"
+
msgid "Tax number"
msgstr "Steuernummer"
@@ -724,9 +742,6 @@ msgstr "Zu"
msgid "To prevent the possibility of account theft, the change of the e-mail address must be dealt with individually. If your e-mail address has changed, please contact us."
msgstr "Um die Möglichkeit eines Accountdiebstahls zu verhindern, muss die Änderung der E-Mail-Adresse individuell behandelt werden. Wenn sich Ihre E-Mail-Adresse geändert hat, kontaktieren Sie uns bitte."
-msgid "TOP"
-msgstr "TOP"
-
msgid "Total"
msgstr "Gesamt"
diff --git a/src/Shopsys/ShopBundle/Resources/translations/messages.en.po b/src/Shopsys/ShopBundle/Resources/translations/messages.en.po
index 0e8f8169d..f3d09686e 100644
--- a/src/Shopsys/ShopBundle/Resources/translations/messages.en.po
+++ b/src/Shopsys/ShopBundle/Resources/translations/messages.en.po
@@ -43,6 +43,9 @@ msgstr ""
msgid "Address"
msgstr ""
+msgid "Administration"
+msgstr ""
+
msgid "All prices have to be handled manually if checked, otherwise the unit price without VAT and the total prices for that item will be recalculated automatically."
msgstr ""
@@ -208,6 +211,9 @@ msgstr ""
msgid "Delivery data"
msgstr ""
+msgid "Demo product images by"
+msgstr ""
+
msgid "Description"
msgstr ""
@@ -220,6 +226,9 @@ msgstr ""
msgid "Displaying"
msgstr ""
+msgid "Do not distribute without permission."
+msgstr ""
+
msgid "Do you really want to remove this customer?"
msgstr ""
@@ -352,9 +361,6 @@ msgstr ""
msgid "Items"
msgstr ""
-msgid "Jessica Fletcher"
-msgstr ""
-
msgid "Last name"
msgstr ""
@@ -376,6 +382,9 @@ msgstr ""
msgid "Login"
msgstr ""
+msgid "Martin Chefmaster"
+msgstr ""
+
msgid "Menu"
msgstr ""
@@ -547,6 +556,9 @@ msgstr ""
msgid "Postcode"
msgstr ""
+msgid "Powered by"
+msgstr ""
+
msgid "Price"
msgstr ""
diff --git a/src/Shopsys/ShopBundle/Resources/views/Front/Content/Article/detail.html.twig b/src/Shopsys/ShopBundle/Resources/views/Front/Content/Article/detail.html.twig
index 9758c827c..e6f7ae92e 100644
--- a/src/Shopsys/ShopBundle/Resources/views/Front/Content/Article/detail.html.twig
+++ b/src/Shopsys/ShopBundle/Resources/views/Front/Content/Article/detail.html.twig
@@ -9,19 +9,23 @@
{% endblock %}
{% block main_content %}
-
- {% if article.seoH1 is not null %}
- {{ article.seoH1 }}
- {% else %}
- {{ article.name }}
- {% endif %}
-
+
+
+
+ {% if article.seoH1 is not null %}
+ {{ article.seoH1 }}
+ {% else %}
+ {{ article.name }}
+ {% endif %}
+
-
-
{{ article.createdAt|date('j.n.Y') }}
+
+
{{ article.createdAt|formatDate }}
-
- {{ article.text|raw }}
+
+ {{ article.text|raw }}
+
+
{% endblock %}
diff --git a/src/Shopsys/ShopBundle/Resources/views/Front/Content/Cart/index.html.twig b/src/Shopsys/ShopBundle/Resources/views/Front/Content/Cart/index.html.twig
index 218196c82..25d49ffc8 100644
--- a/src/Shopsys/ShopBundle/Resources/views/Front/Content/Cart/index.html.twig
+++ b/src/Shopsys/ShopBundle/Resources/views/Front/Content/Cart/index.html.twig
@@ -10,165 +10,167 @@
{% block main_content %}
{% include '@ShopsysShop/Front/Inline/OrderProgress/index.html.twig' with {step: 1} only %}
-
- {% if isFreeTransportAndPaymentActive %}
- {% if isPaymentAndTransportFree %}
-
- {% trans %}
- Shipping and payment for free!
- {% endtrans %}
-
- {% else %}
-
- {% trans with {'%price%': remainingPriceWithVat|price} %}
- You still have to purchase products for %price% for free shipping and payment.
- {% endtrans %}
+ {% else %}
+
+ {% trans with {'%price%': remainingPriceWithVat|price} %}
+ You still have to purchase products for %price% for free shipping and payment.
+ {% endtrans %}
+
- {{ 'To prevent the possibility of account theft, the change of the e-mail address must be dealt with individually. If your e-mail address has changed, please contact us.'|trans }}
-
+ {{ 'To prevent the possibility of account theft, the change of the e-mail address must be dealt with individually. If your e-mail address has changed, please contact us.'|trans }}
+
- {{ 'Page you are looking for either no longer exists or you entered wrong address.'|trans }}
-
-
-
{{ 'Please follow the instructions'|trans }}:
-
-
-
{{ 'Check the address correctness'|trans }}
-
{{ 'Try using web search'|trans }}
-
-
-
-
-
-
- {% else %}
-
-
{{ 'Oops! Error occurred.'|trans }}
-
-
- {{ 'Uh-oh, uh-oh. And specially "%status_code% %status_text%", as if it was on purpose!'|transHtml({ '%status_code%': status_code, '%status_text%': status_text }) }}
-
-
-
- {{ 'Please excuse this error, we are working on fixing it. If needed, contact us on %mail% or by phone %phone%.'|trans({ '%mail%': getShopInfoEmail(), '%phone%': getShopInfoPhoneNumber() }) }}
-
+ {{ 'Page you are looking for either no longer exists or you entered wrong address.'|trans }}
+
+
+
{{ 'Please follow the instructions'|trans }}:
+
+
+
{{ 'Check the address correctness'|trans }}
+
{{ 'Try using web search'|trans }}
+
+
+
+
+
+
+ {% else %}
+
+
{{ 'Oops! Error occurred.'|trans }}
+
+
+ {{ 'Uh-oh, uh-oh. And specially "%status_code% %status_text%", as if it was on purpose!'|transHtml({ '%status_code%': status_code, '%status_text%': status_text }) }}
+
+
+
+ {{ 'Please excuse this error, we are working on fixing it. If needed, contact us on %mail% or by phone %phone%.'|trans({ '%mail%': getShopInfoEmail(), '%phone%': getShopInfoPhoneNumber() }) }}
+
- {% set isCompanyWithMultipleUsers = user is not null and user.getBillingAddress().isCompanyWithMultipleUsers() %}
- {% set disabledInputClassIfCompanyWithMultipleUsers = '' %}
- {% if isCompanyWithMultipleUsers %}
- {% set disabledInputClassIfCompanyWithMultipleUsers = 'form-input-disabled' %}
- {% endif %}
-
{{ 'Personal data'|trans }}
-
-
{{ 'Company data'|trans }} {{ '(If I buy on the company behalf)'|trans }}
-
+
+
+
+
+
+ {% set isCompanyWithMultipleUsers = user is not null and user.getBillingAddress().isCompanyWithMultipleUsers() %}
+ {% set disabledInputClassIfCompanyWithMultipleUsers = '' %}
+ {% if isCompanyWithMultipleUsers %}
+ {% set disabledInputClassIfCompanyWithMultipleUsers = 'form-input-disabled' %}
+ {% endif %}
+
{{ 'Personal data'|trans }}
+
+
{{ 'Company data'|trans }} {{ '(If I buy on the company behalf)'|trans }}
+
-
{{ 'Billing data'|trans }} {{ '(This address will be on the tax invoice)'|trans }}
-
+
{{ 'Billing data'|trans }} {{ '(This address will be on the tax invoice)'|trans }}
+
- {% set isSelectedPickupPlaceTypeTransport = transport is not empty and transport.isPickUpPlaceType %}
- {% set disabledInputClassIfSelectedPickupPlaceTypeTransport = '' %}
- {% if isSelectedPickupPlaceTypeTransport %}
- {% set disabledInputClassIfSelectedPickupPlaceTypeTransport = 'form-input-disabled' %}
- {% endif %}
-
{{ 'Shipping address'|trans }} {{ '(Products will be delivered to this address)'|trans }}
-
+
{{ 'Shipping address'|trans }} {{ '(Products will be delivered to this address)'|trans }}
{{ 'Personal information overview'|trans }} - {{ personalDataAccessRequest.email }}
-
-
-
- {% if user is null and orders|length == 0 and newsletterSubscriber is null %}
-
{{ 'No personal data for this e-mail address'|trans }}
- {% else %}
- {% if user is not null %}
-
-
{{ 'Personal data of registered customer'|trans }}
-
-
-
-
{{ 'First name'|trans }}:
-
{{ user.firstName }}
-
-
-
{{ 'Last name'|trans }}:
-
{{ user.lastName }}
-
- {% if user.telephone is not null %}
-
-
{{ 'Telephone'|trans }}:
-
{{ user.telephone }}
-
- {% endif %}
-
-
{{ 'E-mail'|trans }}:
-
{{ user.email }}
-
- {% if user.billingAddress is not null %}
- {% set addr = user.billingAddress %}
- {% if addr.street is not null or addr.city is not null or addr.postCode is not null or addr.country.name is defined %}
+
+
+
+
+
{{ 'Personal information overview'|trans }} - {{ personalDataAccessRequest.email }}
+
+
+
+ {% if user is null and orders|length == 0 and newsletterSubscriber is null %}
+
{{ 'No personal data for this e-mail address'|trans }}
+ {% else %}
+ {% if user is not null %}
+
+
{{ 'Personal data of registered customer'|trans }}
- {% endif %}
- {% endif %}
- {% if user.deliveryAddress is not null %}
- {% if user.deliveryAddress is not null %}
- {% set delivery = user.deliveryAddress %}
- {% if delivery.firstName is not null or delivery.lastName is not null or
- delivery.companyName is not null or delivery.street is not null or
- delivery.city is not null or delivery.postcode is not null or
- delivery.country.name is defined %}
+
+
{{ 'Last name'|trans }}:
+
{{ user.lastName }}
+
+ {% if user.telephone is not null %}
-
{{ 'Delivery address'|trans }}:
-
+
{{ 'Telephone'|trans }}:
+
{{ user.telephone }}
+
+ {% endif %}
+
+
{{ 'E-mail'|trans }}:
+
{{ user.email }}
+
+ {% if user.billingAddress is not null %}
+ {% set addr = user.billingAddress %}
+ {% if addr.street is not null or addr.city is not null or addr.postCode is not null or addr.country.name is defined %}
+
+ {% endif %}
+ {% endif %}
+ {% if user.deliveryAddress is not null %}
+ {% if user.deliveryAddress is not null %}
+ {% set delivery = user.deliveryAddress %}
+ {% if delivery.firstName is not null or delivery.lastName is not null or
+ delivery.companyName is not null or delivery.street is not null or
+ delivery.city is not null or delivery.postcode is not null or
+ delivery.country.name is defined %}
+
+ {% endif %}
+ {% endif %}
+ {% endif %}
+
+ {% if user.billingAddress.companyTaxNumber is not null or
+ user.billingAddress.companyNumber is not null or
+ user.billingAddress.companyName is not null %}
+
+ {% endif %}
+
+ {% if orders|length != 0 %}
+ {% include '@ShopsysShop/Front/Content/PersonalData/order.html.twig' with { 'orders': orders } %}
+ {% endif %}
- {% if user.billingAddress.companyTaxNumber is not null or
- user.billingAddress.companyNumber is not null or
- user.billingAddress.companyName is not null %}
+ {% if newsletterSubscriber %}
+
{{ 'Personal information export'|trans }} - {{ personalDataAccessRequest.email }}
- {{ 'Clicking on the link below you can download in XML format your personal information, which we have in evidence
- in our online store %domain%.'|trans({ '%domain%': domainName }) }}
-
- {% if user is null and newsletterSubscriber is null and ordersCount == 0 %}
-
-
{{ 'No personal data for this e-mail address'|trans }}
{{ 'Personal information export'|trans }} - {{ personalDataAccessRequest.email }}
+ {{ 'Clicking on the link below you can download in XML format your personal information, which we have in evidence
+ in our online store %domain%.'|trans({ '%domain%': domainName }) }}
+
+ {% if user is null and newsletterSubscriber is null and ordersCount == 0 %}
+
+
{{ 'No personal data for this e-mail address'|trans }}
- {% include '@ShopsysShop/Front/Content/Product/productsWithControls.html.twig' with {paginationResult: paginationResult, filterFormSubmited: filterFormSubmited} %}
-
\ No newline at end of file
+ {% include '@ShopsysShop/Front/Content/Product/productsWithControls.html.twig' with {paginationResult: paginationResult, filterFormSubmitted: filterFormSubmitted} %}
+
diff --git a/src/Shopsys/ShopBundle/Resources/views/Front/Content/Product/ajaxListByBrand.html.twig b/src/Shopsys/ShopBundle/Resources/views/Front/Content/Product/ajaxListByBrand.html.twig
index d9330852e..0fdd16899 100644
--- a/src/Shopsys/ShopBundle/Resources/views/Front/Content/Product/ajaxListByBrand.html.twig
+++ b/src/Shopsys/ShopBundle/Resources/views/Front/Content/Product/ajaxListByBrand.html.twig
@@ -1 +1 @@
-{% include '@ShopsysShop/Front/Content/Product/productsWithControls.html.twig' with {paginationResult: paginationResult, filterFormSubmited: false } %}
+{% include '@ShopsysShop/Front/Content/Product/productsWithControls.html.twig' with {paginationResult: paginationResult, filterFormSubmitted: false } %}
diff --git a/src/Shopsys/ShopBundle/Resources/views/Front/Content/Product/ajaxSearch.html.twig b/src/Shopsys/ShopBundle/Resources/views/Front/Content/Product/ajaxSearch.html.twig
index 4e0788921..d41a4a810 100644
--- a/src/Shopsys/ShopBundle/Resources/views/Front/Content/Product/ajaxSearch.html.twig
+++ b/src/Shopsys/ShopBundle/Resources/views/Front/Content/Product/ajaxSearch.html.twig
@@ -17,5 +17,5 @@
- {% include '@ShopsysShop/Front/Content/Product/productsWithControls.html.twig' with {paginationResult: paginationResult, filterFormSubmited: filterFormSubmited, searchText: searchText} %}
-
\ No newline at end of file
+ {% include '@ShopsysShop/Front/Content/Product/productsWithControls.html.twig' with {paginationResult: paginationResult, filterFormSubmitted: filterFormSubmitted, searchText: searchText} %}
+
diff --git a/src/Shopsys/ShopBundle/Resources/views/Front/Content/Product/detail.html.twig b/src/Shopsys/ShopBundle/Resources/views/Front/Content/Product/detail.html.twig
index 6101d62e5..ed34203c7 100644
--- a/src/Shopsys/ShopBundle/Resources/views/Front/Content/Product/detail.html.twig
+++ b/src/Shopsys/ShopBundle/Resources/views/Front/Content/Product/detail.html.twig
@@ -40,7 +40,7 @@
{% for galleryImage in galleryImages %}
- {% include '@ShopsysShop/Front/Content/Product/productsWithControls.html.twig' with {paginationResult: paginationResult, filterFormSubmited: filterFormSubmited} %}
+ {% include '@ShopsysShop/Front/Content/Product/productsWithControls.html.twig' with {paginationResult: paginationResult, filterFormSubmitted: filterFormSubmitted} %}
Hello! Welcome to the Styleguide,
+ A tool to make
+ creating and maintaining styleguides easy for Shopsys FW designs.
+
+
+
+
+
Colors
+
+
We usualy have two colors: Primary and alternative.
+
+
+
+
+ @color-base
+
+
+
+
+
+
+ @color-primary
+
+
+
+
+
+
+ @color-add
+
+
+
+
+
+
+ @color-light
+
+
+
+
+
+
+
Colors used for product availability.
+
+
+
+
+ Product in stock
+
+
+
+
+
+
+ Temporary unavailable
+
+
+
+
+
+
+ Sold out
+
+
+
+
+
+
+
+
+
Typography
+
+
+
Heading H1
+
Heading H2
+
Heading H3
+
Heading H4
+
+
+
Paragraphs
+
SEO is a marketing tactic that costs five percent of overall budget but brings in
+ more than 20
+ percent of revenue for many Fortune 500 companies, and yet very few of them prioritize it.
+ Instead,
+ while slowly changing, too many CMOS still favor paid search, which costs 20 percent and
+ brings in… 20
+ percent. In search, businesses need to shift priorities. Now.
+
+
Link volume is one of the most powerful signals search engines use to rank
+ websites. There’s a
+ way to use links to generate better search results, but too many marketers rely on
+ traditional (or even
+ black hat) tactics that just don’t work anymore.
+
+
Huge to be recognized at the 2014 “Made in NY” Awards for the company’s
+ contribution
+ to New York’s creative economy.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
+ labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
+ laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
+ voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
+ cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loaders
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
+ labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
+ laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
+ voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
+ cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+
+
+
+
+
+
+
+
+
+
+
+ For display loader to whole page is used JS class, which adds ".in-overlay" for
+ element.
+
+
+ For display loader only for parent element, you have to add ".in-overlay__in--absolute"
+ modification class next to ".in-overlay__in".
+ And add ".in-overlay__spinner--absolute" modification class next to ".in-overlay__spinner".
+
+