Real Cookie Banner: GDPR (DSGVO) & ePrivacy Cookie Consent - Version 2.18.1

Version Description

Download this release

Release Info

Developer devowl
Plugin Icon 128x128 Real Cookie Banner: GDPR (DSGVO) & ePrivacy Cookie Consent
Version 2.18.1
Comparing to
See all releases

Code changes from version 2.17.3 to 2.18.1

Files changed (132) hide show
  1. CHANGELOG.md +88 -92
  2. README.txt +16 -10
  3. inc/Assets.php +6 -1
  4. inc/Core.php +53 -3
  5. inc/MyConsent.php +46 -67
  6. inc/Utils.php +27 -0
  7. inc/base/others/cachebuster-lib.php +1 -1
  8. inc/base/others/cachebuster.php +46 -44
  9. inc/comp/migration/AbstractDashboardTileMigration.php +1 -1
  10. inc/overrides/lite/Core.php +1 -0
  11. inc/overrides/lite/FomoCoupon.php +101 -0
  12. inc/presets/BannerPresets.php +62 -38
  13. inc/presets/BlockerPresets.php +1 -1
  14. inc/presets/free/RealCookieBannerPreset.php +4 -20
  15. inc/presets/free/blocker/YoutubePreset.php +4 -19
  16. inc/presets/middleware/AdoptTierFromClassNamespaceMiddleware.php +2 -0
  17. inc/presets/middleware/BlockerHostsOptionsMiddleware.php +6 -5
  18. inc/presets/pro/blocker/CalderaFormsPreset.php +12 -15
  19. inc/presets/pro/blocker/CleverReachRecaptchaPreset.php +12 -15
  20. inc/presets/pro/blocker/ContactForm7RecaptchaPreset.php +12 -15
  21. inc/presets/pro/blocker/DiviContactFormPreset.php +12 -15
  22. inc/presets/pro/blocker/ElementorFormsPreset.php +12 -15
  23. inc/presets/pro/blocker/FacebookLikePreset.php +8 -10
  24. inc/presets/pro/blocker/FacebookPixelPreset.php +23 -31
  25. inc/presets/pro/blocker/FacebookPostPreset.php +16 -20
  26. inc/presets/pro/blocker/FacebookSharePreset.php +8 -10
  27. inc/presets/pro/blocker/FiveStarRestaurantReservationsPreset.php +12 -15
  28. inc/presets/pro/blocker/FormMakerRecaptchaPreset.php +12 -15
  29. inc/presets/pro/blocker/FormidablePreset.php +12 -15
  30. inc/presets/pro/blocker/GoogleAnalytics4Preset.php +32 -40
  31. inc/presets/pro/blocker/GoogleAnalyticsPreset.php +48 -60
  32. inc/presets/pro/blocker/GoogleMapsPreset.php +4 -1
  33. inc/presets/pro/blocker/HappyFormsPreset.php +24 -30
  34. inc/presets/pro/blocker/NinjaFormsPreset.php +24 -30
  35. inc/presets/pro/blocker/QuformRecaptchaPreset.php +12 -15
  36. inc/presets/pro/blocker/WPFormsPreset.php +12 -15
  37. inc/scanner/OnChangeDetection.php +6 -20
  38. inc/scanner/Query.php +13 -5
  39. inc/scanner/Scanner.php +6 -10
  40. inc/settings/Consent.php +30 -0
  41. inc/settings/Cookie.php +26 -0
  42. inc/settings/General.php +111 -3
  43. inc/view/ConfigPage.php +60 -3
  44. inc/view/checklist/GetPro.php +1 -1
  45. inc/view/customize/banner/BasicLayout.php +28 -21
  46. inc/view/customize/banner/BodyDesign.php +67 -39
  47. inc/view/customize/banner/Decision.php +120 -0
  48. inc/view/customize/banner/Design.php +17 -9
  49. inc/view/customize/banner/FooterDesign.php +7 -4
  50. inc/view/customize/banner/HeaderDesign.php +9 -5
  51. inc/view/customize/banner/Legal.php +2 -1
  52. inc/view/customize/banner/Mobile.php +7 -3
  53. inc/view/customize/banner/Texts.php +72 -4
  54. inc/view/customize/banner/individual/Group.php +19 -12
  55. inc/view/customize/banner/individual/Layout.php +9 -6
  56. inc/view/customize/banner/individual/SaveButton.php +37 -4
  57. inc/view/customize/banner/individual/Texts.php +18 -3
  58. inc/view/shortcode/{PrintUuidShortcode.php → HistoryUuidsShortcode.php} +10 -3
  59. index.php +1 -1
  60. languages/real-cookie-banner-bg_BG.mo +0 -0
  61. languages/real-cookie-banner-bg_BG.po +84 -0
  62. languages/real-cookie-banner-cs_CZ.mo +0 -0
  63. languages/real-cookie-banner-cs_CZ.po +84 -0
  64. languages/real-cookie-banner-da_DK.mo +0 -0
  65. languages/real-cookie-banner-da_DK.po +84 -0
  66. languages/real-cookie-banner-de_AT.mo +0 -0
  67. languages/real-cookie-banner-de_AT.po +243 -63
  68. languages/real-cookie-banner-de_CH.mo +0 -0
  69. languages/real-cookie-banner-de_CH.po +243 -63
  70. languages/real-cookie-banner-de_CH_informal.mo +0 -0
  71. languages/real-cookie-banner-de_CH_informal.po +243 -63
  72. languages/real-cookie-banner-de_DE.mo +0 -0
  73. languages/real-cookie-banner-de_DE.po +243 -63
  74. languages/real-cookie-banner-de_DE_formal.mo +0 -0
  75. languages/real-cookie-banner-de_DE_formal.po +241 -63
  76. languages/real-cookie-banner-el.mo +0 -0
  77. languages/real-cookie-banner-el.po +84 -0
  78. languages/real-cookie-banner-es_AR.mo +0 -0
  79. languages/real-cookie-banner-es_AR.po +84 -0
  80. languages/real-cookie-banner-es_CL.mo +0 -0
  81. languages/real-cookie-banner-es_CL.po +84 -0
  82. languages/real-cookie-banner-es_CO.mo +0 -0
  83. languages/real-cookie-banner-es_CO.po +84 -0
  84. languages/real-cookie-banner-es_CR.mo +0 -0
  85. languages/real-cookie-banner-es_CR.po +84 -0
  86. languages/real-cookie-banner-es_ES.mo +0 -0
  87. languages/real-cookie-banner-es_ES.po +84 -0
  88. languages/real-cookie-banner-es_GT.mo +0 -0
  89. languages/real-cookie-banner-es_GT.po +84 -0
  90. languages/real-cookie-banner-es_MX.mo +0 -0
  91. languages/real-cookie-banner-es_MX.po +84 -0
  92. languages/real-cookie-banner-es_PE.mo +0 -0
  93. languages/real-cookie-banner-es_PE.po +84 -0
  94. languages/real-cookie-banner-es_UY.mo +0 -0
  95. languages/real-cookie-banner-es_UY.po +84 -0
  96. languages/real-cookie-banner-es_VE.mo +0 -0
  97. languages/real-cookie-banner-es_VE.po +84 -0
  98. languages/real-cookie-banner-fi.mo +0 -0
  99. languages/real-cookie-banner-fi.po +84 -0
  100. languages/real-cookie-banner-fr_BE.mo +0 -0
  101. languages/real-cookie-banner-fr_BE.po +84 -0
  102. languages/real-cookie-banner-fr_CA.mo +0 -0
  103. languages/real-cookie-banner-fr_CA.po +84 -0
  104. languages/real-cookie-banner-fr_FR.mo +0 -0
  105. languages/real-cookie-banner-fr_FR.po +84 -0
  106. languages/real-cookie-banner-it_IT.mo +0 -0
  107. languages/real-cookie-banner-it_IT.po +84 -0
  108. languages/real-cookie-banner-nl_BE.mo +0 -0
  109. languages/real-cookie-banner-nl_BE.po +84 -0
  110. languages/real-cookie-banner-nl_NL.mo +0 -0
  111. languages/real-cookie-banner-nl_NL.po +84 -0
  112. languages/real-cookie-banner-nl_NL_formal.mo +0 -0
  113. languages/real-cookie-banner-nl_NL_formal.po +84 -0
  114. languages/real-cookie-banner-pl_PL.mo +0 -0
  115. languages/real-cookie-banner-pl_PL.po +84 -0
  116. languages/real-cookie-banner-pt_BR.mo +0 -0
  117. languages/real-cookie-banner-pt_BR.po +84 -0
  118. languages/real-cookie-banner-pt_PT.mo +0 -0
  119. languages/real-cookie-banner-pt_PT.po +84 -0
  120. languages/real-cookie-banner-ro_RO.mo +0 -0
  121. languages/real-cookie-banner-ro_RO.po +84 -0
  122. languages/real-cookie-banner-ru_RU.mo +0 -0
  123. languages/real-cookie-banner-ru_RU.po +84 -0
  124. languages/real-cookie-banner-sv_SE.mo +0 -0
  125. languages/real-cookie-banner-sv_SE.po +84 -0
  126. languages/real-cookie-banner-tr_TR.mo +0 -0
  127. languages/real-cookie-banner-tr_TR.po +84 -0
  128. languages/real-cookie-banner.pot +105 -23
  129. public/dist/191.lite.js +1 -1
  130. public/dist/191.lite.js.map +1 -1
  131. public/dist/276.lite.js +2 -0
  132. public/dist/276.lite.js.map +1 -0
CHANGELOG.md CHANGED
@@ -3,6 +3,80 @@
3
  All notable changes to this project will be documented in this file.
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  ## 2.17.3 (2022-05-13)
7
 
8
  **Note:** This package (@devowl-wp/real-cookie-banner) has been updated because a dependency, which is also shipped with this package, has changed.
@@ -30,18 +104,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
30
  ## 2.17.1 (2022-04-29)
31
 
32
 
33
- ### chore
34
-
35
- * remove unused code
36
- * review 1 (CU-22h6bee)
37
- * update changelog URL (CU-2chdb51)
38
-
39
-
40
- ### docs
41
-
42
- * new contributors for WordPress plugins
43
-
44
-
45
  ### fix
46
 
47
  * compatibility with Buddyapp theme as banner buttons were not clickable (CU-2chdca5)
@@ -74,16 +136,15 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
74
  * introduce predefined images for content blocker content types (CU-1y2d0mb)
75
  * prepare new visual content blockers for lite version (CU-eb4h2q)
76
  * remove React and React DOM local copies and rely on WordPress version (CU-awv3bv)
77
- * review 1 (CU-1zad7fx)
78
  * store embed thumbnails in a more generic folder in wp-content/uploads (CU-eb4h2q)
79
  * update embera (CU-eb4h2q)
80
 
81
 
82
  ### feat
83
 
84
- * allow content blocker with preview images in List of consents (CU-eb4h2q)
85
  * allow to create navgiation / menu links with one click instead of shortcodes (CU-we4qxh)
86
- * allow to export / import visual content blocker settings, max visual height (CU-eb4h2q)
87
  * implement visual content blocker with visual audio player (CU-eb4h2q)
88
  * introduce new visual settings in Content Blocker form (CU-eb4h2q)
89
 
@@ -94,7 +155,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
94
  * block 1.gravatar.com in Gravatar content blocker template (CU-2200n8k)
95
  * cleanup code and adjust checklist for legal links (CU-we4qxh)
96
  * compatibility of nav menus with WPML (CU-we4qxh)
97
- * compatibility with Customizr theme and disabling the footer link in the customizer (CU-244r9ag)
98
  * compatibility with Gravity Geolocation and Google Maps (CU-23z12mr)
99
  * compatibility with latest version of HappyForms and Google reCAPTCHA (CU-1znd8x2)
100
  * compatibility with TranslatePress Automatic User Language Detection popup and blurred popup (CU-244r841)
@@ -122,18 +183,12 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
122
  * extract composer dev dependencies to their corresponding dev package (CU-22h231w)
123
  * move more files to @devowl-wp/headless-content-unblocker
124
  * move wordpress packages to isomorphic-packages (CU-22h231w)
125
- * name traefik environment to staging (CU-22h231w)
126
  * put composer license packages to @devowl-wp/composer-licenses (CU-22h231w)
127
  * rename wordpress-packages and wordpress-plugins folder (CU-22h231w)
128
  * revert empty commits for package folder rename (CU-22h231w)
129
  * use phpunit-config and phpcs-config in all PHP packages (CU-22h231w)
130
 
131
 
132
- ### revert
133
-
134
- * remove max height for preview image as it is not practicable solvable (CU-eb4h2q)
135
-
136
-
137
 
138
 
139
 
@@ -172,10 +227,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
172
 
173
  ### chore
174
 
175
- * review 1 (CU-1jkmq84)
176
- * review 1 (CU-20ch93c)
177
- * review 2 (CU-1jkmq84)
178
- * update TCF library to latest version (CU-22bavpa)
179
  * use wildcarded composer repository path (CU-1zvg32c)
180
 
181
 
@@ -183,11 +235,10 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
183
 
184
  * adjust US data processing consent setting description (CU-20cherc)
185
  * bypass geo-restriction when using Lighthouse page speed score user agent (CU-20chp0h)
186
- * change priacy settings modal did not show accepted visual content blockers (CU-1znufvk)
187
  * compatibility with latest Oxygen page builder version (CU-20crzbn)
188
  * compatibility with SiteGround Optimizer (CU-1znmzvx)
189
  * correctly invalidate scanner query transients for post deletion and when invalidating preset cache (CU-20jc4q1)
190
- * correctly invalidate scanner query transients for post deletion and when invalidating preset cache (CU-20jc4q1)
191
  * disable animations in Firefox mobile as it breaks the layout (CU-20jbyp5)
192
  * fire OptInAll event after GTM/MTM datalayer pushes (CU-20162wr)
193
  * notice while exporting consent by UUID (CU-2015tvy)
@@ -233,8 +284,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
233
  * block Instagram background images embedded by tagDiv (CU-1ydpf9k)
234
  * content blocker rule to block OpenStreetMap embedded via "Ultimate Maps by Supsystic" (CU-1yyy4ae)
235
  * provide ready promise for OptInAll event (CU-1wernq1)
236
- * review 1 (CU-1wernq1)
237
- * review 1 (CU-1xwnv8m)
238
 
239
 
240
  ### ci
@@ -267,7 +316,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
267
  * compatibility with wpDiscuz and Gravatar content blocking when sorting and posting comments (CU-1z4ghy7)
268
  * compatibility with YouTube Embed Plus (CU-1z4gg3k)
269
  * compatibilty with latest Divi video module and overlay (CU-1yyyc2d)
270
- * correctly show Blocked URL in scanner results for inline styles (CU-1ydq6ff)
271
  * detect Google Analytics service template without inline script (CU-1yt64aa)
272
  * do migrations also for prerelease versions (CU-1ydq6ff)
273
  * do not anonymouize assets when anti-ad-block system is deactivated (CU-1ydtzkv)
@@ -338,7 +387,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
338
 
339
  * compatibility with Autoptimize when obkiller is active (CU-1weqdr2)
340
  * compatibility with Divi contact forms and Google reCAPTCHA (CU-1wepwec)
341
- * security issue as the reset-all action did not have a CSRF token (CU-1werk7m)
342
  * tcf consent is correctly saved, but wrong at time of changing privacy preferences (CU-1w9587v)
343
 
344
 
@@ -388,7 +437,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
388
 
389
  * add more security hashes for disabled footer (CU-1znbady)
390
  * add notice to mobile experience in free version as it is always responsive even in free (CU-2328pwb)
391
- * review 1 (CU-22b6qqj)
392
  * update Facebook provider to Meta provider for all FB service templates (CU-23kf838)
393
  * update upgrade notice to be more descriptive about update process (CU-23kf838)
394
 
@@ -434,10 +482,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
434
  ### chore
435
 
436
  * new developer filter RCB/IsPreventPreDecision (CU-1yk0nxf)
437
- * review 1 (CU-1x5e0jt, CU-1x5enat)
438
- * review 1 (CU-1xgxrnt)
439
- * review 1 (CU-nz2k7f)
440
- * review 2 (CU-nz2k7f)
441
  * suppress webpack warnings about @antv/g2 as it does not impact the frontend but disturbs CI and DX (CU-1z46xp8)
442
 
443
 
@@ -458,14 +502,13 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
458
  ### fix
459
 
460
  * allow to disable the powered by link via our license server (CU-1znbady)
461
- * allow to disable the powered by link via our license server (part 2, CU-1znbady)
462
  * compatibility with a3 Lazy Load (CU-22gym0m)
463
  * compatibility with WP Contact Slider (CU-1y7nw9p)
464
  * compatibility with WP ImmoMakler Google Maps (CU-200ykt6)
465
  * compatibility with YouTube + Vimeo + Premium Addons for Elementor (CU-1wecmxt)
466
  * correctly break line for dotted groups in cookie banner on iOS safari (CU-nz2k7f)
467
  * detect more ad blockers in admin page (CU-1znepfw)
468
- * empty external URL shown when plugin Disable WordPress Emojis is active (CU-1y7rr78)
469
  * for older WP < 5.4 versions an encodedString was printed to website (CU-1yk0may)
470
  * rule to block Google Maps JS API in content blocker for Levelup theme compatibility (CU-20100kp)
471
  * use anchor-links for shortcodes instead of class so they can be used without shortcodes, too (CU-1z9yf6b)
@@ -535,7 +578,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
535
 
536
  ### fix
537
 
538
- * **hotfix :** recommended templates are shown as non-existing if already existing in scanner tab (CU-1xpfu3p)
539
 
540
 
541
 
@@ -544,22 +587,16 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
544
  ## 2.11.1 (2021-12-15)
545
 
546
 
547
- ### build
548
-
549
- * disable bundle analyzer for RCB development build (CU-1wzqjg7)
550
-
551
-
552
  ### chore
553
 
554
- * backwards compatible footer visibility in List of consents table (CU-1vhtwa2)
555
  * cleanup code for scanner (CU-1v6cf91)
556
  * description of the legitimate interest and essential cookies according to the TTDSG concretized (CU-1wejt3d)
557
  * introduce new PHP api wp_rcb_consent_given (CU-1rgeyre)
558
  * introduce plugin and design version for new consents (CU-1vhtwa2)
559
  * introduce query argument validations for scanner (CU-1v6crwz)
560
  * new developer filter RCB/Presets/Cookies/Recommended and RCB/Presets/Blocker/Recommended (CU-1xazcrh)
561
- * remove non-saw-out descriptions from conteent blocker templates to save space in the content blocker ()CU-1vhtwa2)
562
- * review 1 (CU-1wtzm8t)
563
 
564
 
565
  ### docs
@@ -569,7 +606,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
569
 
570
  ### fix
571
 
572
- * allow to dismiss the Request new consent notice (CU-1wtzm8t)
573
  * apply preset middlewares in correct order (CU-1x5cj8w)
574
  * compatibility with Ark theme and jQuery(window).load (CU-1wznta2)
575
  * compatibility with fitVids when using together with a caching plugin (CU-1wm4u9v)
@@ -603,7 +640,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
603
  * content blocker last teaching should be above the link and styled as teaching (CU-1vhtwa2)
604
  * customizer presets should respect hidden powered-by-link
605
  * do not show footer for visual content blockers as not needed (CU-1vhtwa2)
606
- * sho ePrivacy USA notice in visual content blocker only when needed (CU-1vhtwa2)
607
 
608
 
609
 
@@ -770,11 +807,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
770
  # 2.9.0 (2021-10-12)
771
 
772
 
773
- ### ci
774
-
775
- * remove some jobs no longer needed in CI (CU-1jtj4fg)
776
-
777
-
778
  ### feat
779
 
780
  * allow to filter by context, period and URL in list of consents (CU-ad0gf1)
@@ -821,7 +853,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
821
  * prepare for continuous localization with weblate (CU-f94bdr)
822
  * remove language files from repository (CU-f94bdr)
823
  * rename 'Statistic' to 'Statistics' (CU-12gwu5r)
824
- * translation review round 2 (CU-vhmn9k)
825
 
826
 
827
  ### ci
@@ -953,7 +984,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
953
 
954
  * allow emojis in cookie banner and content blocker (CU-u3xv7j)
955
  * banner not visible for older safari and internet explorer browser (CU-vhq9jn)
956
- * banner not visible for older safari and internet explorer browser (CU-vhq9jn)
957
  * compatibility with latest Avada Fusion Builder (live editor, CU-u9mb2h)
958
  * consider non-WWW host as same host and do not detect as external URL (CU-u9m6rv)
959
  * consider WWW subdomain also for link preconnects and dns-prefetch for the correct template (CU-u9m5e5)
@@ -998,11 +1028,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
998
  * www URLs of the same WordPress installations were considered as external URL in scanner (CU-6fcxcr)
999
 
1000
 
1001
- ### refactor
1002
-
1003
- * remove unnecessary translations
1004
-
1005
-
1006
 
1007
 
1008
 
@@ -1011,7 +1036,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
1011
 
1012
  ### fix
1013
 
1014
- * error message when using PHP < 7.3
1015
  * loose sitemap index URLs (CU-rvwmnk)
1016
 
1017
 
@@ -1037,8 +1061,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
1037
 
1038
  * introduce new developer filter RCB/Blocker/IsBlocked/AllowMultiple and RCB/Blocker/ResolveBlockables (CU-7mvhak)
1039
  * new developer filter RCB/Blocker/SelectorSyntax/IsBlocked
1040
- * settled TODOs and update since-versions (CU-7mvhak)
1041
- * translations into German (CU-pb8dpn)
1042
  * update texts for scanner tab (hint, CU-mtddjt)
1043
 
1044
 
@@ -1088,7 +1110,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
1088
  * do not add duplicate URLs to queue
1089
  * do not enqueue real-queue on frontend for logged-in users
1090
  * german support link (CU-rg8qrt)
1091
- * improve German translations for scanner (CU-n9cuyh)
1092
  * include all revision data in single consent export
1093
  * native integration for Analytify preset (disabled status, CU-n1f1xc)
1094
  * native integration for GA Google Analytics preset (disabled status, CU-n1f1xc)
@@ -1097,14 +1118,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
1097
  * native integration for WooCommerce Google Analytics preset (disabled status, CU-n1f1xc)
1098
  * preset WordPress Emojis should also block the DNS prefetch
1099
  * remove extended presets from scan results
1100
- * review 1 (CU-mtdp7v, CU-n1f1xc)
1101
- * review 1 (CU-nd8ep0)
1102
- * review 2 (CU-7mvhak)
1103
- * review 2 (CU-nd8ep0)
1104
- * review 3 (CU-7mvhak)
1105
- * review user tests #1 (CU-nvafz0)
1106
- * review user tests #2 (CU-nvafz0)
1107
- * review user tests #3 (CU-nvafz0)
1108
  * split Google Analytics into two content blockers UA and V4 (CU-nq8c3j)
1109
  * tag to fully blocked associated with found count instead of distinct of sites count
1110
  * update Facebook Post preset to be compatible with Facebook Video (CU-p1dxwp)
@@ -1140,7 +1153,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
1140
 
1141
  ### chore
1142
 
1143
- * translate (CU-pkhcg8)
1144
  * update TCF dependencies to latest version (CU-pq8wt4)
1145
 
1146
 
@@ -1153,7 +1165,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
1153
  * put powered-by link in banner in same align as the legal links (CU-pn8pcz)
1154
  * reload page after consent change (CU-pnbunr)
1155
  * reset essential cookies correctly when custom choice is selected
1156
- * review 1 (CU-pn8pcz)
1157
 
1158
 
1159
  ### refactor
@@ -1275,9 +1286,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
1275
 
1276
  ### chore
1277
 
1278
- * clearer differentiation of the plugin's benefits in wordpress.org description (CU-kbaequ)
1279
- * clearer differentiation of the plugin's benefits in wordpress.org description (CU-kbaequ)
1280
- * clearer differentiation of the plugin's benefits in wordpress.org description (CU-kbaequ)
1281
  * clearer differentiation of the plugin's benefits in wordpress.org description (CU-kbaequ)
1282
  * translate new cookie and content blocker presets (CU-kt7e5r, CU-kk8gvu, CU-k759kz)
1283
  * update Cloudflare service template (CU-ff6vzc)
@@ -1423,7 +1431,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
1423
 
1424
  ### fix
1425
 
1426
- * **hotfix :** new cookie presets are not visible for Weglot users (CU-hk3jfn)
1427
 
1428
 
1429
 
@@ -1524,18 +1532,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
1524
  * make group description texts resettable (CU-gf3dew)
1525
  * notices thrown when no vendor given (CU-ff0yvh)
1526
  * output UUID on legal sites, too (CU-jha8xc)
1527
- * review 1 (TCF, CU-ff0yck)
1528
- * review 2 (CU-ff0yvh)
1529
- * review 3 (CU-ff0yvh)
1530
- * review 4 (CU-ff0yvh)
1531
- * review 5 (CU-ff0z49)
1532
- * review 6 (CU-80ub8k)
1533
- * review 7 (CU-80ub8k)
1534
- * review TCF CMP validator (CU-hh395u, CU-hh3dkn)
1535
- * review with user test (thanks to Carlo, CU-gd12qp)
1536
- * review with user test (thanks to Franz, CU-gd12mq)
1537
- * review with user test (thanks to Franz, CU-gd12mq)
1538
- * review with user test (thanks to Jonas, CU-gd12hq)
1539
  * show vendor ID in list table of TCF vendors (CU-gf8h2g)
1540
  * show vendor list link for TCF banner in footer (CU-g977x9)
1541
  * the Lighthouse crawler is not a bot (CU-j575je)
3
  All notable changes to this project will be documented in this file.
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
 
6
+ ## 2.18.1 (2022-05-24)
7
+
8
+
9
+ ### fix
10
+
11
+ * migrations did not work as expected for newer features and existing users (hotfix, CU-2f1fcfv)
12
+ * migrations did not work as expected for newer features and existing users (hotfix, CU-2f1fcfv)
13
+
14
+
15
+
16
+
17
+
18
+ # 2.18.0 (2022-05-24)
19
+
20
+
21
+ ### chore
22
+
23
+ * highlight consent options equally in design presets (CU-20chay0)
24
+ * review 1 (CU-20chay0, CU-20chd53)
25
+ * review 1 (CU-20che0e, CU-2cbpypb, CU-20ch8fp, CU-20ch8w2)
26
+ * review 1 (CU-2f1fcfv)
27
+ * review 2 (CU-20ch8fp)
28
+ * review 2 (CU-20ch8w2)
29
+ * review 2 (CU-20che0e)
30
+ * show in-app promo coupons in free version (CU-23tayej)
31
+ * update changelog URL (CU-2adgjqp)
32
+
33
+
34
+ ### docs
35
+
36
+ * animated banner in wordpress.org product description (CU-237uw9d)
37
+ * clean up changelog (CU-294ugp0)
38
+ * compatibility with WordPress 6.0 (CU-2e4yvvt)
39
+ * mention new features in wordpress.org product description (CU-294ugp0)
40
+
41
+
42
+ ### feat
43
+
44
+ * add optional purpose field to technical definitions (CU-20ch8fp)
45
+ * allow to disable the bullet list of groups in customizer (CU-20chd53)
46
+ * allow to list all services with their associated groups as superscript in first view (CU-20ch8w2)
47
+ * allow to modify the button order in customizer (CU-20chay0)
48
+ * allow to use the same styling in customizer of Accept All for Continue without consent and Save button (CU-20chay0)
49
+
50
+
51
+ ### fix
52
+
53
+ * automatically update the privacy policy URL of the RCB service when the privacy policy setting changes (CU-1z4gr4p)
54
+ * compatibility with local Windows environment as all templates are shown as free
55
+ * compatibility with Rodich theme and their Google Maps shortcode (CU-2eg9czv)
56
+ * contact form 7 showed up without any Google reCAPTCHA script (CU-2eghepk)
57
+ * correctly reset new feature defaults for existing installations (CU-20ch8be)
58
+ * correctly sync Settings > Privacy policy setting in cookie settings (CU-1z4gr4p)
59
+ * do not translate texts with placeholder in translation editor (TranslatePress, CU-2f1fcfv)
60
+ * facebook pixel enabled all facebook services in scanner (CU-2eghepk)
61
+ * make privacy policy required and show notice for already existing services without URL (CU-1z4gr4p)
62
+ * no reuse of consent UUID to prevent tracking of consent concatenation on server side (CU-20che0e)
63
+ * preview images for youtube-nocookie.com embeds (CU-2f1fcfv)
64
+ * show correct status for Content Blocker in admin bar menu (CU-2dz5058)
65
+ * update all on-premise / local services with updates privacy policy from Cookies > Settings (CU-1z4gr4p)
66
+ * update texts in cookie banner to be compliant with latest law (CU-2cbpypb)
67
+ * use range input slider for all PX values in customizer (CU-20chay0)
68
+ * use range input with value with unit in customizer (CU-20chay0)
69
+
70
+
71
+ ### refactor
72
+
73
+ * move consent management to @devowl-wp/cookie-consent-web-client
74
+ * namings for headless-content-blocker scan options (CU-2eghepk)
75
+
76
+
77
+
78
+
79
+
80
  ## 2.17.3 (2022-05-13)
81
 
82
  **Note:** This package (@devowl-wp/real-cookie-banner) has been updated because a dependency, which is also shipped with this package, has changed.
104
  ## 2.17.1 (2022-04-29)
105
 
106
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  ### fix
108
 
109
  * compatibility with Buddyapp theme as banner buttons were not clickable (CU-2chdca5)
136
  * introduce predefined images for content blocker content types (CU-1y2d0mb)
137
  * prepare new visual content blockers for lite version (CU-eb4h2q)
138
  * remove React and React DOM local copies and rely on WordPress version (CU-awv3bv)
 
139
  * store embed thumbnails in a more generic folder in wp-content/uploads (CU-eb4h2q)
140
  * update embera (CU-eb4h2q)
141
 
142
 
143
  ### feat
144
 
145
+ * allow content blocker with preview images in list of consents (CU-eb4h2q)
146
  * allow to create navgiation / menu links with one click instead of shortcodes (CU-we4qxh)
147
+ * allow to export / import visual content blocker settings (CU-eb4h2q)
148
  * implement visual content blocker with visual audio player (CU-eb4h2q)
149
  * introduce new visual settings in Content Blocker form (CU-eb4h2q)
150
 
155
  * block 1.gravatar.com in Gravatar content blocker template (CU-2200n8k)
156
  * cleanup code and adjust checklist for legal links (CU-we4qxh)
157
  * compatibility of nav menus with WPML (CU-we4qxh)
158
+ * compatibility with customizer theme and disabling the footer link in the customizer (CU-244r9ag)
159
  * compatibility with Gravity Geolocation and Google Maps (CU-23z12mr)
160
  * compatibility with latest version of HappyForms and Google reCAPTCHA (CU-1znd8x2)
161
  * compatibility with TranslatePress Automatic User Language Detection popup and blurred popup (CU-244r841)
183
  * extract composer dev dependencies to their corresponding dev package (CU-22h231w)
184
  * move more files to @devowl-wp/headless-content-unblocker
185
  * move wordpress packages to isomorphic-packages (CU-22h231w)
 
186
  * put composer license packages to @devowl-wp/composer-licenses (CU-22h231w)
187
  * rename wordpress-packages and wordpress-plugins folder (CU-22h231w)
188
  * revert empty commits for package folder rename (CU-22h231w)
189
  * use phpunit-config and phpcs-config in all PHP packages (CU-22h231w)
190
 
191
 
 
 
 
 
 
192
 
193
 
194
 
227
 
228
  ### chore
229
 
230
+ * update TCF dependencies to latest version (CU-22bavpa)
 
 
 
231
  * use wildcarded composer repository path (CU-1zvg32c)
232
 
233
 
235
 
236
  * adjust US data processing consent setting description (CU-20cherc)
237
  * bypass geo-restriction when using Lighthouse page speed score user agent (CU-20chp0h)
238
+ * change privacy settings modal did not show accepted visual content blockers (CU-1znufvk)
239
  * compatibility with latest Oxygen page builder version (CU-20crzbn)
240
  * compatibility with SiteGround Optimizer (CU-1znmzvx)
241
  * correctly invalidate scanner query transients for post deletion and when invalidating preset cache (CU-20jc4q1)
 
242
  * disable animations in Firefox mobile as it breaks the layout (CU-20jbyp5)
243
  * fire OptInAll event after GTM/MTM datalayer pushes (CU-20162wr)
244
  * notice while exporting consent by UUID (CU-2015tvy)
284
  * block Instagram background images embedded by tagDiv (CU-1ydpf9k)
285
  * content blocker rule to block OpenStreetMap embedded via "Ultimate Maps by Supsystic" (CU-1yyy4ae)
286
  * provide ready promise for OptInAll event (CU-1wernq1)
 
 
287
 
288
 
289
  ### ci
316
  * compatibility with wpDiscuz and Gravatar content blocking when sorting and posting comments (CU-1z4ghy7)
317
  * compatibility with YouTube Embed Plus (CU-1z4gg3k)
318
  * compatibilty with latest Divi video module and overlay (CU-1yyyc2d)
319
+ * correctly show blocked URL in scanner results for inline styles (CU-1ydq6ff)
320
  * detect Google Analytics service template without inline script (CU-1yt64aa)
321
  * do migrations also for prerelease versions (CU-1ydq6ff)
322
  * do not anonymouize assets when anti-ad-block system is deactivated (CU-1ydtzkv)
387
 
388
  * compatibility with Autoptimize when obkiller is active (CU-1weqdr2)
389
  * compatibility with Divi contact forms and Google reCAPTCHA (CU-1wepwec)
390
+ * security issue (only as signed-in uses exploitable) as the reset-all action did not have a CSRF token (CU-1werk7m)
391
  * tcf consent is correctly saved, but wrong at time of changing privacy preferences (CU-1w9587v)
392
 
393
 
437
 
438
  * add more security hashes for disabled footer (CU-1znbady)
439
  * add notice to mobile experience in free version as it is always responsive even in free (CU-2328pwb)
 
440
  * update Facebook provider to Meta provider for all FB service templates (CU-23kf838)
441
  * update upgrade notice to be more descriptive about update process (CU-23kf838)
442
 
482
  ### chore
483
 
484
  * new developer filter RCB/IsPreventPreDecision (CU-1yk0nxf)
 
 
 
 
485
  * suppress webpack warnings about @antv/g2 as it does not impact the frontend but disturbs CI and DX (CU-1z46xp8)
486
 
487
 
502
  ### fix
503
 
504
  * allow to disable the powered by link via our license server (CU-1znbady)
 
505
  * compatibility with a3 Lazy Load (CU-22gym0m)
506
  * compatibility with WP Contact Slider (CU-1y7nw9p)
507
  * compatibility with WP ImmoMakler Google Maps (CU-200ykt6)
508
  * compatibility with YouTube + Vimeo + Premium Addons for Elementor (CU-1wecmxt)
509
  * correctly break line for dotted groups in cookie banner on iOS safari (CU-nz2k7f)
510
  * detect more ad blockers in admin page (CU-1znepfw)
511
+ * empty external URL shown when plugin disable WordPress Emojis is active (CU-1y7rr78)
512
  * for older WP < 5.4 versions an encodedString was printed to website (CU-1yk0may)
513
  * rule to block Google Maps JS API in content blocker for Levelup theme compatibility (CU-20100kp)
514
  * use anchor-links for shortcodes instead of class so they can be used without shortcodes, too (CU-1z9yf6b)
578
 
579
  ### fix
580
 
581
+ * recommended templates are shown as non-existing if already existing in scanner tab (CU-1xpfu3p)
582
 
583
 
584
 
587
  ## 2.11.1 (2021-12-15)
588
 
589
 
 
 
 
 
 
590
  ### chore
591
 
592
+ * backwards compatible footer visibility in list of consents table (CU-1vhtwa2)
593
  * cleanup code for scanner (CU-1v6cf91)
594
  * description of the legitimate interest and essential cookies according to the TTDSG concretized (CU-1wejt3d)
595
  * introduce new PHP api wp_rcb_consent_given (CU-1rgeyre)
596
  * introduce plugin and design version for new consents (CU-1vhtwa2)
597
  * introduce query argument validations for scanner (CU-1v6crwz)
598
  * new developer filter RCB/Presets/Cookies/Recommended and RCB/Presets/Blocker/Recommended (CU-1xazcrh)
599
+ * remove non-saw-out descriptions from content blocker templates to save space in the content blocker (CU-1vhtwa2)
 
600
 
601
 
602
  ### docs
606
 
607
  ### fix
608
 
609
+ * allow to dismiss the request new consent notice (CU-1wtzm8t)
610
  * apply preset middlewares in correct order (CU-1x5cj8w)
611
  * compatibility with Ark theme and jQuery(window).load (CU-1wznta2)
612
  * compatibility with fitVids when using together with a caching plugin (CU-1wm4u9v)
640
  * content blocker last teaching should be above the link and styled as teaching (CU-1vhtwa2)
641
  * customizer presets should respect hidden powered-by-link
642
  * do not show footer for visual content blockers as not needed (CU-1vhtwa2)
643
+ * show USA data processing notice in visual content blocker only when needed (CU-1vhtwa2)
644
 
645
 
646
 
807
  # 2.9.0 (2021-10-12)
808
 
809
 
 
 
 
 
 
810
  ### feat
811
 
812
  * allow to filter by context, period and URL in list of consents (CU-ad0gf1)
853
  * prepare for continuous localization with weblate (CU-f94bdr)
854
  * remove language files from repository (CU-f94bdr)
855
  * rename 'Statistic' to 'Statistics' (CU-12gwu5r)
 
856
 
857
 
858
  ### ci
984
 
985
  * allow emojis in cookie banner and content blocker (CU-u3xv7j)
986
  * banner not visible for older safari and internet explorer browser (CU-vhq9jn)
 
987
  * compatibility with latest Avada Fusion Builder (live editor, CU-u9mb2h)
988
  * consider non-WWW host as same host and do not detect as external URL (CU-u9m6rv)
989
  * consider WWW subdomain also for link preconnects and dns-prefetch for the correct template (CU-u9m5e5)
1028
  * www URLs of the same WordPress installations were considered as external URL in scanner (CU-6fcxcr)
1029
 
1030
 
 
 
 
 
 
1031
 
1032
 
1033
 
1036
 
1037
  ### fix
1038
 
 
1039
  * loose sitemap index URLs (CU-rvwmnk)
1040
 
1041
 
1061
 
1062
  * introduce new developer filter RCB/Blocker/IsBlocked/AllowMultiple and RCB/Blocker/ResolveBlockables (CU-7mvhak)
1063
  * new developer filter RCB/Blocker/SelectorSyntax/IsBlocked
 
 
1064
  * update texts for scanner tab (hint, CU-mtddjt)
1065
 
1066
 
1110
  * do not add duplicate URLs to queue
1111
  * do not enqueue real-queue on frontend for logged-in users
1112
  * german support link (CU-rg8qrt)
 
1113
  * include all revision data in single consent export
1114
  * native integration for Analytify preset (disabled status, CU-n1f1xc)
1115
  * native integration for GA Google Analytics preset (disabled status, CU-n1f1xc)
1118
  * native integration for WooCommerce Google Analytics preset (disabled status, CU-n1f1xc)
1119
  * preset WordPress Emojis should also block the DNS prefetch
1120
  * remove extended presets from scan results
 
 
 
 
 
 
 
 
1121
  * split Google Analytics into two content blockers UA and V4 (CU-nq8c3j)
1122
  * tag to fully blocked associated with found count instead of distinct of sites count
1123
  * update Facebook Post preset to be compatible with Facebook Video (CU-p1dxwp)
1153
 
1154
  ### chore
1155
 
 
1156
  * update TCF dependencies to latest version (CU-pq8wt4)
1157
 
1158
 
1165
  * put powered-by link in banner in same align as the legal links (CU-pn8pcz)
1166
  * reload page after consent change (CU-pnbunr)
1167
  * reset essential cookies correctly when custom choice is selected
 
1168
 
1169
 
1170
  ### refactor
1286
 
1287
  ### chore
1288
 
 
 
 
1289
  * clearer differentiation of the plugin's benefits in wordpress.org description (CU-kbaequ)
1290
  * translate new cookie and content blocker presets (CU-kt7e5r, CU-kk8gvu, CU-k759kz)
1291
  * update Cloudflare service template (CU-ff6vzc)
1431
 
1432
  ### fix
1433
 
1434
+ * new cookie presets are not visible for Weglot users (CU-hk3jfn)
1435
 
1436
 
1437
 
1532
  * make group description texts resettable (CU-gf3dew)
1533
  * notices thrown when no vendor given (CU-ff0yvh)
1534
  * output UUID on legal sites, too (CU-jha8xc)
 
 
 
 
 
 
 
 
 
 
 
 
1535
  * show vendor ID in list table of TCF vendors (CU-gf8h2g)
1536
  * show vendor list link for TCF banner in footer (CU-g977x9)
1537
  * the Lighthouse crawler is not a bot (CU-j575je)
README.txt CHANGED
@@ -4,7 +4,7 @@ Tags: cookie banner, cookie consent, cookie plugin, cookie scanner, gdpr, dsgvo,
4
  Stable tag: trunk
5
  Requires at least: 5.2
6
  Requires PHP: 7.2.0
7
- Tested up to: 5.9
8
  License: GPLv3 or later
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.en.html
10
 
@@ -18,6 +18,8 @@ Obtain GDPR and ePrivacy Directive compliant consents. **Find services, cookies
18
 
19
  Real Cookie Banner is an cookie and consent management plugin. **Obtain consent to load services and set cookies for your visitors in accordance with the GDPR and ePrivacy Directive.** In addition, content blockers help you to be compliant even if your theme, plugin or content loads styles, scripts or iframes that would transfer personal data. **Start now with our guided-configuration and avoid legal risks!**
20
 
 
 
21
  _Whether the use of the plugin leads to legally compliant data processing largely depends on whether the plugin is configured correctly for your use case. You yourself are responsible for a correct configuration._
22
 
23
  === Free Sandbox ===
@@ -28,7 +30,7 @@ You want to try Real Cookie Banner before installing? **Take a free sandbox** an
28
 
29
  === Features of the cookie plugin ===
30
 
31
- **Consent Management:** You can use Real Cookie Banner to store all technical and legal information about services and cookies to obtain informed consent. You can use 100+ service templates and 60+ content blocker templates to quickly and securely provide all the information you need.
32
 
33
  **Content Blocker:** Themes, plugins and co. usually load scripts, styles and content that transfer personal data and set cookies before you have the consent of your visitors. You usually cannot control this by yourself. Content blockers make sure that these features are only executed after you have obtained consent.
34
 
@@ -44,7 +46,7 @@ You want a list of all features? _Get it by scrolling down!_
44
 
45
  === Supported Languages ===
46
 
47
- **Real Cookie Banner is available in English and German (informal and formal).** More languages will be added soon! In the meantime, you can also customize and translate all the texts yourself.
48
 
49
  === All Features of Real Cookie Banner ===
50
 
@@ -62,11 +64,11 @@ _Some of the features listed below are only available in the [PRO version of Rea
62
  **Consent Management** _// we take care of compliant consents_
63
 
64
  * **Cookies and processing of personal data:** We obtain consents for you in accordance with the ePrivacy Directive and GDPR. For more than just cookies!
65
- * **100+ service and 60+ content blocker templates*:** We’ve already collected all the necessary technical and legal stuff for 100+ popular services, so you can avoid the hassle.
66
  * **Individual groups for services:** Make it easy for your visitors to opt-in by grouping services together. Automatically suggested groups for services with templates.
67
  * **Technical specifications of HTTP cookies and cookie-like information:** You can store all necessary information about HTTP cookies, Local Storage, Session Storage, Flash Local Shared Object and IndexedDB.
68
  * **Execution of opt-in and opt-out scripts:** After the consent or its revocation can be executed per service HTML/JavaScript code.
69
- * **Shortcodes for all settings:** View history of consent and change or revoke consent. You can (and must legally) offer this with simple shortcodes anywhere on your website.
70
  * **Youth protection according to GDPR:** We take care that also minors can give consents on your website according to Art. 8 GDPR. Without data protection violation!
71
  * **Consent for data processing in the USA*:** The USA is considered as a country with an insufficient level of data protection in the EU. We obtain consents so that you can still use US-services like Google Analytics.
72
  * **Hide cookie banner legally compliant:** Imprint and privacy policy must be accessible without cookie banner. On other pages, e.g. landing pages, conversation rates increase*. Works with us quite simply!
@@ -85,7 +87,10 @@ _Some of the features listed below are only available in the [PRO version of Rea
85
  * **Block already integrated link, script and iframe HTML tags:** Already included elements by your theme or plugins can be blocked based on the HTML tag. Works for every HTML element on initial load of your website!
86
  * **URL blocking:** Elements that may only be loaded after consent can be blocked based on the URL. Works also for inline scripts and retina images.
87
  * **Custom element blocking:** You can block elements based on custom defined rule e.g. via their CSS class. With an easy to understand and flexible syntax. Not only for software developers.
 
88
  * **Inline style splitting:** Some page builders download files in inline styles for which you need consent. We split styles so that your website loads correctly while listening for consents.
 
 
89
  * **Automatic video playback after consent:** If your visitor allows the loading of an external video only via a content blocker, he must start the video manually afterwards. We save him the click and start YouTube, Vimeo and more videos automatically.
90
  * **Content Blocker connected with services:** Each content blocker is associated with one or more services. With it, content is automatically unblocked when consent is given in the cookie banner.
91
 
@@ -125,7 +130,7 @@ _Some of the features listed below are only available in the [PRO version of Rea
125
 
126
  We have verified that major Google and Facebook services, Hotjar, YouTube, Vimeo as well as popular WordPress plugins like Jetpack, Contact Form 7 or WooCommerce and many more are compatible.
127
 
128
- **The PRO Version of Real Cookie Banner comes with 100+ service templates and 60+ content blocker templates.** These templates save you a lot of time by giving you all the relevant legal and technical information for a service to use it in accordance with the ePrivacy Directive and GDPR. Check out the [complete list of all services with templates](https://devowl.io/go/real-cookie-banner?source=wordpress-org-description#templates) on our website.
129
 
130
  === Full-featured cookie plugin and consent management for WordPress ===
131
 
@@ -191,16 +196,17 @@ Our PRO version offers even more useful features and many cookie and content blo
191
  We offer a [knowledge base and fast support](https://devowl.io/support/) on our website. **Please feel free to open a support ticket if you have questions, issues or feedback about the plugin.** We love to make Real Cookie Banner better!
192
 
193
  = Does Real Cookie Banner find all cookies on my website automatically? =
 
 
 
194
  A cookie scanner could, if at all, only find cookies, but not legally assess the processing of personal data. Moreover, it is highly complex to find all cookies and most so-called cookie scanners do not find all cookies. We have explained [in detail why this is so in our knowledge base](https://devowl.io/knowledge-base/real-cookie-banner-cookie-scanner-finds-cookies-automatically/
195
  ).
196
 
197
- Therefore, Real Cookie Banner does not have a cookie scanner. However, 100+ service templates and 60+ content blocker templates will help you set up the cookie banner easily.
198
-
199
  = Is Real Cookie Banner free? =
200
  **Yes, all core features of Real Cookie Banner are free** and you are able to create unlimited cookies and content blocker. But most of the cookie and content blocker templates that will save you many hours of research work are included only in the PRO version. You want more? [**Learn more about the PRO version.**](https://devowl.io/go/real-cookie-banner?source=wordpress-org-description)
201
 
202
  = What is the difference between Real Cookie Banner and Real Cookie Banner PRO? =
203
- The PRO Version offers you many additional features like Google Tag Manager and Matomo Tag Manager Support, consent for data processing in the USA after the end of the Privacy Shield, Consent Forwarding or 100+ service templates and 60+ content blocker templates. [**Learn more about the PRO version.**](https://devowl.io/go/real-cookie-banner?source=wordpress-org-description)
204
 
205
  == Screenshots ==
206
 
@@ -213,7 +219,7 @@ The PRO Version offers you many additional features like Google Tag Manager and
213
 
214
  == Changelog ==
215
 
216
- You can view the changelog and release notes [here](https://devowlio.gitbook.io/changelogs/wordpress-plugins/real-cookie-banner).
217
 
218
  == Upgrade Notice ==
219
 
4
  Stable tag: trunk
5
  Requires at least: 5.2
6
  Requires PHP: 7.2.0
7
+ Tested up to: 6.0
8
  License: GPLv3 or later
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.en.html
10
 
18
 
19
  Real Cookie Banner is an cookie and consent management plugin. **Obtain consent to load services and set cookies for your visitors in accordance with the GDPR and ePrivacy Directive.** In addition, content blockers help you to be compliant even if your theme, plugin or content loads styles, scripts or iframes that would transfer personal data. **Start now with our guided-configuration and avoid legal risks!**
20
 
21
+ ➤ **Scan your website** and discover services that require consent!
22
+
23
  _Whether the use of the plugin leads to legally compliant data processing largely depends on whether the plugin is configured correctly for your use case. You yourself are responsible for a correct configuration._
24
 
25
  === Free Sandbox ===
30
 
31
  === Features of the cookie plugin ===
32
 
33
+ **Consent Management:** You can use Real Cookie Banner to store all technical and legal information about services and cookies to obtain informed consent. You can use 150+ service templates and 120+ content blocker templates to quickly and securely provide all the information you need.
34
 
35
  **Content Blocker:** Themes, plugins and co. usually load scripts, styles and content that transfer personal data and set cookies before you have the consent of your visitors. You usually cannot control this by yourself. Content blockers make sure that these features are only executed after you have obtained consent.
36
 
46
 
47
  === Supported Languages ===
48
 
49
+ **Real Cookie Banner is available in English and German (informal and formal).** More languages will be added soon! In the meantime, you can also customize and translate all the texts yourself, if your website is in Spanish, French, Italian, Polish, Dutch, Czech, Romanian, Belgian, Danish, Swedish, Finnish, Greek, Portuguese, Turkish and Russian.
50
 
51
  === All Features of Real Cookie Banner ===
52
 
64
  **Consent Management** _// we take care of compliant consents_
65
 
66
  * **Cookies and processing of personal data:** We obtain consents for you in accordance with the ePrivacy Directive and GDPR. For more than just cookies!
67
+ * **150+ service and 120+ content blocker templates*:** We’ve already collected all the necessary technical and legal stuff for 150+ popular services, so you can avoid the hassle.
68
  * **Individual groups for services:** Make it easy for your visitors to opt-in by grouping services together. Automatically suggested groups for services with templates.
69
  * **Technical specifications of HTTP cookies and cookie-like information:** You can store all necessary information about HTTP cookies, Local Storage, Session Storage, Flash Local Shared Object and IndexedDB.
70
  * **Execution of opt-in and opt-out scripts:** After the consent or its revocation can be executed per service HTML/JavaScript code.
71
+ * **Legal links:** View history of consent and change or revoke consent. You can (and must legally) offer this with simple WordPress menu items or shortcodes anywhere on your website.
72
  * **Youth protection according to GDPR:** We take care that also minors can give consents on your website according to Art. 8 GDPR. Without data protection violation!
73
  * **Consent for data processing in the USA*:** The USA is considered as a country with an insufficient level of data protection in the EU. We obtain consents so that you can still use US-services like Google Analytics.
74
  * **Hide cookie banner legally compliant:** Imprint and privacy policy must be accessible without cookie banner. On other pages, e.g. landing pages, conversation rates increase*. Works with us quite simply!
87
  * **Block already integrated link, script and iframe HTML tags:** Already included elements by your theme or plugins can be blocked based on the HTML tag. Works for every HTML element on initial load of your website!
88
  * **URL blocking:** Elements that may only be loaded after consent can be blocked based on the URL. Works also for inline scripts and retina images.
89
  * **Custom element blocking:** You can block elements based on custom defined rule e.g. via their CSS class. With an easy to understand and flexible syntax. Not only for software developers.
90
+ * **@font-face fonts blocking**: Inline loaded fonts from external servers can be blocked fine granular. You can be privacy-compliant even if Google Fonts can not be disabled in your theme!
91
  * **Inline style splitting:** Some page builders download files in inline styles for which you need consent. We split styles so that your website loads correctly while listening for consents.
92
+ * **Privacy-compliant lazy loading**: Embeds are post-loaded after the consent check depending on the viewport of your website visitor, which makes your initial page load faster.
93
+ * **Visual Content Blockers**: They ask for consent from visitors if they have declined services in the cookie banner. Replace e.g. YouTube videos with similar-looking privacy-compliant imitations*.
94
  * **Automatic video playback after consent:** If your visitor allows the loading of an external video only via a content blocker, he must start the video manually afterwards. We save him the click and start YouTube, Vimeo and more videos automatically.
95
  * **Content Blocker connected with services:** Each content blocker is associated with one or more services. With it, content is automatically unblocked when consent is given in the cookie banner.
96
 
130
 
131
  We have verified that major Google and Facebook services, Hotjar, YouTube, Vimeo as well as popular WordPress plugins like Jetpack, Contact Form 7 or WooCommerce and many more are compatible.
132
 
133
+ **The PRO Version of Real Cookie Banner comes with 150+ service templates and 120+ content blocker templates.** These templates save you a lot of time by giving you all the relevant legal and technical information for a service to use it in accordance with the ePrivacy Directive and GDPR. Check out the [complete list of all services with templates](https://devowl.io/go/real-cookie-banner?source=wordpress-org-description#templates) on our website.
134
 
135
  === Full-featured cookie plugin and consent management for WordPress ===
136
 
196
  We offer a [knowledge base and fast support](https://devowl.io/support/) on our website. **Please feel free to open a support ticket if you have questions, issues or feedback about the plugin.** We love to make Real Cookie Banner better!
197
 
198
  = Does Real Cookie Banner find all cookies on my website automatically? =
199
+ Yes, Real Cookie Banner has a scanner that checks your website for used services. It recommends you from 150+ service templates and 120+ content blocker templates suitable configuration. It will also alert you to additional services on your website that may require your consent. For more information on how our service scanner works, [see our knowledge base](https://devowl.io/knowledge-base/real-cookie-banner-service-scanner/).
200
+
201
+ However, the service scanner is not a cookie scanner.
202
  A cookie scanner could, if at all, only find cookies, but not legally assess the processing of personal data. Moreover, it is highly complex to find all cookies and most so-called cookie scanners do not find all cookies. We have explained [in detail why this is so in our knowledge base](https://devowl.io/knowledge-base/real-cookie-banner-cookie-scanner-finds-cookies-automatically/
203
  ).
204
 
 
 
205
  = Is Real Cookie Banner free? =
206
  **Yes, all core features of Real Cookie Banner are free** and you are able to create unlimited cookies and content blocker. But most of the cookie and content blocker templates that will save you many hours of research work are included only in the PRO version. You want more? [**Learn more about the PRO version.**](https://devowl.io/go/real-cookie-banner?source=wordpress-org-description)
207
 
208
  = What is the difference between Real Cookie Banner and Real Cookie Banner PRO? =
209
+ The PRO Version offers you many additional features like Google Tag Manager and Matomo Tag Manager Support, TCF support, consent for data processing in the USA after the end of the Privacy Shield, Consent Forwarding or 150+ service templates and 120+ content blocker templates. [**Learn more about the PRO version.**](https://devowl.io/go/real-cookie-banner?source=wordpress-org-description)
210
 
211
  == Screenshots ==
212
 
219
 
220
  == Changelog ==
221
 
222
+ You can view the changelog and release notes [here](https://devowl.io/wordpress-real-cookie-banner/changelog/).
223
 
224
  == Upgrade Notice ==
225
 
inc/Assets.php CHANGED
@@ -397,6 +397,7 @@ class Assets {
397
  'isLicensed' => $isLicensed,
398
  'isDevLicense' => $isDevLicense,
399
  'multilingualSkipHTMLForTag' => $core->getCompLanguage()->getSkipHTMLForTag(),
 
400
  'defaultLanguage' => $core->getCompLanguage()->getDefaultLanguage(),
401
  'currentLanguage' => $core->getCompLanguage()->getCurrentLanguage(),
402
  'context' => \DevOwl\RealCookieBanner\settings\Revision::getInstance()->getContextVariablesString(),
@@ -409,6 +410,7 @@ class Assets {
409
  'isRefreshSiteAfterConsent' => $generalSettings->isRefreshSiteAfterConsent(),
410
  'isEPrivacyUSA' => $consentSettings->isEPrivacyUSAEnabled(),
411
  'isAgeNotice' => $consentSettings->isAgeNoticeEnabled(),
 
412
  'setCookiesViaManager' => $generalSettings->getSetCookiesViaManager(),
413
  'essentialGroup' => \DevOwl\RealCookieBanner\settings\CookieGroup::getInstance()->getEssentialGroup()
414
  ->slug,
@@ -444,6 +446,7 @@ class Assets {
444
  'mo' => __('month(s)', RCB_TD),
445
  'y' => __('year(s)', RCB_TD)
446
  ],
 
447
  'type' => __('Type', RCB_TD),
448
  'purpose' => __('Purpose', RCB_TD),
449
  'headerTitlePrivacyPolicyHistory' => __('History of your privacy settings', RCB_TD),
@@ -464,7 +467,9 @@ class Assets {
464
  'unknown' => __('Unknown', RCB_TD),
465
  'none' => __('None', RCB_TD),
466
  'noLicense' => __('No license activated - not for production use!', RCB_TD),
467
- 'devLicense' => __('Product license not for production use!', RCB_TD)
 
 
468
  ]),
469
  'pageRequestUuid4' => $core->getPageRequestUuid4(),
470
  'pageByIdUrl' => add_query_arg('page_id', '', home_url()),
397
  'isLicensed' => $isLicensed,
398
  'isDevLicense' => $isDevLicense,
399
  'multilingualSkipHTMLForTag' => $core->getCompLanguage()->getSkipHTMLForTag(),
400
+ 'isCurrentlyInTranslationEditorPreview' => $core->getCompLanguage()->isCurrentlyInEditorPreview(),
401
  'defaultLanguage' => $core->getCompLanguage()->getDefaultLanguage(),
402
  'currentLanguage' => $core->getCompLanguage()->getCurrentLanguage(),
403
  'context' => \DevOwl\RealCookieBanner\settings\Revision::getInstance()->getContextVariablesString(),
410
  'isRefreshSiteAfterConsent' => $generalSettings->isRefreshSiteAfterConsent(),
411
  'isEPrivacyUSA' => $consentSettings->isEPrivacyUSAEnabled(),
412
  'isAgeNotice' => $consentSettings->isAgeNoticeEnabled(),
413
+ 'isListServicesNotice' => $consentSettings->isListServicesNoticeEnabled(),
414
  'setCookiesViaManager' => $generalSettings->getSetCookiesViaManager(),
415
  'essentialGroup' => \DevOwl\RealCookieBanner\settings\CookieGroup::getInstance()->getEssentialGroup()
416
  ->slug,
446
  'mo' => __('month(s)', RCB_TD),
447
  'y' => __('year(s)', RCB_TD)
448
  ],
449
+ 'noExpiration' => __('No expiration', RCB_TD),
450
  'type' => __('Type', RCB_TD),
451
  'purpose' => __('Purpose', RCB_TD),
452
  'headerTitlePrivacyPolicyHistory' => __('History of your privacy settings', RCB_TD),
467
  'unknown' => __('Unknown', RCB_TD),
468
  'none' => __('None', RCB_TD),
469
  'noLicense' => __('No license activated - not for production use!', RCB_TD),
470
+ 'devLicense' => __('Product license not for production use!', RCB_TD),
471
+ // translators:
472
+ 'andSeparator' => __(' and ', RCB_TD)
473
  ]),
474
  'pageRequestUuid4' => $core->getPageRequestUuid4(),
475
  'pageByIdUrl' => add_query_arg('page_id', '', home_url()),
inc/Core.php CHANGED
@@ -56,10 +56,13 @@ use DevOwl\RealCookieBanner\view\checklist\ActivateBanner;
56
  use DevOwl\RealCookieBanner\view\checklist\AddCookie;
57
  use DevOwl\RealCookieBanner\view\checklist\SaveSettings;
58
  use DevOwl\RealCookieBanner\view\customize\banner\BasicLayout;
 
 
59
  use DevOwl\RealCookieBanner\view\customize\banner\Texts;
60
  use DevOwl\RealCookieBanner\view\customize\banner\Mobile;
 
61
  use DevOwl\RealCookieBanner\view\shortcode\LinkShortcode;
62
- use DevOwl\RealCookieBanner\view\shortcode\PrintUuidShortcode;
63
  use DevOwl\RealCookieBanner\view\Scanner as ViewScanner;
64
  use DevOwl\RealCookieBanner\view\navmenu\NavMenuLinks;
65
  use DevOwl\RealCookieBanner\Vendor\DevOwl\RealUtils\Core as RealUtilsCore;
@@ -290,6 +293,22 @@ class Core extends \DevOwl\RealCookieBanner\base\Core implements
290
  \DevOwl\RealCookieBanner\scanner\Persist::class,
291
  'new_version_installation_after_2_15_0'
292
  ]);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
293
  add_filter('RCB/Blocker/Enabled', [$this->getScanner(), 'force_blocker_enabled']);
294
  add_filter('customize_save_response', [$this, 'customize_save_response'], 10, 1);
295
  add_filter('option_' . \DevOwl\RealCookieBanner\settings\Consent::SETTING_COOKIE_DURATION, [
@@ -347,8 +366,12 @@ class Core extends \DevOwl\RealCookieBanner\base\Core implements
347
  \DevOwl\RealCookieBanner\view\shortcode\LinkShortcode::class,
348
  'render'
349
  ]);
350
- add_shortcode(\DevOwl\RealCookieBanner\view\shortcode\PrintUuidShortcode::TAG, [
351
- \DevOwl\RealCookieBanner\view\shortcode\PrintUuidShortcode::class,
 
 
 
 
352
  'render'
353
  ]);
354
  $this->adInitiator = new \DevOwl\RealCookieBanner\AdInitiator();
@@ -495,6 +518,7 @@ class Core extends \DevOwl\RealCookieBanner\base\Core implements
495
  add_action('admin_notices', [new \DevOwl\RealCookieBanner\presets\UpdateNotice(), 'admin_notices']);
496
  add_action('admin_notices', [$this->getConfigPage(), 'admin_notices_preinstalled_environment']);
497
  add_action('admin_notices', [$this->getConfigPage(), 'admin_notices_ad_blocker']);
 
498
  add_action('posts_where', [\DevOwl\RealCookieBanner\Utils::class, 'posts_where_find_in_set'], 10, 2);
499
  add_action('post_updated', [$scannerOnChangeDetection, 'post_updated'], 10, 3);
500
  add_action('save_post', [$scannerOnChangeDetection, 'save_post'], 10, 2);
@@ -505,6 +529,26 @@ class Core extends \DevOwl\RealCookieBanner\base\Core implements
505
  add_action('wp_update_nav_menu_item', [$navMenuLinks, 'wp_update_nav_menu_item'], 10, 2);
506
  add_action('admin_head-nav-menus.php', [$navMenuLinks, 'admin_head']);
507
  add_action('customize_controls_head', [$navMenuLinks, 'customize_controls_head']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
508
  add_filter('nav_menu_link_attributes', [$navMenuLinks, 'nav_menu_link_attributes'], 10, 2);
509
  add_filter('wp_setup_nav_menu_item', [$navMenuLinks, 'wp_setup_nav_menu_item']);
510
  add_filter('customize_nav_menu_available_item_types', [
@@ -555,6 +599,12 @@ class Core extends \DevOwl\RealCookieBanner\base\Core implements
555
  10,
556
  2
557
  );
 
 
 
 
 
 
558
  // Multilingual
559
  add_filter('rest_' . \DevOwl\RealCookieBanner\settings\Cookie::CPT_NAME . '_query', [
560
  \DevOwl\RealCookieBanner\comp\language\Hooks::getInstance(),
56
  use DevOwl\RealCookieBanner\view\checklist\AddCookie;
57
  use DevOwl\RealCookieBanner\view\checklist\SaveSettings;
58
  use DevOwl\RealCookieBanner\view\customize\banner\BasicLayout;
59
+ use DevOwl\RealCookieBanner\view\customize\banner\BodyDesign;
60
+ use DevOwl\RealCookieBanner\view\customize\banner\Decision;
61
  use DevOwl\RealCookieBanner\view\customize\banner\Texts;
62
  use DevOwl\RealCookieBanner\view\customize\banner\Mobile;
63
+ use DevOwl\RealCookieBanner\view\customize\banner\individual\SaveButton;
64
  use DevOwl\RealCookieBanner\view\shortcode\LinkShortcode;
65
+ use DevOwl\RealCookieBanner\view\shortcode\HistoryUuidsShortcode;
66
  use DevOwl\RealCookieBanner\view\Scanner as ViewScanner;
67
  use DevOwl\RealCookieBanner\view\navmenu\NavMenuLinks;
68
  use DevOwl\RealCookieBanner\Vendor\DevOwl\RealUtils\Core as RealUtilsCore;
293
  \DevOwl\RealCookieBanner\scanner\Persist::class,
294
  'new_version_installation_after_2_15_0'
295
  ]);
296
+ add_action('DevOwl/Utils/NewVersionInstallation/' . RCB_SLUG, [
297
+ \DevOwl\RealCookieBanner\view\customize\banner\Decision::class,
298
+ 'new_version_installation_after_2_17_3'
299
+ ]);
300
+ add_action('DevOwl/Utils/NewVersionInstallation/' . RCB_SLUG, [
301
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::class,
302
+ 'new_version_installation_after_2_17_3'
303
+ ]);
304
+ add_action('DevOwl/Utils/NewVersionInstallation/' . RCB_SLUG, [
305
+ \DevOwl\RealCookieBanner\view\customize\banner\individual\SaveButton::class,
306
+ 'new_version_installation_after_2_17_3'
307
+ ]);
308
+ add_action('DevOwl/Utils/NewVersionInstallation/' . RCB_SLUG, [
309
+ \DevOwl\RealCookieBanner\settings\Consent::class,
310
+ 'new_version_installation_after_2_17_3'
311
+ ]);
312
  add_filter('RCB/Blocker/Enabled', [$this->getScanner(), 'force_blocker_enabled']);
313
  add_filter('customize_save_response', [$this, 'customize_save_response'], 10, 1);
314
  add_filter('option_' . \DevOwl\RealCookieBanner\settings\Consent::SETTING_COOKIE_DURATION, [
366
  \DevOwl\RealCookieBanner\view\shortcode\LinkShortcode::class,
367
  'render'
368
  ]);
369
+ add_shortcode(\DevOwl\RealCookieBanner\view\shortcode\HistoryUuidsShortcode::TAG, [
370
+ \DevOwl\RealCookieBanner\view\shortcode\HistoryUuidsShortcode::class,
371
+ 'render'
372
+ ]);
373
+ add_shortcode(\DevOwl\RealCookieBanner\view\shortcode\HistoryUuidsShortcode::DEPRECATED_TAG, [
374
+ \DevOwl\RealCookieBanner\view\shortcode\HistoryUuidsShortcode::class,
375
  'render'
376
  ]);
377
  $this->adInitiator = new \DevOwl\RealCookieBanner\AdInitiator();
518
  add_action('admin_notices', [new \DevOwl\RealCookieBanner\presets\UpdateNotice(), 'admin_notices']);
519
  add_action('admin_notices', [$this->getConfigPage(), 'admin_notices_preinstalled_environment']);
520
  add_action('admin_notices', [$this->getConfigPage(), 'admin_notices_ad_blocker']);
521
+ add_action('admin_notices', [$this->getConfigPage(), 'admin_notices_services_with_empty_privacy_policy']);
522
  add_action('posts_where', [\DevOwl\RealCookieBanner\Utils::class, 'posts_where_find_in_set'], 10, 2);
523
  add_action('post_updated', [$scannerOnChangeDetection, 'post_updated'], 10, 3);
524
  add_action('save_post', [$scannerOnChangeDetection, 'save_post'], 10, 2);
529
  add_action('wp_update_nav_menu_item', [$navMenuLinks, 'wp_update_nav_menu_item'], 10, 2);
530
  add_action('admin_head-nav-menus.php', [$navMenuLinks, 'admin_head']);
531
  add_action('customize_controls_head', [$navMenuLinks, 'customize_controls_head']);
532
+ add_action('delete_post', [
533
+ \DevOwl\RealCookieBanner\settings\General::getInstance(),
534
+ 'delete_post_imprint_privacy_policy'
535
+ ]);
536
+ add_action('wp_trash_post', [
537
+ \DevOwl\RealCookieBanner\settings\General::getInstance(),
538
+ 'delete_post_imprint_privacy_policy'
539
+ ]);
540
+ add_action(
541
+ 'update_option_wp_page_for_privacy_policy',
542
+ [\DevOwl\RealCookieBanner\settings\General::getInstance(), 'update_option_wp_page_for_privacy_policy'],
543
+ 10,
544
+ 2
545
+ );
546
+ add_action(
547
+ 'update_option_' . \DevOwl\RealCookieBanner\settings\General::SETTING_PRIVACY_POLICY_ID,
548
+ [\DevOwl\RealCookieBanner\settings\General::getInstance(), 'update_option_privacy_policy'],
549
+ 10,
550
+ 2
551
+ );
552
  add_filter('nav_menu_link_attributes', [$navMenuLinks, 'nav_menu_link_attributes'], 10, 2);
553
  add_filter('wp_setup_nav_menu_item', [$navMenuLinks, 'wp_setup_nav_menu_item']);
554
  add_filter('customize_nav_menu_available_item_types', [
599
  10,
600
  2
601
  );
602
+ add_filter(
603
+ 'RCB/Revision/BackwardsCompatibility',
604
+ [\DevOwl\RealCookieBanner\view\customize\banner\Decision::class, 'applyBackwardsCompatibility'],
605
+ 10,
606
+ 2
607
+ );
608
  // Multilingual
609
  add_filter('rest_' . \DevOwl\RealCookieBanner\settings\Cookie::CPT_NAME . '_query', [
610
  \DevOwl\RealCookieBanner\comp\language\Hooks::getInstance(),
inc/MyConsent.php CHANGED
@@ -71,14 +71,18 @@ class MyConsent {
71
  return $consent;
72
  }
73
  $revision = \DevOwl\RealCookieBanner\settings\Revision::getInstance();
74
- $currentHash = $revision->getCurrentHash();
75
- $revisionHash = $revision->create(\true, \false)['hash'];
76
- $customizeHash = $revision->createIndependent(\true)['hash'];
77
  // Create the cookie on client-side with the latest requested consent hash instead of current real-time hash
78
  // Why? So, the frontend can safely compare latest requested hash to user-consent hash
79
  // What is true, cookie hash or database? I can promise, the database shows the consent hash!
80
- $user = $this->ensureUser($currentHash, $forwardedUuid);
 
 
 
 
81
  $consent_hash = \md5(\json_encode($consent));
 
 
 
82
  $ips = \DevOwl\RealCookieBanner\IpHandler::getInstance()->persistIp();
83
  $table_name = $this->getTableName(\DevOwl\RealCookieBanner\UserConsent::TABLE_NAME);
84
  $table_name_blocker_thumbnails = $this->getTableName(
@@ -114,10 +118,10 @@ class MyConsent {
114
  $ips['ipv6'] === null ? 'NULL' : $ips['ipv6'],
115
  $ips['ipv4_hash'] === null ? 'NULL' : $ips['ipv4_hash'],
116
  $ips['ipv6_hash'] === null ? 'NULL' : $ips['ipv6_hash'],
117
- $user['uuid'],
118
  $revisionHash,
119
- $customizeHash,
120
- \json_encode($user['decision'] === \false ? [] : $user['decision']),
121
  \json_encode($consent),
122
  $consent_hash,
123
  $blocker > 0 ? $blocker : 'NULL',
@@ -137,16 +141,22 @@ class MyConsent {
137
  $forwardedBlocker,
138
  // %s used for 'NULL' transformation
139
  $tcfString === null ? 'NULL' : $tcfString,
140
- current_time('mysql')
141
  )
142
  )
143
  );
144
  $insertId = $wpdb->insert_id;
145
- $this->setCookie($user['uuid'], $currentHash, $consent);
 
 
 
 
 
 
146
  // Why $currentHash? See above
147
  // Persist stats (only when not forwarded)
148
  if ($forwarded === 0) {
149
- \DevOwl\RealCookieBanner\Stats::getInstance()->persist($consent, $user['decision'], $user['created']);
150
  }
151
  $result = \array_merge($this->getCurrentUser(\true), ['updated' => \true, 'consent_id' => $insertId]);
152
  /**
@@ -159,49 +169,20 @@ class MyConsent {
159
  do_action('RCB/Consent/Created', $result, $args);
160
  return $result;
161
  }
162
- /**
163
- * Ensures an user is connected with the current PHP session. In detail,
164
- * it does the following:
165
- *
166
- * 1. If the user cookie is set, it gets the uuid and revision hash
167
- * 2. If there is no user cookie, it will generate a uuid with current
168
- * consent hash + set it as cookie
169
- *
170
- * @param string $revision Hash
171
- * @param string $useUuid Force to use an existing UUID (useful for forwarded consents)
172
- * @return array 'uuid', 'created', 'cookie_revision', 'consent_revision', 'decision', 'decision_hash'
173
- */
174
- protected function ensureUser($revision, $useUuid = null) {
175
- $cookieUser = $this->getCurrentUser();
176
- // There isn't any consent from an user, create one
177
- if ($cookieUser === \false) {
178
- $uuid = empty($useUuid) ? $this->createUuid() : $useUuid;
179
- $this->setCookie($uuid, $revision, []);
180
- return [
181
- 'uuid' => $uuid,
182
- 'created' => mysql2date('c', current_time('mysql'), \false),
183
- 'cookie_revision' => $revision,
184
- 'consent_revision' => \false,
185
- 'decision' => \false,
186
- 'decision_hash' => \false
187
- ];
188
- }
189
- return $cookieUser;
190
- }
191
  /**
192
  * Set or update the existing cookie to the latest revision. It also respect the fact, that
193
  * cross-site cookies needs to be set with `SameSite=None` attribute.
194
  *
195
- * @param string $uuid
196
  * @param string $revision
197
  * @param array $consent
198
  * @see https://developer.wordpress.org/reference/functions/wp_set_auth_cookie/
199
  * @see https://stackoverflow.com/a/46971326/5506547
200
  */
201
- public function setCookie($uuid = null, $revision = null, $consent = null) {
202
  $cookieName = $this->getCookieName();
203
- $doDelete = $uuid === null;
204
- $cookieValue = $doDelete ? '' : "{$uuid}:{$revision}:" . \json_encode($consent);
205
  $expire = $doDelete
206
  ? -1
207
  : \time() +
@@ -228,10 +209,11 @@ class MyConsent {
228
  * @param {boolean} $result Got the cookie successfully created?
229
  * @param {boolean} $revoke `true` if the cookie should be deleted
230
  * @param {string} $uuid
 
231
  * @param {array}
232
  * @since 2.0.0
233
  */
234
- do_action('RCB/Consent/SetCookie', $cookieName, $cookieValue, $result, $doDelete, $uuid);
235
  }
236
  return $result;
237
  }
@@ -240,7 +222,7 @@ class MyConsent {
240
  * user id and the accepted revision hash. This function is also ported to JS via `getUserDecision.tsx`.
241
  *
242
  * @param boolean $force
243
- * @return array 'uuid', 'created', 'cookie_revision', 'consent_revision', 'decision', 'decision_in_cookie', 'decision_hash'
244
  */
245
  public function getCurrentUser($force = \false) {
246
  if ($this->cacheCurrentUser !== null && !$force) {
@@ -264,7 +246,7 @@ class MyConsent {
264
  * user id and the accepted revision hash.
265
  *
266
  * @param string $value
267
- * @return array 'uuid', 'created', 'cookie_revision', 'consent_revision', 'decision', 'decision_in_cookie', 'decision_hash'
268
  */
269
  protected function parseCookieValue($value) {
270
  global $wpdb;
@@ -280,7 +262,8 @@ class MyConsent {
280
  }
281
  $cookieDecision = \json_decode($result[2], ARRAY_A);
282
  // Parse out data (${uuid}-${revision})
283
- $uuid = $result[0];
 
284
  $revision = $result[1];
285
  // Check if any consent was ever set by this user
286
  // phpcs:disable WordPress.DB.PreparedSQL
@@ -299,6 +282,7 @@ class MyConsent {
299
  }
300
  return [
301
  'uuid' => $uuid,
 
302
  'created' => mysql2date('c', $result['created'], \false),
303
  'cookie_revision' => $revision,
304
  'consent_revision' => $result['revision'],
@@ -308,21 +292,6 @@ class MyConsent {
308
  'decision_hash' => $result['decision_hash']
309
  ];
310
  }
311
- /**
312
- * Create an unique id for the current user.
313
- */
314
- protected function createUuid() {
315
- // Read from existing cookies (context-depending)
316
- foreach ($_COOKIE as $key => $value) {
317
- if (\DevOwl\RealCookieBanner\Utils::startsWith($key, self::COOKIE_NAME_USER_PREFIX)) {
318
- $parsed = $this->parseCookieValue($value);
319
- if ($parsed !== \false) {
320
- return $parsed['uuid'];
321
- }
322
- }
323
- }
324
- return wp_generate_uuid4();
325
- }
326
  /**
327
  * Get the history of the current user.
328
  */
@@ -337,12 +306,22 @@ class MyConsent {
337
  $table_name_revision_independent = $this->getTableName(
338
  \DevOwl\RealCookieBanner\settings\Revision::TABLE_NAME_INDEPENDENT
339
  );
 
 
 
 
 
 
 
 
 
 
340
  // phpcs:disable WordPress.DB.PreparedSQL
341
  $rows = $wpdb->get_results(
342
- $wpdb->prepare(
343
- "SELECT uc.id, uc.created, uc.decision, r.json_revision, ri.json_revision AS json_revision_independent, uc.dnt, uc.blocker, uc.forwarded, uc.tcf_string\n FROM {$table_name} uc\n INNER JOIN {$table_name_revision} r\n ON r.hash = uc.revision\n INNER JOIN {$table_name_revision_independent} ri\n ON ri.hash = uc.revision_independent\n WHERE uuid = %s\n ORDER BY uc.created DESC\n LIMIT 0, 100",
344
- $user['uuid']
345
- ),
346
  ARRAY_A
347
  );
348
  // phpcs:enable WordPress.DB.PreparedSQL
@@ -351,7 +330,7 @@ class MyConsent {
351
  $jsonRevisionIndependent = \json_decode($row['json_revision_independent'], ARRAY_A);
352
  $obj = [
353
  'id' => \intval($row['id']),
354
- 'uuid' => $user['uuid'],
355
  'isDoNotTrack' => \boolval($row['dnt']),
356
  'isUnblock' => \boolval($row['blocker']),
357
  'isForwarded' => $row['forwarded'] > 0,
71
  return $consent;
72
  }
73
  $revision = \DevOwl\RealCookieBanner\settings\Revision::getInstance();
 
 
 
74
  // Create the cookie on client-side with the latest requested consent hash instead of current real-time hash
75
  // Why? So, the frontend can safely compare latest requested hash to user-consent hash
76
  // What is true, cookie hash or database? I can promise, the database shows the consent hash!
77
+ $currentHash = $revision->getCurrentHash();
78
+ $revisionHash = $revision->create(\true, \false)['hash'];
79
+ $revisionIndependentHash = $revision->createIndependent(\true)['hash'];
80
+ $user = $this->getCurrentUser();
81
+ $uuid = $forwardedUuid ?? wp_generate_uuid4();
82
  $consent_hash = \md5(\json_encode($consent));
83
+ $created = mysql2date('c', current_time('mysql'), \false);
84
+ $previousDecision = $user === \false ? \false : $user['decision'];
85
+ $previousCreated = $user === \false ? \false : $user['created'];
86
  $ips = \DevOwl\RealCookieBanner\IpHandler::getInstance()->persistIp();
87
  $table_name = $this->getTableName(\DevOwl\RealCookieBanner\UserConsent::TABLE_NAME);
88
  $table_name_blocker_thumbnails = $this->getTableName(
118
  $ips['ipv6'] === null ? 'NULL' : $ips['ipv6'],
119
  $ips['ipv4_hash'] === null ? 'NULL' : $ips['ipv4_hash'],
120
  $ips['ipv6_hash'] === null ? 'NULL' : $ips['ipv6_hash'],
121
+ $uuid,
122
  $revisionHash,
123
+ $revisionIndependentHash,
124
+ \json_encode($previousDecision === \false ? [] : $previousDecision),
125
  \json_encode($consent),
126
  $consent_hash,
127
  $blocker > 0 ? $blocker : 'NULL',
141
  $forwardedBlocker,
142
  // %s used for 'NULL' transformation
143
  $tcfString === null ? 'NULL' : $tcfString,
144
+ $created
145
  )
146
  )
147
  );
148
  $insertId = $wpdb->insert_id;
149
+ // Set cookie and merge with previous UUIDs
150
+ $allUuids = \array_merge(
151
+ [$uuid],
152
+ $user === \false ? [] : [$user['uuid']],
153
+ $user === \false ? [] : $user['previous_uuids']
154
+ );
155
+ $this->setCookie($allUuids, $currentHash, $consent);
156
  // Why $currentHash? See above
157
  // Persist stats (only when not forwarded)
158
  if ($forwarded === 0) {
159
+ \DevOwl\RealCookieBanner\Stats::getInstance()->persist($consent, $previousDecision, $previousCreated);
160
  }
161
  $result = \array_merge($this->getCurrentUser(\true), ['updated' => \true, 'consent_id' => $insertId]);
162
  /**
169
  do_action('RCB/Consent/Created', $result, $args);
170
  return $result;
171
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
172
  /**
173
  * Set or update the existing cookie to the latest revision. It also respect the fact, that
174
  * cross-site cookies needs to be set with `SameSite=None` attribute.
175
  *
176
+ * @param string[] $uuids
177
  * @param string $revision
178
  * @param array $consent
179
  * @see https://developer.wordpress.org/reference/functions/wp_set_auth_cookie/
180
  * @see https://stackoverflow.com/a/46971326/5506547
181
  */
182
+ public function setCookie($uuids = null, $revision = null, $consent = null) {
183
  $cookieName = $this->getCookieName();
184
+ $doDelete = $uuids === null;
185
+ $cookieValue = $doDelete ? '' : \sprintf('%s:%s:%s', \join(',', $uuids), $revision, \json_encode($consent));
186
  $expire = $doDelete
187
  ? -1
188
  : \time() +
209
  * @param {boolean} $result Got the cookie successfully created?
210
  * @param {boolean} $revoke `true` if the cookie should be deleted
211
  * @param {string} $uuid
212
+ * @param {string[]} $uuids Since v3 multiple consent UUIDs are saved to the database
213
  * @param {array}
214
  * @since 2.0.0
215
  */
216
+ do_action('RCB/Consent/SetCookie', $cookieName, $cookieValue, $result, $doDelete, $uuids[0], $uuids);
217
  }
218
  return $result;
219
  }
222
  * user id and the accepted revision hash. This function is also ported to JS via `getUserDecision.tsx`.
223
  *
224
  * @param boolean $force
225
+ * @return false|array 'uuid', `previous_uuids`, 'created', 'cookie_revision', 'consent_revision', 'decision', 'decision_in_cookie', 'decision_hash'
226
  */
227
  public function getCurrentUser($force = \false) {
228
  if ($this->cacheCurrentUser !== null && !$force) {
246
  * user id and the accepted revision hash.
247
  *
248
  * @param string $value
249
+ * @return array 'uuid', `previous_uuids`, 'created', 'cookie_revision', 'consent_revision', 'decision', 'decision_in_cookie', 'decision_hash'
250
  */
251
  protected function parseCookieValue($value) {
252
  global $wpdb;
262
  }
263
  $cookieDecision = \json_decode($result[2], ARRAY_A);
264
  // Parse out data (${uuid}-${revision})
265
+ $uuids = \explode(',', $result[0]);
266
+ $uuid = \array_shift($uuids);
267
  $revision = $result[1];
268
  // Check if any consent was ever set by this user
269
  // phpcs:disable WordPress.DB.PreparedSQL
282
  }
283
  return [
284
  'uuid' => $uuid,
285
+ 'previous_uuids' => $uuids,
286
  'created' => mysql2date('c', $result['created'], \false),
287
  'cookie_revision' => $revision,
288
  'consent_revision' => $result['revision'],
292
  'decision_hash' => $result['decision_hash']
293
  ];
294
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
295
  /**
296
  * Get the history of the current user.
297
  */
306
  $table_name_revision_independent = $this->getTableName(
307
  \DevOwl\RealCookieBanner\settings\Revision::TABLE_NAME_INDEPENDENT
308
  );
309
+ $allUuids = \array_merge([$user['uuid']], $user['previous_uuids']);
310
+ $allUuidsIn = \sprintf(
311
+ '(%s)',
312
+ \join(
313
+ ', ',
314
+ \array_map(function ($uuid) use ($wpdb) {
315
+ return $wpdb->prepare('%s', $uuid);
316
+ }, $allUuids)
317
+ )
318
+ );
319
  // phpcs:disable WordPress.DB.PreparedSQL
320
  $rows = $wpdb->get_results(
321
+ "SELECT uc.id, uc.uuid, uc.created, uc.decision, r.json_revision, ri.json_revision AS json_revision_independent, uc.dnt, uc.blocker, uc.forwarded, uc.tcf_string\n FROM {$table_name} uc\n INNER JOIN {$table_name_revision} r\n ON r.hash = uc.revision\n INNER JOIN {$table_name_revision_independent} ri\n ON ri.hash = uc.revision_independent\n WHERE uuid IN " .
322
+ $allUuidsIn .
323
+ ' ORDER BY uc.created DESC
324
+ LIMIT 0, 100',
325
  ARRAY_A
326
  );
327
  // phpcs:enable WordPress.DB.PreparedSQL
330
  $jsonRevisionIndependent = \json_decode($row['json_revision_independent'], ARRAY_A);
331
  $obj = [
332
  'id' => \intval($row['id']),
333
+ 'uuid' => $row['uuid'],
334
  'isDoNotTrack' => \boolval($row['dnt']),
335
  'isUnblock' => \boolval($row['blocker']),
336
  'isForwarded' => $row['forwarded'] > 0,
inc/Utils.php CHANGED
@@ -5,6 +5,7 @@ namespace DevOwl\RealCookieBanner;
5
  use RecursiveArrayIterator;
6
  use RecursiveIteratorIterator;
7
  use WP_Rewrite;
 
8
  // @codeCoverageIgnoreStart
9
  \defined('ABSPATH') or die('No script kiddies please!');
10
  // Avoid direct file request
@@ -34,6 +35,32 @@ class Utils {
34
  */
35
  const HOST_TYPE_CURRENT_WITH_ALL_SUBDOMAINS = 'current+subdomains';
36
  const PREINSTALLED_ENV_IONOS = 'ionos';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  /**
38
  * Get the currently used admin color scheme.
39
  *
5
  use RecursiveArrayIterator;
6
  use RecursiveIteratorIterator;
7
  use WP_Rewrite;
8
+ use WP_Post;
9
  // @codeCoverageIgnoreStart
10
  \defined('ABSPATH') or die('No script kiddies please!');
11
  // Avoid direct file request
35
  */
36
  const HOST_TYPE_CURRENT_WITH_ALL_SUBDOMAINS = 'current+subdomains';
37
  const PREINSTALLED_ENV_IONOS = 'ionos';
38
+ /**
39
+ * Always create a clone of the post cause we need to force the `post_status` to get the valid permalink.
40
+ * This also returns a valid permalink even for trashed or draft posts.
41
+ *
42
+ * @param WP_Post|number $post
43
+ * @see https://wordpress.stackexchange.com/a/42988/83335
44
+ * @return string|false
45
+ */
46
+ public static function getPermalink($post) {
47
+ if (\is_numeric($post)) {
48
+ $post = get_post($post);
49
+ }
50
+ if (!$post instanceof \WP_Post) {
51
+ return \false;
52
+ }
53
+ if ($post->post_status === 'publish') {
54
+ return get_permalink($post);
55
+ }
56
+ $clone = clone $post;
57
+ if ($clone->post_status === 'trash') {
58
+ $clone->post_name = \preg_replace('/__trashed$/', '', $clone->post_name);
59
+ }
60
+ $clone->post_status = 'publish';
61
+ $clone->post_name = sanitize_title($clone->post_name ? $clone->post_name : $clone->post_title, $clone->ID);
62
+ return get_permalink($clone);
63
+ }
64
  /**
65
  * Get the currently used admin color scheme.
66
  *
inc/base/others/cachebuster-lib.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- /* This file was automatically generated (Fri May 13 2022 12:26:44 GMT+0000 (Coordinated Universal Time)). */
3
  return [
4
  'animate.css' => '4.1.1',
5
  'mobx' => '4.15.7',
1
  <?php
2
+ /* This file was automatically generated (Tue May 24 2022 13:54:10 GMT+0000 (Coordinated Universal Time)). */
3
  return [
4
  'animate.css' => '4.1.1',
5
  'mobx' => '4.15.7',
inc/base/others/cachebuster.php CHANGED
@@ -1,76 +1,78 @@
1
  <?php
2
- /* This file was automatically generated (Fri May 13 2022 12:26:44 GMT+0000 (Coordinated Universal Time)). */
3
  return [
4
- 'src/public/dist/191.lite.js' => 'c8d9caaa5dd4fd398861a92306f27543',
5
- 'src/public/dist/191.pro.js' => '2e2ee3ab225ba72f8877368f2db4b893',
6
  'src/public/dist/193.lite.js' => 'd7a0722155f835c915b08b6c93a9208d',
7
  'src/public/dist/193.pro.js' => 'd71177a05a4f8e8252c7a480e8a2842b',
8
- 'src/public/dist/354.lite.js' => 'd85d77cd6c5b5ac9542f48ef0ac5cd96',
9
- 'src/public/dist/354.pro.js' => '1e21d38c8d4edd1a1b780ffd50faf986',
10
- 'src/public/dist/41.pro.js' => 'd288279121d5ad02e3d892d657aa331e',
 
 
 
 
11
  'src/public/dist/440.lite.js' => '507b1d1d30a2155478e54f9c41e43d3b',
12
  'src/public/dist/440.pro.js' => 'be0305e357c4bec403a16175006c8fd8',
13
  'src/public/dist/472.pro.js' => 'a1855f174db45a591510ec767a2e2104',
14
- 'src/public/dist/548.lite.js' => '982898ceed8965767b03643d3df3e48d',
15
- 'src/public/dist/641.pro.js' => '301f039aaffaebf49794c72d81cd0cca',
16
  'src/public/dist/716.lite.js' => '2387b139748accec44017fa5ed1ed3e3',
17
  'src/public/dist/716.pro.js' => 'a93d630f29e6762defcf6f97e9896223',
18
  'src/public/dist/756.lite.js' => 'a33fd915f84e6f8be48f0e54138e39f2',
19
  'src/public/dist/756.pro.js' => '0f18eab40b089c103d9f598326bcdf15',
20
- 'src/public/dist/789.lite.js' => '841ad5e00acc22c419ca3c1c13bb0839',
21
- 'src/public/dist/789.pro.js' => '9f82736c88ac6856084db70fa3bfecee',
22
  'src/public/dist/795.lite.js' => 'f24c07d99365d028468d9a8eef40ca37',
23
  'src/public/dist/795.pro.js' => '0f2c5c70d9be03caab24126e536c3c3d',
24
- 'src/public/dist/813.lite.js' => 'aab23dc65e1b86ccd60890e0ae75643b',
25
- 'src/public/dist/813.pro.js' => '1979b8d159be528e4e2d3683f197dc44',
26
  'src/public/dist/826.lite.js' => '3bc881855215a625d93f2525804b4ca8',
27
  'src/public/dist/914.lite.js' => 'e58092e06d5f33173282b43d04705d56',
28
  'src/public/dist/914.pro.js' => '182de60076ce6b7f80084a25543f0e63',
29
- 'src/public/dist/930.lite.js' => 'aebeaed94b7d7b94c30efbfdafa70863',
30
- 'src/public/dist/930.pro.js' => '757d70b559d754597000612bed3f870b',
31
- 'src/public/dist/954.lite.js' => 'ee2cda44e2cd4c19a1f7288055efa5d0',
32
- 'src/public/dist/954.pro.js' => 'c39fe799c52c7690d66633725671963f',
33
- 'src/public/dist/admin.lite.js' => '016f0665f46a07dfd95f2bd17a2fd99b',
34
- 'src/public/dist/admin.pro.js' => '4b1eac6e2acff0fb58398d868bb7b6b3',
35
- 'src/public/dist/banner_tcf.pro.js' => 'b6a82e53a259f84e77b3bf4094d21991',
36
- 'src/public/dist/banner.lite.js' => 'faa4cd580bc811b93cc38d8df1d34976',
37
- 'src/public/dist/banner.pro.js' => '3e4e7c4cef7ad970d08dc45e82c56d6d',
38
- 'src/public/dist/blocker_tcf.pro.js' => '3055e589746a5d2a267083dacfac866b',
39
- 'src/public/dist/blocker.lite.js' => '4090164e3630c1f9fcf212ff770c1751',
40
- 'src/public/dist/blocker.pro.js' => 'dbee98ba5a8cae8d039bbcafde6cde6c',
41
  'src/public/dist/chunk-config-tab-blocker.lite.js' => 'a91d327211ca5e165107f4158a9da752',
42
  'src/public/dist/chunk-config-tab-blocker.pro.js' => '01a54b916148e4a884a14dcea0d5463d',
43
- 'src/public/dist/chunk-config-tab-consent.lite.js' => 'cb9d261cdd16ae1a0d65d6aedd541537',
44
- 'src/public/dist/chunk-config-tab-consent.pro.js' => 'd47ff04936b498af4d98d6a4933178e7',
45
  'src/public/dist/chunk-config-tab-cookies.lite.js' => '3f665830d802d689add48a5fb8eeb691',
46
  'src/public/dist/chunk-config-tab-cookies.pro.js' => '680d91812dd9d6f7351e952231c5a487',
47
- 'src/public/dist/chunk-config-tab-dashboard.lite.js' => '6e34efea4643d7067e241b47350ee3a9',
48
- 'src/public/dist/chunk-config-tab-dashboard.pro.js' => 'a9b7999e7de65f1c0ce933e103b55a50',
49
- 'src/public/dist/chunk-config-tab-import.lite.js' => '7e4e7565430ef7682cca1e5a93fc8a17',
50
- 'src/public/dist/chunk-config-tab-import.pro.js' => '9b94417d6b44b13076fd7a45dfe2258b',
51
- 'src/public/dist/chunk-config-tab-licensing.lite.js' => 'd067d953c15862551557e56832b5fa3b',
52
- 'src/public/dist/chunk-config-tab-licensing.pro.js' => '6e06671a101e2c9e08e33c05f7952950',
53
  'src/public/dist/chunk-config-tab-scanner.lite.js' => '1560805869186588d4d28f4bab9ffc87',
54
  'src/public/dist/chunk-config-tab-scanner.pro.js' => '3df7f1ab1e88b1eb1772f3e0f5d33f66',
55
- 'src/public/dist/chunk-config-tab-settings.lite.js' => '27daa49838620048b4091609e34bb4e3',
56
- 'src/public/dist/chunk-config-tab-settings.pro.js' => '91cfc1ca70d8295a064e8b4e2c034cb0',
57
  'src/public/dist/chunk-config-tab-tcf.lite.js' => '6365310df181df3e606648c820281492',
58
  'src/public/dist/chunk-config-tab-tcf.pro.js' => 'e1c180231e480c84449cd51dcac15d54',
59
- 'src/public/dist/customize_banner.lite.js' => 'b31ab1c74a3cbf73df6886c1f5f1de97',
60
- 'src/public/dist/customize_banner.pro.js' => '87ba8fbee6b877c8f16a95117116d143',
61
- 'src/public/dist/customize.lite.js' => '05d74189554997b77f7049af1fa8619e',
62
- 'src/public/dist/customize.pro.js' => 'bce84f6f966d8297db027082a13b4de7',
63
  'src/public/dist/queue.lite.js' => '7b9c552c5049e1b529155a7c01b25aef',
64
  'src/public/dist/queue.pro.js' => '352f65e78294e1be38b2cc3a8c9f4a8e',
65
- 'src/public/dist/vendor-admin.lite.js' => '520d0b5cb0501c7a48700db80da69ead',
66
- 'src/public/dist/vendor-admin.pro.js' => '0c965e27d0e50373e2352d327be87275',
67
  'src/public/dist/vendor-banner_tcf.pro.js' => '5f087cf149b75526844e11e03ba7ca32',
68
  'src/public/dist/vendor-banner.lite.js' => '9d21941f8683c473e4fad7ce9737b540',
69
  'src/public/dist/vendor-banner.pro.js' => '7a72278ea147e6c777ef2c21d441214d',
70
- 'src/public/dist/vendor-customize_banner.lite.js' => '9d8984db62a2df44c4fe5d4ceeca140f',
71
- 'src/public/dist/vendor-customize_banner.pro.js' => 'ad3ba42ca4430080baba43526ce054ea',
72
- 'src/public/dist/vendor-customize.lite.js' => 'ff04de972ee40e7669c8859c05465529',
73
- 'src/public/dist/vendor-customize.pro.js' => '6f37a40af6d37ad3812f6a14d0ff670d',
74
  'src/public/dist/vendor-queue.lite.js' => 'b72bded98fc236932c39620d16d7780e',
75
  'src/public/dist/vendor-queue.pro.js' => 'b72bded98fc236932c39620d16d7780e',
76
  'src/public/dist/admin.css' => '80138025b52ea88ade1dba28bccf90e1',
1
  <?php
2
+ /* This file was automatically generated (Tue May 24 2022 13:54:10 GMT+0000 (Coordinated Universal Time)). */
3
  return [
4
+ 'src/public/dist/191.lite.js' => '38637a7ba9b7edb104d1f3db693c41a8',
5
+ 'src/public/dist/191.pro.js' => '2fdb045aa34fad13b865bf56d869bdff',
6
  'src/public/dist/193.lite.js' => 'd7a0722155f835c915b08b6c93a9208d',
7
  'src/public/dist/193.pro.js' => 'd71177a05a4f8e8252c7a480e8a2842b',
8
+ 'src/public/dist/276.lite.js' => 'b658a312356b0e71ec521276a45587b0',
9
+ 'src/public/dist/276.pro.js' => '7f80575a91b2b090999dce05c53d7571',
10
+ 'src/public/dist/348.lite.js' => 'b10e5a1b4ed020083d9b90e354362967',
11
+ 'src/public/dist/348.pro.js' => 'e161c26a84fd4aa4dd792c78d8126c02',
12
+ 'src/public/dist/41.pro.js' => 'eccdc3b1385610e2299308e3a5b4e7ed',
13
+ 'src/public/dist/418.lite.js' => 'e67dca2dbaa4c6f9fd77a2a546069d67',
14
+ 'src/public/dist/418.pro.js' => 'fbfddcc807d91362e42c82e1d16f96ff',
15
  'src/public/dist/440.lite.js' => '507b1d1d30a2155478e54f9c41e43d3b',
16
  'src/public/dist/440.pro.js' => 'be0305e357c4bec403a16175006c8fd8',
17
  'src/public/dist/472.pro.js' => 'a1855f174db45a591510ec767a2e2104',
18
+ 'src/public/dist/548.lite.js' => 'd4f0bbe78792da246669cd8ca870707f',
 
19
  'src/public/dist/716.lite.js' => '2387b139748accec44017fa5ed1ed3e3',
20
  'src/public/dist/716.pro.js' => 'a93d630f29e6762defcf6f97e9896223',
21
  'src/public/dist/756.lite.js' => 'a33fd915f84e6f8be48f0e54138e39f2',
22
  'src/public/dist/756.pro.js' => '0f18eab40b089c103d9f598326bcdf15',
23
+ 'src/public/dist/789.pro.js' => '21467511370feb31437c55e345306f83',
 
24
  'src/public/dist/795.lite.js' => 'f24c07d99365d028468d9a8eef40ca37',
25
  'src/public/dist/795.pro.js' => '0f2c5c70d9be03caab24126e536c3c3d',
26
+ 'src/public/dist/813.lite.js' => 'a891cb31407bfee9406f428177ebcfe9',
27
+ 'src/public/dist/813.pro.js' => '9a203f5404c510520abcf0bbdd2218bb',
28
  'src/public/dist/826.lite.js' => '3bc881855215a625d93f2525804b4ca8',
29
  'src/public/dist/914.lite.js' => 'e58092e06d5f33173282b43d04705d56',
30
  'src/public/dist/914.pro.js' => '182de60076ce6b7f80084a25543f0e63',
31
+ 'src/public/dist/930.lite.js' => 'e8fd40bb3b535bfa0b37c2c92902042a',
32
+ 'src/public/dist/930.pro.js' => 'e1092ede607c69f5547e5440ee10b93b',
33
+ 'src/public/dist/954.lite.js' => 'eaaae2e681627767c86add5ebd61aaf6',
34
+ 'src/public/dist/954.pro.js' => 'faf328b7bd41817fcb3693740adbc496',
35
+ 'src/public/dist/admin.lite.js' => '33e4e49e7c0d099316f4b3d0bc65a9dd',
36
+ 'src/public/dist/admin.pro.js' => '6b40183918200c30d3460cb71bc7b616',
37
+ 'src/public/dist/banner_tcf.pro.js' => '7cb8672151aa2be4aa6864191d863665',
38
+ 'src/public/dist/banner.lite.js' => 'c3b119fa6102a7b03cf44bf9ac4c63b0',
39
+ 'src/public/dist/banner.pro.js' => 'de4c2f3640a078345b556d216bfc2323',
40
+ 'src/public/dist/blocker_tcf.pro.js' => 'd78de7fc544c155bd9f3b946832685f9',
41
+ 'src/public/dist/blocker.lite.js' => '1bb6ec2bb8f522dbe75f46bfc72a2896',
42
+ 'src/public/dist/blocker.pro.js' => '87c0848344f3cd8ed311a754c6b11d3d',
43
  'src/public/dist/chunk-config-tab-blocker.lite.js' => 'a91d327211ca5e165107f4158a9da752',
44
  'src/public/dist/chunk-config-tab-blocker.pro.js' => '01a54b916148e4a884a14dcea0d5463d',
45
+ 'src/public/dist/chunk-config-tab-consent.lite.js' => '03ad4e0ef3d1413f265a9335977ae82f',
46
+ 'src/public/dist/chunk-config-tab-consent.pro.js' => 'bc9989d9628d47c39eec2bd404a391c5',
47
  'src/public/dist/chunk-config-tab-cookies.lite.js' => '3f665830d802d689add48a5fb8eeb691',
48
  'src/public/dist/chunk-config-tab-cookies.pro.js' => '680d91812dd9d6f7351e952231c5a487',
49
+ 'src/public/dist/chunk-config-tab-dashboard.lite.js' => 'c2db7d58f8d1d161907ef98a45b26c0e',
50
+ 'src/public/dist/chunk-config-tab-dashboard.pro.js' => '88936b0da2ba956234ae523895c6d76b',
51
+ 'src/public/dist/chunk-config-tab-import.lite.js' => '10fb25f16aba75af21e38c0423ed964b',
52
+ 'src/public/dist/chunk-config-tab-import.pro.js' => '4a11612f27493b430a4a70082e903aea',
53
+ 'src/public/dist/chunk-config-tab-licensing.lite.js' => 'f03f0e80b7ce66f91dc3392518d8af9c',
54
+ 'src/public/dist/chunk-config-tab-licensing.pro.js' => '2fdfebedf923e5c376bd469ff1e1eb31',
55
  'src/public/dist/chunk-config-tab-scanner.lite.js' => '1560805869186588d4d28f4bab9ffc87',
56
  'src/public/dist/chunk-config-tab-scanner.pro.js' => '3df7f1ab1e88b1eb1772f3e0f5d33f66',
57
+ 'src/public/dist/chunk-config-tab-settings.lite.js' => '0546eab20093f4a491c73339caa1b832',
58
+ 'src/public/dist/chunk-config-tab-settings.pro.js' => 'bf0cb2878745240e490839cfb72efdd2',
59
  'src/public/dist/chunk-config-tab-tcf.lite.js' => '6365310df181df3e606648c820281492',
60
  'src/public/dist/chunk-config-tab-tcf.pro.js' => 'e1c180231e480c84449cd51dcac15d54',
61
+ 'src/public/dist/customize_banner.lite.js' => '70cdf95b2d3c5b3bd3448db6c789ff5a',
62
+ 'src/public/dist/customize_banner.pro.js' => '945e90685e00ac601c3ad68e67380d0d',
63
+ 'src/public/dist/customize.lite.js' => 'ef93c3c40dd5ddb0f45b541a79af7c30',
64
+ 'src/public/dist/customize.pro.js' => '1e7c11da7d3dda54eb14891026b3d9c6',
65
  'src/public/dist/queue.lite.js' => '7b9c552c5049e1b529155a7c01b25aef',
66
  'src/public/dist/queue.pro.js' => '352f65e78294e1be38b2cc3a8c9f4a8e',
67
+ 'src/public/dist/vendor-admin.lite.js' => 'f1c19a085c135d0f8d34f8678f9737df',
68
+ 'src/public/dist/vendor-admin.pro.js' => 'a66ff8967c03ab9411bbbe3051ca0b94',
69
  'src/public/dist/vendor-banner_tcf.pro.js' => '5f087cf149b75526844e11e03ba7ca32',
70
  'src/public/dist/vendor-banner.lite.js' => '9d21941f8683c473e4fad7ce9737b540',
71
  'src/public/dist/vendor-banner.pro.js' => '7a72278ea147e6c777ef2c21d441214d',
72
+ 'src/public/dist/vendor-customize_banner.lite.js' => '007f442eac218ac42576ab09c67a7b9f',
73
+ 'src/public/dist/vendor-customize_banner.pro.js' => '981ae3c7ccb0989d61996710f937996a',
74
+ 'src/public/dist/vendor-customize.lite.js' => '318f0df06a7f1686f580e3500783e0cc',
75
+ 'src/public/dist/vendor-customize.pro.js' => '218aacecd433ad4ae272bdc2f339bd7d',
76
  'src/public/dist/vendor-queue.lite.js' => 'b72bded98fc236932c39620d16d7780e',
77
  'src/public/dist/vendor-queue.pro.js' => 'b72bded98fc236932c39620d16d7780e',
78
  'src/public/dist/admin.css' => '80138025b52ea88ade1dba28bccf90e1',
inc/comp/migration/AbstractDashboardTileMigration.php CHANGED
@@ -126,7 +126,7 @@ abstract class AbstractDashboardTileMigration {
126
  */
127
  public function revisionCurrent($array) {
128
  if ($this->isActive()) {
129
- $array['dashboardMigration'] = [
130
  'id' => $this->getId(),
131
  'headline' => $this->getHeadline(),
132
  'description' => $this->getDescription(),
126
  */
127
  public function revisionCurrent($array) {
128
  if ($this->isActive()) {
129
+ $array['dashboard_migration'] = [
130
  'id' => $this->getId(),
131
  'headline' => $this->getHeadline(),
132
  'description' => $this->getDescription(),
inc/overrides/lite/Core.php CHANGED
@@ -273,6 +273,7 @@ trait Core {
273
  // Documented in IOverrideCore
274
  public function overrideInit() {
275
  add_action('rest_api_init', [\DevOwl\RealCookieBanner\lite\rest\Service::instance(), 'rest_api_init']);
 
276
  }
277
  /**
278
  * Create PRO-specific cookie presets.
273
  // Documented in IOverrideCore
274
  public function overrideInit() {
275
  add_action('rest_api_init', [\DevOwl\RealCookieBanner\lite\rest\Service::instance(), 'rest_api_init']);
276
+ add_filter('RCB/Revision/Current', [new \DevOwl\RealCookieBanner\lite\FomoCoupon(), 'revisionCurrent']);
277
  }
278
  /**
279
  * Create PRO-specific cookie presets.
inc/overrides/lite/FomoCoupon.php ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace DevOwl\RealCookieBanner\lite;
4
+
5
+ use DevOwl\RealCookieBanner\Core;
6
+ // @codeCoverageIgnoreStart
7
+ \defined('ABSPATH') or die('No script kiddies please!');
8
+ // Avoid direct file request
9
+ // @codeCoverageIgnoreEnd
10
+ /**
11
+ * Fetch a FOMO coupon from our Real Commerce backend for free users with valid license.
12
+ */
13
+ class FomoCoupon {
14
+ /**
15
+ * The option value can be one of the following:
16
+ *
17
+ * - `-1`: You already have an in-app FOMO coupon received -> never send a request to the backend again
18
+ * - `number > 0`: Timestamp, when we retry the backend as it was not available
19
+ * - `array`: Result of the Fomo Coupon
20
+ */
21
+ const OPTION_NAME_FOMO_COUPON = RCB_OPT_PREFIX . '-fomo-coupon';
22
+ const ENDPOINT_FOMO_COUPON = '1.0.0/fomo/in-app-coupon';
23
+ const RETRY_ENDPOINT_ON_ERROR_IN_SECONDS = 6 * 60 * 60;
24
+ /**
25
+ * Fetch the FOMO coupon from the Real Commerce database only once and cache it. If there is no free
26
+ * license activated, never fetch a coupon from the external server (GDPR).
27
+ *
28
+ * @return array|false
29
+ */
30
+ protected function fetchFomoCoupon() {
31
+ $license = \DevOwl\RealCookieBanner\Core::getInstance()
32
+ ->getRpmInitiator()
33
+ ->getPluginUpdater()
34
+ ->getCurrentBlogLicense();
35
+ $licenseActivation = $license->getActivation();
36
+ $code = $licenseActivation->getCode();
37
+ $uuid = $license->getUuid();
38
+ $isLicensed = !empty($code);
39
+ // Already cached?
40
+ $fomoCoupon = get_option(self::OPTION_NAME_FOMO_COUPON);
41
+ if (\is_numeric($fomoCoupon)) {
42
+ $fomoCoupon = \intval($fomoCoupon);
43
+ }
44
+ if (!\is_array($fomoCoupon) && $isLicensed && $fomoCoupon !== -1) {
45
+ // Check if the FOMO coupon failed recently through another error (e.g. server was down) and retry in x hours
46
+ if (\is_int($fomoCoupon)) {
47
+ if (\time() < $fomoCoupon) {
48
+ return \false;
49
+ } else {
50
+ // Reset value, so we can trigger a retry again if server is still not available
51
+ $fomoCoupon = \false;
52
+ }
53
+ }
54
+ // Do the request to the RCB backend and try to receive a FOMO coupon
55
+ $url = add_query_arg(
56
+ ['licenseKey' => $code, 'clientUuid' => $uuid],
57
+ $this->getApiUrl() . self::ENDPOINT_FOMO_COUPON
58
+ );
59
+ $result = wp_remote_get($url);
60
+ $resultCode = wp_remote_retrieve_response_code($result);
61
+ $resultBodyString = wp_remote_retrieve_body($result);
62
+ if (!empty($resultBodyString)) {
63
+ $resultBody = \json_decode($resultBodyString, ARRAY_A);
64
+ if ($resultCode === 200 && isset($resultBody['inAppFomoCoupon'])) {
65
+ // Received a valid FOMO coupon
66
+ $resultBody = $resultBody['inAppFomoCoupon'];
67
+ $fomoCoupon = $resultBody;
68
+ update_option(self::OPTION_NAME_FOMO_COUPON, $fomoCoupon, \false);
69
+ } elseif (\strpos($resultBodyString, 'InAppFomoCouponAlreadyIssued') !== \false) {
70
+ // FOMO coupon already issued for this client and license key
71
+ $fomoCoupon = -1;
72
+ update_option(self::OPTION_NAME_FOMO_COUPON, $fomoCoupon, \false);
73
+ }
74
+ }
75
+ // If e.g. the server was down, try again in x hours
76
+ if ($fomoCoupon === \false) {
77
+ $fomoCoupon = \time() + self::RETRY_ENDPOINT_ON_ERROR_IN_SECONDS;
78
+ update_option(self::OPTION_NAME_FOMO_COUPON, $fomoCoupon, \false);
79
+ }
80
+ }
81
+ return \is_array($fomoCoupon) && \strtotime($fomoCoupon['validUntil']) > \time() ? $fomoCoupon : \false;
82
+ }
83
+ /**
84
+ * Output the FOMO coupon to the current revision REST endpoint, so the UI can work with it.
85
+ * If the FOMO coupon is not yet available, fetch it.
86
+ *
87
+ * @param array $arr
88
+ */
89
+ public function revisionCurrent($arr) {
90
+ $arr['fomo_coupon'] = $this->fetchFomoCoupon();
91
+ return $arr;
92
+ }
93
+ /**
94
+ * Get the URL to the Real Commerce API.
95
+ */
96
+ protected function getApiUrl() {
97
+ return \defined('DEVOWL_WP_DEV') && \constant('DEVOWL_WP_DEV')
98
+ ? 'http://real_commerce_backend:8000/'
99
+ : 'https://commerce.devowl.io/';
100
+ }
101
+ }
inc/presets/BannerPresets.php CHANGED
@@ -53,6 +53,7 @@ class BannerPresets {
53
  \DevOwl\RealCookieBanner\view\customize\banner\Design::SETTING_TEXT_ALIGN => 'left',
54
  \DevOwl\RealCookieBanner\view\customize\banner\Design::SETTING_BOX_SHADOW_OFFSET_Y => 0,
55
  \DevOwl\RealCookieBanner\view\customize\banner\Design::SETTING_BOX_SHADOW_BLUR_RADIUS => 17,
 
56
  \DevOwl\RealCookieBanner\view\customize\banner\individual\Layout::SETTING_INHERIT_BANNER_MAX_WIDTH => \false
57
  ]
58
  ],
@@ -240,6 +241,10 @@ class BannerPresets {
240
  '#2ea3f2',
241
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ALL_HOVER_BG =>
242
  '#2993d9',
 
 
 
 
243
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_INHERIT_BG => \true,
244
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_TOP_BORDER_WIDTH => 1,
245
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_TOP_BORDER_COLOR =>
@@ -291,6 +296,10 @@ class BannerPresets {
291
  '#2ea3f2',
292
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ALL_HOVER_BG =>
293
  '#2993d9',
 
 
 
 
294
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_INHERIT_BG => \true,
295
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
296
  17,
@@ -338,7 +347,7 @@ class BannerPresets {
338
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_SIZE => 21,
339
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_BOTTOM_BORDER_COLOR =>
340
  '#f5f5f5',
341
- \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_PADDING => [20, 30, 20, 30],
342
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_TEACHINGS_SEPARATOR_COLOR =>
343
  '#0274be',
344
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_BULLET_COLOR =>
@@ -348,9 +357,9 @@ class BannerPresets {
348
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ALL_HOVER_BG =>
349
  '#0264a6',
350
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
351
- '#3a3a3a',
352
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
353
- '#141414',
354
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f5f5f5',
355
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
356
  19,
@@ -420,14 +429,14 @@ class BannerPresets {
420
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ALL_HOVER_BG =>
421
  '#0264a6',
422
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
423
- '#3a3a3a',
424
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
425
- '#141414',
426
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f5f5f5',
427
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
428
  19,
429
  30,
430
- 21,
431
  30
432
  ],
433
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_FONT_COLOR => '#3a3a3a',
@@ -480,7 +489,7 @@ class BannerPresets {
480
  30
481
  ],
482
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_SIZE => 26,
483
- \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_PADDING => [20, 30, 20, 30],
484
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_TEACHINGS_SEPARATOR_COLOR =>
485
  '#65bc7b',
486
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_BULLET_COLOR =>
@@ -508,9 +517,11 @@ class BannerPresets {
508
  5
509
  ],
510
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
511
- '#212934',
512
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
513
- '#080a0d',
 
 
514
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#1d242d',
515
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
516
  25,
@@ -600,9 +611,11 @@ class BannerPresets {
600
  ],
601
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_SIZE => 16,
602
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
603
- '#212934',
604
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
605
- '#080a0d',
 
 
606
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#1d242d',
607
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
608
  25,
@@ -669,6 +682,10 @@ class BannerPresets {
669
  '#000000',
670
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ALL_HOVER_BG =>
671
  '#262626',
 
 
 
 
672
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_INHERIT_BG => \true,
673
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [7, 20, 11, 20],
674
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_TOP_BORDER_WIDTH => 1,
@@ -715,7 +732,7 @@ class BannerPresets {
715
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_COLOR => '#576a76',
716
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_WEIGHT => 'bold',
717
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_BOTTOM_BORDER_WIDTH => 0,
718
- \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_PADDING => [20, 20, 20, 20],
719
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DESCRIPTION_INHERIT_FONT_SIZE => \false,
720
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_INHERIT_FONT_SIZE => \false,
721
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_BULLET_COLOR =>
@@ -745,9 +762,9 @@ class BannerPresets {
745
  5
746
  ],
747
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
748
- '#54595f',
749
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
750
- '#000000',
751
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f4f7f4',
752
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_FONT_SIZE => 12,
753
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_FONT_COLOR => '#54595f',
@@ -824,7 +841,7 @@ class BannerPresets {
824
  ],
825
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_SIZE => 18,
826
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_COLOR => '#576a76',
827
- \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_PADDING => [20, 20, 20, 20],
828
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DESCRIPTION_INHERIT_FONT_SIZE => \false,
829
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DESCRIPTION_FONT_SIZE => 14,
830
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_INHERIT_FONT_SIZE => \false,
@@ -863,9 +880,9 @@ class BannerPresets {
863
  5
864
  ],
865
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
866
- '#686868',
867
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
868
- '#000000',
869
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f5f5f5',
870
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
871
  15,
@@ -951,7 +968,7 @@ class BannerPresets {
951
  30
952
  ],
953
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_SIZE => 26,
954
- \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_PADDING => [20, 30, 20, 30],
955
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DESCRIPTION_FONT_SIZE => 14,
956
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_FONT_SIZE => 14,
957
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_BULLET_COLOR =>
@@ -997,9 +1014,9 @@ class BannerPresets {
997
  ],
998
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_SIZE => 16,
999
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
1000
- '#212934',
1001
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
1002
- '#080a0d',
1003
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#1d242d',
1004
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
1005
  25,
@@ -1060,16 +1077,16 @@ class BannerPresets {
1060
  \DevOwl\RealCookieBanner\view\customize\banner\Design::SETTING_BOX_SHADOW_COLOR => '#0a0a0a',
1061
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_PADDING => [
1062
  17,
1063
- 10,
1064
  15,
1065
- 10
1066
  ],
1067
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_SIZE => 17,
1068
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_COLOR => '#f9f9f9',
1069
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_WEIGHT => 'lighter',
1070
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_BOTTOM_BORDER_COLOR =>
1071
  '#424242',
1072
- \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_PADDING => [15, 10, 10, 10],
1073
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DESCRIPTION_FONT_SIZE => 14,
1074
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_INHERIT_FONT_SIZE => \false,
1075
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_BULLET_COLOR =>
@@ -1106,18 +1123,17 @@ class BannerPresets {
1106
  '#ffffff',
1107
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ESSENTIALS_HOVER_BORDER_COLOR =>
1108
  '#b58d00',
1109
- \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_SIZE => 13,
1110
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
1111
- '#969696',
1112
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
1113
- '#d3d3d3',
1114
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_POWERED_BY_LINK => \false,
1115
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#141414',
1116
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
1117
  15,
1118
- 10,
1119
  17,
1120
- 10
1121
  ],
1122
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_FONT_SIZE => 13,
1123
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_FONT_COLOR => '#969696',
@@ -1263,11 +1279,10 @@ class BannerPresets {
1263
  '#5b8172',
1264
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ESSENTIALS_HOVER_BORDER_COLOR =>
1265
  '#5b8172',
1266
- \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_SIZE => 13,
1267
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
1268
- '#718093',
1269
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
1270
- '#718093',
1271
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#416a59',
1272
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
1273
  15,
@@ -1351,7 +1366,7 @@ class BannerPresets {
1351
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_COLOR => '#576a76',
1352
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_WEIGHT => 'bold',
1353
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_BOTTOM_BORDER_WIDTH => 0,
1354
- \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_PADDING => [20, 20, 20, 20],
1355
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DESCRIPTION_INHERIT_FONT_SIZE => \false,
1356
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DESCRIPTION_FONT_SIZE => 14,
1357
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_INHERIT_FONT_SIZE => \false,
@@ -1395,10 +1410,11 @@ class BannerPresets {
1395
  0,
1396
  5
1397
  ],
 
1398
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
1399
- '#1d8bc6',
1400
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
1401
- '#000000',
1402
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_POWERED_BY_LINK => \false,
1403
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f4f7f4',
1404
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
@@ -1517,9 +1533,10 @@ class BannerPresets {
1517
  '#17324f',
1518
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ESSENTIALS_HOVER_BORDER_COLOR =>
1519
  '#17324f',
1520
- \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_SIZE => 12,
 
1521
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
1522
- '#9c9e9f',
1523
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f4f4f4',
1524
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
1525
  15,
@@ -1644,10 +1661,13 @@ class BannerPresets {
1644
  '#020b1d',
1645
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ESSENTIALS_HOVER_BORDER_COLOR =>
1646
  '#ffffff',
 
1647
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
1648
- '#707780',
 
 
1649
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
1650
- '#7c7c7c',
1651
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_INHERIT_BG => \true,
1652
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f4f4f4',
1653
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
@@ -1781,6 +1801,10 @@ class BannerPresets {
1781
  '#000000',
1782
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ESSENTIALS_HOVER_FONT_COLOR =>
1783
  '#ffffff',
 
 
 
 
1784
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_POWERED_BY_LINK => \false,
1785
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_INHERIT_BG => \true,
1786
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f4f4f4',
53
  \DevOwl\RealCookieBanner\view\customize\banner\Design::SETTING_TEXT_ALIGN => 'left',
54
  \DevOwl\RealCookieBanner\view\customize\banner\Design::SETTING_BOX_SHADOW_OFFSET_Y => 0,
55
  \DevOwl\RealCookieBanner\view\customize\banner\Design::SETTING_BOX_SHADOW_BLUR_RADIUS => 17,
56
+ \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [10, 20, 12, 20],
57
  \DevOwl\RealCookieBanner\view\customize\banner\individual\Layout::SETTING_INHERIT_BANNER_MAX_WIDTH => \false
58
  ]
59
  ],
241
  '#2ea3f2',
242
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ALL_HOVER_BG =>
243
  '#2993d9',
244
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
245
+ '#2ea3f2',
246
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
247
+ '#2993d9',
248
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_INHERIT_BG => \true,
249
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_TOP_BORDER_WIDTH => 1,
250
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_TOP_BORDER_COLOR =>
296
  '#2ea3f2',
297
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ALL_HOVER_BG =>
298
  '#2993d9',
299
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
300
+ '#2ea3f2',
301
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
302
+ '#2993d9',
303
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_INHERIT_BG => \true,
304
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
305
  17,
347
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_SIZE => 21,
348
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_BOTTOM_BORDER_COLOR =>
349
  '#f5f5f5',
350
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_PADDING => [20, 30, 5, 30],
351
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_TEACHINGS_SEPARATOR_COLOR =>
352
  '#0274be',
353
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_BULLET_COLOR =>
357
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ALL_HOVER_BG =>
358
  '#0264a6',
359
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
360
+ '#0274be',
361
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
362
+ '#0264a6',
363
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f5f5f5',
364
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
365
  19,
429
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ALL_HOVER_BG =>
430
  '#0264a6',
431
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
432
+ '#0274be',
433
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
434
+ '#0264a6',
435
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f5f5f5',
436
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
437
  19,
438
  30,
439
+ 19,
440
  30
441
  ],
442
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_FONT_COLOR => '#3a3a3a',
489
  30
490
  ],
491
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_SIZE => 26,
492
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_PADDING => [20, 30, 15, 30],
493
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_TEACHINGS_SEPARATOR_COLOR =>
494
  '#65bc7b',
495
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_BULLET_COLOR =>
517
  5
518
  ],
519
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
520
+ '#65bc7b',
521
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
522
+ '#58a36b',
523
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_WEIGHT =>
524
+ 'bolder',
525
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#1d242d',
526
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
527
  25,
611
  ],
612
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_SIZE => 16,
613
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
614
+ '#65bc7b',
615
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
616
+ '#58a36b',
617
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_WEIGHT =>
618
+ 'bolder',
619
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#1d242d',
620
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
621
  25,
682
  '#000000',
683
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ALL_HOVER_BG =>
684
  '#262626',
685
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
686
+ '#000000',
687
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
688
+ '#262626',
689
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_INHERIT_BG => \true,
690
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [7, 20, 11, 20],
691
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_TOP_BORDER_WIDTH => 1,
732
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_COLOR => '#576a76',
733
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_WEIGHT => 'bold',
734
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_BOTTOM_BORDER_WIDTH => 0,
735
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_PADDING => [20, 20, 10, 20],
736
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DESCRIPTION_INHERIT_FONT_SIZE => \false,
737
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_INHERIT_FONT_SIZE => \false,
738
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_BULLET_COLOR =>
762
  5
763
  ],
764
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
765
+ '#007f50',
766
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
767
+ '#576a76',
768
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f4f7f4',
769
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_FONT_SIZE => 12,
770
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_FONT_COLOR => '#54595f',
841
  ],
842
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_SIZE => 18,
843
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_COLOR => '#576a76',
844
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_PADDING => [20, 20, 10, 20],
845
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DESCRIPTION_INHERIT_FONT_SIZE => \false,
846
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DESCRIPTION_FONT_SIZE => 14,
847
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_INHERIT_FONT_SIZE => \false,
880
  5
881
  ],
882
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
883
+ '#A0282B',
884
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
885
+ '#686868',
886
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f5f5f5',
887
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
888
  15,
968
  30
969
  ],
970
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_SIZE => 26,
971
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_PADDING => [20, 30, 15, 30],
972
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DESCRIPTION_FONT_SIZE => 14,
973
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_FONT_SIZE => 14,
974
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_BULLET_COLOR =>
1014
  ],
1015
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_SIZE => 16,
1016
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
1017
+ '#9b0103',
1018
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
1019
+ '#9b0103',
1020
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#1d242d',
1021
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
1022
  25,
1077
  \DevOwl\RealCookieBanner\view\customize\banner\Design::SETTING_BOX_SHADOW_COLOR => '#0a0a0a',
1078
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_PADDING => [
1079
  17,
1080
+ 20,
1081
  15,
1082
+ 20
1083
  ],
1084
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_SIZE => 17,
1085
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_COLOR => '#f9f9f9',
1086
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_WEIGHT => 'lighter',
1087
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_BOTTOM_BORDER_COLOR =>
1088
  '#424242',
1089
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_PADDING => [15, 20, 10, 20],
1090
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DESCRIPTION_FONT_SIZE => 14,
1091
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_INHERIT_FONT_SIZE => \false,
1092
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_BULLET_COLOR =>
1123
  '#ffffff',
1124
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ESSENTIALS_HOVER_BORDER_COLOR =>
1125
  '#b58d00',
 
1126
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
1127
+ '#b58d00',
1128
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
1129
+ '#936900',
1130
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_POWERED_BY_LINK => \false,
1131
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#141414',
1132
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
1133
  15,
1134
+ 20,
1135
  17,
1136
+ 20
1137
  ],
1138
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_FONT_SIZE => 13,
1139
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_FONT_COLOR => '#969696',
1279
  '#5b8172',
1280
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ESSENTIALS_HOVER_BORDER_COLOR =>
1281
  '#5b8172',
 
1282
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
1283
+ '#916704',
1284
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
1285
+ '#e5b720',
1286
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#416a59',
1287
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
1288
  15,
1366
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_COLOR => '#576a76',
1367
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_FONT_WEIGHT => 'bold',
1368
  \DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign::SETTING_BOTTOM_BORDER_WIDTH => 0,
1369
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_PADDING => [20, 20, 10, 20],
1370
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DESCRIPTION_INHERIT_FONT_SIZE => \false,
1371
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DESCRIPTION_FONT_SIZE => 14,
1372
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_DOTTED_GROUPS_INHERIT_FONT_SIZE => \false,
1410
  0,
1411
  5
1412
  ],
1413
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_SIZE => 15,
1414
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
1415
+ '#007c63',
1416
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
1417
+ '#576a76',
1418
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_POWERED_BY_LINK => \false,
1419
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f4f7f4',
1420
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
1533
  '#17324f',
1534
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ESSENTIALS_HOVER_BORDER_COLOR =>
1535
  '#17324f',
1536
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
1537
+ '#13293e',
1538
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
1539
+ '#17324f',
1540
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f4f4f4',
1541
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
1542
  15,
1661
  '#020b1d',
1662
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ESSENTIALS_HOVER_BORDER_COLOR =>
1663
  '#ffffff',
1664
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_SIZE => 16,
1665
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
1666
+ '#f9f9fa',
1667
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_WEIGHT =>
1668
+ 'bolder',
1669
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
1670
+ '#707780',
1671
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_INHERIT_BG => \true,
1672
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f4f4f4',
1673
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_PADDING => [
1801
  '#000000',
1802
  \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_ESSENTIALS_HOVER_FONT_COLOR =>
1803
  '#ffffff',
1804
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR =>
1805
+ '#000000',
1806
+ \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR =>
1807
+ '#282828',
1808
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_POWERED_BY_LINK => \false,
1809
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_INHERIT_BG => \true,
1810
  \DevOwl\RealCookieBanner\view\customize\banner\FooterDesign::SETTING_BG => '#f4f4f4',
inc/presets/BlockerPresets.php CHANGED
@@ -138,7 +138,7 @@ class BlockerPresets extends \DevOwl\RealCookieBanner\presets\Presets {
138
  // Documented in Presets
139
  public function getOtherMetaKeys() {
140
  // Make hosts always available in cache cause we need this for the scanner
141
- return [\DevOwl\RealCookieBanner\settings\Blocker::META_NAME_HOSTS, 'extended', 'scanOptions'];
142
  }
143
  /**
144
  * Resolve `attributes.cookies` so we can e.g. show created cookies in "Connected cookies"
138
  // Documented in Presets
139
  public function getOtherMetaKeys() {
140
  // Make hosts always available in cache cause we need this for the scanner
141
+ return ['extended', 'scanOptions'];
142
  }
143
  /**
144
  * Resolve `attributes.cookies` so we can e.g. show created cookies in "Connected cookies"
inc/presets/free/RealCookieBannerPreset.php CHANGED
@@ -8,7 +8,6 @@ use DevOwl\RealCookieBanner\MyConsent;
8
  use DevOwl\RealCookieBanner\presets\AbstractCookiePreset;
9
  use DevOwl\RealCookieBanner\presets\CookiePresets;
10
  use DevOwl\RealCookieBanner\presets\PresetIdentifierMap;
11
- use DevOwl\RealCookieBanner\settings\Blocker;
12
  use DevOwl\RealCookieBanner\settings\Consent;
13
  use DevOwl\RealCookieBanner\settings\Cookie;
14
  use DevOwl\RealCookieBanner\settings\General;
@@ -105,30 +104,15 @@ class RealCookieBannerPreset extends \DevOwl\RealCookieBanner\presets\AbstractCo
105
  add_action(
106
  'init',
107
  function () {
108
- $realCookieBannerService = get_posts(
109
- \DevOwl\RealCookieBanner\Core::getInstance()->queryArguments(
110
- [
111
- 'post_type' => \DevOwl\RealCookieBanner\settings\Cookie::CPT_NAME,
112
- 'numberposts' => -1,
113
- 'nopaging' => \true,
114
- 'meta_query' => [
115
- [
116
- 'key' => \DevOwl\RealCookieBanner\settings\Blocker::META_NAME_PRESET_ID,
117
- 'value' => self::IDENTIFIER,
118
- 'compare' => '='
119
- ]
120
- ],
121
- 'post_status' => ['publish', 'private', 'draft']
122
- ],
123
- 'RealCookieBannerPreset::new_version_installation_after_2_11_0'
124
- )
125
  );
126
- if (\count($realCookieBannerService) > 0) {
127
  $td = \DevOwl\RealCookieBanner\comp\language\Hooks::getInstance()->createTemporaryTextDomain();
128
  (new \DevOwl\RealCookieBanner\presets\CookiePresets())->createFromPreset(
129
  self::IDENTIFIER,
130
  \false,
131
- $realCookieBannerService[0]->ID
132
  );
133
  $td->teardown();
134
  }
8
  use DevOwl\RealCookieBanner\presets\AbstractCookiePreset;
9
  use DevOwl\RealCookieBanner\presets\CookiePresets;
10
  use DevOwl\RealCookieBanner\presets\PresetIdentifierMap;
 
11
  use DevOwl\RealCookieBanner\settings\Consent;
12
  use DevOwl\RealCookieBanner\settings\Cookie;
13
  use DevOwl\RealCookieBanner\settings\General;
104
  add_action(
105
  'init',
106
  function () {
107
+ $realCookieBannerService = \DevOwl\RealCookieBanner\settings\Cookie::getInstance()->getServiceByIdentifier(
108
+ self::IDENTIFIER
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
  );
110
+ if ($realCookieBannerService !== null) {
111
  $td = \DevOwl\RealCookieBanner\comp\language\Hooks::getInstance()->createTemporaryTextDomain();
112
  (new \DevOwl\RealCookieBanner\presets\CookiePresets())->createFromPreset(
113
  self::IDENTIFIER,
114
  \false,
115
+ $realCookieBannerService->ID
116
  );
117
  $td->teardown();
118
  }
inc/presets/free/blocker/YoutubePreset.php CHANGED
@@ -5,7 +5,6 @@ namespace DevOwl\RealCookieBanner\presets\free\blocker;
5
  use DevOwl\RealCookieBanner\Core;
6
  use DevOwl\RealCookieBanner\presets\AbstractBlockerPreset;
7
  use DevOwl\RealCookieBanner\presets\free\YoutubePreset as FreeYoutubePreset;
8
- use DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware;
9
  // @codeCoverageIgnoreStart
10
  \defined('ABSPATH') or die('No script kiddies please!');
11
  // Avoid direct file request
@@ -33,24 +32,10 @@ class YoutubePreset extends \DevOwl\RealCookieBanner\presets\AbstractBlockerPres
33
  '*youtu.be*',
34
  '*youtube-nocookie.com*',
35
  '*ytimg.com*',
36
- // platform.js needs to be implemented together with `div[class*="g-ytsubscribe"]`...
37
- [
38
- '*apis.google.com/js/platform.js*',
39
- [
40
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
41
- self::HOSTS_GROUP_PLATFORM_JS_NAME
42
- ]
43
- ],
44
- [
45
- 'div[class*="g-ytsubscribe"]',
46
- [
47
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST => [
48
- // ... but `div[class*="g-ytsubscribe"]` can also be standalone
49
- self::HOSTS_GROUP_PLATFORM_JS_NAME,
50
- self::HOSTS_GROUP_SUBSCRIBE_EMBED_PLATFORM_JS_NAME
51
- ]
52
- ]
53
- ],
54
  '*youtube.com/subscribe_embed*',
55
  // [Plugin Comp] Elementor
56
  'div[data-settings*="youtube_url"]',
5
  use DevOwl\RealCookieBanner\Core;
6
  use DevOwl\RealCookieBanner\presets\AbstractBlockerPreset;
7
  use DevOwl\RealCookieBanner\presets\free\YoutubePreset as FreeYoutubePreset;
 
8
  // @codeCoverageIgnoreStart
9
  \defined('ABSPATH') or die('No script kiddies please!');
10
  // Avoid direct file request
32
  '*youtu.be*',
33
  '*youtube-nocookie.com*',
34
  '*ytimg.com*',
35
+ // TODO: platform.js needs to be implemented together with `div[class*="g-ytsubscribe"]`...
36
+ // This needs to be done with the service cloud and `ruleGroups`
37
+ '*apis.google.com/js/platform.js*',
38
+ 'div[class*="g-ytsubscribe"]',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  '*youtube.com/subscribe_embed*',
40
  // [Plugin Comp] Elementor
41
  'div[data-settings*="youtube_url"]',
inc/presets/middleware/AdoptTierFromClassNamespaceMiddleware.php CHANGED
@@ -24,6 +24,8 @@ class AdoptTierFromClassNamespaceMiddleware {
24
  public function middleware(&$preset, $instance) {
25
  if (!isset($preset['tier']) && $instance !== null) {
26
  $declaringFileName = (new \ReflectionClass(\get_class($instance)))->getFileName();
 
 
27
  $isProFileName =
28
  \strpos($declaringFileName, 'overrides/pro/presets') !== \false ||
29
  \strpos($declaringFileName, 'presets/pro') !== \false;
24
  public function middleware(&$preset, $instance) {
25
  if (!isset($preset['tier']) && $instance !== null) {
26
  $declaringFileName = (new \ReflectionClass(\get_class($instance)))->getFileName();
27
+ // Windows compatibility: consider backslashes as forward-slashes
28
+ $declaringFileName = \str_replace('\\', '/', $declaringFileName);
29
  $isProFileName =
30
  \strpos($declaringFileName, 'overrides/pro/presets') !== \false ||
31
  \strpos($declaringFileName, 'presets/pro') !== \false;
inc/presets/middleware/BlockerHostsOptionsMiddleware.php CHANGED
@@ -14,10 +14,11 @@ use WP_Post;
14
  *
15
  * If you are using this in conjunction with an `extends` middleware, make sure to add this afterwards!
16
  *
17
- * See `HostScanOptions` for more information.
18
  */
19
  class BlockerHostsOptionsMiddleware {
20
- const LOGICAL_MUST = 'must';
 
21
  const QUERY_ARGS = 'queryArgs';
22
  /**
23
  * See class description.
@@ -34,14 +35,14 @@ class BlockerHostsOptionsMiddleware {
34
  foreach ($preset['attributes']['hosts'] as $key => $host) {
35
  if (\is_array($host)) {
36
  $scanOptions[] = $host;
37
- $preset['attributes']['hosts'][$key] = $host[0];
 
 
38
  }
39
  }
40
  if (\count($scanOptions) > 0) {
41
  $preset['scanOptions'] = $scanOptions;
42
  }
43
- // Make `hosts` always available in metadata (needed for scanner)
44
- $preset['hosts'] = $preset['attributes']['hosts'];
45
  // Unique hosts as they can be duplicated in hosts settings due to different hosts options
46
  $preset['attributes']['hosts'] = \array_unique($preset['attributes']['hosts']);
47
  }
14
  *
15
  * If you are using this in conjunction with an `extends` middleware, make sure to add this afterwards!
16
  *
17
+ * See `Rule` for more information.
18
  */
19
  class BlockerHostsOptionsMiddleware {
20
+ const EXPRESSION = 'expression';
21
+ const ASSIGNED_TO_GROUPS = 'assignedToGroups';
22
  const QUERY_ARGS = 'queryArgs';
23
  /**
24
  * See class description.
35
  foreach ($preset['attributes']['hosts'] as $key => $host) {
36
  if (\is_array($host)) {
37
  $scanOptions[] = $host;
38
+ $preset['attributes']['hosts'][$key] = $host[self::EXPRESSION];
39
+ } elseif (\is_string($host)) {
40
+ $scanOptions[] = [self::EXPRESSION => $host];
41
  }
42
  }
43
  if (\count($scanOptions) > 0) {
44
  $preset['scanOptions'] = $scanOptions;
45
  }
 
 
46
  // Unique hosts as they can be duplicated in hosts settings due to different hosts options
47
  $preset['attributes']['hosts'] = \array_unique($preset['attributes']['hosts']);
48
  }
inc/presets/pro/blocker/CalderaFormsPreset.php CHANGED
@@ -28,25 +28,22 @@ class CalderaFormsPreset extends \DevOwl\RealCookieBanner\presets\AbstractBlocke
28
  'attributes' => [
29
  'hosts' => [
30
  [
31
- '*google.com/recaptcha*',
32
- [
33
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
34
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
35
- ]
36
  ],
37
  [
38
- '*gstatic.com/recaptcha*',
39
- [
40
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
41
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
42
- ]
43
  ],
44
  [
45
- 'div[class*="caldera-grid"]',
46
- [
47
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
48
- self::IDENTIFIER
49
- ]
50
  ]
51
  ]
52
  ],
28
  'attributes' => [
29
  'hosts' => [
30
  [
31
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
32
+ '*google.com/recaptcha*',
33
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
34
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
35
  ],
36
  [
37
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
38
+ '*gstatic.com/recaptcha*',
39
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
40
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
41
  ],
42
  [
43
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
44
+ 'div[class*="caldera-grid"]',
45
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
46
+ self::IDENTIFIER
 
47
  ]
48
  ]
49
  ],
inc/presets/pro/blocker/CleverReachRecaptchaPreset.php CHANGED
@@ -26,25 +26,22 @@ class CleverReachRecaptchaPreset extends \DevOwl\RealCookieBanner\presets\Abstra
26
  'attributes' => [
27
  'hosts' => [
28
  [
29
- '*google.com/recaptcha*',
30
- [
31
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
32
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
33
- ]
34
  ],
35
  [
36
- '*gstatic.com/recaptcha*',
37
- [
38
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
39
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
40
- ]
41
  ],
42
  [
43
- 'form[action*="cleverreach.com"]',
44
- [
45
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
46
- self::IDENTIFIER
47
- ]
48
  ],
49
  'img[src*="cloudfront.net/cr3_images/badget"]'
50
  ]
26
  'attributes' => [
27
  'hosts' => [
28
  [
29
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
30
+ '*google.com/recaptcha*',
31
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
32
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
33
  ],
34
  [
35
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
36
+ '*gstatic.com/recaptcha*',
37
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
38
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
39
  ],
40
  [
41
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
42
+ 'form[action*="cleverreach.com"]',
43
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
44
+ self::IDENTIFIER
 
45
  ],
46
  'img[src*="cloudfront.net/cr3_images/badget"]'
47
  ]
inc/presets/pro/blocker/ContactForm7RecaptchaPreset.php CHANGED
@@ -28,25 +28,22 @@ class ContactForm7RecaptchaPreset extends \DevOwl\RealCookieBanner\presets\Abstr
28
  'attributes' => [
29
  'hosts' => [
30
  [
31
- '*google.com/recaptcha*',
32
- [
33
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
34
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
35
- ]
36
  ],
37
  [
38
- '*gstatic.com/recaptcha*',
39
- [
40
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
41
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
42
- ]
43
  ],
44
  [
45
- '*wp-content/plugins/contact-form-7/*',
46
- [
47
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
48
- self::IDENTIFIER
49
- ]
50
  ],
51
  'div[class="wpcf7"]',
52
  'link[href="//www.google.com"]'
28
  'attributes' => [
29
  'hosts' => [
30
  [
31
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
32
+ '*google.com/recaptcha*',
33
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
34
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
35
  ],
36
  [
37
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
38
+ '*gstatic.com/recaptcha*',
39
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
40
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
41
  ],
42
  [
43
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
44
+ '*wp-content/plugins/contact-form-7/*',
45
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
46
+ self::IDENTIFIER
 
47
  ],
48
  'div[class="wpcf7"]',
49
  'link[href="//www.google.com"]'
inc/presets/pro/blocker/DiviContactFormPreset.php CHANGED
@@ -28,25 +28,22 @@ class DiviContactFormPreset extends \DevOwl\RealCookieBanner\presets\AbstractBlo
28
  'attributes' => [
29
  'hosts' => [
30
  [
31
- '*google.com/recaptcha*',
32
- [
33
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
34
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
35
- ]
36
  ],
37
  [
38
- '*gstatic.com/recaptcha*',
39
- [
40
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
41
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
42
- ]
43
  ],
44
  [
45
- 'div[class*="et_pb_recaptcha_enabled"]',
46
- [
47
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
48
- self::IDENTIFIER
49
- ]
50
  ]
51
  ]
52
  ],
28
  'attributes' => [
29
  'hosts' => [
30
  [
31
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
32
+ '*google.com/recaptcha*',
33
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
34
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
35
  ],
36
  [
37
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
38
+ '*gstatic.com/recaptcha*',
39
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
40
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
41
  ],
42
  [
43
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
44
+ 'div[class*="et_pb_recaptcha_enabled"]',
45
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
46
+ self::IDENTIFIER
 
47
  ]
48
  ]
49
  ],
inc/presets/pro/blocker/ElementorFormsPreset.php CHANGED
@@ -28,25 +28,22 @@ class ElementorFormsPreset extends \DevOwl\RealCookieBanner\presets\AbstractBloc
28
  'attributes' => [
29
  'hosts' => [
30
  [
31
- '*google.com/recaptcha*',
32
- [
33
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
34
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
35
- ]
36
  ],
37
  [
38
- '*gstatic.com/recaptcha*',
39
- [
40
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
41
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
42
- ]
43
  ],
44
  [
45
- 'div[class*="elementor-widget-form"]',
46
- [
47
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
48
- self::IDENTIFIER
49
- ]
50
  ]
51
  ]
52
  ],
28
  'attributes' => [
29
  'hosts' => [
30
  [
31
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
32
+ '*google.com/recaptcha*',
33
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
34
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
35
  ],
36
  [
37
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
38
+ '*gstatic.com/recaptcha*',
39
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
40
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
41
  ],
42
  [
43
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
44
+ 'div[class*="elementor-widget-form"]',
45
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
46
+ self::IDENTIFIER
 
47
  ]
48
  ]
49
  ],
inc/presets/pro/blocker/FacebookLikePreset.php CHANGED
@@ -27,18 +27,16 @@ class FacebookLikePreset extends \DevOwl\RealCookieBanner\presets\AbstractBlocke
27
  'hosts' => \array_merge(
28
  [
29
  [
30
- '*facebook.com/plugins/like.php*',
31
- [
32
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
33
- \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
34
- ]
35
  ],
36
  [
37
- 'div[class="fb-like"]',
38
- [
39
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
40
- \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
41
- ]
42
  ]
43
  ],
44
  \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_SCRIPT
27
  'hosts' => \array_merge(
28
  [
29
  [
30
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
31
+ '*facebook.com/plugins/like.php*',
32
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
33
+ \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
 
34
  ],
35
  [
36
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
37
+ 'div[class="fb-like"]',
38
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
39
+ \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
 
40
  ]
41
  ],
42
  \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_SCRIPT
inc/presets/pro/blocker/FacebookPixelPreset.php CHANGED
@@ -17,10 +17,7 @@ class FacebookPixelPreset extends \DevOwl\RealCookieBanner\presets\AbstractBlock
17
  const IDENTIFIER = \DevOwl\RealCookieBanner\presets\pro\FacebookPixelPreset::IDENTIFIER;
18
  const VERSION = 1;
19
  const HOSTS_GROUP_SDK_FUNCTION_NAME = 'sdk-function';
20
- const HOSTS_GROUP_SDK_SCRIPT = [
21
- // This script should not be in a logical-must group, as it cannot exist standalone
22
- '*connect.facebook.net*'
23
- ];
24
  // Documented in AbstractPreset
25
  public function common() {
26
  $name = 'Facebook Pixel';
@@ -32,42 +29,37 @@ class FacebookPixelPreset extends \DevOwl\RealCookieBanner\presets\AbstractBlock
32
  'hosts' => \array_merge(
33
  [
34
  [
35
- 'fbq(\'',
36
- [
37
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
38
- self::HOSTS_GROUP_SDK_FUNCTION_NAME
39
- ]
40
  ],
41
  [
42
- 'fbq("',
43
- [
44
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
45
- self::HOSTS_GROUP_SDK_FUNCTION_NAME
46
- ]
47
  ],
48
  // <noscript> <img> tag
49
  [
50
- 'img[alt="fbpx"]',
51
- [
52
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
53
- self::HOSTS_GROUP_SDK_FUNCTION_NAME
54
- ]
55
  ],
56
  [
57
- 'img[alt="facebook_pixel"]',
58
- [
59
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
60
- self::HOSTS_GROUP_SDK_FUNCTION_NAME
61
- ]
62
  ],
63
  [
64
- '*facebook.com/tr*',
65
- [
66
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
67
- self::HOSTS_GROUP_SDK_FUNCTION_NAME,
68
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::QUERY_ARGS => [
69
- 'noscript' => ['regexp' => '/^1$/']
70
- ]
71
  ]
72
  ]
73
  ],
17
  const IDENTIFIER = \DevOwl\RealCookieBanner\presets\pro\FacebookPixelPreset::IDENTIFIER;
18
  const VERSION = 1;
19
  const HOSTS_GROUP_SDK_FUNCTION_NAME = 'sdk-function';
20
+ const HOSTS_GROUP_SDK_SCRIPT = ['*connect.facebook.net*'];
 
 
 
21
  // Documented in AbstractPreset
22
  public function common() {
23
  $name = 'Facebook Pixel';
29
  'hosts' => \array_merge(
30
  [
31
  [
32
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
33
+ 'fbq(\'',
34
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
35
+ self::HOSTS_GROUP_SDK_FUNCTION_NAME
 
36
  ],
37
  [
38
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
39
+ 'fbq("',
40
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
41
+ self::HOSTS_GROUP_SDK_FUNCTION_NAME
 
42
  ],
43
  // <noscript> <img> tag
44
  [
45
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
46
+ 'img[alt="fbpx"]',
47
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
48
+ self::HOSTS_GROUP_SDK_FUNCTION_NAME
 
49
  ],
50
  [
51
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
52
+ 'img[alt="facebook_pixel"]',
53
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
54
+ self::HOSTS_GROUP_SDK_FUNCTION_NAME
 
55
  ],
56
  [
57
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
58
+ '*facebook.com/tr*',
59
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
60
+ self::HOSTS_GROUP_SDK_FUNCTION_NAME,
61
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::QUERY_ARGS => [
62
+ ['queryArg' => 'noscript', 'regexp' => '/^1$/']
 
63
  ]
64
  ]
65
  ],
inc/presets/pro/blocker/FacebookPostPreset.php CHANGED
@@ -28,32 +28,28 @@ class FacebookPostPreset extends \DevOwl\RealCookieBanner\presets\AbstractBlocke
28
  'hosts' => \array_merge(
29
  [
30
  [
31
- '*facebook.com/plugins/post.php*',
32
- [
33
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
34
- \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
35
- ]
36
  ],
37
  [
38
- '*facebook.com/plugins/video.php*',
39
- [
40
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
41
- \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
42
- ]
43
  ],
44
  [
45
- '*fbcdn.net*',
46
- [
47
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
48
- \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
49
- ]
50
  ],
51
  [
52
- 'div[class="fb-post"]',
53
- [
54
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
55
- \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
56
- ]
57
  ]
58
  ],
59
  \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_SCRIPT
28
  'hosts' => \array_merge(
29
  [
30
  [
31
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
32
+ '*facebook.com/plugins/post.php*',
33
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
34
+ \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
 
35
  ],
36
  [
37
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
38
+ '*facebook.com/plugins/video.php*',
39
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
40
+ \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
 
41
  ],
42
  [
43
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
44
+ '*fbcdn.net*',
45
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
46
+ \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
 
47
  ],
48
  [
49
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
50
+ 'div[class="fb-post"]',
51
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
52
+ \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
 
53
  ]
54
  ],
55
  \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_SCRIPT
inc/presets/pro/blocker/FacebookSharePreset.php CHANGED
@@ -27,18 +27,16 @@ class FacebookSharePreset extends \DevOwl\RealCookieBanner\presets\AbstractBlock
27
  'hosts' => \array_merge(
28
  [
29
  [
30
- '*facebook.com/plugins/share_button.php*',
31
- [
32
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
33
- \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
34
- ]
35
  ],
36
  [
37
- 'div[class="fb-share-button"]',
38
- [
39
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
40
- \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
41
- ]
42
  ]
43
  ],
44
  \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_SCRIPT
27
  'hosts' => \array_merge(
28
  [
29
  [
30
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
31
+ '*facebook.com/plugins/share_button.php*',
32
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
33
+ \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
 
34
  ],
35
  [
36
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
37
+ 'div[class="fb-share-button"]',
38
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
39
+ \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_FUNCTION_NAME
 
40
  ]
41
  ],
42
  \DevOwl\RealCookieBanner\presets\pro\blocker\FacebookPixelPreset::HOSTS_GROUP_SDK_SCRIPT
inc/presets/pro/blocker/FiveStarRestaurantReservationsPreset.php CHANGED
@@ -29,25 +29,22 @@ class FiveStarRestaurantReservationsPreset extends \DevOwl\RealCookieBanner\pres
29
  'attributes' => [
30
  'hosts' => [
31
  [
32
- '*google.com/recaptcha*',
33
- [
34
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
35
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
36
- ]
37
  ],
38
  [
39
- '*gstatic.com/recaptcha*',
40
- [
41
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
42
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
43
- ]
44
  ],
45
  [
46
- 'form[class*="rtb-booking-form-form"]',
47
- [
48
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
49
- self::IDENTIFIER
50
- ]
51
  ]
52
  ]
53
  ],
29
  'attributes' => [
30
  'hosts' => [
31
  [
32
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
33
+ '*google.com/recaptcha*',
34
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
35
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
36
  ],
37
  [
38
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
39
+ '*gstatic.com/recaptcha*',
40
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
41
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
42
  ],
43
  [
44
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
45
+ 'form[class*="rtb-booking-form-form"]',
46
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
47
+ self::IDENTIFIER
 
48
  ]
49
  ]
50
  ],
inc/presets/pro/blocker/FormMakerRecaptchaPreset.php CHANGED
@@ -28,25 +28,22 @@ class FormMakerRecaptchaPreset extends \DevOwl\RealCookieBanner\presets\Abstract
28
  'attributes' => [
29
  'hosts' => [
30
  [
31
- '*google.com/recaptcha*',
32
- [
33
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
34
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
35
- ]
36
  ],
37
  [
38
- '*gstatic.com/recaptcha*',
39
- [
40
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
41
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
42
- ]
43
  ],
44
  [
45
- 'div[class*="fm-form-container"]',
46
- [
47
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
48
- self::IDENTIFIER
49
- ]
50
  ],
51
  '*wp-content/plugins/form-maker/js/*',
52
  '*wp-content/uploads/form-maker-frontend/js/*'
28
  'attributes' => [
29
  'hosts' => [
30
  [
31
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
32
+ '*google.com/recaptcha*',
33
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
34
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
35
  ],
36
  [
37
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
38
+ '*gstatic.com/recaptcha*',
39
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
40
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
41
  ],
42
  [
43
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
44
+ 'div[class*="fm-form-container"]',
45
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
46
+ self::IDENTIFIER
 
47
  ],
48
  '*wp-content/plugins/form-maker/js/*',
49
  '*wp-content/uploads/form-maker-frontend/js/*'
inc/presets/pro/blocker/FormidablePreset.php CHANGED
@@ -29,25 +29,22 @@ class FormidablePreset extends \DevOwl\RealCookieBanner\presets\AbstractBlockerP
29
  'attributes' => [
30
  'hosts' => [
31
  [
32
- '*google.com/recaptcha*',
33
- [
34
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
35
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
36
- ]
37
  ],
38
  [
39
- '*gstatic.com/recaptcha*',
40
- [
41
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
42
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
43
- ]
44
  ],
45
  [
46
- 'div[class*="frm_forms"]',
47
- [
48
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
49
- self::IDENTIFIER
50
- ]
51
  ]
52
  ]
53
  ],
29
  'attributes' => [
30
  'hosts' => [
31
  [
32
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
33
+ '*google.com/recaptcha*',
34
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
35
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
36
  ],
37
  [
38
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
39
+ '*gstatic.com/recaptcha*',
40
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
41
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
42
  ],
43
  [
44
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
45
+ 'div[class*="frm_forms"]',
46
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
47
+ self::IDENTIFIER
 
48
  ]
49
  ]
50
  ],
inc/presets/pro/blocker/GoogleAnalytics4Preset.php CHANGED
@@ -18,18 +18,14 @@ class GoogleAnalytics4Preset extends \DevOwl\RealCookieBanner\presets\AbstractBl
18
  const VERSION = 1;
19
  const HOSTS_GROUP_SCRIPT_PROPERTY = [
20
  [
21
- '"G-*"',
22
- [
23
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
24
- \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_PROPERTY_ID_NAME
25
- ]
26
  ],
27
  [
28
- "'G-*'",
29
- [
30
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
31
- \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_PROPERTY_ID_NAME
32
- ]
33
  ]
34
  ];
35
  /**
@@ -39,15 +35,14 @@ class GoogleAnalytics4Preset extends \DevOwl\RealCookieBanner\presets\AbstractBl
39
  */
40
  const HOSTS_GROUP_COLLECTOR = [
41
  [
42
- '*google-analytics.com/g/collect*',
43
- [
44
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST => [
45
- \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_SCRIPT_NAME,
46
- \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_PROPERTY_ID_NAME
47
- ],
48
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::QUERY_ARGS => [
49
- 'tid' => ['regexp' => '/^G-/']
50
- ]
51
  ]
52
  ]
53
  ];
@@ -64,38 +59,35 @@ class GoogleAnalytics4Preset extends \DevOwl\RealCookieBanner\presets\AbstractBl
64
  self::HOSTS_GROUP_SCRIPT_PROPERTY,
65
  [
66
  [
67
- 'gtag(',
68
- [
69
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
70
- \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_PROPERTY_ID_NAME
71
- ]
72
  ]
73
  ],
74
  \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_SCRIPT,
75
  self::HOSTS_GROUP_COLLECTOR,
76
  [
77
  [
78
- '*googletagmanager.com/gtag/js?*',
79
- [
80
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
81
- \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_SCRIPT_NAME,
82
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::QUERY_ARGS => [
83
- 'id' => ['optional' => \true, 'regexp' => '/^G-/']
84
- ]
85
  ]
86
  ]
87
  ],
88
  [
89
  [
90
- '*googletagmanager.com/gtag/js?*',
91
- [
92
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST => [
93
- \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_SCRIPT_NAME,
94
- \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_PROPERTY_ID_NAME
95
- ],
96
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::QUERY_ARGS => [
97
- 'id' => ['optional' => \false, 'regexp' => '/^G-/']
98
- ]
99
  ]
100
  ]
101
  ]
18
  const VERSION = 1;
19
  const HOSTS_GROUP_SCRIPT_PROPERTY = [
20
  [
21
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION => '"G-*"',
22
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
23
+ \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_PROPERTY_ID_NAME
 
 
24
  ],
25
  [
26
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION => "'G-*'",
27
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
28
+ \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_PROPERTY_ID_NAME
 
 
29
  ]
30
  ];
31
  /**
35
  */
36
  const HOSTS_GROUP_COLLECTOR = [
37
  [
38
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
39
+ '*google-analytics.com/g/collect*',
40
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS => [
41
+ \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_SCRIPT_NAME,
42
+ \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_PROPERTY_ID_NAME
43
+ ],
44
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::QUERY_ARGS => [
45
+ ['queryArg' => 'tid', 'regexp' => '/^G-/']
 
46
  ]
47
  ]
48
  ];
59
  self::HOSTS_GROUP_SCRIPT_PROPERTY,
60
  [
61
  [
62
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
63
+ 'gtag(',
64
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
65
+ \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_PROPERTY_ID_NAME
 
66
  ]
67
  ],
68
  \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_SCRIPT,
69
  self::HOSTS_GROUP_COLLECTOR,
70
  [
71
  [
72
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
73
+ '*googletagmanager.com/gtag/js?*',
74
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
75
+ \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_SCRIPT_NAME,
76
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::QUERY_ARGS => [
77
+ ['queryArg' => 'id', 'isOptional' => \true, 'regexp' => '/^G-/']
 
78
  ]
79
  ]
80
  ],
81
  [
82
  [
83
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
84
+ '*googletagmanager.com/gtag/js?*',
85
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS => [
86
+ \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_SCRIPT_NAME,
87
+ \DevOwl\RealCookieBanner\presets\pro\blocker\GoogleAnalyticsPreset::HOSTS_GROUP_PROPERTY_ID_NAME
88
+ ],
89
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::QUERY_ARGS => [
90
+ ['queryArg' => 'id', 'isOptional' => \false, 'regexp' => '/^G-/']
 
91
  ]
92
  ]
93
  ]
inc/presets/pro/blocker/GoogleAnalyticsPreset.php CHANGED
@@ -20,42 +20,35 @@ class GoogleAnalyticsPreset extends \DevOwl\RealCookieBanner\presets\AbstractBlo
20
  const HOSTS_GROUP_SCRIPT_NAME = 'script';
21
  const HOSTS_GROUP_SCRIPT = [
22
  [
23
- '*google-analytics.com/analytics.js*',
24
- [
25
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
26
- self::HOSTS_GROUP_SCRIPT_NAME
27
- ]
28
  ],
29
  [
30
- '*google-analytics.com/ga.js*',
31
- [
32
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
33
- self::HOSTS_GROUP_SCRIPT_NAME
34
- ]
35
  ],
36
  // Comp: RankMath
37
  [
38
- 'script[id="google_gtagjs"]',
39
- [
40
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
41
- self::HOSTS_GROUP_SCRIPT_NAME
42
- ]
43
  ]
44
  ];
45
  const HOSTS_GROUP_SCRIPT_PROPERTY = [
46
  [
47
- '"UA-*"',
48
- [
49
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
50
- self::HOSTS_GROUP_PROPERTY_ID_NAME
51
- ]
52
  ],
53
  [
54
- "'UA-*'",
55
- [
56
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
57
- self::HOSTS_GROUP_PROPERTY_ID_NAME
58
- ]
59
  ]
60
  ];
61
  /**
@@ -65,15 +58,14 @@ class GoogleAnalyticsPreset extends \DevOwl\RealCookieBanner\presets\AbstractBlo
65
  */
66
  const HOSTS_GROUP_COLLECTOR = [
67
  [
68
- '*google-analytics.com/collect*',
69
- [
70
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST => [
71
- self::HOSTS_GROUP_SCRIPT_NAME,
72
- self::HOSTS_GROUP_PROPERTY_ID_NAME
73
- ],
74
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::QUERY_ARGS => [
75
- 'tid' => ['regexp' => '/^UA-/']
76
- ]
77
  ]
78
  ]
79
  ];
@@ -90,45 +82,41 @@ class GoogleAnalyticsPreset extends \DevOwl\RealCookieBanner\presets\AbstractBlo
90
  self::HOSTS_GROUP_SCRIPT_PROPERTY,
91
  [
92
  [
93
- 'ga(',
94
- [
95
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
96
- self::HOSTS_GROUP_PROPERTY_ID_NAME
97
- ]
98
  ],
99
  [
100
- 'gtag(',
101
- [
102
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
103
- self::HOSTS_GROUP_PROPERTY_ID_NAME
104
- ]
105
  ]
106
  ],
107
  self::HOSTS_GROUP_SCRIPT,
108
  self::HOSTS_GROUP_COLLECTOR,
109
  [
110
  [
111
- '*googletagmanager.com/gtag/js?*',
112
- [
113
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
114
- self::HOSTS_GROUP_SCRIPT_NAME,
115
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::QUERY_ARGS => [
116
- 'id' => ['optional' => \true, 'regexp' => '/^UA-/']
117
- ]
118
  ]
119
  ]
120
  ],
121
  [
122
  [
123
- '*googletagmanager.com/gtag/js?*',
124
- [
125
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST => [
126
- self::HOSTS_GROUP_SCRIPT_NAME,
127
- self::HOSTS_GROUP_PROPERTY_ID_NAME
128
- ],
129
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::QUERY_ARGS => [
130
- 'id' => ['optional' => \false, 'regexp' => '/^UA-/']
131
- ]
132
  ]
133
  ]
134
  ]
20
  const HOSTS_GROUP_SCRIPT_NAME = 'script';
21
  const HOSTS_GROUP_SCRIPT = [
22
  [
23
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
24
+ '*google-analytics.com/analytics.js*',
25
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
26
+ self::HOSTS_GROUP_SCRIPT_NAME
 
27
  ],
28
  [
29
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
30
+ '*google-analytics.com/ga.js*',
31
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
32
+ self::HOSTS_GROUP_SCRIPT_NAME
 
33
  ],
34
  // Comp: RankMath
35
  [
36
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
37
+ 'script[id="google_gtagjs"]',
38
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
39
+ self::HOSTS_GROUP_SCRIPT_NAME
 
40
  ]
41
  ];
42
  const HOSTS_GROUP_SCRIPT_PROPERTY = [
43
  [
44
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION => '"UA-*"',
45
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
46
+ self::HOSTS_GROUP_PROPERTY_ID_NAME
 
 
47
  ],
48
  [
49
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION => "'UA-*'",
50
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
51
+ self::HOSTS_GROUP_PROPERTY_ID_NAME
 
 
52
  ]
53
  ];
54
  /**
58
  */
59
  const HOSTS_GROUP_COLLECTOR = [
60
  [
61
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
62
+ '*google-analytics.com/collect*',
63
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS => [
64
+ self::HOSTS_GROUP_SCRIPT_NAME,
65
+ self::HOSTS_GROUP_PROPERTY_ID_NAME
66
+ ],
67
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::QUERY_ARGS => [
68
+ ['queryArg' => 'tid', 'regexp' => '/^UA-/']
 
69
  ]
70
  ]
71
  ];
82
  self::HOSTS_GROUP_SCRIPT_PROPERTY,
83
  [
84
  [
85
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
86
+ 'ga(',
87
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
88
+ self::HOSTS_GROUP_PROPERTY_ID_NAME
 
89
  ],
90
  [
91
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
92
+ 'gtag(',
93
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
94
+ self::HOSTS_GROUP_PROPERTY_ID_NAME
 
95
  ]
96
  ],
97
  self::HOSTS_GROUP_SCRIPT,
98
  self::HOSTS_GROUP_COLLECTOR,
99
  [
100
  [
101
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
102
+ '*googletagmanager.com/gtag/js?*',
103
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
104
+ self::HOSTS_GROUP_SCRIPT_NAME,
105
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::QUERY_ARGS => [
106
+ ['queryArg' => 'id', 'isOptional' => \true, 'regexp' => '/^UA-/']
 
107
  ]
108
  ]
109
  ],
110
  [
111
  [
112
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
113
+ '*googletagmanager.com/gtag/js?*',
114
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS => [
115
+ self::HOSTS_GROUP_SCRIPT_NAME,
116
+ self::HOSTS_GROUP_PROPERTY_ID_NAME
117
+ ],
118
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::QUERY_ARGS => [
119
+ ['queryArg' => 'id', 'isOptional' => \false, 'regexp' => '/^UA-/']
 
120
  ]
121
  ]
122
  ]
inc/presets/pro/blocker/GoogleMapsPreset.php CHANGED
@@ -113,7 +113,10 @@ class GoogleMapsPreset extends \DevOwl\RealCookieBanner\presets\AbstractBlockerP
113
  // [Plugin Comp] Advanced Maps (Jet Elements)
114
  'div[class*="jet-map"]',
115
  // [Plugin Comp] https://gravitygeolocation.com/
116
- 'div[class*="ginput_container_gfgeo_google_map"]'
 
 
 
117
  ]
118
  ],
119
  'logoFile' => \DevOwl\RealCookieBanner\Core::getInstance()->getBaseAssetsUrl('logos/google-maps.png')
113
  // [Plugin Comp] Advanced Maps (Jet Elements)
114
  'div[class*="jet-map"]',
115
  // [Plugin Comp] https://gravitygeolocation.com/
116
+ 'div[class*="ginput_container_gfgeo_google_map"]',
117
+ // [Theme Comp] https://themeforest.net/item/rodich-a-restaurant-wordpress-theme/19949280
118
+ 'div[class*="rodich-google-map"]',
119
+ '.googleMap({'
120
  ]
121
  ],
122
  'logoFile' => \DevOwl\RealCookieBanner\Core::getInstance()->getBaseAssetsUrl('logos/google-maps.png')
inc/presets/pro/blocker/HappyFormsPreset.php CHANGED
@@ -29,47 +29,41 @@ class HappyFormsPreset extends \DevOwl\RealCookieBanner\presets\AbstractBlockerP
29
  'attributes' => [
30
  'hosts' => [
31
  [
32
- '*google.com/recaptcha*',
33
- [
34
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
35
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
36
- ]
37
  ],
38
  [
39
- '*gstatic.com/recaptcha*',
40
- [
41
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
42
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
43
- ]
44
  ],
45
  [
46
- 'div[class*="happyforms-form"]',
47
- [
48
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
49
- self::IDENTIFIER
50
- ]
51
  ],
52
  [
53
- '*/wp-content/plugins/happyforms-upgrade/inc/assets/js/frontend*',
54
- [
55
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
56
- self::IDENTIFIER
57
- ]
58
  ],
59
  // Newer version
60
  [
61
- '*/wp-content/plugins/happyforms-upgrade/bundles/js/frontend*',
62
- [
63
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
64
- self::IDENTIFIER
65
- ]
66
  ],
67
  [
68
- '*/wp-content/plugins/happyforms/inc/assets/js/frontend*',
69
- [
70
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
71
- self::IDENTIFIER
72
- ]
73
  ]
74
  ]
75
  ],
29
  'attributes' => [
30
  'hosts' => [
31
  [
32
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
33
+ '*google.com/recaptcha*',
34
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
35
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
36
  ],
37
  [
38
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
39
+ '*gstatic.com/recaptcha*',
40
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
41
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
42
  ],
43
  [
44
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
45
+ 'div[class*="happyforms-form"]',
46
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
47
+ self::IDENTIFIER
 
48
  ],
49
  [
50
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
51
+ '*/wp-content/plugins/happyforms-upgrade/inc/assets/js/frontend*',
52
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
53
+ self::IDENTIFIER
 
54
  ],
55
  // Newer version
56
  [
57
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
58
+ '*/wp-content/plugins/happyforms-upgrade/bundles/js/frontend*',
59
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
60
+ self::IDENTIFIER
 
61
  ],
62
  [
63
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
64
+ '*/wp-content/plugins/happyforms/inc/assets/js/frontend*',
65
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
66
+ self::IDENTIFIER
 
67
  ]
68
  ]
69
  ],
inc/presets/pro/blocker/NinjaFormsPreset.php CHANGED
@@ -28,48 +28,42 @@ class NinjaFormsPreset extends \DevOwl\RealCookieBanner\presets\AbstractBlockerP
28
  'attributes' => [
29
  'hosts' => [
30
  [
31
- '*google.com/recaptcha*',
32
- [
33
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
34
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
35
- ]
36
  ],
37
  [
38
- '*gstatic.com/recaptcha*',
39
- [
40
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
41
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
42
- ]
43
  ],
44
  [
45
  // Gutenberg
46
- 'div[class="wp-block-ninja-forms-form"]',
47
- [
48
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
49
- self::IDENTIFIER
50
- ]
51
  ],
52
  [
53
- 'div[class*="nf-form-cont"]',
54
- [
55
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
56
- self::IDENTIFIER
57
- ]
58
  ],
59
  [
60
- '*wp-content/plugins/ninja-forms/assets/js*',
61
- [
62
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
63
- self::IDENTIFIER
64
- ]
65
  ],
66
  [
67
  // All official plugins of Ninja Forms
68
- '*wp-content/plugins/ninja-forms-*/*',
69
- [
70
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
71
- self::IDENTIFIER
72
- ]
73
  ]
74
  ]
75
  ],
28
  'attributes' => [
29
  'hosts' => [
30
  [
31
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
32
+ '*google.com/recaptcha*',
33
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
34
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
35
  ],
36
  [
37
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
38
+ '*gstatic.com/recaptcha*',
39
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
40
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
41
  ],
42
  [
43
  // Gutenberg
44
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
45
+ 'div[class="wp-block-ninja-forms-form"]',
46
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
47
+ self::IDENTIFIER
 
48
  ],
49
  [
50
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
51
+ 'div[class*="nf-form-cont"]',
52
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
53
+ self::IDENTIFIER
 
54
  ],
55
  [
56
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
57
+ '*wp-content/plugins/ninja-forms/assets/js*',
58
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
59
+ self::IDENTIFIER
 
60
  ],
61
  [
62
  // All official plugins of Ninja Forms
63
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
64
+ '*wp-content/plugins/ninja-forms-*/*',
65
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
66
+ self::IDENTIFIER
 
67
  ]
68
  ]
69
  ],
inc/presets/pro/blocker/QuformRecaptchaPreset.php CHANGED
@@ -28,25 +28,22 @@ class QuformRecaptchaPreset extends \DevOwl\RealCookieBanner\presets\AbstractBlo
28
  'attributes' => [
29
  'hosts' => [
30
  [
31
- '*google.com/recaptcha*',
32
- [
33
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
34
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
35
- ]
36
  ],
37
  [
38
- '*gstatic.com/recaptcha*',
39
- [
40
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
41
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
42
- ]
43
  ],
44
  [
45
- 'div[class*="quform-form"]',
46
- [
47
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
48
- self::IDENTIFIER
49
- ]
50
  ]
51
  ]
52
  ],
28
  'attributes' => [
29
  'hosts' => [
30
  [
31
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
32
+ '*google.com/recaptcha*',
33
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
34
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
35
  ],
36
  [
37
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
38
+ '*gstatic.com/recaptcha*',
39
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
40
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
41
  ],
42
  [
43
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
44
+ 'div[class*="quform-form"]',
45
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
46
+ self::IDENTIFIER
 
47
  ]
48
  ]
49
  ],
inc/presets/pro/blocker/WPFormsPreset.php CHANGED
@@ -29,25 +29,22 @@ class WPFormsPreset extends \DevOwl\RealCookieBanner\presets\AbstractBlockerPres
29
  'attributes' => [
30
  'hosts' => [
31
  [
32
- '*google.com/recaptcha*',
33
- [
34
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
35
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
36
- ]
37
  ],
38
  [
39
- '*gstatic.com/recaptcha*',
40
- [
41
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
42
- \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
43
- ]
44
  ],
45
  [
46
- 'div[class*="wpforms-container"]',
47
- [
48
- \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::LOGICAL_MUST =>
49
- self::IDENTIFIER
50
- ]
51
  ],
52
  '*wpformsRecaptchaLoad*'
53
  ]
29
  'attributes' => [
30
  'hosts' => [
31
  [
32
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
33
+ '*google.com/recaptcha*',
34
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
35
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
36
  ],
37
  [
38
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
39
+ '*gstatic.com/recaptcha*',
40
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
41
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::GOOGLE_RECAPTCHA
 
42
  ],
43
  [
44
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::EXPRESSION =>
45
+ 'div[class*="wpforms-container"]',
46
+ \DevOwl\RealCookieBanner\presets\middleware\BlockerHostsOptionsMiddleware::ASSIGNED_TO_GROUPS =>
47
+ self::IDENTIFIER
 
48
  ],
49
  '*wpformsRecaptchaLoad*'
50
  ]
inc/scanner/OnChangeDetection.php CHANGED
@@ -4,6 +4,7 @@ namespace DevOwl\RealCookieBanner\scanner;
4
 
5
  use DevOwl\RealCookieBanner\base\UtilsProvider;
6
  use DevOwl\RealCookieBanner\Core;
 
7
  use WP_Post;
8
  // @codeCoverageIgnoreStart
9
  \defined('ABSPATH') or die('No script kiddies please!');
@@ -41,8 +42,8 @@ class OnChangeDetection {
41
  * @param WP_Post $post_before
42
  */
43
  public function post_updated($post_id, $post_after, $post_before) {
44
- $permalinkAfter = $this->getPermalink($post_after);
45
- $permalinkBefore = $this->getPermalink($post_before);
46
  if ($permalinkAfter !== $permalinkBefore) {
47
  $this->scanner->getQuery()->removeSourceUrls([$permalinkBefore]);
48
  }
@@ -55,7 +56,7 @@ class OnChangeDetection {
55
  public function delete_post($post_id) {
56
  $post = get_post($post_id);
57
  if ($post) {
58
- $link = $this->getPermalink($post);
59
  if (!empty($link)) {
60
  $this->scanner->getQuery()->removeSourceUrls([$link]);
61
  }
@@ -67,7 +68,7 @@ class OnChangeDetection {
67
  * @param int $post_id
68
  */
69
  public function wp_trash_post($post_id) {
70
- $link = $this->getPermalink(get_post($post_id));
71
  if (!empty($link)) {
72
  $this->scanner->getQuery()->removeSourceUrls([$link]);
73
  }
@@ -79,7 +80,7 @@ class OnChangeDetection {
79
  */
80
  protected function fromPost($post) {
81
  if (is_post_type_viewable($post->post_type)) {
82
- $link = $this->getPermalink($post);
83
  if (!empty($link)) {
84
  if ($post->post_status === 'publish') {
85
  $this->addUrlToScanner($link);
@@ -110,21 +111,6 @@ class OnChangeDetection {
110
  }
111
  $this->scanner->addUrlsToQueue(\array_unique($urls));
112
  }
113
- /**
114
- * Always create a clone of the post cause we need to force the `post_status` to get the valid permalink.
115
- *
116
- * @param WP_Post $post
117
- * @see https://wordpress.stackexchange.com/a/42988/83335
118
- */
119
- protected function getPermalink($post) {
120
- $clone = clone $post;
121
- if ($clone->post_status === 'trash') {
122
- $clone->post_name = \preg_replace('/__trashed$/', '', $clone->post_name);
123
- }
124
- $clone->post_status = 'publish';
125
- $clone->post_name = sanitize_title($clone->post_name ? $clone->post_name : $clone->post_title, $clone->ID);
126
- return get_permalink($clone);
127
- }
128
  /**
129
  * Getter.
130
  *
4
 
5
  use DevOwl\RealCookieBanner\base\UtilsProvider;
6
  use DevOwl\RealCookieBanner\Core;
7
+ use DevOwl\RealCookieBanner\Utils;
8
  use WP_Post;
9
  // @codeCoverageIgnoreStart
10
  \defined('ABSPATH') or die('No script kiddies please!');
42
  * @param WP_Post $post_before
43
  */
44
  public function post_updated($post_id, $post_after, $post_before) {
45
+ $permalinkAfter = \DevOwl\RealCookieBanner\Utils::getPermalink($post_after);
46
+ $permalinkBefore = \DevOwl\RealCookieBanner\Utils::getPermalink($post_before);
47
  if ($permalinkAfter !== $permalinkBefore) {
48
  $this->scanner->getQuery()->removeSourceUrls([$permalinkBefore]);
49
  }
56
  public function delete_post($post_id) {
57
  $post = get_post($post_id);
58
  if ($post) {
59
+ $link = \DevOwl\RealCookieBanner\Utils::getPermalink($post);
60
  if (!empty($link)) {
61
  $this->scanner->getQuery()->removeSourceUrls([$link]);
62
  }
68
  * @param int $post_id
69
  */
70
  public function wp_trash_post($post_id) {
71
+ $link = \DevOwl\RealCookieBanner\Utils::getPermalink(get_post($post_id));
72
  if (!empty($link)) {
73
  $this->scanner->getQuery()->removeSourceUrls([$link]);
74
  }
80
  */
81
  protected function fromPost($post) {
82
  if (is_post_type_viewable($post->post_type)) {
83
+ $link = \DevOwl\RealCookieBanner\Utils::getPermalink($post);
84
  if (!empty($link)) {
85
  if ($post->post_status === 'publish') {
86
  $this->addUrlToScanner($link);
111
  }
112
  $this->scanner->addUrlsToQueue(\array_unique($urls));
113
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  /**
115
  * Getter.
116
  *
inc/scanner/Query.php CHANGED
@@ -2,6 +2,7 @@
2
 
3
  namespace DevOwl\RealCookieBanner\scanner;
4
 
 
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\HeadlessContentBlocker\Constants;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\HeadlessContentBlocker\plugins\scanner\ScannableBlockable;
7
  use DevOwl\RealCookieBanner\base\UtilsProvider;
@@ -369,11 +370,18 @@ class Query {
369
  foreach ($hosts as $host) {
370
  $hostsArray = \array_merge($hostsArray, \explode("\n", $host));
371
  }
372
- $blockable = new \DevOwl\RealCookieBanner\Vendor\DevOwl\HeadlessContentBlocker\plugins\scanner\ScannableBlockable(
373
- null,
374
- \array_filter($hostsArray)
375
- );
376
- return \array_keys($blockable->getRegularExpressions());
 
 
 
 
 
 
 
377
  }
378
  /**
379
  * Transform a set of expression strings to a valid SQL statement. The regular
2
 
3
  namespace DevOwl\RealCookieBanner\scanner;
4
 
5
+ use DevOwl\RealCookieBanner\Vendor\DevOwl\FastHtmlTag\finder\SelectorSyntaxFinder;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\HeadlessContentBlocker\Constants;
7
  use DevOwl\RealCookieBanner\Vendor\DevOwl\HeadlessContentBlocker\plugins\scanner\ScannableBlockable;
8
  use DevOwl\RealCookieBanner\base\UtilsProvider;
370
  foreach ($hosts as $host) {
371
  $hostsArray = \array_merge($hostsArray, \explode("\n", $host));
372
  }
373
+ $urlExpressions = [];
374
+ foreach (\array_filter($hostsArray) as $host) {
375
+ // Filter out custom element expressions
376
+ if (
377
+ \DevOwl\RealCookieBanner\Vendor\DevOwl\FastHtmlTag\finder\SelectorSyntaxFinder::fromExpression(
378
+ $host
379
+ ) === \false
380
+ ) {
381
+ $urlExpressions[] = $host;
382
+ }
383
+ }
384
+ return $urlExpressions;
385
  }
386
  /**
387
  * Transform a set of expression strings to a valid SQL statement. The regular
inc/scanner/Scanner.php CHANGED
@@ -279,18 +279,14 @@ class Scanner {
279
  }
280
  $presets = new \DevOwl\RealCookieBanner\presets\BlockerPresets();
281
  foreach ($presets->getAllFromCache() as $preset) {
282
- if ($preset['disabled']) {
283
  continue;
284
  }
285
- $identifier = $preset['identifier'];
286
- if (isset($preset[\DevOwl\RealCookieBanner\settings\Blocker::META_NAME_HOSTS])) {
287
- $blockables[] = new \DevOwl\RealCookieBanner\Vendor\DevOwl\HeadlessContentBlocker\plugins\scanner\ScannableBlockable(
288
- $identifier,
289
- $preset[\DevOwl\RealCookieBanner\settings\Blocker::META_NAME_HOSTS],
290
- $preset['extended'] ?? null,
291
- $preset['scanOptions'] ?? []
292
- );
293
- }
294
  }
295
  return $blockables;
296
  }
279
  }
280
  $presets = new \DevOwl\RealCookieBanner\presets\BlockerPresets();
281
  foreach ($presets->getAllFromCache() as $preset) {
282
+ if ($preset['disabled'] || !isset($preset['scanOptions'])) {
283
  continue;
284
  }
285
+ $blockables[] = new \DevOwl\RealCookieBanner\Vendor\DevOwl\HeadlessContentBlocker\plugins\scanner\ScannableBlockable(
286
+ $preset['identifier'],
287
+ $preset['extended'] ?? null,
288
+ $preset['scanOptions'] ?? []
289
+ );
 
 
 
 
290
  }
291
  return $blockables;
292
  }
inc/settings/Consent.php CHANGED
@@ -2,6 +2,7 @@
2
 
3
  namespace DevOwl\RealCookieBanner\settings;
4
 
 
5
  use DevOwl\RealCookieBanner\base\UtilsProvider;
6
  use DevOwl\RealCookieBanner\lite\settings\Consent as LiteConsent;
7
  use DevOwl\RealCookieBanner\overrides\interfce\settings\IOverrideConsent;
@@ -22,12 +23,14 @@ class Consent implements \DevOwl\RealCookieBanner\overrides\interfce\settings\IO
22
  const SETTING_SAVE_IP = RCB_OPT_PREFIX . '-save-ip';
23
  const SETTING_EPRIVACY_USA = RCB_OPT_PREFIX . '-eprivacy-usa';
24
  const SETTING_AGE_NOTICE = RCB_OPT_PREFIX . '-age-notice';
 
25
  const DEFAULT_ACCEPT_ALL_FOR_BOTS = \true;
26
  const DEFAULT_RESPECT_DO_NOT_TRACK = \false;
27
  const DEFAULT_COOKIE_DURATION = 365;
28
  const DEFAULT_SAVE_IP = \false;
29
  const DEFAULT_EPRIVACY_USA = \false;
30
  const DEFAULT_AGE_NOTICE = \true;
 
31
  /**
32
  * Singleton instance.
33
  *
@@ -69,6 +72,11 @@ class Consent implements \DevOwl\RealCookieBanner\overrides\interfce\settings\IO
69
  self::DEFAULT_AGE_NOTICE,
70
  'boolval'
71
  );
 
 
 
 
 
72
  $this->overrideEnableOptionsAutoload();
73
  }
74
  /**
@@ -89,6 +97,10 @@ class Consent implements \DevOwl\RealCookieBanner\overrides\interfce\settings\IO
89
  ]);
90
  register_setting(self::OPTION_GROUP, self::SETTING_SAVE_IP, ['type' => 'boolean', 'show_in_rest' => \true]);
91
  register_setting(self::OPTION_GROUP, self::SETTING_AGE_NOTICE, ['type' => 'boolean', 'show_in_rest' => \true]);
 
 
 
 
92
  $this->overrideRegister();
93
  }
94
  /**
@@ -123,6 +135,14 @@ class Consent implements \DevOwl\RealCookieBanner\overrides\interfce\settings\IO
123
  public function isAgeNoticeEnabled() {
124
  return get_option(self::SETTING_AGE_NOTICE);
125
  }
 
 
 
 
 
 
 
 
126
  /**
127
  * Get the cookie duration for the consent cookies.
128
  *
@@ -152,4 +172,14 @@ class Consent implements \DevOwl\RealCookieBanner\overrides\interfce\settings\IO
152
  public static function getInstance() {
153
  return self::$me === null ? (self::$me = new \DevOwl\RealCookieBanner\settings\Consent()) : self::$me;
154
  }
 
 
 
 
 
 
 
 
 
 
155
  }
2
 
3
  namespace DevOwl\RealCookieBanner\settings;
4
 
5
+ use DevOwl\RealCookieBanner\Core;
6
  use DevOwl\RealCookieBanner\base\UtilsProvider;
7
  use DevOwl\RealCookieBanner\lite\settings\Consent as LiteConsent;
8
  use DevOwl\RealCookieBanner\overrides\interfce\settings\IOverrideConsent;
23
  const SETTING_SAVE_IP = RCB_OPT_PREFIX . '-save-ip';
24
  const SETTING_EPRIVACY_USA = RCB_OPT_PREFIX . '-eprivacy-usa';
25
  const SETTING_AGE_NOTICE = RCB_OPT_PREFIX . '-age-notice';
26
+ const SETTING_LIST_SERVICES_NOTICE = RCB_OPT_PREFIX . '-list-services-notice';
27
  const DEFAULT_ACCEPT_ALL_FOR_BOTS = \true;
28
  const DEFAULT_RESPECT_DO_NOT_TRACK = \false;
29
  const DEFAULT_COOKIE_DURATION = 365;
30
  const DEFAULT_SAVE_IP = \false;
31
  const DEFAULT_EPRIVACY_USA = \false;
32
  const DEFAULT_AGE_NOTICE = \true;
33
+ const DEFAULT_LIST_SERVICES_NOTICE = \true;
34
  /**
35
  * Singleton instance.
36
  *
72
  self::DEFAULT_AGE_NOTICE,
73
  'boolval'
74
  );
75
+ \DevOwl\RealCookieBanner\settings\General::enableOptionAutoload(
76
+ self::SETTING_LIST_SERVICES_NOTICE,
77
+ self::DEFAULT_LIST_SERVICES_NOTICE,
78
+ 'boolval'
79
+ );
80
  $this->overrideEnableOptionsAutoload();
81
  }
82
  /**
97
  ]);
98
  register_setting(self::OPTION_GROUP, self::SETTING_SAVE_IP, ['type' => 'boolean', 'show_in_rest' => \true]);
99
  register_setting(self::OPTION_GROUP, self::SETTING_AGE_NOTICE, ['type' => 'boolean', 'show_in_rest' => \true]);
100
+ register_setting(self::OPTION_GROUP, self::SETTING_LIST_SERVICES_NOTICE, [
101
+ 'type' => 'boolean',
102
+ 'show_in_rest' => \true
103
+ ]);
104
  $this->overrideRegister();
105
  }
106
  /**
135
  public function isAgeNoticeEnabled() {
136
  return get_option(self::SETTING_AGE_NOTICE);
137
  }
138
+ /**
139
+ * Check if list-services notice hint is enabled
140
+ *
141
+ * @return boolean
142
+ */
143
+ public function isListServicesNoticeEnabled() {
144
+ return get_option(self::SETTING_LIST_SERVICES_NOTICE);
145
+ }
146
  /**
147
  * Get the cookie duration for the consent cookies.
148
  *
172
  public static function getInstance() {
173
  return self::$me === null ? (self::$me = new \DevOwl\RealCookieBanner\settings\Consent()) : self::$me;
174
  }
175
+ /**
176
+ * Deactivate "Naming of all services in first view" as it should not be activated automatically for already existing users.
177
+ *
178
+ * @param string|false $installed
179
+ */
180
+ public static function new_version_installation_after_2_17_3($installed) {
181
+ if (\DevOwl\RealCookieBanner\Core::versionCompareOlderThan($installed, '2.17.3', ['2.17.4', '2.18.0'])) {
182
+ update_option(self::SETTING_LIST_SERVICES_NOTICE, '');
183
+ }
184
+ }
185
  }
inc/settings/Cookie.php CHANGED
@@ -483,6 +483,32 @@ class Cookie {
483
  public function getAllCount() {
484
  return \array_sum(\array_map('intval', \array_values((array) wp_count_posts(self::CPT_NAME))));
485
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
486
  /**
487
  * Modify the cookie item schema and allow to pass the opt-in codes as base64-encoded strings
488
  * so they do not get inspected as XSS e.g. in Cloudflare.
483
  public function getAllCount() {
484
  return \array_sum(\array_map('intval', \array_values((array) wp_count_posts(self::CPT_NAME))));
485
  }
486
+ /**
487
+ * Get a created service by identifier.
488
+ *
489
+ * @param string $identifier
490
+ */
491
+ public function getServiceByIdentifier($identifier) {
492
+ $realCookieBannerService = get_posts(
493
+ \DevOwl\RealCookieBanner\Core::getInstance()->queryArguments(
494
+ [
495
+ 'post_type' => \DevOwl\RealCookieBanner\settings\Cookie::CPT_NAME,
496
+ 'numberposts' => -1,
497
+ 'nopaging' => \true,
498
+ 'meta_query' => [
499
+ [
500
+ 'key' => \DevOwl\RealCookieBanner\settings\Blocker::META_NAME_PRESET_ID,
501
+ 'value' => $identifier,
502
+ 'compare' => '='
503
+ ]
504
+ ],
505
+ 'post_status' => ['publish', 'private', 'draft']
506
+ ],
507
+ 'Cookie::getServiceByIdentifier'
508
+ )
509
+ );
510
+ return $realCookieBannerService[0] ?? null;
511
+ }
512
  /**
513
  * Modify the cookie item schema and allow to pass the opt-in codes as base64-encoded strings
514
  * so they do not get inspected as XSS e.g. in Cloudflare.
inc/settings/General.php CHANGED
@@ -3,9 +3,12 @@
3
  namespace DevOwl\RealCookieBanner\settings;
4
 
5
  use DevOwl\RealCookieBanner\base\UtilsProvider;
 
6
  use DevOwl\RealCookieBanner\lite\settings\General as LiteGeneral;
7
  use DevOwl\RealCookieBanner\overrides\interfce\settings\IOverrideGeneral;
8
  use DevOwl\RealCookieBanner\view\customize\banner\Legal;
 
 
9
  // @codeCoverageIgnoreStart
10
  \defined('ABSPATH') or die('No script kiddies please!');
11
  // Avoid direct file request
@@ -170,7 +173,7 @@ class General implements \DevOwl\RealCookieBanner\overrides\interfce\settings\IO
170
  } else {
171
  $id = get_option(self::SETTING_IMPRINT_ID);
172
  if ($id > 0) {
173
- $permalink = get_permalink($id);
174
  if ($permalink !== \false) {
175
  return $permalink;
176
  }
@@ -194,7 +197,7 @@ class General implements \DevOwl\RealCookieBanner\overrides\interfce\settings\IO
194
  } else {
195
  $id = get_option(self::SETTING_PRIVACY_POLICY_ID, $this->getDefaultPrivacyPolicy());
196
  if ($id > 0) {
197
- $permalink = get_permalink($id);
198
  if ($permalink !== \false) {
199
  return $permalink;
200
  }
@@ -206,7 +209,10 @@ class General implements \DevOwl\RealCookieBanner\overrides\interfce\settings\IO
206
  * Get default privacy policy post ID.
207
  */
208
  public function getDefaultPrivacyPolicy() {
209
- return \intval(get_option('wp_page_for_privacy_policy', self::DEFAULT_PRIVACY_POLICY_ID));
 
 
 
210
  }
211
  /**
212
  * Return a map of `post_id` to permalink URL for imprint and privacy policy.
@@ -225,6 +231,108 @@ class General implements \DevOwl\RealCookieBanner\overrides\interfce\settings\IO
225
  }
226
  return $result;
227
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  /**
229
  * Get singleton instance.
230
  *
3
  namespace DevOwl\RealCookieBanner\settings;
4
 
5
  use DevOwl\RealCookieBanner\base\UtilsProvider;
6
+ use DevOwl\RealCookieBanner\Core;
7
  use DevOwl\RealCookieBanner\lite\settings\General as LiteGeneral;
8
  use DevOwl\RealCookieBanner\overrides\interfce\settings\IOverrideGeneral;
9
  use DevOwl\RealCookieBanner\view\customize\banner\Legal;
10
+ use DevOwl\RealCookieBanner\presets\PresetIdentifierMap;
11
+ use DevOwl\RealCookieBanner\Utils;
12
  // @codeCoverageIgnoreStart
13
  \defined('ABSPATH') or die('No script kiddies please!');
14
  // Avoid direct file request
173
  } else {
174
  $id = get_option(self::SETTING_IMPRINT_ID);
175
  if ($id > 0) {
176
+ $permalink = \DevOwl\RealCookieBanner\Utils::getPermalink($id);
177
  if ($permalink !== \false) {
178
  return $permalink;
179
  }
197
  } else {
198
  $id = get_option(self::SETTING_PRIVACY_POLICY_ID, $this->getDefaultPrivacyPolicy());
199
  if ($id > 0) {
200
+ $permalink = \DevOwl\RealCookieBanner\Utils::getPermalink($id);
201
  if ($permalink !== \false) {
202
  return $permalink;
203
  }
209
  * Get default privacy policy post ID.
210
  */
211
  public function getDefaultPrivacyPolicy() {
212
+ $privacyPolicy = \intval(get_option('wp_page_for_privacy_policy', self::DEFAULT_PRIVACY_POLICY_ID));
213
+ return \in_array(get_post_status($privacyPolicy), ['draft', 'publish'], \true)
214
+ ? $privacyPolicy
215
+ : self::DEFAULT_PRIVACY_POLICY_ID;
216
  }
217
  /**
218
  * Return a map of `post_id` to permalink URL for imprint and privacy policy.
231
  }
232
  return $result;
233
  }
234
+ /**
235
+ * When a page gets deleted, check if the value is our configured imprint or privacy policy
236
+ * page and reset the value accordingly.
237
+ *
238
+ * @param number $postId
239
+ */
240
+ public function delete_post_imprint_privacy_policy($postId) {
241
+ $imprintId = get_option(self::SETTING_IMPRINT_ID);
242
+ $privacyPolicyId = get_option(self::SETTING_PRIVACY_POLICY_ID);
243
+ if ($postId === $imprintId) {
244
+ update_option(self::SETTING_IMPRINT_ID, self::DEFAULT_IMPRINT_ID);
245
+ }
246
+ if ($postId === $privacyPolicyId) {
247
+ update_option(self::SETTING_PRIVACY_POLICY_ID, self::DEFAULT_PRIVACY_POLICY_ID);
248
+ }
249
+ }
250
+ /**
251
+ * When Settings > Privacy got adjusted, apply the new privacy policy to the cookie settings, too.
252
+ *
253
+ * @param int $old_value
254
+ * @param int $new_value
255
+ */
256
+ public function update_option_wp_page_for_privacy_policy($old_value, $new_value) {
257
+ $compLanguage = \DevOwl\RealCookieBanner\Core::getInstance()->getCompLanguage();
258
+ if ($compLanguage !== null) {
259
+ $new_value = $compLanguage->getOriginalPostId($new_value, 'page');
260
+ }
261
+ if (get_post_status($new_value) === 'publish') {
262
+ update_option(self::SETTING_PRIVACY_POLICY_ID, $new_value);
263
+ }
264
+ }
265
+ /**
266
+ * When the privacy policy page gets adjusted, let's update the Real Cookie Banner services
267
+ * including the WPML/PolyLang translations.
268
+ *
269
+ * @param int $old_value
270
+ * @param int $new_value
271
+ */
272
+ public function update_option_privacy_policy($old_value, $new_value) {
273
+ $compLanguage = \DevOwl\RealCookieBanner\Core::getInstance()->getCompLanguage();
274
+ $fnUpdate = function () use ($compLanguage, $new_value) {
275
+ $realCookieBannerService = \DevOwl\RealCookieBanner\settings\Cookie::getInstance()->getServiceByIdentifier(
276
+ \DevOwl\RealCookieBanner\presets\PresetIdentifierMap::REAL_COOKIE_BANNER
277
+ );
278
+ if ($realCookieBannerService !== null) {
279
+ $rcbServiceId = $realCookieBannerService->ID;
280
+ $oldPrivacyPolicy = get_post_meta(
281
+ $rcbServiceId,
282
+ \DevOwl\RealCookieBanner\settings\Cookie::META_NAME_PROVIDER_PRIVACY_POLICY,
283
+ \true
284
+ );
285
+ $postId = $new_value;
286
+ if ($compLanguage !== null) {
287
+ $postId = $compLanguage->getCurrentPostId($postId, 'page');
288
+ }
289
+ $permalink = \DevOwl\RealCookieBanner\Utils::getPermalink($postId);
290
+ if (!empty($permalink)) {
291
+ update_post_meta(
292
+ $rcbServiceId,
293
+ \DevOwl\RealCookieBanner\settings\Cookie::META_NAME_PROVIDER_PRIVACY_POLICY,
294
+ $permalink
295
+ );
296
+ // Search for all other local services like "WordPress Comments"
297
+ if (!empty($oldPrivacyPolicy)) {
298
+ $postsWithOldPrivacyPolicy = get_posts(
299
+ \DevOwl\RealCookieBanner\Core::getInstance()->queryArguments(
300
+ [
301
+ 'lang' => 'all',
302
+ 'post_type' => \DevOwl\RealCookieBanner\settings\Cookie::CPT_NAME,
303
+ 'numberposts' => -1,
304
+ 'fields' => 'ids',
305
+ 'nopaging' => \true,
306
+ 'meta_query' => [
307
+ [
308
+ 'key' =>
309
+ \DevOwl\RealCookieBanner\settings\Cookie::META_NAME_PROVIDER_PRIVACY_POLICY,
310
+ 'value' => $oldPrivacyPolicy,
311
+ 'compare' => '='
312
+ ]
313
+ ],
314
+ 'post_status' => ['publish', 'private', 'draft']
315
+ ],
316
+ 'General::update_option_privacy_policy'
317
+ )
318
+ );
319
+ foreach ($postsWithOldPrivacyPolicy as $postWithOldPrivacyPolicy) {
320
+ update_post_meta(
321
+ $postWithOldPrivacyPolicy,
322
+ \DevOwl\RealCookieBanner\settings\Cookie::META_NAME_PROVIDER_PRIVACY_POLICY,
323
+ $permalink
324
+ );
325
+ }
326
+ }
327
+ }
328
+ }
329
+ };
330
+ if ($compLanguage !== null && $compLanguage->isActive()) {
331
+ $compLanguage->iterateAllLanguagesContext($fnUpdate);
332
+ } else {
333
+ $fnUpdate();
334
+ }
335
+ }
336
  /**
337
  * Get singleton instance.
338
  *
inc/view/ConfigPage.php CHANGED
@@ -5,6 +5,8 @@ namespace DevOwl\RealCookieBanner\view;
5
  use DevOwl\RealCookieBanner\base\UtilsProvider;
6
  use DevOwl\RealCookieBanner\settings\General;
7
  use DevOwl\RealCookieBanner\Core;
 
 
8
  use DevOwl\RealCookieBanner\Utils;
9
  use WP_Admin_Bar;
10
  // @codeCoverageIgnoreStart
@@ -22,12 +24,67 @@ class ConfigPage {
22
  const NEXT_PRO_NOTICE = 60 * 60 * 24 * 30;
23
  // 30 days
24
  const ADMIN_BAR_TOP_LEVEL_NODE_ID = 'rcb-top-node';
 
25
  /**
26
  * C'tor.
27
  */
28
  private function __construct() {
29
  // Silence is golden.
30
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  /**
32
  * Creates an admin notice for preinstalled environments.
33
  */
@@ -193,15 +250,14 @@ class ConfigPage {
193
  '<span style="color:#b63c3c;">&#11044;</span> %s',
194
  __('Disabled', RCB_TD)
195
  );
 
196
  $wp_admin_bar->add_menu([
197
  'parent' => self::ADMIN_BAR_TOP_LEVEL_NODE_ID,
198
  'id' => 'rcb-cookie-banner-active',
199
  'title' => \sprintf(
200
  '%s: %s',
201
  __('Cookie Banner', RCB_TD),
202
- \DevOwl\RealCookieBanner\settings\General::getInstance()->isBannerActive()
203
- ? $enabledLabel
204
- : $disabledLabel
205
  )
206
  ]);
207
  $wp_admin_bar->add_menu([
@@ -210,6 +266,7 @@ class ConfigPage {
210
  'title' => \sprintf(
211
  '%s: %s',
212
  __('Content Blocker', RCB_TD),
 
213
  \DevOwl\RealCookieBanner\settings\General::getInstance()->isBlockerActive()
214
  ? $enabledLabel
215
  : $disabledLabel
5
  use DevOwl\RealCookieBanner\base\UtilsProvider;
6
  use DevOwl\RealCookieBanner\settings\General;
7
  use DevOwl\RealCookieBanner\Core;
8
+ use DevOwl\RealCookieBanner\settings\Cookie;
9
+ use DevOwl\RealCookieBanner\settings\CookieGroup;
10
  use DevOwl\RealCookieBanner\Utils;
11
  use WP_Admin_Bar;
12
  // @codeCoverageIgnoreStart
24
  const NEXT_PRO_NOTICE = 60 * 60 * 24 * 30;
25
  // 30 days
26
  const ADMIN_BAR_TOP_LEVEL_NODE_ID = 'rcb-top-node';
27
+ const TRANSIENT_SERVICES_WITH_EMPTY_PRIVACY_POLICY = RCB_OPT_PREFIX . '-services-with-empty-privacy-policy';
28
  /**
29
  * C'tor.
30
  */
31
  private function __construct() {
32
  // Silence is golden.
33
  }
34
+ /**
35
+ * Create an admin notice for services without privacy policy set.
36
+ */
37
+ public function admin_notices_services_with_empty_privacy_policy() {
38
+ $url = $this->getUrl();
39
+ $servicesWithoutPrivacyPolicy = get_posts(
40
+ \DevOwl\RealCookieBanner\Core::getInstance()->queryArguments(
41
+ [
42
+ 'post_type' => \DevOwl\RealCookieBanner\settings\Cookie::CPT_NAME,
43
+ 'fields' => 'ids',
44
+ 'numberposts' => -1,
45
+ 'nopaging' => \true,
46
+ 'meta_query' => [
47
+ [
48
+ 'key' => \DevOwl\RealCookieBanner\settings\Cookie::META_NAME_PROVIDER_PRIVACY_POLICY,
49
+ 'value' => '',
50
+ 'compare' => ''
51
+ ]
52
+ ],
53
+ 'post_status' => ['publish', 'private', 'draft']
54
+ ],
55
+ 'ConfigPage::admin_notices_services_with_empty_privacy_policy'
56
+ )
57
+ );
58
+ if (\count($servicesWithoutPrivacyPolicy) === 0) {
59
+ return;
60
+ }
61
+ $liOutput = [];
62
+ $isConfigPage = $this->isVisible();
63
+ foreach ($servicesWithoutPrivacyPolicy as $serviceId) {
64
+ $service = get_post($serviceId);
65
+ $cookieGroup =
66
+ get_the_terms($service, \DevOwl\RealCookieBanner\settings\CookieGroup::TAXONOMY_NAME)[0] ?? null;
67
+ if ($cookieGroup === null || $service === null) {
68
+ continue;
69
+ }
70
+ $liOutput[] = \sprintf(
71
+ '<li data-id="%d">%s &bull; <a href="%s" target="%s">%s</a></li>',
72
+ $serviceId,
73
+ $service->post_title,
74
+ esc_attr($url . '#/cookies/' . $cookieGroup->term_id . '/edit/' . $serviceId),
75
+ $isConfigPage ? '_top' : '_blank',
76
+ __('Set privacy policy URL', RCB_TD)
77
+ );
78
+ }
79
+ echo \sprintf(
80
+ '<div class="notice notice-warning" id="rcb-services-with-empty-privacy-policy-notice"><p>%s</p><ul>%s</ul></div>',
81
+ __(
82
+ 'There are no privacy policies with further information linked for the following services in your cookie banner. We now consider these to be mandatory in order to comply with the information obligations under the GDPR. Please provide a privacy policy for each service!',
83
+ RCB_TD
84
+ ),
85
+ \join('', $liOutput)
86
+ );
87
+ }
88
  /**
89
  * Creates an admin notice for preinstalled environments.
90
  */
250
  '<span style="color:#b63c3c;">&#11044;</span> %s',
251
  __('Disabled', RCB_TD)
252
  );
253
+ $isBannerActive = \DevOwl\RealCookieBanner\settings\General::getInstance()->isBannerActive();
254
  $wp_admin_bar->add_menu([
255
  'parent' => self::ADMIN_BAR_TOP_LEVEL_NODE_ID,
256
  'id' => 'rcb-cookie-banner-active',
257
  'title' => \sprintf(
258
  '%s: %s',
259
  __('Cookie Banner', RCB_TD),
260
+ $isBannerActive ? $enabledLabel : $disabledLabel
 
 
261
  )
262
  ]);
263
  $wp_admin_bar->add_menu([
266
  'title' => \sprintf(
267
  '%s: %s',
268
  __('Content Blocker', RCB_TD),
269
+ $isBannerActive &&
270
  \DevOwl\RealCookieBanner\settings\General::getInstance()->isBlockerActive()
271
  ? $enabledLabel
272
  : $disabledLabel
inc/view/checklist/GetPro.php CHANGED
@@ -35,7 +35,7 @@ class GetPro extends \DevOwl\RealCookieBanner\view\checklist\AbstractChecklistIt
35
  }
36
  // Documented in AbstractChecklistItem
37
  public function getLink() {
38
- return RCB_PRO_VERSION;
39
  }
40
  // Documented in AbstractChecklistItem
41
  public function needsPro() {
35
  }
36
  // Documented in AbstractChecklistItem
37
  public function getLink() {
38
+ return add_query_arg('feature', 'checklist', RCB_PRO_VERSION);
39
  }
40
  // Documented in AbstractChecklistItem
41
  public function needsPro() {
inc/view/customize/banner/BasicLayout.php CHANGED
@@ -5,6 +5,7 @@ namespace DevOwl\RealCookieBanner\view\customize\banner;
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CssMarginInput;
7
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
 
8
  use DevOwl\RealCookieBanner\base\UtilsProvider;
9
  use DevOwl\RealCookieBanner\Core;
10
  use DevOwl\RealCookieBanner\view\BannerCustomize;
@@ -44,7 +45,7 @@ class BasicLayout {
44
  const DEFAULT_TYPE = 'dialog';
45
  const DEFAULT_DIALOG_POSITION = 'middleCenter';
46
  const DEFAULT_DIALOG_MARGIN = [0, 0, 0, 0];
47
- const DEFAULT_DIALOG_MAX_WIDTH = 510;
48
  const DEFAULT_BANNER_POSITION = 'bottom';
49
  const DEFAULT_BANNER_MAX_WIDTH = 1024;
50
  const DEFAULT_OVERLAY = \true;
@@ -53,10 +54,10 @@ class BasicLayout {
53
  const DEFAULT_OVERLAY_BLUR = 2;
54
  const DEFAULT_ANIMATION_IN = 'slideInUp';
55
  const DEFAULT_ANIMATION_IN_DURATION = 500;
56
- const DEFAULT_ANIMATION_IN_MOBILE = \true;
57
  const DEFAULT_ANIMATION_OUT = 'none';
58
  const DEFAULT_ANIMATION_OUT_DURATION = 500;
59
- const DEFAULT_ANIMATION_OUT_MOBILE = \true;
60
  const DEFAULT_BORDER_RADIUS = 5;
61
  const DEFAULT_DIALOG_BORDER_RADIUS = 3;
62
  /**
@@ -76,9 +77,10 @@ class BasicLayout {
76
  ],
77
  self::SETTING_DIALOG_MAX_WIDTH => [
78
  'name' => 'dialogMaxWidth',
79
- 'label' => __('Maximum width (px)', RCB_TD),
80
- 'type' => 'number',
81
- 'input_attrs' => ['step' => 5, 'min' => 200],
 
82
  'setting' => ['default' => self::DEFAULT_DIALOG_MAX_WIDTH, 'sanitize_callback' => 'absint']
83
  ],
84
  self::SETTING_DIALOG_POSITION => [
@@ -114,22 +116,25 @@ class BasicLayout {
114
  ],
115
  self::SETTING_BANNER_MAX_WIDTH => [
116
  'name' => 'bannerMaxWidth',
117
- 'label' => __('Maximum content width (px)', RCB_TD),
118
- 'type' => 'number',
119
- 'input_attrs' => ['step' => 5, 'min' => 200],
 
120
  'setting' => ['default' => self::DEFAULT_BANNER_MAX_WIDTH, 'sanitize_callback' => 'absint']
121
  ],
122
  self::SETTING_DIALOG_BORDER_RADIUS => [
123
  'name' => 'dialogBorderRadius',
124
  'label' => __('Dialog border radius', RCB_TD),
125
- 'type' => 'range',
 
126
  'input_attrs' => ['min' => 0, 'max' => 50, 'step' => 0],
127
  'setting' => ['default' => self::DEFAULT_DIALOG_BORDER_RADIUS, 'sanitize_callback' => 'absint']
128
  ],
129
  self::SETTING_BORDER_RADIUS => [
130
  'name' => 'borderRadius',
131
  'label' => __('Button border radius', RCB_TD),
132
- 'type' => 'range',
 
133
  'input_attrs' => ['min' => 0, 'max' => 50, 'step' => 0],
134
  'setting' => ['default' => self::DEFAULT_BORDER_RADIUS, 'sanitize_callback' => 'absint']
135
  ],
@@ -146,9 +151,10 @@ class BasicLayout {
146
  ],
147
  self::SETTING_ANIMATION_IN_DURATION => [
148
  'name' => 'animationInDuration',
149
- 'label' => __('Duration (milliseconds)', RCB_TD),
150
- 'type' => 'number',
151
- 'input_attrs' => ['step' => 500, 'min' => 0],
 
152
  'setting' => ['default' => self::DEFAULT_ANIMATION_IN_DURATION, 'sanitize_callback' => 'absint']
153
  ],
154
  self::SETTING_ANIMATION_IN_ONLY_MOBILE => [
@@ -156,7 +162,7 @@ class BasicLayout {
156
  'label' => __('Animation only on mobile devices', RCB_TD),
157
  'type' => 'checkbox',
158
  'setting' => [
159
- 'default' => self::DEFAULT_OVERLAY,
160
  'sanitize_callback' => [
161
  \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel::class,
162
  'sanitize_checkbox'
@@ -176,9 +182,10 @@ class BasicLayout {
176
  ],
177
  self::SETTING_ANIMATION_OUT_DURATION => [
178
  'name' => 'animationOutDuration',
179
- 'label' => __('Duration (milliseconds)', RCB_TD),
180
- 'type' => 'number',
181
- 'input_attrs' => ['step' => 500, 'min' => 0],
 
182
  'setting' => ['default' => self::DEFAULT_ANIMATION_OUT_DURATION, 'sanitize_callback' => 'absint']
183
  ],
184
  self::SETTING_ANIMATION_OUT_ONLY_MOBILE => [
@@ -186,7 +193,7 @@ class BasicLayout {
186
  'label' => __('Animation only on mobile devices', RCB_TD),
187
  'type' => 'checkbox',
188
  'setting' => [
189
- 'default' => self::DEFAULT_OVERLAY,
190
  'sanitize_callback' => [
191
  \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel::class,
192
  'sanitize_checkbox'
@@ -281,8 +288,8 @@ class BasicLayout {
281
  */
282
  public static function new_version_installation_after_2_15_0($installed) {
283
  if (\DevOwl\RealCookieBanner\Core::versionCompareOlderThan($installed, '2.15.0', ['2.16.0', '2.15.1'])) {
284
- update_option(self::SETTING_ANIMATION_IN_ONLY_MOBILE, '0');
285
- update_option(self::SETTING_ANIMATION_OUT_ONLY_MOBILE, '0');
286
  }
287
  }
288
  }
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CssMarginInput;
7
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
8
+ use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput;
9
  use DevOwl\RealCookieBanner\base\UtilsProvider;
10
  use DevOwl\RealCookieBanner\Core;
11
  use DevOwl\RealCookieBanner\view\BannerCustomize;
45
  const DEFAULT_TYPE = 'dialog';
46
  const DEFAULT_DIALOG_POSITION = 'middleCenter';
47
  const DEFAULT_DIALOG_MARGIN = [0, 0, 0, 0];
48
+ const DEFAULT_DIALOG_MAX_WIDTH = 530;
49
  const DEFAULT_BANNER_POSITION = 'bottom';
50
  const DEFAULT_BANNER_MAX_WIDTH = 1024;
51
  const DEFAULT_OVERLAY = \true;
54
  const DEFAULT_OVERLAY_BLUR = 2;
55
  const DEFAULT_ANIMATION_IN = 'slideInUp';
56
  const DEFAULT_ANIMATION_IN_DURATION = 500;
57
+ const DEFAULT_ANIMATION_IN_ONLY_MOBILE = \true;
58
  const DEFAULT_ANIMATION_OUT = 'none';
59
  const DEFAULT_ANIMATION_OUT_DURATION = 500;
60
+ const DEFAULT_ANIMATION_OUT_ONLY_MOBILE = \true;
61
  const DEFAULT_BORDER_RADIUS = 5;
62
  const DEFAULT_DIALOG_BORDER_RADIUS = 3;
63
  /**
77
  ],
78
  self::SETTING_DIALOG_MAX_WIDTH => [
79
  'name' => 'dialogMaxWidth',
80
+ 'label' => __('Maximum width', RCB_TD),
81
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
82
+ 'unit' => 'px',
83
+ 'input_attrs' => ['step' => 5, 'min' => 200, 'max' => 3000],
84
  'setting' => ['default' => self::DEFAULT_DIALOG_MAX_WIDTH, 'sanitize_callback' => 'absint']
85
  ],
86
  self::SETTING_DIALOG_POSITION => [
116
  ],
117
  self::SETTING_BANNER_MAX_WIDTH => [
118
  'name' => 'bannerMaxWidth',
119
+ 'label' => __('Maximum content width', RCB_TD),
120
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
121
+ 'unit' => 'px',
122
+ 'input_attrs' => ['step' => 5, 'min' => 200, 'max' => 3000],
123
  'setting' => ['default' => self::DEFAULT_BANNER_MAX_WIDTH, 'sanitize_callback' => 'absint']
124
  ],
125
  self::SETTING_DIALOG_BORDER_RADIUS => [
126
  'name' => 'dialogBorderRadius',
127
  'label' => __('Dialog border radius', RCB_TD),
128
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
129
+ 'unit' => 'px',
130
  'input_attrs' => ['min' => 0, 'max' => 50, 'step' => 0],
131
  'setting' => ['default' => self::DEFAULT_DIALOG_BORDER_RADIUS, 'sanitize_callback' => 'absint']
132
  ],
133
  self::SETTING_BORDER_RADIUS => [
134
  'name' => 'borderRadius',
135
  'label' => __('Button border radius', RCB_TD),
136
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
137
+ 'unit' => 'px',
138
  'input_attrs' => ['min' => 0, 'max' => 50, 'step' => 0],
139
  'setting' => ['default' => self::DEFAULT_BORDER_RADIUS, 'sanitize_callback' => 'absint']
140
  ],
151
  ],
152
  self::SETTING_ANIMATION_IN_DURATION => [
153
  'name' => 'animationInDuration',
154
+ 'label' => __('Duration', RCB_TD),
155
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
156
+ 'unit' => 'ms',
157
+ 'input_attrs' => ['step' => 500, 'min' => 0, 'max' => 20000],
158
  'setting' => ['default' => self::DEFAULT_ANIMATION_IN_DURATION, 'sanitize_callback' => 'absint']
159
  ],
160
  self::SETTING_ANIMATION_IN_ONLY_MOBILE => [
162
  'label' => __('Animation only on mobile devices', RCB_TD),
163
  'type' => 'checkbox',
164
  'setting' => [
165
+ 'default' => self::DEFAULT_ANIMATION_IN_ONLY_MOBILE,
166
  'sanitize_callback' => [
167
  \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel::class,
168
  'sanitize_checkbox'
182
  ],
183
  self::SETTING_ANIMATION_OUT_DURATION => [
184
  'name' => 'animationOutDuration',
185
+ 'label' => __('Duration', RCB_TD),
186
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
187
+ 'unit' => 'ms',
188
+ 'input_attrs' => ['step' => 500, 'min' => 0, 'max' => 20000],
189
  'setting' => ['default' => self::DEFAULT_ANIMATION_OUT_DURATION, 'sanitize_callback' => 'absint']
190
  ],
191
  self::SETTING_ANIMATION_OUT_ONLY_MOBILE => [
193
  'label' => __('Animation only on mobile devices', RCB_TD),
194
  'type' => 'checkbox',
195
  'setting' => [
196
+ 'default' => self::DEFAULT_ANIMATION_OUT_ONLY_MOBILE,
197
  'sanitize_callback' => [
198
  \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel::class,
199
  'sanitize_checkbox'
288
  */
289
  public static function new_version_installation_after_2_15_0($installed) {
290
  if (\DevOwl\RealCookieBanner\Core::versionCompareOlderThan($installed, '2.15.0', ['2.16.0', '2.15.1'])) {
291
+ update_option(self::SETTING_ANIMATION_IN_ONLY_MOBILE, \false);
292
+ update_option(self::SETTING_ANIMATION_OUT_ONLY_MOBILE, \false);
293
  }
294
  }
295
  }
inc/view/customize/banner/BodyDesign.php CHANGED
@@ -6,7 +6,9 @@ use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CssMarginInput;
7
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CustomHTML;
8
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
 
9
  use DevOwl\RealCookieBanner\base\UtilsProvider;
 
10
  use DevOwl\RealCookieBanner\view\BannerCustomize;
11
  use WP_Customize_Color_Control;
12
  // @codeCoverageIgnoreStart
@@ -21,8 +23,6 @@ class BodyDesign {
21
  const SECTION = \DevOwl\RealCookieBanner\view\BannerCustomize::PANEL_MAIN . '-body-design';
22
  const CUSTOM_HTML_BUTTON_ACCEPT_ALL_ONE_ROW_LAYOUT_NOTICE =
23
  self::SECTION . '-custom-html-button-accept-all-one-row-layout-notice';
24
- const CUSTOM_HTML_BUTTON_ACCEPT_ALL_SIMILAR_NOTICE =
25
- self::SECTION . '-custom-html-button-accept-all-similar-notice';
26
  const HEADLINE_TEACHINGS = self::SECTION . '-headline-teachings';
27
  const HEADLINE_TEACHINGS_FONT = self::SECTION . '-headline-teachings-font';
28
  const HEADLINE_TEACHINGS_SEPARATOR = self::SECTION . '-headline-teachings-separator';
@@ -68,6 +68,7 @@ class BodyDesign {
68
  const SETTING_BUTTON_ACCEPT_ALL_HOVER_BG = self::SETTING . '-btn-accept-all-hover-bg';
69
  const SETTING_BUTTON_ACCEPT_ALL_HOVER_BORDER_COLOR = self::SETTING . '-btn-accept-all-hover-border-color';
70
  const SETTING_BUTTON_ACCEPT_ALL_HOVER_FONT_COLOR = self::SETTING . '-btn-accept-all-hover-font-color';
 
71
  const SETTING_BUTTON_ACCEPT_ESSENTIALS_TYPE = self::SETTING . '-btn-accept-essentials-type';
72
  const SETTING_BUTTON_ACCEPT_ESSENTIALS_PADDING = self::SETTING . '-btn-accept-essentials-padding';
73
  const SETTING_BUTTON_ACCEPT_ESSENTIALS_BG = self::SETTING . '-btn-accept-essentials-bg';
@@ -94,7 +95,7 @@ class BodyDesign {
94
  const SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_BORDER_COLOR =
95
  self::SETTING . '-btn-accept-individual-hover-border-color';
96
  const SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR = self::SETTING . '-btn-accept-individual-hover-font-color';
97
- const DEFAULT_PADDING = [15, 20, 10, 20];
98
  const DEFAULT_DESCRIPTION_INHERIT_FONT_SIZE = \true;
99
  const DEFAULT_DESCRIPTION_FONT_SIZE = \DevOwl\RealCookieBanner\view\customize\banner\Design::DEFAULT_FONT_SIZE;
100
  const DEFAULT_DOTTED_GROUPS_INHERIT_FONT_SIZE = \true;
@@ -122,6 +123,7 @@ class BodyDesign {
122
  const DEFAULT_BUTTON_ACCEPT_ALL_HOVER_BG = '#11607d';
123
  const DEFAULT_BUTTON_ACCEPT_ALL_HOVER_BORDER_COLOR = '#000000';
124
  const DEFAULT_BUTTON_ACCEPT_ALL_HOVER_FONT_COLOR = '#ffffff';
 
125
  const DEFAULT_BUTTON_ACCEPT_ESSENTIALS_PADDING = self::DEFAULT_BUTTON_ACCEPT_ALL_PADDING;
126
  const DEFAULT_BUTTON_ACCEPT_ESSENTIALS_BG = '#efefef';
127
  const DEFAULT_BUTTON_ACCEPT_ESSENTIALS_TEXT_ALIGN = 'center';
@@ -133,17 +135,17 @@ class BodyDesign {
133
  const DEFAULT_BUTTON_ACCEPT_ESSENTIALS_HOVER_BG = '#e8e8e8';
134
  const DEFAULT_BUTTON_ACCEPT_ESSENTIALS_HOVER_BORDER_COLOR = '#000000';
135
  const DEFAULT_BUTTON_ACCEPT_ESSENTIALS_HOVER_FONT_COLOR = '#000000';
136
- const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_PADDING = [0, 5, 0, 5];
137
  const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_BG = '#ffffff';
138
  const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_TEXT_ALIGN = 'center';
139
- const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_FONT_SIZE = 14;
140
- const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR = '#7c7c7c';
141
  const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_FONT_WEIGHT = self::DEFAULT_BUTTON_ACCEPT_ALL_FONT_WEIGHT;
142
  const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_BORDER_WIDTH = 0;
143
  const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_BORDER_COLOR = '#000000';
144
  const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_HOVER_BG = '#ffffff';
145
  const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_HOVER_BORDER_COLOR = '#000000';
146
- const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR = '#2b2b2b';
147
  /**
148
  * Return arguments for this section.
149
  */
@@ -159,13 +161,6 @@ class BodyDesign {
159
  RCB_TD
160
  )
161
  );
162
- $textButtonAcceptAllSimilarNotice = \sprintf(
163
- '<div class="notice notice-info inline below-h2 notice-alt" style="margin: 0"><p>%s</p></div>',
164
- __(
165
- 'The "Accept" and "Reject" buttons should be the same size (button and text size) so that they are considered equal.',
166
- RCB_TD
167
- )
168
- );
169
  return [
170
  'name' => 'bodyDesign',
171
  'title' => __('Body', RCB_TD),
@@ -193,7 +188,8 @@ class BodyDesign {
193
  self::SETTING_DESCRIPTION_FONT_SIZE => [
194
  'name' => 'descriptionFontSize',
195
  'label' => __('Description font size', RCB_TD),
196
- 'type' => 'range',
 
197
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
198
  'setting' => ['default' => self::DEFAULT_DESCRIPTION_FONT_SIZE, 'sanitize_callback' => 'absint']
199
  ],
@@ -212,7 +208,8 @@ class BodyDesign {
212
  self::SETTING_DOTTED_GROUPS_FONT_SIZE => [
213
  'name' => 'dottedGroupsFontSize',
214
  'label' => __('Service groups font size', RCB_TD),
215
- 'type' => 'range',
 
216
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
217
  'setting' => ['default' => self::DEFAULT_DOTTED_GROUPS_FONT_SIZE, 'sanitize_callback' => 'absint']
218
  ],
@@ -276,15 +273,17 @@ class BodyDesign {
276
  ],
277
  self::SETTING_TEACHINGS_SEPARATOR_WIDTH => [
278
  'name' => 'teachingsSeparatorWidth',
279
- 'label' => __('Width (px)', RCB_TD),
280
- 'type' => 'number',
 
281
  'input_attrs' => ['min' => 1, 'max' => 1000, 'step' => 5],
282
  'setting' => ['default' => self::DEFAULT_TEACHINGS_SEPARATOR_WIDTH, 'sanitize_callback' => 'absint']
283
  ],
284
  self::SETTING_TEACHINGS_SEPARATOR_HEIGHT => [
285
  'name' => 'teachingsSeparatorHeight',
286
- 'label' => __('Height (px)', RCB_TD),
287
- 'type' => 'number',
 
288
  'input_attrs' => ['min' => 1, 'max' => 20, 'step' => 1],
289
  'setting' => [
290
  'default' => self::DEFAULT_TEACHINGS_SEPARATOR_HEIGHT,
@@ -322,7 +321,8 @@ class BodyDesign {
322
  self::SETTING_TEACHINGS_FONT_SIZE => [
323
  'name' => 'teachingsFontSize',
324
  'label' => __('Size', RCB_TD),
325
- 'type' => 'range',
 
326
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
327
  'setting' => ['default' => self::DEFAULT_TEACHINGS_FONT_SIZE, 'sanitize_callback' => 'absint']
328
  ],
@@ -352,11 +352,6 @@ class BodyDesign {
352
  'name' => 'bodyDesignAcceptAll',
353
  'label' => __('Button: Accept all', RCB_TD)
354
  ],
355
- self::CUSTOM_HTML_BUTTON_ACCEPT_ALL_SIMILAR_NOTICE => [
356
- 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CustomHTML::class,
357
- 'name' => 'customHtmlButtonAcceptAllSimilarNotice',
358
- 'description' => $textButtonAcceptAllSimilarNotice
359
- ],
360
  self::SETTING_BUTTON_ACCEPT_ALL_TYPE => [
361
  'label' => __('Type', RCB_TD),
362
  'type' => 'acceptAllButtonType'
@@ -412,7 +407,8 @@ class BodyDesign {
412
  self::SETTING_BUTTON_ACCEPT_ALL_FONT_SIZE => [
413
  'name' => 'acceptAllFontSize',
414
  'label' => __('Size', RCB_TD),
415
- 'type' => 'range',
 
416
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
417
  'setting' => [
418
  'default' => self::DEFAULT_BUTTON_ACCEPT_ALL_FONT_SIZE,
@@ -444,9 +440,10 @@ class BodyDesign {
444
  ],
445
  self::SETTING_BUTTON_ACCEPT_ALL_BORDER_WIDTH => [
446
  'name' => 'acceptAllBorderWidth',
447
- 'type' => 'number',
448
- 'input_attrs' => ['min' => 0],
449
- 'label' => __('Border width (px)', RCB_TD),
 
450
  'setting' => [
451
  'default' => self::DEFAULT_BUTTON_ACCEPT_ALL_BORDER_WIDTH,
452
  'sanitize_callback' => 'absint'
@@ -504,9 +501,26 @@ class BodyDesign {
504
  'name' => 'bodyDesignAcceptEssentials',
505
  'label' => __('Button: Continue without consent', RCB_TD)
506
  ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
507
  self::SETTING_BUTTON_ACCEPT_ESSENTIALS_TYPE => [
508
  'label' => __('Type', RCB_TD),
509
- 'type' => 'acceptEssentialsButtonType'
 
510
  ],
511
  self::SETTING_BUTTON_ACCEPT_ESSENTIALS_PADDING => [
512
  'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CssMarginInput::class,
@@ -542,7 +556,8 @@ class BodyDesign {
542
  self::SETTING_BUTTON_ACCEPT_ESSENTIALS_FONT_SIZE => [
543
  'name' => 'acceptEssentialsFontSize',
544
  'label' => __('Size', RCB_TD),
545
- 'type' => 'range',
 
546
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
547
  'setting' => [
548
  'default' => self::DEFAULT_BUTTON_ACCEPT_ESSENTIALS_FONT_SIZE,
@@ -574,9 +589,10 @@ class BodyDesign {
574
  ],
575
  self::SETTING_BUTTON_ACCEPT_ESSENTIALS_BORDER_WIDTH => [
576
  'name' => 'acceptEssentialsBorderWidth',
577
- 'type' => 'number',
578
- 'input_attrs' => ['min' => 0],
579
- 'label' => __('Border width (px)', RCB_TD),
 
580
  'setting' => [
581
  'default' => self::DEFAULT_BUTTON_ACCEPT_ESSENTIALS_BORDER_WIDTH,
582
  'sanitize_callback' => 'absint'
@@ -672,7 +688,8 @@ class BodyDesign {
672
  self::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_SIZE => [
673
  'name' => 'acceptIndividualFontSize',
674
  'label' => __('Size', RCB_TD),
675
- 'type' => 'range',
 
676
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
677
  'setting' => [
678
  'default' => self::DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_FONT_SIZE,
@@ -704,9 +721,10 @@ class BodyDesign {
704
  ],
705
  self::SETTING_BUTTON_ACCEPT_INDIVIDUAL_BORDER_WIDTH => [
706
  'name' => 'acceptIndividualBorderWidth',
707
- 'type' => 'number',
708
- 'input_attrs' => ['min' => 0],
709
- 'label' => __('Border width (px)', RCB_TD),
 
710
  'setting' => [
711
  'default' => self::DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_BORDER_WIDTH,
712
  'sanitize_callback' => 'absint'
@@ -784,4 +802,14 @@ class BodyDesign {
784
  'bold' => __('Bold', RCB_TD)
785
  ];
786
  }
 
 
 
 
 
 
 
 
 
 
787
  }
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CssMarginInput;
7
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CustomHTML;
8
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
9
+ use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput;
10
  use DevOwl\RealCookieBanner\base\UtilsProvider;
11
+ use DevOwl\RealCookieBanner\Core;
12
  use DevOwl\RealCookieBanner\view\BannerCustomize;
13
  use WP_Customize_Color_Control;
14
  // @codeCoverageIgnoreStart
23
  const SECTION = \DevOwl\RealCookieBanner\view\BannerCustomize::PANEL_MAIN . '-body-design';
24
  const CUSTOM_HTML_BUTTON_ACCEPT_ALL_ONE_ROW_LAYOUT_NOTICE =
25
  self::SECTION . '-custom-html-button-accept-all-one-row-layout-notice';
 
 
26
  const HEADLINE_TEACHINGS = self::SECTION . '-headline-teachings';
27
  const HEADLINE_TEACHINGS_FONT = self::SECTION . '-headline-teachings-font';
28
  const HEADLINE_TEACHINGS_SEPARATOR = self::SECTION . '-headline-teachings-separator';
68
  const SETTING_BUTTON_ACCEPT_ALL_HOVER_BG = self::SETTING . '-btn-accept-all-hover-bg';
69
  const SETTING_BUTTON_ACCEPT_ALL_HOVER_BORDER_COLOR = self::SETTING . '-btn-accept-all-hover-border-color';
70
  const SETTING_BUTTON_ACCEPT_ALL_HOVER_FONT_COLOR = self::SETTING . '-btn-accept-all-hover-font-color';
71
+ const SETTING_BUTTON_ACCEPT_ESSENTIALS_USE_ACCEPT_ALL = self::SETTING . '-btn-accept-essentials-use-accept-all';
72
  const SETTING_BUTTON_ACCEPT_ESSENTIALS_TYPE = self::SETTING . '-btn-accept-essentials-type';
73
  const SETTING_BUTTON_ACCEPT_ESSENTIALS_PADDING = self::SETTING . '-btn-accept-essentials-padding';
74
  const SETTING_BUTTON_ACCEPT_ESSENTIALS_BG = self::SETTING . '-btn-accept-essentials-bg';
95
  const SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_BORDER_COLOR =
96
  self::SETTING . '-btn-accept-individual-hover-border-color';
97
  const SETTING_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR = self::SETTING . '-btn-accept-individual-hover-font-color';
98
+ const DEFAULT_PADDING = [15, 20, 5, 20];
99
  const DEFAULT_DESCRIPTION_INHERIT_FONT_SIZE = \true;
100
  const DEFAULT_DESCRIPTION_FONT_SIZE = \DevOwl\RealCookieBanner\view\customize\banner\Design::DEFAULT_FONT_SIZE;
101
  const DEFAULT_DOTTED_GROUPS_INHERIT_FONT_SIZE = \true;
123
  const DEFAULT_BUTTON_ACCEPT_ALL_HOVER_BG = '#11607d';
124
  const DEFAULT_BUTTON_ACCEPT_ALL_HOVER_BORDER_COLOR = '#000000';
125
  const DEFAULT_BUTTON_ACCEPT_ALL_HOVER_FONT_COLOR = '#ffffff';
126
+ const DEFAULT_BUTTON_ACCEPT_ESSENTIALS_USE_ACCEPT_ALL = \true;
127
  const DEFAULT_BUTTON_ACCEPT_ESSENTIALS_PADDING = self::DEFAULT_BUTTON_ACCEPT_ALL_PADDING;
128
  const DEFAULT_BUTTON_ACCEPT_ESSENTIALS_BG = '#efefef';
129
  const DEFAULT_BUTTON_ACCEPT_ESSENTIALS_TEXT_ALIGN = 'center';
135
  const DEFAULT_BUTTON_ACCEPT_ESSENTIALS_HOVER_BG = '#e8e8e8';
136
  const DEFAULT_BUTTON_ACCEPT_ESSENTIALS_HOVER_BORDER_COLOR = '#000000';
137
  const DEFAULT_BUTTON_ACCEPT_ESSENTIALS_HOVER_FONT_COLOR = '#000000';
138
+ const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_PADDING = [5, 5, 5, 5];
139
  const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_BG = '#ffffff';
140
  const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_TEXT_ALIGN = 'center';
141
+ const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_FONT_SIZE = 15;
142
+ const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_FONT_COLOR = '#15779b';
143
  const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_FONT_WEIGHT = self::DEFAULT_BUTTON_ACCEPT_ALL_FONT_WEIGHT;
144
  const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_BORDER_WIDTH = 0;
145
  const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_BORDER_COLOR = '#000000';
146
  const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_HOVER_BG = '#ffffff';
147
  const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_HOVER_BORDER_COLOR = '#000000';
148
+ const DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_HOVER_FONT_COLOR = '#11607d';
149
  /**
150
  * Return arguments for this section.
151
  */
161
  RCB_TD
162
  )
163
  );
 
 
 
 
 
 
 
164
  return [
165
  'name' => 'bodyDesign',
166
  'title' => __('Body', RCB_TD),
188
  self::SETTING_DESCRIPTION_FONT_SIZE => [
189
  'name' => 'descriptionFontSize',
190
  'label' => __('Description font size', RCB_TD),
191
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
192
+ 'unit' => 'px',
193
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
194
  'setting' => ['default' => self::DEFAULT_DESCRIPTION_FONT_SIZE, 'sanitize_callback' => 'absint']
195
  ],
208
  self::SETTING_DOTTED_GROUPS_FONT_SIZE => [
209
  'name' => 'dottedGroupsFontSize',
210
  'label' => __('Service groups font size', RCB_TD),
211
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
212
+ 'unit' => 'px',
213
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
214
  'setting' => ['default' => self::DEFAULT_DOTTED_GROUPS_FONT_SIZE, 'sanitize_callback' => 'absint']
215
  ],
273
  ],
274
  self::SETTING_TEACHINGS_SEPARATOR_WIDTH => [
275
  'name' => 'teachingsSeparatorWidth',
276
+ 'label' => __('Width', RCB_TD),
277
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
278
+ 'unit' => 'px',
279
  'input_attrs' => ['min' => 1, 'max' => 1000, 'step' => 5],
280
  'setting' => ['default' => self::DEFAULT_TEACHINGS_SEPARATOR_WIDTH, 'sanitize_callback' => 'absint']
281
  ],
282
  self::SETTING_TEACHINGS_SEPARATOR_HEIGHT => [
283
  'name' => 'teachingsSeparatorHeight',
284
+ 'label' => __('Height', RCB_TD),
285
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
286
+ 'unit' => 'px',
287
  'input_attrs' => ['min' => 1, 'max' => 20, 'step' => 1],
288
  'setting' => [
289
  'default' => self::DEFAULT_TEACHINGS_SEPARATOR_HEIGHT,
321
  self::SETTING_TEACHINGS_FONT_SIZE => [
322
  'name' => 'teachingsFontSize',
323
  'label' => __('Size', RCB_TD),
324
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
325
+ 'unit' => 'px',
326
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
327
  'setting' => ['default' => self::DEFAULT_TEACHINGS_FONT_SIZE, 'sanitize_callback' => 'absint']
328
  ],
352
  'name' => 'bodyDesignAcceptAll',
353
  'label' => __('Button: Accept all', RCB_TD)
354
  ],
 
 
 
 
 
355
  self::SETTING_BUTTON_ACCEPT_ALL_TYPE => [
356
  'label' => __('Type', RCB_TD),
357
  'type' => 'acceptAllButtonType'
407
  self::SETTING_BUTTON_ACCEPT_ALL_FONT_SIZE => [
408
  'name' => 'acceptAllFontSize',
409
  'label' => __('Size', RCB_TD),
410
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
411
+ 'unit' => 'px',
412
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
413
  'setting' => [
414
  'default' => self::DEFAULT_BUTTON_ACCEPT_ALL_FONT_SIZE,
440
  ],
441
  self::SETTING_BUTTON_ACCEPT_ALL_BORDER_WIDTH => [
442
  'name' => 'acceptAllBorderWidth',
443
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
444
+ 'unit' => 'px',
445
+ 'input_attrs' => ['min' => 0, 'step' => 1, 'max' => 100],
446
+ 'label' => __('Border width', RCB_TD),
447
  'setting' => [
448
  'default' => self::DEFAULT_BUTTON_ACCEPT_ALL_BORDER_WIDTH,
449
  'sanitize_callback' => 'absint'
501
  'name' => 'bodyDesignAcceptEssentials',
502
  'label' => __('Button: Continue without consent', RCB_TD)
503
  ],
504
+ self::SETTING_BUTTON_ACCEPT_ESSENTIALS_USE_ACCEPT_ALL => [
505
+ 'name' => 'acceptEssentialsUseAcceptAll',
506
+ 'label' => __('Use the same stylings as for "Accept all"', RCB_TD),
507
+ 'description' => __(
508
+ 'According to the <a href="https://www.datenschutzkonferenz-online.de/media/oh/20211220_oh_telemedien.pdf" target="_blank">guidance of the data protection authorities in Germany (German)</a>, there must be an equivalent way for your visitors to express their choice (agree to everything, continue without consent or an indivudual decision). Equivalent does not necessarily mean that the buttons/links must look exactly the same. However, you should be safest if they look exactly the same.',
509
+ RCB_TD
510
+ ),
511
+ 'type' => 'checkbox',
512
+ 'setting' => [
513
+ 'default' => self::DEFAULT_BUTTON_ACCEPT_ESSENTIALS_USE_ACCEPT_ALL,
514
+ 'sanitize_callback' => [
515
+ \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel::class,
516
+ 'sanitize_checkbox'
517
+ ]
518
+ ]
519
+ ],
520
  self::SETTING_BUTTON_ACCEPT_ESSENTIALS_TYPE => [
521
  'label' => __('Type', RCB_TD),
522
+ 'type' => 'acceptEssentialsButtonType',
523
+ 'name' => 'acceptEssentialsButtonType'
524
  ],
525
  self::SETTING_BUTTON_ACCEPT_ESSENTIALS_PADDING => [
526
  'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CssMarginInput::class,
556
  self::SETTING_BUTTON_ACCEPT_ESSENTIALS_FONT_SIZE => [
557
  'name' => 'acceptEssentialsFontSize',
558
  'label' => __('Size', RCB_TD),
559
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
560
+ 'unit' => 'px',
561
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
562
  'setting' => [
563
  'default' => self::DEFAULT_BUTTON_ACCEPT_ESSENTIALS_FONT_SIZE,
589
  ],
590
  self::SETTING_BUTTON_ACCEPT_ESSENTIALS_BORDER_WIDTH => [
591
  'name' => 'acceptEssentialsBorderWidth',
592
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
593
+ 'unit' => 'px',
594
+ 'input_attrs' => ['min' => 0, 'step' => 1, 'max' => 100],
595
+ 'label' => __('Border width', RCB_TD),
596
  'setting' => [
597
  'default' => self::DEFAULT_BUTTON_ACCEPT_ESSENTIALS_BORDER_WIDTH,
598
  'sanitize_callback' => 'absint'
688
  self::SETTING_BUTTON_ACCEPT_INDIVIDUAL_FONT_SIZE => [
689
  'name' => 'acceptIndividualFontSize',
690
  'label' => __('Size', RCB_TD),
691
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
692
+ 'unit' => 'px',
693
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
694
  'setting' => [
695
  'default' => self::DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_FONT_SIZE,
721
  ],
722
  self::SETTING_BUTTON_ACCEPT_INDIVIDUAL_BORDER_WIDTH => [
723
  'name' => 'acceptIndividualBorderWidth',
724
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
725
+ 'unit' => 'px',
726
+ 'input_attrs' => ['min' => 0, 'max' => 100, 'step' => 1],
727
+ 'label' => __('Border width', RCB_TD),
728
  'setting' => [
729
  'default' => self::DEFAULT_BUTTON_ACCEPT_INDIVIDUAL_BORDER_WIDTH,
730
  'sanitize_callback' => 'absint'
802
  'bold' => __('Bold', RCB_TD)
803
  ];
804
  }
805
+ /**
806
+ * Deactivate "Use same stylings as 'Accept all'" as it should not be activated automatically for already existing users.
807
+ *
808
+ * @param string|false $installed
809
+ */
810
+ public static function new_version_installation_after_2_17_3($installed) {
811
+ if (\DevOwl\RealCookieBanner\Core::versionCompareOlderThan($installed, '2.17.3', ['2.17.4', '2.18.0'])) {
812
+ update_option(self::SETTING_BUTTON_ACCEPT_ESSENTIALS_USE_ACCEPT_ALL, '');
813
+ }
814
+ }
815
  }
inc/view/customize/banner/Decision.php CHANGED
@@ -4,7 +4,9 @@ namespace DevOwl\RealCookieBanner\view\customize\banner;
4
 
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CustomHTML;
 
7
  use DevOwl\RealCookieBanner\base\UtilsProvider;
 
8
  use DevOwl\RealCookieBanner\view\BannerCustomize;
9
  // @codeCoverageIgnoreStart
10
  \defined('ABSPATH') or die('No script kiddies please!');
@@ -15,24 +17,60 @@ use DevOwl\RealCookieBanner\view\BannerCustomize;
15
  */
16
  class Decision {
17
  use UtilsProvider;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  const SECTION = \DevOwl\RealCookieBanner\view\BannerCustomize::PANEL_MAIN . '-decision';
19
  const CUSTOM_HTML_BUTTON_TYPE_DIFFERS_NOTICE = self::SECTION . '-custom-html-button-type-differs-notice';
20
  const CUSTOM_HTML_LEGAL_NOTICE_ALL = self::SECTION . '-custom-html-legal-notice-all';
21
  const CUSTOM_HTML_LEGAL_NOTICE_ESSENTIALS = self::SECTION . '-custom-html-legal-notice-essentials';
22
  const CUSTOM_HTML_LEGAL_NOTICE_INDIVIDUAL = self::SECTION . '-custom-html-legal-notice-individual';
 
23
  const SETTING = RCB_OPT_PREFIX . '-banner-decision';
24
  const SETTING_ACCEPT_ALL = self::SETTING . '-accept-all';
25
  const SETTING_ACCEPT_ESSENTIALS = self::SETTING . '-accept-essentials';
26
  const SETTING_SHOW_CLOSE_ICON = self::SETTING . '-show-close-icon';
27
  const SETTING_ACCEPT_INDIVIDUAL = self::SETTING . '-accept-individual';
 
28
  const SETTING_GROUPS_FIRST_VIEW = self::SETTING . '-groups-first-view';
29
  const SETTING_SAVE_BUTTON = self::SETTING . '-save-button';
 
30
  const DEFAULT_ACCEPT_ALL = 'button';
31
  const DEFAULT_ACCEPT_ESSENTIALS = 'button';
32
  const DEFAULT_SHOW_CLOSE_ICON = \false;
33
  const DEFAULT_ACCEPT_INDIVIDUAL = 'link';
 
34
  const DEFAULT_GROUPS_FIRST_VIEW = \false;
35
  const DEFAULT_SAVE_BUTTON = 'always';
 
36
  /**
37
  * Return arguments for this section.
38
  */
@@ -149,6 +187,34 @@ class Decision {
149
  'name' => 'customHtmlDecisionLegalNoticeIndividual',
150
  'description' => $textLegalNotice
151
  ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
  self::SETTING_GROUPS_FIRST_VIEW => [
153
  'name' => 'groupsFirstView',
154
  'label' => __('Custom choice in first view', RCB_TD),
@@ -175,4 +241,58 @@ class Decision {
175
  ]
176
  ];
177
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
178
  }
4
 
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CustomHTML;
7
+ use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
8
  use DevOwl\RealCookieBanner\base\UtilsProvider;
9
+ use DevOwl\RealCookieBanner\Core;
10
  use DevOwl\RealCookieBanner\view\BannerCustomize;
11
  // @codeCoverageIgnoreStart
12
  \defined('ABSPATH') or die('No script kiddies please!');
17
  */
18
  class Decision {
19
  use UtilsProvider;
20
+ /**
21
+ * Available permutations for the button order.
22
+ *
23
+ * @see https://phpsandbox.io/n/real-cookie-banner-button-order-premutation-9uk9m
24
+ */
25
+ const BUTTON_ORDER_PERMUTATIONS = [
26
+ ['all', 'essential', 'individual', 'save'],
27
+ ['all', 'essential', 'save', 'individual'],
28
+ ['all', 'individual', 'essential', 'save'],
29
+ ['all', 'individual', 'save', 'essential'],
30
+ ['all', 'save', 'essential', 'individual'],
31
+ ['all', 'save', 'individual', 'essential'],
32
+ ['essential', 'all', 'individual', 'save'],
33
+ ['essential', 'all', 'save', 'individual'],
34
+ ['essential', 'individual', 'all', 'save'],
35
+ ['essential', 'individual', 'save', 'all'],
36
+ ['essential', 'save', 'all', 'individual'],
37
+ ['essential', 'save', 'individual', 'all'],
38
+ ['individual', 'all', 'essential', 'save'],
39
+ ['individual', 'all', 'save', 'essential'],
40
+ ['individual', 'essential', 'all', 'save'],
41
+ ['individual', 'essential', 'save', 'all'],
42
+ ['individual', 'save', 'all', 'essential'],
43
+ ['individual', 'save', 'essential', 'all'],
44
+ ['save', 'all', 'essential', 'individual'],
45
+ ['save', 'all', 'individual', 'essential'],
46
+ ['save', 'essential', 'all', 'individual'],
47
+ ['save', 'essential', 'individual', 'all'],
48
+ ['save', 'individual', 'all', 'essential'],
49
+ ['save', 'individual', 'essential', 'all']
50
+ ];
51
  const SECTION = \DevOwl\RealCookieBanner\view\BannerCustomize::PANEL_MAIN . '-decision';
52
  const CUSTOM_HTML_BUTTON_TYPE_DIFFERS_NOTICE = self::SECTION . '-custom-html-button-type-differs-notice';
53
  const CUSTOM_HTML_LEGAL_NOTICE_ALL = self::SECTION . '-custom-html-legal-notice-all';
54
  const CUSTOM_HTML_LEGAL_NOTICE_ESSENTIALS = self::SECTION . '-custom-html-legal-notice-essentials';
55
  const CUSTOM_HTML_LEGAL_NOTICE_INDIVIDUAL = self::SECTION . '-custom-html-legal-notice-individual';
56
+ const HEADLINE_SERVICE_GROUPS = self::SECTION . '-headline-service-groups';
57
  const SETTING = RCB_OPT_PREFIX . '-banner-decision';
58
  const SETTING_ACCEPT_ALL = self::SETTING . '-accept-all';
59
  const SETTING_ACCEPT_ESSENTIALS = self::SETTING . '-accept-essentials';
60
  const SETTING_SHOW_CLOSE_ICON = self::SETTING . '-show-close-icon';
61
  const SETTING_ACCEPT_INDIVIDUAL = self::SETTING . '-accept-individual';
62
+ const SETTING_SHOW_GROUPS = self::SETTING . '-show-groups';
63
  const SETTING_GROUPS_FIRST_VIEW = self::SETTING . '-groups-first-view';
64
  const SETTING_SAVE_BUTTON = self::SETTING . '-save-button';
65
+ const SETTING_BUTTON_ORDER = self::SETTING . '-button-order';
66
  const DEFAULT_ACCEPT_ALL = 'button';
67
  const DEFAULT_ACCEPT_ESSENTIALS = 'button';
68
  const DEFAULT_SHOW_CLOSE_ICON = \false;
69
  const DEFAULT_ACCEPT_INDIVIDUAL = 'link';
70
+ const DEFAULT_SHOW_GROUPS = \false;
71
  const DEFAULT_GROUPS_FIRST_VIEW = \false;
72
  const DEFAULT_SAVE_BUTTON = 'always';
73
+ const DEFAULT_BUTTON_ORDER = 'all,essential,save,individual';
74
  /**
75
  * Return arguments for this section.
76
  */
187
  'name' => 'customHtmlDecisionLegalNoticeIndividual',
188
  'description' => $textLegalNotice
189
  ],
190
+ self::SETTING_BUTTON_ORDER => [
191
+ 'name' => 'buttonOrder',
192
+ 'label' => __('Order of the buttons', RCB_TD),
193
+ 'description' => __(
194
+ 'According to the <a href="https://www.datenschutzkonferenz-online.de/media/oh/20211220_oh_telemedien.pdf" target="_blank">guidance of the data protection authorities in Germany (German)</a>, there must be an equivalent way for your visitors to express their choice (agree to everything, continue without consent or an indivudual decision). Which order of options is considered equivalent is unclear. Therefore, the options should be arranged according to the cultural conditions of the main target country.',
195
+ RCB_TD
196
+ ),
197
+ 'type' => 'select',
198
+ 'choices' => self::getButtonOrderPermutations(),
199
+ 'setting' => ['default' => self::DEFAULT_BUTTON_ORDER]
200
+ ],
201
+ self::HEADLINE_SERVICE_GROUPS => [
202
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline::class,
203
+ 'name' => 'serviceGroups',
204
+ 'label' => __('Service groups as bullet list', RCB_TD)
205
+ ],
206
+ self::SETTING_SHOW_GROUPS => [
207
+ 'name' => 'showGroups',
208
+ 'label' => __('Show service groups as bullet list', RCB_TD),
209
+ 'type' => 'checkbox',
210
+ 'setting' => [
211
+ 'default' => self::DEFAULT_SHOW_GROUPS,
212
+ 'sanitize_callback' => [
213
+ \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel::class,
214
+ 'sanitize_checkbox'
215
+ ]
216
+ ]
217
+ ],
218
  self::SETTING_GROUPS_FIRST_VIEW => [
219
  'name' => 'groupsFirstView',
220
  'label' => __('Custom choice in first view', RCB_TD),
241
  ]
242
  ];
243
  }
244
+ /**
245
+ * Calculate button order permutations with translated select dropdown in an associative array.
246
+ */
247
+ public static function getButtonOrderPermutations() {
248
+ $result = [];
249
+ foreach (self::BUTTON_ORDER_PERMUTATIONS as $permutation) {
250
+ $key = \join(',', $permutation);
251
+ $result[$key] = \join(
252
+ ', ',
253
+ \array_map(function ($button) {
254
+ switch ($button) {
255
+ case 'all':
256
+ return __('Accept all', RCB_TD);
257
+ case 'essential':
258
+ return __('Continue without consent', RCB_TD);
259
+ case 'individual':
260
+ return __('Individual privacy preferences', RCB_TD);
261
+ case 'save':
262
+ return __('Save custom choices', RCB_TD);
263
+ default:
264
+ return '';
265
+ }
266
+ }, $permutation)
267
+ );
268
+ }
269
+ return $result;
270
+ }
271
+ /**
272
+ * Activate bullet list as it should not be deactivated automatically for already existing users.
273
+ *
274
+ * @param string|false $installed
275
+ */
276
+ public static function new_version_installation_after_2_17_3($installed) {
277
+ if (\DevOwl\RealCookieBanner\Core::versionCompareOlderThan($installed, '2.17.3', ['2.17.4', '2.18.0'])) {
278
+ update_option(self::SETTING_SHOW_GROUPS, '1');
279
+ }
280
+ }
281
+ /**
282
+ * Enable bullet groups + default button order for older revision.
283
+ *
284
+ * @param array $revision
285
+ * @param boolean $independent
286
+ */
287
+ public static function applyBackwardsCompatibility($revision, $independent) {
288
+ if ($independent) {
289
+ if (!isset($revision['banner']['customizeValuesBanner']['decision']['showGroups'])) {
290
+ $revision['banner']['customizeValuesBanner']['decision']['showGroups'] = \true;
291
+ }
292
+ if (!isset($revision['banner']['customizeValuesBanner']['decision']['buttonOrder'])) {
293
+ $revision['banner']['customizeValuesBanner']['decision']['buttonOrder'] = self::DEFAULT_BUTTON_ORDER;
294
+ }
295
+ }
296
+ return $revision;
297
+ }
298
  }
inc/view/customize/banner/Design.php CHANGED
@@ -4,6 +4,7 @@ namespace DevOwl\RealCookieBanner\view\customize\banner;
4
 
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
 
7
  use DevOwl\RealCookieBanner\base\UtilsProvider;
8
  use DevOwl\RealCookieBanner\view\BannerCustomize;
9
  use WP_Customize_Color_Control;
@@ -89,9 +90,10 @@ class Design {
89
  ],
90
  self::SETTING_BORDER_WIDTH => [
91
  'name' => 'borderWidth',
92
- 'type' => 'number',
93
- 'input_attrs' => ['min' => 0],
94
- 'label' => __('Width (px)', RCB_TD),
 
95
  'setting' => ['default' => self::DEFAULT_BORDER_WIDTH, 'sanitize_callback' => 'absint']
96
  ],
97
  self::SETTING_BORDER_COLOR => [
@@ -111,7 +113,8 @@ class Design {
111
  'The font size will be applied to the entire dialog. You can overwrite this setting e.g for headings in the respective section.',
112
  RCB_TD
113
  ),
114
- 'type' => 'range',
 
115
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
116
  'setting' => ['default' => self::DEFAULT_FONT_SIZE, 'sanitize_callback' => 'absint']
117
  ],
@@ -169,7 +172,8 @@ class Design {
169
  self::SETTING_BOX_SHADOW_OFFSET_X => [
170
  'name' => 'boxShadowOffsetX',
171
  'label' => __('Horizontal offset', RCB_TD),
172
- 'type' => 'range',
 
173
  'input_attrs' => ['min' => -50, 'max' => 50, 'step' => 0],
174
  'setting' => [
175
  'default' => self::DEFAULT_BOX_SHADOW_OFFSET_X,
@@ -181,7 +185,8 @@ class Design {
181
  self::SETTING_BOX_SHADOW_OFFSET_Y => [
182
  'name' => 'boxShadowOffsetY',
183
  'label' => __('Vertical offset', RCB_TD),
184
- 'type' => 'range',
 
185
  'input_attrs' => ['min' => -50, 'max' => 50, 'step' => 0],
186
  'setting' => [
187
  'default' => self::DEFAULT_BOX_SHADOW_OFFSET_Y,
@@ -193,14 +198,16 @@ class Design {
193
  self::SETTING_BOX_SHADOW_BLUR_RADIUS => [
194
  'name' => 'boxShadowBlurRadius',
195
  'label' => __('Blur radius', RCB_TD),
196
- 'type' => 'range',
 
197
  'input_attrs' => ['min' => 0, 'max' => 100, 'step' => 0],
198
  'setting' => ['default' => self::DEFAULT_BOX_SHADOW_BLUR_RADIUS, 'sanitize_callback' => 'absint']
199
  ],
200
  self::SETTING_BOX_SHADOW_SPREAD_RADIUS => [
201
  'name' => 'boxShadowSpreadRadius',
202
  'label' => __('Spread radius', RCB_TD),
203
- 'type' => 'range',
 
204
  'input_attrs' => ['min' => 0, 'max' => 100, 'step' => 0],
205
  'setting' => ['default' => self::DEFAULT_BOX_SHADOW_SPREAD_RADIUS, 'sanitize_callback' => 'absint']
206
  ],
@@ -216,7 +223,8 @@ class Design {
216
  self::SETTING_BOX_SHADOW_COLOR_ALPHA => [
217
  'name' => 'boxShadowColorAlpha',
218
  'label' => __('Color opacity', RCB_TD),
219
- 'type' => 'range',
 
220
  'input_attrs' => ['min' => 0, 'max' => 100, 'step' => 0],
221
  'setting' => ['default' => self::DEFAULT_BOX_SHADOW_COLOR_ALPHA, 'sanitize_callback' => 'absint']
222
  ]
4
 
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
7
+ use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput;
8
  use DevOwl\RealCookieBanner\base\UtilsProvider;
9
  use DevOwl\RealCookieBanner\view\BannerCustomize;
10
  use WP_Customize_Color_Control;
90
  ],
91
  self::SETTING_BORDER_WIDTH => [
92
  'name' => 'borderWidth',
93
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
94
+ 'unit' => 'px',
95
+ 'input_attrs' => ['min' => 0, 'step' => 1, 'max' => 100],
96
+ 'label' => __('Width', RCB_TD),
97
  'setting' => ['default' => self::DEFAULT_BORDER_WIDTH, 'sanitize_callback' => 'absint']
98
  ],
99
  self::SETTING_BORDER_COLOR => [
113
  'The font size will be applied to the entire dialog. You can overwrite this setting e.g for headings in the respective section.',
114
  RCB_TD
115
  ),
116
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
117
+ 'unit' => 'px',
118
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
119
  'setting' => ['default' => self::DEFAULT_FONT_SIZE, 'sanitize_callback' => 'absint']
120
  ],
172
  self::SETTING_BOX_SHADOW_OFFSET_X => [
173
  'name' => 'boxShadowOffsetX',
174
  'label' => __('Horizontal offset', RCB_TD),
175
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
176
+ 'unit' => 'px',
177
  'input_attrs' => ['min' => -50, 'max' => 50, 'step' => 0],
178
  'setting' => [
179
  'default' => self::DEFAULT_BOX_SHADOW_OFFSET_X,
185
  self::SETTING_BOX_SHADOW_OFFSET_Y => [
186
  'name' => 'boxShadowOffsetY',
187
  'label' => __('Vertical offset', RCB_TD),
188
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
189
+ 'unit' => 'px',
190
  'input_attrs' => ['min' => -50, 'max' => 50, 'step' => 0],
191
  'setting' => [
192
  'default' => self::DEFAULT_BOX_SHADOW_OFFSET_Y,
198
  self::SETTING_BOX_SHADOW_BLUR_RADIUS => [
199
  'name' => 'boxShadowBlurRadius',
200
  'label' => __('Blur radius', RCB_TD),
201
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
202
+ 'unit' => 'px',
203
  'input_attrs' => ['min' => 0, 'max' => 100, 'step' => 0],
204
  'setting' => ['default' => self::DEFAULT_BOX_SHADOW_BLUR_RADIUS, 'sanitize_callback' => 'absint']
205
  ],
206
  self::SETTING_BOX_SHADOW_SPREAD_RADIUS => [
207
  'name' => 'boxShadowSpreadRadius',
208
  'label' => __('Spread radius', RCB_TD),
209
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
210
+ 'unit' => 'px',
211
  'input_attrs' => ['min' => 0, 'max' => 100, 'step' => 0],
212
  'setting' => ['default' => self::DEFAULT_BOX_SHADOW_SPREAD_RADIUS, 'sanitize_callback' => 'absint']
213
  ],
223
  self::SETTING_BOX_SHADOW_COLOR_ALPHA => [
224
  'name' => 'boxShadowColorAlpha',
225
  'label' => __('Color opacity', RCB_TD),
226
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
227
+ 'unit' => '%',
228
  'input_attrs' => ['min' => 0, 'max' => 100, 'step' => 0],
229
  'setting' => ['default' => self::DEFAULT_BOX_SHADOW_COLOR_ALPHA, 'sanitize_callback' => 'absint']
230
  ]
inc/view/customize/banner/FooterDesign.php CHANGED
@@ -5,6 +5,7 @@ namespace DevOwl\RealCookieBanner\view\customize\banner;
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CssMarginInput;
7
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
 
8
  use DevOwl\RealCookieBanner\base\UtilsProvider;
9
  use DevOwl\RealCookieBanner\view\BannerCustomize;
10
  use WP_Customize_Color_Control;
@@ -132,7 +133,8 @@ class FooterDesign {
132
  self::SETTING_FONT_SIZE => [
133
  'name' => 'fontSize',
134
  'label' => __('Size', RCB_TD),
135
- 'type' => 'range',
 
136
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
137
  'setting' => ['default' => self::DEFAULT_FONT_SIZE, 'sanitize_callback' => 'absint']
138
  ],
@@ -200,9 +202,10 @@ class FooterDesign {
200
  ],
201
  self::SETTING_TOP_BORDER_WIDTH => [
202
  'name' => 'borderWidth',
203
- 'type' => 'number',
204
- 'input_attrs' => ['min' => 0],
205
- 'label' => __('Height (px)', RCB_TD),
 
206
  'setting' => ['default' => self::DEFAULT_TOP_BORDER_WIDTH, 'sanitize_callback' => 'absint']
207
  ],
208
  self::SETTING_TOP_BORDER_COLOR => [
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CssMarginInput;
7
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
8
+ use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput;
9
  use DevOwl\RealCookieBanner\base\UtilsProvider;
10
  use DevOwl\RealCookieBanner\view\BannerCustomize;
11
  use WP_Customize_Color_Control;
133
  self::SETTING_FONT_SIZE => [
134
  'name' => 'fontSize',
135
  'label' => __('Size', RCB_TD),
136
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
137
+ 'unit' => 'px',
138
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
139
  'setting' => ['default' => self::DEFAULT_FONT_SIZE, 'sanitize_callback' => 'absint']
140
  ],
202
  ],
203
  self::SETTING_TOP_BORDER_WIDTH => [
204
  'name' => 'borderWidth',
205
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
206
+ 'unit' => 'px',
207
+ 'input_attrs' => ['min' => 0, 'step' => 1, 'max' => 100],
208
+ 'label' => __('Height', RCB_TD),
209
  'setting' => ['default' => self::DEFAULT_TOP_BORDER_WIDTH, 'sanitize_callback' => 'absint']
210
  ],
211
  self::SETTING_TOP_BORDER_COLOR => [
inc/view/customize/banner/HeaderDesign.php CHANGED
@@ -5,6 +5,7 @@ namespace DevOwl\RealCookieBanner\view\customize\banner;
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CssMarginInput;
7
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
 
8
  use DevOwl\RealCookieBanner\base\UtilsProvider;
9
  use DevOwl\RealCookieBanner\view\BannerCustomize;
10
  use WP_Customize_Color_Control;
@@ -129,7 +130,8 @@ class HeaderDesign {
129
  self::SETTING_LOGO_MAX_HEIGHT => [
130
  'name' => 'logoMaxHeight',
131
  'label' => __('Size', RCB_TD),
132
- 'type' => 'range',
 
133
  'input_attrs' => ['min' => 40, 'max' => 200, 'step' => 0],
134
  'setting' => ['default' => self::DEFAULT_LOGO_MAX_HEIGHT, 'sanitize_callback' => 'absint']
135
  ],
@@ -158,7 +160,8 @@ class HeaderDesign {
158
  self::SETTING_FONT_SIZE => [
159
  'name' => 'fontSize',
160
  'label' => __('Size', RCB_TD),
161
- 'type' => 'range',
 
162
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
163
  'setting' => ['default' => self::DEFAULT_FONT_SIZE, 'sanitize_callback' => 'absint']
164
  ],
@@ -207,9 +210,10 @@ class HeaderDesign {
207
  ],
208
  self::SETTING_BOTTOM_BORDER_WIDTH => [
209
  'name' => 'borderWidth',
210
- 'type' => 'number',
211
- 'input_attrs' => ['min' => 0],
212
- 'label' => __('Height (px)', RCB_TD),
 
213
  'setting' => ['default' => self::DEFAULT_BOTTOM_BORDER_WIDTH, 'sanitize_callback' => 'absint']
214
  ],
215
  self::SETTING_BOTTOM_BORDER_COLOR => [
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CssMarginInput;
7
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
8
+ use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput;
9
  use DevOwl\RealCookieBanner\base\UtilsProvider;
10
  use DevOwl\RealCookieBanner\view\BannerCustomize;
11
  use WP_Customize_Color_Control;
130
  self::SETTING_LOGO_MAX_HEIGHT => [
131
  'name' => 'logoMaxHeight',
132
  'label' => __('Size', RCB_TD),
133
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
134
+ 'unit' => 'px',
135
  'input_attrs' => ['min' => 40, 'max' => 200, 'step' => 0],
136
  'setting' => ['default' => self::DEFAULT_LOGO_MAX_HEIGHT, 'sanitize_callback' => 'absint']
137
  ],
160
  self::SETTING_FONT_SIZE => [
161
  'name' => 'fontSize',
162
  'label' => __('Size', RCB_TD),
163
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
164
+ 'unit' => 'px',
165
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
166
  'setting' => ['default' => self::DEFAULT_FONT_SIZE, 'sanitize_callback' => 'absint']
167
  ],
210
  ],
211
  self::SETTING_BOTTOM_BORDER_WIDTH => [
212
  'name' => 'borderWidth',
213
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
214
+ 'unit' => 'px',
215
+ 'input_attrs' => ['min' => 0, 'step' => 1, 'max' => 100],
216
+ 'label' => __('Height', RCB_TD),
217
  'setting' => ['default' => self::DEFAULT_BOTTOM_BORDER_WIDTH, 'sanitize_callback' => 'absint']
218
  ],
219
  self::SETTING_BOTTOM_BORDER_COLOR => [
inc/view/customize/banner/Legal.php CHANGED
@@ -7,6 +7,7 @@ use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
7
  use DevOwl\RealCookieBanner\base\UtilsProvider;
8
  use DevOwl\RealCookieBanner\comp\language\Hooks;
9
  use DevOwl\RealCookieBanner\Core;
 
10
  use DevOwl\RealCookieBanner\view\BannerCustomize;
11
  use WP_Error;
12
  // @codeCoverageIgnoreStart
@@ -80,7 +81,7 @@ class Legal {
80
  'type' => $disableSiteIds ? 'number' : 'dropdown-pages',
81
  'input_attrs' => $disableSiteIdsAttrs,
82
  'setting' => [
83
- 'default' => \intval(get_option('wp_page_for_privacy_policy', self::DEFAULT_PRIVACY_POLICY)),
84
  'sanitize_callback' => 'absint'
85
  ]
86
  ],
7
  use DevOwl\RealCookieBanner\base\UtilsProvider;
8
  use DevOwl\RealCookieBanner\comp\language\Hooks;
9
  use DevOwl\RealCookieBanner\Core;
10
+ use DevOwl\RealCookieBanner\settings\General;
11
  use DevOwl\RealCookieBanner\view\BannerCustomize;
12
  use WP_Error;
13
  // @codeCoverageIgnoreStart
81
  'type' => $disableSiteIds ? 'number' : 'dropdown-pages',
82
  'input_attrs' => $disableSiteIdsAttrs,
83
  'setting' => [
84
+ 'default' => \DevOwl\RealCookieBanner\settings\General::getInstance()->getDefaultPrivacyPolicy(),
85
  'sanitize_callback' => 'absint'
86
  ]
87
  ],
inc/view/customize/banner/Mobile.php CHANGED
@@ -4,6 +4,7 @@ namespace DevOwl\RealCookieBanner\view\customize\banner;
4
 
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CustomHTML;
 
7
  use DevOwl\RealCookieBanner\base\UtilsProvider;
8
  use DevOwl\RealCookieBanner\view\BannerCustomize;
9
  // @codeCoverageIgnoreStart
@@ -74,7 +75,8 @@ class Mobile {
74
  self::SETTING_MAX_HEIGHT => [
75
  'name' => 'maxHeight',
76
  'label' => __('Maximum height', RCB_TD),
77
- 'type' => 'range',
 
78
  'input_attrs' => ['min' => 200, 'max' => 900, 'step' => 0],
79
  'setting' => ['default' => self::DEFAULT_MAX_HEIGHT, 'sanitize_callback' => 'absint']
80
  ],
@@ -113,7 +115,8 @@ class Mobile {
113
  'Elements in the cookie banner can be scaled smaller or larger relative to the desktop view. Make sure that all elements are still clearly legible so that you obtain valid consents.',
114
  RCB_TD
115
  ),
116
- 'type' => 'range',
 
117
  'input_attrs' => ['min' => 70, 'max' => 110, 'step' => 0],
118
  'setting' => ['default' => self::DEFAULT_SCALE_PERCENT, 'sanitize_callback' => 'absint']
119
  ],
@@ -124,7 +127,8 @@ class Mobile {
124
  'The vertical distance between elements can be decreased or increased relative to the desktop view.',
125
  RCB_TD
126
  ),
127
- 'type' => 'range',
 
128
  'input_attrs' => ['min' => -70, 'max' => 10, 'step' => 0],
129
  'setting' => [
130
  'default' => self::DEFAULT_SCALE_PERCENT_VERTICAL,
4
 
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CustomHTML;
7
+ use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput;
8
  use DevOwl\RealCookieBanner\base\UtilsProvider;
9
  use DevOwl\RealCookieBanner\view\BannerCustomize;
10
  // @codeCoverageIgnoreStart
75
  self::SETTING_MAX_HEIGHT => [
76
  'name' => 'maxHeight',
77
  'label' => __('Maximum height', RCB_TD),
78
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
79
+ 'unit' => 'px',
80
  'input_attrs' => ['min' => 200, 'max' => 900, 'step' => 0],
81
  'setting' => ['default' => self::DEFAULT_MAX_HEIGHT, 'sanitize_callback' => 'absint']
82
  ],
115
  'Elements in the cookie banner can be scaled smaller or larger relative to the desktop view. Make sure that all elements are still clearly legible so that you obtain valid consents.',
116
  RCB_TD
117
  ),
118
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
119
+ 'unit' => '%',
120
  'input_attrs' => ['min' => 70, 'max' => 110, 'step' => 0],
121
  'setting' => ['default' => self::DEFAULT_SCALE_PERCENT, 'sanitize_callback' => 'absint']
122
  ],
127
  'The vertical distance between elements can be decreased or increased relative to the desktop view.',
128
  RCB_TD
129
  ),
130
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
131
+ 'unit' => '%',
132
  'input_attrs' => ['min' => -70, 'max' => 10, 'step' => 0],
133
  'setting' => [
134
  'default' => self::DEFAULT_SCALE_PERCENT_VERTICAL,
inc/view/customize/banner/Texts.php CHANGED
@@ -25,6 +25,7 @@ class Texts {
25
  const HEADLINE_GENERAL = self::SECTION . '-headline-general';
26
  const HEADLINE_EPRIVACY_USA = self::SECTION . '-headline-eprivacy-usa';
27
  const HEADLINE_AGE_NOTICE = self::SECTION . '-headline-age-notice';
 
28
  const HEADLINE_CONSENT_FORWARDING = self::SECTION . '-headline-consent-forwarding';
29
  const HEADLINE_BLOCKER = self::SECTION . '-headline-blocker';
30
  const SETTING = RCB_OPT_PREFIX . '-banner-texts';
@@ -34,6 +35,7 @@ class Texts {
34
  const SETTING_EPRIVACY_USA = self::SETTING . '-eprivacy-usa';
35
  const SETTING_AGE_NOTICE = self::SETTING . '-age-notice';
36
  const SETTING_AGE_NOTICE_BLOCKER = self::SETTING . '-age-notice-blocker';
 
37
  const SETTING_CONSENT_FORWARDING = self::SETTING . '-consent-forwarding';
38
  const SETTING_ACCEPT_ALL = self::SETTING . '-accept-all';
39
  const SETTING_ACCEPT_ESSENTIALS = self::SETTING . '-accept-essentials';
@@ -61,6 +63,7 @@ class Texts {
61
  : \false;
62
  $ePrivacyUSAEnabled = $consentSettings->isEPrivacyUSAEnabled();
63
  $ageNoticeEnabled = $consentSettings->isAgeNoticeEnabled();
 
64
  // Use current always as default for "powered by" link text cause it is random per installation
65
  $poweredByTexts = self::getPoweredByLinkTexts();
66
  $currentPoweredByText = get_option(self::SETTING_POWERED_BY_TEXT);
@@ -86,6 +89,10 @@ class Texts {
86
  self::SETTING_DESCRIPTION => [
87
  'name' => 'description',
88
  'label' => __('Description', RCB_TD),
 
 
 
 
89
  'type' => 'textarea',
90
  'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\TinyMCE::class,
91
  'mediaButtons' => \true,
@@ -178,6 +185,33 @@ class Texts {
178
  'allowEmpty' => \true
179
  ]
180
  ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
181
  self::HEADLINE_CONSENT_FORWARDING => [
182
  'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline::class,
183
  'label' => __('Consent Forwarding', RCB_TD),
@@ -297,6 +331,29 @@ class Texts {
297
  )
298
  );
299
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
300
  /**
301
  * Return a notice HTML for the customize description when RCB's Consent Forwarding is deactivated.
302
  */
@@ -328,9 +385,16 @@ class Texts {
328
  $tempTd = \DevOwl\RealCookieBanner\comp\language\Hooks::getInstance()->createTemporaryTextDomain();
329
  $defaults = [
330
  'headline' => __('Privacy preferences', \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED),
331
- 'description' => __(
332
- 'We use cookies and similar technologies on our website and process personal data about you, such as your IP address. We also share this data with third parties. Data processing may be done with your consent or on the basis of a legitimate interest, which you can object to in the individual privacy settings. You have the right to consent to essential services only and to modify or revoke your consent at a later time in the privacy policy.',
333
- \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
 
 
 
 
 
 
 
334
  ),
335
  'acceptAll' => __('Accept all', \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED),
336
  'acceptEssentials' => __(
@@ -338,7 +402,7 @@ class Texts {
338
  \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
339
  ),
340
  'acceptIndividual' => __(
341
- 'Individual privacy preferences',
342
  \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
343
  ),
344
  'ePrivacyUSA' => __(
@@ -353,6 +417,10 @@ class Texts {
353
  'You are under 16 years old? Unfortunately, you are not permitted to consent to this service to view this content. Please ask your parents or guardians to agree to the service with you!',
354
  \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
355
  ),
 
 
 
 
356
  'consentForwardingExternalHosts' => __(
357
  'Your consent is also applicable on {{websites}}.',
358
  \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
25
  const HEADLINE_GENERAL = self::SECTION . '-headline-general';
26
  const HEADLINE_EPRIVACY_USA = self::SECTION . '-headline-eprivacy-usa';
27
  const HEADLINE_AGE_NOTICE = self::SECTION . '-headline-age-notice';
28
+ const HEADLINE_LIST_SERVICES_NOTICE = self::SECTION . '-headline-list-services-notice';
29
  const HEADLINE_CONSENT_FORWARDING = self::SECTION . '-headline-consent-forwarding';
30
  const HEADLINE_BLOCKER = self::SECTION . '-headline-blocker';
31
  const SETTING = RCB_OPT_PREFIX . '-banner-texts';
35
  const SETTING_EPRIVACY_USA = self::SETTING . '-eprivacy-usa';
36
  const SETTING_AGE_NOTICE = self::SETTING . '-age-notice';
37
  const SETTING_AGE_NOTICE_BLOCKER = self::SETTING . '-age-notice-blocker';
38
+ const SETTING_LIST_SERVICES_NOTICE = self::SETTING . '-list-services-notice';
39
  const SETTING_CONSENT_FORWARDING = self::SETTING . '-consent-forwarding';
40
  const SETTING_ACCEPT_ALL = self::SETTING . '-accept-all';
41
  const SETTING_ACCEPT_ESSENTIALS = self::SETTING . '-accept-essentials';
63
  : \false;
64
  $ePrivacyUSAEnabled = $consentSettings->isEPrivacyUSAEnabled();
65
  $ageNoticeEnabled = $consentSettings->isAgeNoticeEnabled();
66
+ $listServicesNoticeEnabled = $consentSettings->isListServicesNoticeEnabled();
67
  // Use current always as default for "powered by" link text cause it is random per installation
68
  $poweredByTexts = self::getPoweredByLinkTexts();
69
  $currentPoweredByText = get_option(self::SETTING_POWERED_BY_TEXT);
89
  self::SETTING_DESCRIPTION => [
90
  'name' => 'description',
91
  'label' => __('Description', RCB_TD),
92
+ 'description' => __(
93
+ 'Use <code>{{privacyPolicy}}privacy policy{{/privacyPolicy}}</code> as a placeholder for the privacy policy link.',
94
+ RCB_TD
95
+ ),
96
  'type' => 'textarea',
97
  'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\TinyMCE::class,
98
  'mediaButtons' => \true,
185
  'allowEmpty' => \true
186
  ]
187
  ],
188
+ self::HEADLINE_LIST_SERVICES_NOTICE => [
189
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline::class,
190
+ 'label' => __('List of services', RCB_TD),
191
+ 'level' => 3,
192
+ 'isSubHeadline' => \true,
193
+ 'description' => $listServicesNoticeEnabled ? '' : $this->getListServicesNotice()
194
+ ],
195
+ self::SETTING_LIST_SERVICES_NOTICE => [
196
+ 'name' => 'listServicesNotice',
197
+ 'label' => __('Naming of all services in first view', RCB_TD),
198
+ 'description' => $listServicesNoticeEnabled
199
+ ? __(
200
+ 'Use <code>{{services}}</code> and <code>{{serviceGroups}}</code> as a placeholder for a list of services and groups.',
201
+ RCB_TD
202
+ )
203
+ : '',
204
+ 'type' => 'textarea',
205
+ 'input_attrs' => $listServicesNoticeEnabled ? [] : ['disabled' => 'disabled'],
206
+ 'class' => $listServicesNoticeEnabled
207
+ ? \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\TinyMCE::class
208
+ : null,
209
+ 'setting' => [
210
+ 'default' => $defaultButtonTexts['listServicesNotice'],
211
+ 'sanitize_callback' => 'wp_kses_post',
212
+ 'allowEmpty' => \true
213
+ ]
214
+ ],
215
  self::HEADLINE_CONSENT_FORWARDING => [
216
  'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline::class,
217
  'label' => __('Consent Forwarding', RCB_TD),
331
  )
332
  );
333
  }
334
+ /**
335
+ * Return a notice HTML for the customize description when list-services notice is deactivated.
336
+ */
337
+ public static function getListServicesNotice() {
338
+ return \sprintf(
339
+ '<div class="notice notice-info inline below-h2 notice-alt" style="margin: 10px 0px 0px;"><p>%s</p></div>',
340
+ \sprintf(
341
+ // translators:
342
+ __(
343
+ 'Naming of all services in first view is currently disabled. Please navigate to %1$sSettings > Consent%2$s to activate it.',
344
+ RCB_TD
345
+ ),
346
+ '<a href="' .
347
+ esc_attr(
348
+ \DevOwl\RealCookieBanner\Core::getInstance()
349
+ ->getConfigPage()
350
+ ->getUrl()
351
+ ) .
352
+ '#/settings/consent" target="_blank">',
353
+ '</a>'
354
+ )
355
+ );
356
+ }
357
  /**
358
  * Return a notice HTML for the customize description when RCB's Consent Forwarding is deactivated.
359
  */
385
  $tempTd = \DevOwl\RealCookieBanner\comp\language\Hooks::getInstance()->createTemporaryTextDomain();
386
  $defaults = [
387
  'headline' => __('Privacy preferences', \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED),
388
+ 'description' => \sprintf(
389
+ '%s<br/><br/>%s',
390
+ __(
391
+ 'We use cookies and similar technologies on our website and process your personal data (e.g. IP address), for example, to personalize content and ads, to integrate media from third-party providers or to analyze traffic on our website. Data processing may also happen as a result of cookies being set. We share this data with third parties that we name in the privacy settings.',
392
+ \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
393
+ ),
394
+ __(
395
+ 'The data processing may take place with your consent or on the basis of a legitimate interest, which you can object to in the privacy settings. You have the right not to consent and to change or revoke your consent at a later time. For more information on the use of your data, please visit our {{privacyPolicy}}privacy policy{{/privacyPolicy}}.',
396
+ \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
397
+ )
398
  ),
399
  'acceptAll' => __('Accept all', \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED),
400
  'acceptEssentials' => __(
402
  \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
403
  ),
404
  'acceptIndividual' => __(
405
+ 'Set privacy settings individually',
406
  \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
407
  ),
408
  'ePrivacyUSA' => __(
417
  'You are under 16 years old? Unfortunately, you are not permitted to consent to this service to view this content. Please ask your parents or guardians to agree to the service with you!',
418
  \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
419
  ),
420
+ 'listServicesNotice' => __(
421
+ 'By accepting all services, you allow {{services}} to be loaded. These services are divided into groups {{serviceGroups}} according to their purpose (belonging marked with superscript numbers).',
422
+ \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
423
+ ),
424
  'consentForwardingExternalHosts' => __(
425
  'Your consent is also applicable on {{websites}}.',
426
  \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
inc/view/customize/banner/individual/Group.php CHANGED
@@ -5,6 +5,7 @@ namespace DevOwl\RealCookieBanner\view\customize\banner\individual;
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CssMarginInput;
7
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
 
8
  use DevOwl\RealCookieBanner\base\UtilsProvider;
9
  use DevOwl\RealCookieBanner\view\BannerCustomize;
10
  use DevOwl\RealCookieBanner\view\customize\banner\BodyDesign;
@@ -94,9 +95,10 @@ class Group {
94
  ],
95
  self::SETTING_CHECKBOX_BORDER_WIDTH => [
96
  'name' => 'checkboxBorderWidth',
97
- 'type' => 'number',
98
- 'input_attrs' => ['min' => 0],
99
- 'label' => __('Border width (px)', RCB_TD),
 
100
  'setting' => ['default' => self::DEFAULT_CHECKBOX_BORDER_WIDTH, 'sanitize_callback' => 'absint']
101
  ],
102
  self::SETTING_CHECKBOX_BORDER_COLOR => [
@@ -173,15 +175,17 @@ class Group {
173
  ],
174
  self::SETTING_GROUP_SPACING => [
175
  'name' => 'groupSpacing',
176
- 'type' => 'number',
177
- 'input_attrs' => ['min' => 0],
178
- 'label' => __('Spacing between groups (px)', RCB_TD),
 
179
  'setting' => ['default' => self::DEFAULT_GROUP_SPACING, 'sanitize_callback' => 'absint']
180
  ],
181
  self::SETTING_GROUP_BORDER_RADIUS => [
182
  'name' => 'groupBorderRadius',
183
  'label' => __('Border radius', RCB_TD),
184
- 'type' => 'range',
 
185
  'input_attrs' => ['min' => 0, 'max' => 50, 'step' => 0],
186
  'setting' => ['default' => self::DEFAULT_GROUP_BORDER_RADIUS, 'sanitize_callback' => 'absint']
187
  ],
@@ -193,9 +197,10 @@ class Group {
193
  ],
194
  self::SETTING_GROUP_BORDER_WIDTH => [
195
  'name' => 'groupBorderWidth',
196
- 'type' => 'number',
197
- 'input_attrs' => ['min' => 0],
198
- 'label' => __('Width (px)', RCB_TD),
 
199
  'setting' => ['default' => self::DEFAULT_GROUP_BORDER_WIDTH, 'sanitize_callback' => 'absint']
200
  ],
201
  self::SETTING_GROUP_BORDER_COLOR => [
@@ -216,7 +221,8 @@ class Group {
216
  self::SETTING_HEADLINE_FONT_SIZE => [
217
  'name' => 'headlineFontSize',
218
  'label' => __('Size', RCB_TD),
219
- 'type' => 'range',
 
220
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
221
  'setting' => ['default' => self::DEFAULT_HEADLINE_FONT_SIZE, 'sanitize_callback' => 'absint']
222
  ],
@@ -245,7 +251,8 @@ class Group {
245
  self::SETTING_DESCRIPTION_FONT_SIZE => [
246
  'name' => 'descriptionFontSize',
247
  'label' => __('Size', RCB_TD),
248
- 'type' => 'range',
 
249
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
250
  'setting' => ['default' => self::DEFAULT_DESCRIPTION_FONT_SIZE, 'sanitize_callback' => 'absint']
251
  ],
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CssMarginInput;
7
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
8
+ use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput;
9
  use DevOwl\RealCookieBanner\base\UtilsProvider;
10
  use DevOwl\RealCookieBanner\view\BannerCustomize;
11
  use DevOwl\RealCookieBanner\view\customize\banner\BodyDesign;
95
  ],
96
  self::SETTING_CHECKBOX_BORDER_WIDTH => [
97
  'name' => 'checkboxBorderWidth',
98
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
99
+ 'unit' => 'px',
100
+ 'input_attrs' => ['min' => 0, 'max' => 15, 'step' => 1],
101
+ 'label' => __('Border width', RCB_TD),
102
  'setting' => ['default' => self::DEFAULT_CHECKBOX_BORDER_WIDTH, 'sanitize_callback' => 'absint']
103
  ],
104
  self::SETTING_CHECKBOX_BORDER_COLOR => [
175
  ],
176
  self::SETTING_GROUP_SPACING => [
177
  'name' => 'groupSpacing',
178
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
179
+ 'unit' => 'px',
180
+ 'input_attrs' => ['min' => 0, 'step' => 1, 'max' => 300],
181
+ 'label' => __('Spacing between groups', RCB_TD),
182
  'setting' => ['default' => self::DEFAULT_GROUP_SPACING, 'sanitize_callback' => 'absint']
183
  ],
184
  self::SETTING_GROUP_BORDER_RADIUS => [
185
  'name' => 'groupBorderRadius',
186
  'label' => __('Border radius', RCB_TD),
187
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
188
+ 'unit' => 'px',
189
  'input_attrs' => ['min' => 0, 'max' => 50, 'step' => 0],
190
  'setting' => ['default' => self::DEFAULT_GROUP_BORDER_RADIUS, 'sanitize_callback' => 'absint']
191
  ],
197
  ],
198
  self::SETTING_GROUP_BORDER_WIDTH => [
199
  'name' => 'groupBorderWidth',
200
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
201
+ 'unit' => 'px',
202
+ 'input_attrs' => ['min' => 0, 'max' => 100, 'step' => 1],
203
+ 'label' => __('Width', RCB_TD),
204
  'setting' => ['default' => self::DEFAULT_GROUP_BORDER_WIDTH, 'sanitize_callback' => 'absint']
205
  ],
206
  self::SETTING_GROUP_BORDER_COLOR => [
221
  self::SETTING_HEADLINE_FONT_SIZE => [
222
  'name' => 'headlineFontSize',
223
  'label' => __('Size', RCB_TD),
224
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
225
+ 'unit' => 'px',
226
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
227
  'setting' => ['default' => self::DEFAULT_HEADLINE_FONT_SIZE, 'sanitize_callback' => 'absint']
228
  ],
251
  self::SETTING_DESCRIPTION_FONT_SIZE => [
252
  'name' => 'descriptionFontSize',
253
  'label' => __('Size', RCB_TD),
254
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
255
+ 'unit' => 'px',
256
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
257
  'setting' => ['default' => self::DEFAULT_DESCRIPTION_FONT_SIZE, 'sanitize_callback' => 'absint']
258
  ],
inc/view/customize/banner/individual/Layout.php CHANGED
@@ -3,6 +3,7 @@
3
  namespace DevOwl\RealCookieBanner\view\customize\banner\individual;
4
 
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
 
6
  use DevOwl\RealCookieBanner\base\UtilsProvider;
7
  use DevOwl\RealCookieBanner\view\BannerCustomize;
8
  use DevOwl\RealCookieBanner\view\customize\banner\BodyDesign;
@@ -49,9 +50,10 @@ class Layout {
49
  ],
50
  self::SETTING_DIALOG_MAX_WIDTH => [
51
  'name' => 'dialogMaxWidth',
52
- 'label' => __('Maximum width (px)', RCB_TD),
53
- 'type' => 'number',
54
- 'input_attrs' => ['step' => 5, 'min' => 200],
 
55
  'setting' => ['default' => self::DEFAULT_DIALOG_MAX_WIDTH, 'sanitize_callback' => 'absint']
56
  ],
57
  self::SETTING_INHERIT_BANNER_MAX_WIDTH => [
@@ -68,9 +70,10 @@ class Layout {
68
  ],
69
  self::SETTING_BANNER_MAX_WIDTH => [
70
  'name' => 'bannerMaxWidth',
71
- 'label' => __('Maximum width (px)', RCB_TD),
72
- 'type' => 'number',
73
- 'input_attrs' => ['step' => 5, 'min' => 200],
 
74
  'setting' => ['default' => self::DEFAULT_BANNER_MAX_WIDTH, 'sanitize_callback' => 'absint']
75
  ],
76
  self::SETTING_DESCRIPTION_TEXT_ALIGN => [
3
  namespace DevOwl\RealCookieBanner\view\customize\banner\individual;
4
 
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
+ use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput;
7
  use DevOwl\RealCookieBanner\base\UtilsProvider;
8
  use DevOwl\RealCookieBanner\view\BannerCustomize;
9
  use DevOwl\RealCookieBanner\view\customize\banner\BodyDesign;
50
  ],
51
  self::SETTING_DIALOG_MAX_WIDTH => [
52
  'name' => 'dialogMaxWidth',
53
+ 'label' => __('Maximum width', RCB_TD),
54
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
55
+ 'unit' => 'px',
56
+ 'input_attrs' => ['step' => 5, 'min' => 200, 'max' => 3000],
57
  'setting' => ['default' => self::DEFAULT_DIALOG_MAX_WIDTH, 'sanitize_callback' => 'absint']
58
  ],
59
  self::SETTING_INHERIT_BANNER_MAX_WIDTH => [
70
  ],
71
  self::SETTING_BANNER_MAX_WIDTH => [
72
  'name' => 'bannerMaxWidth',
73
+ 'label' => __('Maximum width', RCB_TD),
74
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
75
+ 'unit' => 'px',
76
+ 'input_attrs' => ['step' => 5, 'min' => 200, 'max' => 3000],
77
  'setting' => ['default' => self::DEFAULT_BANNER_MAX_WIDTH, 'sanitize_callback' => 'absint']
78
  ],
79
  self::SETTING_DESCRIPTION_TEXT_ALIGN => [
inc/view/customize/banner/individual/SaveButton.php CHANGED
@@ -2,9 +2,12 @@
2
 
3
  namespace DevOwl\RealCookieBanner\view\customize\banner\individual;
4
 
 
5
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CssMarginInput;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
 
7
  use DevOwl\RealCookieBanner\base\UtilsProvider;
 
8
  use DevOwl\RealCookieBanner\view\BannerCustomize;
9
  use DevOwl\RealCookieBanner\view\customize\banner\BodyDesign;
10
  use WP_Customize_Color_Control;
@@ -22,6 +25,7 @@ class SaveButton {
22
  const HEADLINE_BORDER = self::SECTION . '-headline-border';
23
  const HEADLINE_HOVER = self::SECTION . '-headline-hover';
24
  const SETTING = RCB_OPT_PREFIX . '-save-button';
 
25
  const SETTING_TYPE = self::SETTING . '-type';
26
  const SETTING_PADDING = self::SETTING . '-padding';
27
  const SETTING_BG = self::SETTING . '-bg';
@@ -34,6 +38,7 @@ class SaveButton {
34
  const SETTING_HOVER_BG = self::SETTING . '-hover-bg';
35
  const SETTING_HOVER_BORDER_COLOR = self::SETTING . '-hover-border-color';
36
  const SETTING_HOVER_FONT_COLOR = self::SETTING . '-hover-font-color';
 
37
  const DEFAULT_TYPE = 'button';
38
  const DEFAULT_PADDING = \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::DEFAULT_BUTTON_ACCEPT_ESSENTIALS_PADDING;
39
  const DEFAULT_BG = \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::DEFAULT_BUTTON_ACCEPT_ESSENTIALS_BG;
@@ -54,6 +59,22 @@ class SaveButton {
54
  'name' => 'saveButton',
55
  'title' => __('"Save" button', RCB_TD),
56
  'controls' => [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  self::SETTING_TYPE => [
58
  'name' => 'type',
59
  'label' => __('Type', RCB_TD),
@@ -90,7 +111,8 @@ class SaveButton {
90
  self::SETTING_FONT_SIZE => [
91
  'name' => 'fontSize',
92
  'label' => __('Size', RCB_TD),
93
- 'type' => 'range',
 
94
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
95
  'setting' => ['default' => self::DEFAULT_FONT_SIZE, 'sanitize_callback' => 'absint']
96
  ],
@@ -114,9 +136,10 @@ class SaveButton {
114
  ],
115
  self::SETTING_BORDER_WIDTH => [
116
  'name' => 'borderWidth',
117
- 'type' => 'number',
118
- 'input_attrs' => ['min' => 0],
119
- 'label' => __('Border width (px)', RCB_TD),
 
120
  'setting' => ['default' => self::DEFAULT_BORDER_WIDTH, 'sanitize_callback' => 'absint']
121
  ],
122
  self::SETTING_BORDER_COLOR => [
@@ -161,4 +184,14 @@ class SaveButton {
161
  ]
162
  ];
163
  }
 
 
 
 
 
 
 
 
 
 
164
  }
2
 
3
  namespace DevOwl\RealCookieBanner\view\customize\banner\individual;
4
 
5
+ use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel;
6
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\CssMarginInput;
7
  use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\Headline;
8
+ use DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput;
9
  use DevOwl\RealCookieBanner\base\UtilsProvider;
10
+ use DevOwl\RealCookieBanner\Core;
11
  use DevOwl\RealCookieBanner\view\BannerCustomize;
12
  use DevOwl\RealCookieBanner\view\customize\banner\BodyDesign;
13
  use WP_Customize_Color_Control;
25
  const HEADLINE_BORDER = self::SECTION . '-headline-border';
26
  const HEADLINE_HOVER = self::SECTION . '-headline-hover';
27
  const SETTING = RCB_OPT_PREFIX . '-save-button';
28
+ const SETTING_USE_ACCEPT_ALL = self::SETTING . '-use-accept-all';
29
  const SETTING_TYPE = self::SETTING . '-type';
30
  const SETTING_PADDING = self::SETTING . '-padding';
31
  const SETTING_BG = self::SETTING . '-bg';
38
  const SETTING_HOVER_BG = self::SETTING . '-hover-bg';
39
  const SETTING_HOVER_BORDER_COLOR = self::SETTING . '-hover-border-color';
40
  const SETTING_HOVER_FONT_COLOR = self::SETTING . '-hover-font-color';
41
+ const DEFAULT_USE_ACCEPT_ALL = \true;
42
  const DEFAULT_TYPE = 'button';
43
  const DEFAULT_PADDING = \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::DEFAULT_BUTTON_ACCEPT_ESSENTIALS_PADDING;
44
  const DEFAULT_BG = \DevOwl\RealCookieBanner\view\customize\banner\BodyDesign::DEFAULT_BUTTON_ACCEPT_ESSENTIALS_BG;
59
  'name' => 'saveButton',
60
  'title' => __('"Save" button', RCB_TD),
61
  'controls' => [
62
+ self::SETTING_USE_ACCEPT_ALL => [
63
+ 'name' => 'useAcceptAll',
64
+ 'label' => __('Use the same stylings as for "Accept all"', RCB_TD),
65
+ 'description' => __(
66
+ 'According to the <a href="https://www.datenschutzkonferenz-online.de/media/oh/20211220_oh_telemedien.pdf" target="_blank">guidance of the data protection authorities in Germany (German)</a>, there must be an equivalent way for your visitors to express their choice (agree to everything, continue without consent or an indivudual decision). Equivalent does not necessarily mean that the buttons/links must look exactly the same. However, you should be safest if they look exactly the same.',
67
+ RCB_TD
68
+ ),
69
+ 'type' => 'checkbox',
70
+ 'setting' => [
71
+ 'default' => self::DEFAULT_USE_ACCEPT_ALL,
72
+ 'sanitize_callback' => [
73
+ \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\AbstractCustomizePanel::class,
74
+ 'sanitize_checkbox'
75
+ ]
76
+ ]
77
+ ],
78
  self::SETTING_TYPE => [
79
  'name' => 'type',
80
  'label' => __('Type', RCB_TD),
111
  self::SETTING_FONT_SIZE => [
112
  'name' => 'fontSize',
113
  'label' => __('Size', RCB_TD),
114
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
115
+ 'unit' => 'px',
116
  'input_attrs' => ['min' => 10, 'max' => 30, 'step' => 0],
117
  'setting' => ['default' => self::DEFAULT_FONT_SIZE, 'sanitize_callback' => 'absint']
118
  ],
136
  ],
137
  self::SETTING_BORDER_WIDTH => [
138
  'name' => 'borderWidth',
139
+ 'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\RangeInput::class,
140
+ 'unit' => 'px',
141
+ 'input_attrs' => ['min' => 0, 'max' => 100, 'step' => 1],
142
+ 'label' => __('Border width', RCB_TD),
143
  'setting' => ['default' => self::DEFAULT_BORDER_WIDTH, 'sanitize_callback' => 'absint']
144
  ],
145
  self::SETTING_BORDER_COLOR => [
184
  ]
185
  ];
186
  }
187
+ /**
188
+ * Deactivate "Use same stylings as 'Accept all'" as it should not be activated automatically for already existing users.
189
+ *
190
+ * @param string|false $installed
191
+ */
192
+ public static function new_version_installation_after_2_17_3($installed) {
193
+ if (\DevOwl\RealCookieBanner\Core::versionCompareOlderThan($installed, '2.17.3', ['2.17.4', '2.18.0'])) {
194
+ update_option(self::SETTING_USE_ACCEPT_ALL, '');
195
+ }
196
+ }
197
  }
inc/view/customize/banner/individual/Texts.php CHANGED
@@ -50,6 +50,10 @@ class Texts {
50
  self::SETTING_DESCRIPTION => [
51
  'name' => 'description',
52
  'label' => __('Description', RCB_TD),
 
 
 
 
53
  'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\TinyMCE::class,
54
  'type' => 'textarea',
55
  'setting' => [
@@ -83,9 +87,20 @@ class Texts {
83
  $tempTd = \DevOwl\RealCookieBanner\comp\language\Hooks::getInstance()->createTemporaryTextDomain();
84
  $defaults = [
85
  'headline' => __('Individual privacy preferences', \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED),
86
- 'description' => __(
87
- 'We use cookies and similar technologies on our website and process personal data about you, such as your IP address. We also share this data with third parties. Data processing may be done with your consent or on the basis of a legitimate interest, which you can object to. You have the right to consent to essential services only and to modify or revoke your consent at a later time in the privacy policy. Below you will find an overview of all services used by this website. You can view detailed information about each service and agree to them individually or exercise your right to object.',
88
- \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
 
 
 
 
 
 
 
 
 
 
 
89
  ),
90
  'save' => __('Save custom choices', \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED),
91
  'showMore' => __('Show service information', \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED),
50
  self::SETTING_DESCRIPTION => [
51
  'name' => 'description',
52
  'label' => __('Description', RCB_TD),
53
+ 'description' => __(
54
+ 'Use <code>{{privacyPolicy}}privacy policy{{/privacyPolicy}}</code> as a placeholder for the privacy policy link.',
55
+ RCB_TD
56
+ ),
57
  'class' => \DevOwl\RealCookieBanner\Vendor\DevOwl\Customize\controls\TinyMCE::class,
58
  'type' => 'textarea',
59
  'setting' => [
87
  $tempTd = \DevOwl\RealCookieBanner\comp\language\Hooks::getInstance()->createTemporaryTextDomain();
88
  $defaults = [
89
  'headline' => __('Individual privacy preferences', \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED),
90
+ 'description' => \sprintf(
91
+ '%s<br/><br/>%s<br/><br/>%s',
92
+ __(
93
+ 'We use cookies and similar technologies on our website and process your personal data (e.g. IP address), for example, to personalize content and ads, to integrate media from third-party providers or to analyze traffic on our website. Data processing may also happen as a result of cookies being set. We share this data with third parties that we name in the privacy settings.',
94
+ \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
95
+ ),
96
+ __(
97
+ 'The data processing may take place with your consent or on the basis of a legitimate interest, which you can object to in the privacy settings. You have the right not to consent and to change or revoke your consent at a later time. For more information on the use of your data, please visit our {{privacyPolicy}}privacy policy{{/privacyPolicy}}.',
98
+ \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
99
+ ),
100
+ __(
101
+ 'Below you will find an overview of all services used by this website. You can view detailed information about each service and agree to them individually or exercise your right to object.',
102
+ \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED
103
+ )
104
  ),
105
  'save' => __('Save custom choices', \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED),
106
  'showMore' => __('Show service information', \DevOwl\RealCookieBanner\comp\language\Hooks::TD_FORCED),
inc/view/shortcode/{PrintUuidShortcode.php → HistoryUuidsShortcode.php} RENAMED
@@ -8,11 +8,18 @@ use DevOwl\RealCookieBanner\base\UtilsProvider;
8
  // Avoid direct file request
9
  // @codeCoverageIgnoreEnd
10
  /**
11
- * Shortcode to print the consent UUID of the current user.
12
  */
13
- class PrintUuidShortcode {
14
  use UtilsProvider;
15
- const TAG = 'rcb-consent-print-uuid';
 
 
 
 
 
 
 
16
  /**
17
  * Render shortcode HTML.
18
  *
8
  // Avoid direct file request
9
  // @codeCoverageIgnoreEnd
10
  /**
11
+ * Shortcode to print the consent UUIDs of the current user.
12
  */
13
+ class HistoryUuidsShortcode {
14
  use UtilsProvider;
15
+ const TAG = 'rcb-consent-history-uuids';
16
+ /**
17
+ * Real Cookie Banner v2 had only one UUID in their consent. It does not change any behavior,
18
+ * but the name changed accordingly.
19
+ *
20
+ * @deprecated
21
+ */
22
+ const DEPRECATED_TAG = 'rcb-consent-print-uuid';
23
  /**
24
  * Render shortcode HTML.
25
  *
index.php CHANGED
@@ -8,7 +8,7 @@
8
  * Description: Obtain GDPR (DSGVO) and ePrivacy (EU cookie law) compliant opt-in consent. Find cookies and fill all legal information in your cookie banner. More than just a cookie notice!
9
  * Author: devowl.io
10
  * Author URI: https://devowl.io
11
- * Version: 2.17.3
12
  * Text Domain: real-cookie-banner
13
  * Domain Path: /languages
14
  */
8
  * Description: Obtain GDPR (DSGVO) and ePrivacy (EU cookie law) compliant opt-in consent. Find cookies and fill all legal information in your cookie banner. More than just a cookie notice!
9
  * Author: devowl.io
10
  * Author URI: https://devowl.io
11
+ * Version: 2.18.1
12
  * Text Domain: real-cookie-banner
13
  * Domain Path: /languages
14
  */
languages/real-cookie-banner-bg_BG.mo CHANGED
Binary file
languages/real-cookie-banner-bg_BG.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Няма активиран лиценз - не е за производ
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Лицензът на продукта не е за производствена употреба!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Лицензът на продукта не е за производствена употреба!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " и "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Без срок на валидност"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Освен това давате съгласието си за предаване на данни на партньори по стандарта TCF за следните цели:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Списък с доставчици"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Доставчици"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Покажи повече"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Скрий"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Обработка на данни на правното основание:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Няма искания от доставчици за целите на това правно основание."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Нестандартизирана обработка на данни"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Някои услуги задават бисквитки и/или обработват лични данни, без да спазват стандартите за комуникация за съгласие. Тези услуги са разделени на няколко групи. Така наречените \"основни услуги\" се използват въз основа на легитимен интерес и не могат да бъдат отказани (може да се наложи да се направи възражение по имейл или с писмо в съответствие с политиката за поверителност), докато всички останали услуги се използват само след дадено съгласие."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Обработка на данни, стандартизирана съгласно TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Рамката за прозрачност и съгласие (TCF) е стандарт за получаване на последователно съгласие за обработка на лични данни и задаване на бисквитки. Това трябва да даде възможност на всички участници в цифровата (рекламната) верига да гарантират, че задават, обработват и съхраняват данни и бисквитки в съответствие с ОРЗД и Директивата за правото на неприкосновеност на личния живот и електронни комуникации."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Цели"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Специални цели"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Функции"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Специални функции"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Целите описват с каква цел кои доставчици могат да задават \"бисквитки\" и да обработват лични данни. Целите се избират предварително, ако има законен интерес за обработката на данните му. За всички останали цели данните ще се обработват само с изрично съгласие."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Специалните цели за задаване на бисквитки и обработване на лични данни от нашите доставчици описват целите, за които имаме легитимен интерес, който не може да бъде отхвърлен. Например, трябва да обработваме данни, за да предотвратим измами."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Характеристиките за обработване на лични данни описват как данните се използват за изпълнение на една или повече цели. Функциите не могат да бъдат отхвърлени, но в раздела \"Цели\" целите, които водят до използването на функциите, могат да бъдат избрани или отменени. Всяка цел може да доведе до използването на функции."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Специалните функции за обработване на лични данни описват как данните се използват за изпълнение на една или повече цели по задълбочен начин. Личните данни ще бъдат обработвани по този начин само с изрично съгласие."
languages/real-cookie-banner-cs_CZ.mo CHANGED
Binary file
languages/real-cookie-banner-cs_CZ.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Žádná licence není aktivována - není určena pro produkční použ
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licence produktu není určena pro výrobní použití!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licence produktu není určena pro výrobní použití!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " a "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Žádné vypršení platnosti"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Kromě toho souhlasíte s předáváním údajů partnerům podle standardu TCF pro následující účely:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Seznam prodejců"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Prodejci"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Zobrazit více"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Skrýt"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Zpracování údajů na právním základě:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Žádný prodejce nežádá o účely na tomto právním základě."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Nestandardizované zpracování údajů"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Některé služby nastavují soubory cookie a/nebo zpracovávají osobní údaje, aniž by dodržovaly standardy komunikace se souhlasem. Tyto služby se dělí do několika skupin. Takzvané \"základní služby\" jsou využívány na základě oprávněného zájmu a nelze je odmítnout (námitku je případně nutné vznést e-mailem nebo dopisem v souladu se zásadami ochrany osobních údajů), zatímco všechny ostatní služby jsou využívány pouze po udělení souhlasu."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Standardizované zpracování údajů podle TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Rámec pro transparentnost a souhlas (TCF) je standardem pro získání konzistentního souhlasu se zpracováním osobních údajů a nastavením souborů cookie. To by mělo umožnit všem účastníkům digitálního (reklamního) řetězce zajistit, aby nastavovali, zpracovávali a ukládali údaje a soubory cookie v souladu s GDPR a směrnicí o soukromí a elektronických komunikacích."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Účely"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Zvláštní účely"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Funkce"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Zvláštní funkce"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Účely popisují, za jakým účelem mohou jednotliví poskytovatelé nastavovat soubory cookie a zpracovávat osobní údaje. Účely jsou předem zvoleny, pokud existuje oprávněný zájem na jejich zpracování údajů. Pro všechny ostatní účely se údaje zpracovávají pouze s výslovným souhlasem."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Zvláštní účely pro nastavení souborů cookie a zpracování osobních údajů našimi dodavateli popisují účely, pro které máme oprávněný zájem, který nelze odmítnout. Například potřebujeme zpracovávat údaje, abychom zabránili podvodům."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Funkce pro zpracování osobních údajů popisují, jak jsou údaje používány ke splnění jednoho nebo více účelů. Funkce nelze odmítnout, ale v části \"Účely\" lze vybrat nebo zrušit výběr účelů, které vedou k použití funkcí. K použití funkcí může vést jakýkoli účel."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Zvláštní funkce pro zpracování osobních údajů popisují, jak jsou údaje používány k naplnění jednoho nebo více účelů hloubkovým způsobem. Osobní údaje budou tímto způsobem zpracovávány pouze s výslovným souhlasem."
languages/real-cookie-banner-da_DK.mo CHANGED
Binary file
languages/real-cookie-banner-da_DK.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Ingen licens aktiveret - ikke til produktionsbrug!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Produktlicens ikke til produktionsbrug!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Produktlicens ikke til produktionsbrug!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " og "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Ingen udløbsdato"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Derudover giver du dit samtykke til overførsel af data til partnere i henhold til TCF-standarden til følgende formål:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Leverandørliste"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Leverandører"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Vis mere"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Skjul"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Databehandling på retsgrundlag af:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Ingen anmodninger fra sælgere har til formål under dette retsgrundlag."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Ikke-standardiseret databehandling"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Nogle tjenester sætter cookies og/eller behandler personoplysninger uden at overholde standarderne for kommunikation af samtykke. Disse tjenester er opdelt i flere grupper. Såkaldte \"væsentlige tjenester\" anvendes på grundlag af legitime interesser og kan ikke fravælges (en indsigelse skal muligvis fremsættes pr. e-mail eller brev i overensstemmelse med privatlivspolitikken), mens alle andre tjenester kun anvendes efter at der er givet samtykke."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Databehandling standardiseret i henhold til TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Transparency and Consent Framework (TCF) er en standard for indhentning af konsekvent samtykke til behandling af personoplysninger og cookie-sætning. Dette skal gøre det muligt for alle parter i den digitale (reklame)kæde at sikre, at de indstiller, behandler og opbevarer data og cookies i overensstemmelse med GDPR og ePrivacy-direktivet."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Formål"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Særlige formål"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Funktioner"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Særlige funktioner"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Formål beskriver, til hvilket formål hvilke udbydere må sætte cookies og behandle personoplysninger. Formålene vælges på forhånd, hvis der er en legitim interesse i databehandlingen. Til alle andre formål behandles data kun med udtrykkeligt samtykke."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Særlige formål for vores leverandørers indstilling af cookies og behandling af personoplysninger beskriver formål, hvortil vi har en legitim interesse, som ikke kan afvises. Vi har f.eks. brug for at behandle data for at forhindre svig."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Funktioner til behandling af personoplysninger beskriver, hvordan data bruges til at opfylde et eller flere formål. Funktioner kan ikke fravælges, men i afsnittet \"Formål\" kan formål, der fører til brugen af funktioner, vælges til eller fravælges. Alle formål kan føre til, at funktioner anvendes."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Særlige funktioner til behandling af personoplysninger beskriver, hvordan data anvendes til at opfylde et eller flere formål på en dybtgående måde. Personoplysninger vil kun blive behandlet på denne måde med udtrykkeligt samtykke."
languages/real-cookie-banner-de_AT.mo CHANGED
Binary file
languages/real-cookie-banner-de_AT.po CHANGED
@@ -2,7 +2,7 @@ msgid ""
2
  msgstr ""
3
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
4
  "POT-Creation-Date: n/a\n"
5
- "PO-Revision-Date: 2022-04-29 07:43+0000\n"
6
  "Last-Translator: Matthias Günter <matthias.guenter@devowl.io>\n"
7
  "Language-Team: German <https://translate.devowl.io/projects/wordpress-real-"
8
  "cookie-banner-backend-php/develop/de/>\n"
@@ -220,7 +220,7 @@ msgstr ""
220
  msgid "Host"
221
  msgstr "Host"
222
 
223
- #: inc/Assets.php:1
224
  msgid "Duration"
225
  msgstr "Dauer"
226
 
@@ -248,6 +248,10 @@ msgstr "Monat(e)"
248
  msgid "year(s)"
249
  msgstr "Jahr(e)"
250
 
 
 
 
 
251
  #: inc/Assets.php:1 inc/view/customize/banner/BasicLayout.php:1
252
  #: inc/view/customize/banner/BodyDesign.php:1
253
  #: inc/view/customize/banner/individual/SaveButton.php:1
@@ -323,6 +327,11 @@ msgstr "Keine Lizenz aktiviert - kein Produktionseinsatz!"
323
  msgid "Product license not for production use!"
324
  msgstr "Produktlizenz nicht für den Produktionseinsatz!"
325
 
 
 
 
 
 
326
  #: inc/Assets.php:1 inc/view/checklist/GetPro.php:1
327
  msgid "Learn more"
328
  msgstr "Mehr erfahren"
@@ -5023,9 +5032,6 @@ msgid "Border"
5023
  msgstr "Rahmen"
5024
 
5025
  #: inc/overrides/pro/view/customize/banner/TcfBodyDesign.php:1
5026
- #: inc/view/customize/banner/BodyDesign.php:1
5027
- #: inc/view/customize/banner/individual/Group.php:1
5028
- #: inc/view/customize/banner/individual/SaveButton.php:1
5029
  msgid "Border width (px)"
5030
  msgstr "Rahmen breite (px)"
5031
 
@@ -5111,6 +5117,14 @@ msgstr ""
5111
  "genutzt. Details zu den einzelnen Gruppen und Zwecken der Services findest "
5112
  "du in den individuellen Privatsphäre-Einstellungen."
5113
 
 
 
 
 
 
 
 
 
5114
  #: inc/overrides/pro/view/TcfBanner.php:1
5115
  msgid "Vendor list"
5116
  msgstr "Liste der Anbieter"
@@ -6328,6 +6342,23 @@ msgstr ""
6328
  msgid "View stats"
6329
  msgstr "Statistiken ansehen"
6330
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6331
  #: inc/view/ConfigPage.php:1
6332
  msgid ""
6333
  "A cookie banner for your website is installed. With it, you can integrate e."
@@ -6381,8 +6412,8 @@ msgstr "Banner"
6381
 
6382
  #: inc/view/customize/banner/BasicLayout.php:1
6383
  #: inc/view/customize/banner/individual/Layout.php:1
6384
- msgid "Maximum width (px)"
6385
- msgstr "Maximale Breite (px)"
6386
 
6387
  #: inc/view/customize/banner/BasicLayout.php:1
6388
  msgid "Position"
@@ -6441,8 +6472,8 @@ msgid "Bottom"
6441
  msgstr "Unten"
6442
 
6443
  #: inc/view/customize/banner/BasicLayout.php:1
6444
- msgid "Maximum content width (px)"
6445
- msgstr "Maximale Inhaltsbreite (px)"
6446
 
6447
  #: inc/view/customize/banner/BasicLayout.php:1
6448
  msgid "Dialog border radius"
@@ -6456,10 +6487,6 @@ msgstr "Button-Rahmen: Abgerundete Ecken"
6456
  msgid "Animation on display"
6457
  msgstr "Animation beim Einblenden"
6458
 
6459
- #: inc/view/customize/banner/BasicLayout.php:1
6460
- msgid "Duration (milliseconds)"
6461
- msgstr "Dauer (Millisekunden)"
6462
-
6463
  #: inc/view/customize/banner/BasicLayout.php:1
6464
  msgid "Animation only on mobile devices"
6465
  msgstr "Animation nur auf mobilen Geräten"
@@ -6513,14 +6540,6 @@ msgstr ""
6513
  "Beachte, dass diese Option für Besucher mit einem älteren Browser (z. B. "
6514
  "Internet Explorer) nicht funktioniert."
6515
 
6516
- #: inc/view/customize/banner/BodyDesign.php:1
6517
- msgid ""
6518
- "The \"Accept\" and \"Reject\" buttons should be the same size (button and "
6519
- "text size) so that they are considered equal."
6520
- msgstr ""
6521
- "Die Buttons \"Akzeptieren\" und \"Ablehnen\" sollten die gleiche Größe haben "
6522
- "(Button- und Textgröße), damit sie als gleichwertig angesehen werden."
6523
-
6524
  #: inc/view/customize/banner/BodyDesign.php:1
6525
  msgid "Body"
6526
  msgstr "Hauptbereich (Body)"
@@ -6596,14 +6615,14 @@ msgstr "Trenner"
6596
  #: inc/view/customize/banner/BodyDesign.php:1
6597
  #: inc/view/customize/banner/Design.php:1
6598
  #: inc/view/customize/banner/individual/Group.php:1
6599
- msgid "Width (px)"
6600
- msgstr "Breite (px)"
6601
 
6602
  #: inc/view/customize/banner/BodyDesign.php:1
6603
  #: inc/view/customize/banner/FooterDesign.php:1
6604
  #: inc/view/customize/banner/HeaderDesign.php:1
6605
- msgid "Height (px)"
6606
- msgstr "Höhe (px)"
6607
 
6608
  #: inc/view/customize/banner/BodyDesign.php:1
6609
  #: inc/view/customize/banner/Design.php:1
@@ -6633,6 +6652,12 @@ msgstr "Buttons nebeneinander ausrichten"
6633
  msgid "Define inner distance of the button/link."
6634
  msgstr "Definiere den Innenabstand des Buttons/Links."
6635
 
 
 
 
 
 
 
6636
  #: inc/view/customize/banner/BodyDesign.php:1
6637
  #: inc/view/customize/banner/FooterDesign.php:1
6638
  #: inc/view/customize/banner/individual/SaveButton.php:1
@@ -6663,6 +6688,31 @@ msgstr "Rahmenfarbe"
6663
  msgid "Button: Continue without consent"
6664
  msgstr "Button: Weiter ohne Einwilligung"
6665
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6666
  #: inc/view/customize/banner/BodyDesign.php:1
6667
  msgid "Button: Individual privacy preferences"
6668
  msgstr "Button: Individuelle Einstellungen"
@@ -6830,7 +6880,6 @@ msgstr ""
6830
 
6831
  #: inc/view/customize/banner/Decision.php:1
6832
  #: inc/view/customize/banner/individual/Texts.php:1
6833
- #: inc/view/customize/banner/Texts.php:1
6834
  msgid "Individual privacy preferences"
6835
  msgstr "Individuelle Privatsphäre-Einstellungen"
6836
 
@@ -6847,6 +6896,37 @@ msgstr ""
6847
  "Daher muss dem Nutzer die Möglichkeit gegeben werden, die Seite mit den "
6848
  "individuellen Privatsphäre-Einstellungen aufzurufen."
6849
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6850
  #: inc/view/customize/banner/Decision.php:1
6851
  msgid "Custom choice in first view"
6852
  msgstr "Benutzerdefinierte Auswahl in der ersten Ansicht"
@@ -6868,6 +6948,11 @@ msgid "Text of \"Accept all\" changes when user changes selection"
6868
  msgstr ""
6869
  "Text von “Alle akzeptieren” ändert sich, wenn der Benutzer die Auswahl ändert"
6870
 
 
 
 
 
 
6871
  #: inc/view/customize/banner/Design.php:1
6872
  #: inc/view/customize/banner/individual/Texts.php:1
6873
  #: inc/view/customize/banner/Texts.php:1
@@ -7047,8 +7132,8 @@ msgid "Define the inner distance of the group box."
7047
  msgstr "Definiere den Innenabstand der Gruppen-Box."
7048
 
7049
  #: inc/view/customize/banner/individual/Group.php:1
7050
- msgid "Spacing between groups (px)"
7051
- msgstr "Abstand zwischen Gruppen (px)"
7052
 
7053
  #: inc/view/customize/banner/individual/Group.php:1
7054
  msgid "Border radius"
@@ -7085,6 +7170,15 @@ msgstr "Definiere den Innenabstand des Buttons."
7085
  msgid "Texts"
7086
  msgstr "Texte"
7087
 
 
 
 
 
 
 
 
 
 
7088
  #: inc/view/customize/banner/individual/Texts.php:1
7089
  msgid "\"Save\" button/link"
7090
  msgstr "\"Speichern”-Button/Link"
@@ -7098,30 +7192,49 @@ msgid "\"Hide service information\" link"
7098
  msgstr "\"Service-Informationen ausblenden”-Link"
7099
 
7100
  #: inc/view/customize/banner/individual/Texts.php:1
 
7101
  msgid ""
7102
- "We use cookies and similar technologies on our website and process personal "
7103
- "data about you, such as your IP address. We also share this data with third "
7104
- "parties. Data processing may be done with your consent or on the basis of a "
7105
- "legitimate interest, which you can object to. You have the right to consent "
7106
- "to essential services only and to modify or revoke your consent at a later "
7107
- "time in the privacy policy. Below you will find an overview of all services "
7108
- "used by this website. You can view detailed information about each service "
7109
- "and agree to them individually or exercise your right to object."
7110
  msgstr ""
7111
  "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7112
- "verarbeiten personenbezogene Daten (z.B. deine IP-Adresse) über dich. Wir "
7113
- "teilen diese Daten auch mit Dritten. Die Datenverarbeitung kann mit deiner "
7114
- "Einwilligung oder auf der Grundlage eines berechtigten Interesses erfolgen, "
7115
- "dem du widersprechen kannst. Du hast das Recht, nur in essenzielle Services "
7116
- "einzuwilligen und deine Einwilligung zu einem späteren Zeitpunkt in der "
7117
- "Datenschutzerklärung zu ändern oder zu widerrufen. Nachfolgend findest du "
7118
- "eine Übersicht über alle Services, die von dieser Website genutzt werden. Du "
7119
- "kannst detaillierte Informationen zu jedem Service einsehen und diesen "
7120
- "einzeln zustimmen oder von deinem Widerspruchsrecht Gebrauch machen."
7121
 
7122
  #: inc/view/customize/banner/individual/Texts.php:1
7123
- msgid "Save custom choices"
7124
- msgstr "Individuelle Auswahlen speichern"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7125
 
7126
  #: inc/view/customize/banner/individual/Texts.php:1
7127
  msgid "Show service information"
@@ -7313,6 +7426,22 @@ msgstr "Altershinweis im Cookie Banner"
7313
  msgid "Age notice in content blocker"
7314
  msgstr "Altershinweis im Content Blocker"
7315
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7316
  #: inc/view/customize/banner/Texts.php:1
7317
  msgid "Consent Forwarding"
7318
  msgstr "Weiterleitung der Einwilligung"
@@ -7387,6 +7516,15 @@ msgstr ""
7387
  "Der Altershinweis ist derzeit deaktiviert. Bitte navigiere zu "
7388
  "%1$sEinstellungen > Einwilligung%2$s, um diesen zu aktivieren."
7389
 
 
 
 
 
 
 
 
 
 
7390
  #. translators:
7391
  #: inc/view/customize/banner/Texts.php:1
7392
  msgid ""
@@ -7402,22 +7540,8 @@ msgid "Privacy preferences"
7402
  msgstr "Privatsphäre-Einstellungen"
7403
 
7404
  #: inc/view/customize/banner/Texts.php:1
7405
- msgid ""
7406
- "We use cookies and similar technologies on our website and process personal "
7407
- "data about you, such as your IP address. We also share this data with third "
7408
- "parties. Data processing may be done with your consent or on the basis of a "
7409
- "legitimate interest, which you can object to in the individual privacy "
7410
- "settings. You have the right to consent to essential services only and to "
7411
- "modify or revoke your consent at a later time in the privacy policy."
7412
- msgstr ""
7413
- "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7414
- "verarbeiten personenbezogene Daten (z.B. deine IP-Adresse) über dich. Wir "
7415
- "teilen diese Daten auch mit Dritten. Die Datenverarbeitung kann mit deiner "
7416
- "Einwilligung oder auf Basis eines berechtigten Interesses erfolgen, dem du "
7417
- "in den individuellen Privatsphäre-Einstellungen widersprechen kannst. Du "
7418
- "hast das Recht, nur in essenzielle Services einzuwilligen und deine "
7419
- "Einwilligung in der Datenschutzerklärung zu einem späteren Zeitpunkt zu "
7420
- "ändern oder zu widerrufen."
7421
 
7422
  #: inc/view/customize/banner/Texts.php:1
7423
  msgid ""
@@ -7457,6 +7581,16 @@ msgstr ""
7457
  "zustimmen, um diese Inhalte zu sehen. Bitte deine Eltern oder "
7458
  "Erziehungsberechtigten, dem Service mit dir zuzustimmen!"
7459
 
 
 
 
 
 
 
 
 
 
 
7460
  #: inc/view/customize/banner/Texts.php:1
7461
  msgid "Your consent is also applicable on {{websites}}."
7462
  msgstr "Deine Einwilligung gilt auch auf {{websites}}."
@@ -7576,6 +7710,52 @@ msgstr "Bitte gib ein `text`-Attribut in deinem Shortcode an!"
7576
  msgid "Please provide a `type` attribute in your shortcode. Allowed: %s!"
7577
  msgstr "Bitte gib in deinem Shortcode das Attribut `type` an. Erlaubt: %s!"
7578
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7579
  #~ msgid "Place shortcodes in your privacy policy"
7580
  #~ msgstr "Platziere Shortcodes in deiner Datenschutzerklärung"
7581
 
2
  msgstr ""
3
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
4
  "POT-Creation-Date: n/a\n"
5
+ "PO-Revision-Date: 2022-05-24 09:42+0000\n"
6
  "Last-Translator: Matthias Günter <matthias.guenter@devowl.io>\n"
7
  "Language-Team: German <https://translate.devowl.io/projects/wordpress-real-"
8
  "cookie-banner-backend-php/develop/de/>\n"
220
  msgid "Host"
221
  msgstr "Host"
222
 
223
+ #: inc/Assets.php:1 inc/view/customize/banner/BasicLayout.php:1
224
  msgid "Duration"
225
  msgstr "Dauer"
226
 
248
  msgid "year(s)"
249
  msgstr "Jahr(e)"
250
 
251
+ #: inc/Assets.php:1
252
+ msgid "No expiration"
253
+ msgstr "Kein Ablauf"
254
+
255
  #: inc/Assets.php:1 inc/view/customize/banner/BasicLayout.php:1
256
  #: inc/view/customize/banner/BodyDesign.php:1
257
  #: inc/view/customize/banner/individual/SaveButton.php:1
327
  msgid "Product license not for production use!"
328
  msgstr "Produktlizenz nicht für den Produktionseinsatz!"
329
 
330
+ #. translators:
331
+ #: inc/Assets.php:1
332
+ msgid " and "
333
+ msgstr " und "
334
+
335
  #: inc/Assets.php:1 inc/view/checklist/GetPro.php:1
336
  msgid "Learn more"
337
  msgstr "Mehr erfahren"
5032
  msgstr "Rahmen"
5033
 
5034
  #: inc/overrides/pro/view/customize/banner/TcfBodyDesign.php:1
 
 
 
5035
  msgid "Border width (px)"
5036
  msgstr "Rahmen breite (px)"
5037
 
5117
  "genutzt. Details zu den einzelnen Gruppen und Zwecken der Services findest "
5118
  "du in den individuellen Privatsphäre-Einstellungen."
5119
 
5120
+ #: inc/overrides/pro/view/TcfBanner.php:1
5121
+ msgid ""
5122
+ "In addition, you consent to the transfer of data to partners under the TCF "
5123
+ "standard for the following purposes:"
5124
+ msgstr ""
5125
+ "Darüber hinaus stimmst du der Übermittlung von Daten an Partner im Rahmen "
5126
+ "des TCF-Standards für die folgenden Zwecke zu:"
5127
+
5128
  #: inc/overrides/pro/view/TcfBanner.php:1
5129
  msgid "Vendor list"
5130
  msgstr "Liste der Anbieter"
6342
  msgid "View stats"
6343
  msgstr "Statistiken ansehen"
6344
 
6345
+ #: inc/view/ConfigPage.php:1
6346
+ msgid "Set privacy policy URL"
6347
+ msgstr "Datenschutzerklärung Seite einstellen"
6348
+
6349
+ #: inc/view/ConfigPage.php:1
6350
+ msgid ""
6351
+ "There are no privacy policies with further information linked for the "
6352
+ "following services in your cookie banner. We now consider these to be "
6353
+ "mandatory in order to comply with the information obligations under the "
6354
+ "GDPR. Please provide a privacy policy for each service!"
6355
+ msgstr ""
6356
+ "Für folgende Services in deinen Cookie Banner sind keine "
6357
+ "Datenschutzerklärungen mit weiterführenden Informationen verlinkt. Wir "
6358
+ "halten diese mittlerweile als zwingend notwendig, um den "
6359
+ "Informationspflichten nach DSGVO nachzukommen. Bitte hinterlege in jedem "
6360
+ "Service eine Datenschutzerklärung!"
6361
+
6362
  #: inc/view/ConfigPage.php:1
6363
  msgid ""
6364
  "A cookie banner for your website is installed. With it, you can integrate e."
6412
 
6413
  #: inc/view/customize/banner/BasicLayout.php:1
6414
  #: inc/view/customize/banner/individual/Layout.php:1
6415
+ msgid "Maximum width"
6416
+ msgstr "Maximale Breite"
6417
 
6418
  #: inc/view/customize/banner/BasicLayout.php:1
6419
  msgid "Position"
6472
  msgstr "Unten"
6473
 
6474
  #: inc/view/customize/banner/BasicLayout.php:1
6475
+ msgid "Maximum content width"
6476
+ msgstr "Maximale Inhaltsbreite"
6477
 
6478
  #: inc/view/customize/banner/BasicLayout.php:1
6479
  msgid "Dialog border radius"
6487
  msgid "Animation on display"
6488
  msgstr "Animation beim Einblenden"
6489
 
 
 
 
 
6490
  #: inc/view/customize/banner/BasicLayout.php:1
6491
  msgid "Animation only on mobile devices"
6492
  msgstr "Animation nur auf mobilen Geräten"
6540
  "Beachte, dass diese Option für Besucher mit einem älteren Browser (z. B. "
6541
  "Internet Explorer) nicht funktioniert."
6542
 
 
 
 
 
 
 
 
 
6543
  #: inc/view/customize/banner/BodyDesign.php:1
6544
  msgid "Body"
6545
  msgstr "Hauptbereich (Body)"
6615
  #: inc/view/customize/banner/BodyDesign.php:1
6616
  #: inc/view/customize/banner/Design.php:1
6617
  #: inc/view/customize/banner/individual/Group.php:1
6618
+ msgid "Width"
6619
+ msgstr "Breite"
6620
 
6621
  #: inc/view/customize/banner/BodyDesign.php:1
6622
  #: inc/view/customize/banner/FooterDesign.php:1
6623
  #: inc/view/customize/banner/HeaderDesign.php:1
6624
+ msgid "Height"
6625
+ msgstr "Höhe"
6626
 
6627
  #: inc/view/customize/banner/BodyDesign.php:1
6628
  #: inc/view/customize/banner/Design.php:1
6652
  msgid "Define inner distance of the button/link."
6653
  msgstr "Definiere den Innenabstand des Buttons/Links."
6654
 
6655
+ #: inc/view/customize/banner/BodyDesign.php:1
6656
+ #: inc/view/customize/banner/individual/Group.php:1
6657
+ #: inc/view/customize/banner/individual/SaveButton.php:1
6658
+ msgid "Border width"
6659
+ msgstr "Rahmen-Breite"
6660
+
6661
  #: inc/view/customize/banner/BodyDesign.php:1
6662
  #: inc/view/customize/banner/FooterDesign.php:1
6663
  #: inc/view/customize/banner/individual/SaveButton.php:1
6688
  msgid "Button: Continue without consent"
6689
  msgstr "Button: Weiter ohne Einwilligung"
6690
 
6691
+ #: inc/view/customize/banner/BodyDesign.php:1
6692
+ #: inc/view/customize/banner/individual/SaveButton.php:1
6693
+ msgid "Use the same stylings as for \"Accept all\""
6694
+ msgstr "Gleiche Formatierung wie für \"Alle akzeptieren\" verwenden"
6695
+
6696
+ #: inc/view/customize/banner/BodyDesign.php:1
6697
+ #: inc/view/customize/banner/individual/SaveButton.php:1
6698
+ msgid ""
6699
+ "According to the <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6700
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">guidance of the data "
6701
+ "protection authorities in Germany (German)</a>, there must be an equivalent "
6702
+ "way for your visitors to express their choice (agree to everything, continue "
6703
+ "without consent or an indivudual decision). Equivalent does not necessarily "
6704
+ "mean that the buttons/links must look exactly the same. However, you should "
6705
+ "be safest if they look exactly the same."
6706
+ msgstr ""
6707
+ "Gemäß der <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6708
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">Orientierungshilfe der "
6709
+ "deutschen Datenschutzbehörden</a> muss es für deine Besucher eine "
6710
+ "gleichwertige Möglichkeit geben, ihren Willen auszudrücken (allem zustimmen, "
6711
+ "ohne Zustimmung fortfahren oder eine individuelle Entscheidung treffen). "
6712
+ "Gleichwertig bedeutet nicht unbedingt, dass die Buttons/Links genau gleich "
6713
+ "aussehen müssen. Am sichersten bist du jedoch, wenn sie genau gleich "
6714
+ "aussehen."
6715
+
6716
  #: inc/view/customize/banner/BodyDesign.php:1
6717
  msgid "Button: Individual privacy preferences"
6718
  msgstr "Button: Individuelle Einstellungen"
6880
 
6881
  #: inc/view/customize/banner/Decision.php:1
6882
  #: inc/view/customize/banner/individual/Texts.php:1
 
6883
  msgid "Individual privacy preferences"
6884
  msgstr "Individuelle Privatsphäre-Einstellungen"
6885
 
6896
  "Daher muss dem Nutzer die Möglichkeit gegeben werden, die Seite mit den "
6897
  "individuellen Privatsphäre-Einstellungen aufzurufen."
6898
 
6899
+ #: inc/view/customize/banner/Decision.php:1
6900
+ msgid "Order of the buttons"
6901
+ msgstr "Reihenfolge der Buttons"
6902
+
6903
+ #: inc/view/customize/banner/Decision.php:1
6904
+ msgid ""
6905
+ "According to the <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6906
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">guidance of the data "
6907
+ "protection authorities in Germany (German)</a>, there must be an equivalent "
6908
+ "way for your visitors to express their choice (agree to everything, continue "
6909
+ "without consent or an indivudual decision). Which order of options is "
6910
+ "considered equivalent is unclear. Therefore, the options should be arranged "
6911
+ "according to the cultural conditions of the main target country."
6912
+ msgstr ""
6913
+ "Gemäß der <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6914
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">Orientierungshilfe der "
6915
+ "deutschen Datenschutzbehörden</a> muss es für deine Besucher eine "
6916
+ "gleichwertige Möglichkeit geben, ihren Willen auszudrücken (allem zustimmen, "
6917
+ "ohne Zustimmung fortfahren oder eine individuelle Entscheidung treffen). "
6918
+ "Welche Reihenfolge der Optionen als gleichwertig gilt, ist unklar. Daher "
6919
+ "sollten die Optionen nach den kulturellen Gegebenheiten des Hauptziellandes "
6920
+ "angeordnet werden."
6921
+
6922
+ #: inc/view/customize/banner/Decision.php:1
6923
+ msgid "Service groups as bullet list"
6924
+ msgstr "Service-Gruppen als Aufzählungsliste ausgeben"
6925
+
6926
+ #: inc/view/customize/banner/Decision.php:1
6927
+ msgid "Show service groups as bullet list"
6928
+ msgstr "Service-Gruppen als Aufzählungsliste ausgeben"
6929
+
6930
  #: inc/view/customize/banner/Decision.php:1
6931
  msgid "Custom choice in first view"
6932
  msgstr "Benutzerdefinierte Auswahl in der ersten Ansicht"
6948
  msgstr ""
6949
  "Text von “Alle akzeptieren” ändert sich, wenn der Benutzer die Auswahl ändert"
6950
 
6951
+ #: inc/view/customize/banner/Decision.php:1
6952
+ #: inc/view/customize/banner/individual/Texts.php:1
6953
+ msgid "Save custom choices"
6954
+ msgstr "Individuelle Auswahlen speichern"
6955
+
6956
  #: inc/view/customize/banner/Design.php:1
6957
  #: inc/view/customize/banner/individual/Texts.php:1
6958
  #: inc/view/customize/banner/Texts.php:1
7132
  msgstr "Definiere den Innenabstand der Gruppen-Box."
7133
 
7134
  #: inc/view/customize/banner/individual/Group.php:1
7135
+ msgid "Spacing between groups"
7136
+ msgstr "Abstand zwischen Gruppen"
7137
 
7138
  #: inc/view/customize/banner/individual/Group.php:1
7139
  msgid "Border radius"
7170
  msgid "Texts"
7171
  msgstr "Texte"
7172
 
7173
+ #: inc/view/customize/banner/individual/Texts.php:1
7174
+ #: inc/view/customize/banner/Texts.php:1
7175
+ msgid ""
7176
+ "Use <code>{{privacyPolicy}}privacy policy{{/privacyPolicy}}</code> as a "
7177
+ "placeholder for the privacy policy link."
7178
+ msgstr ""
7179
+ "Verwende <code>{{privacyPolicy}}Datenschutzerklärung{{/privacyPolicy}}</"
7180
+ "code> als Platzhalter für den Link zur Datenschutzerklärung."
7181
+
7182
  #: inc/view/customize/banner/individual/Texts.php:1
7183
  msgid "\"Save\" button/link"
7184
  msgstr "\"Speichern”-Button/Link"
7192
  msgstr "\"Service-Informationen ausblenden”-Link"
7193
 
7194
  #: inc/view/customize/banner/individual/Texts.php:1
7195
+ #: inc/view/customize/banner/Texts.php:1
7196
  msgid ""
7197
+ "We use cookies and similar technologies on our website and process your "
7198
+ "personal data (e.g. IP address), for example, to personalize content and "
7199
+ "ads, to integrate media from third-party providers or to analyze traffic on "
7200
+ "our website. Data processing may also happen as a result of cookies being "
7201
+ "set. We share this data with third parties that we name in the privacy "
7202
+ "settings."
 
 
7203
  msgstr ""
7204
  "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7205
+ "verarbeiten personenbezogene Daten von dir (z.B. IP-Adresse), um z.B. "
7206
+ "Inhalte und Anzeigen zu personalisieren, Medien von Drittanbietern "
7207
+ "einzubinden oder Zugriffe auf unsere Website zu analysieren. Die "
7208
+ "Datenverarbeitung kann auch erst in Folge gesetzter Cookies stattfinden. Wir "
7209
+ "teilen diese Daten mit Dritten, die wir in den Privatsphäre-Einstellungen "
7210
+ "benennen."
 
 
 
7211
 
7212
  #: inc/view/customize/banner/individual/Texts.php:1
7213
+ #: inc/view/customize/banner/Texts.php:1
7214
+ msgid ""
7215
+ "The data processing may take place with your consent or on the basis of a "
7216
+ "legitimate interest, which you can object to in the privacy settings. You "
7217
+ "have the right not to consent and to change or revoke your consent at a "
7218
+ "later time. For more information on the use of your data, please visit our "
7219
+ "{{privacyPolicy}}privacy policy{{/privacyPolicy}}."
7220
+ msgstr ""
7221
+ "Die Datenverarbeitung kann mit deiner Einwilligung oder auf Basis eines "
7222
+ "berechtigten Interesses erfolgen, dem du in den Privatsphäre-Einstellungen "
7223
+ "widersprechen kannst. Du hast das Recht, nicht einzuwilligen und deine "
7224
+ "Einwilligung zu einem späteren Zeitpunkt zu ändern oder zu widerrufen. "
7225
+ "Weitere Informationen zur Verwendung deiner Daten findest du in unserer "
7226
+ "{{privacyPolicy}}Datenschutzerklärung{{/privacyPolicy}}."
7227
+
7228
+ #: inc/view/customize/banner/individual/Texts.php:1
7229
+ msgid ""
7230
+ "Below you will find an overview of all services used by this website. You "
7231
+ "can view detailed information about each service and agree to them "
7232
+ "individually or exercise your right to object."
7233
+ msgstr ""
7234
+ "Im Folgenden findest du eine Übersicht über alle Services, die von dieser "
7235
+ "Website genutzt werden. Du kannst dir detaillierte Informationen zu jedem "
7236
+ "Service ansehen und ihm einzeln zustimmen oder von deinem Widerspruchsrecht "
7237
+ "Gebrauch machen."
7238
 
7239
  #: inc/view/customize/banner/individual/Texts.php:1
7240
  msgid "Show service information"
7426
  msgid "Age notice in content blocker"
7427
  msgstr "Altershinweis im Content Blocker"
7428
 
7429
+ #: inc/view/customize/banner/Texts.php:1
7430
+ msgid "List of services"
7431
+ msgstr "Liste der Services"
7432
+
7433
+ #: inc/view/customize/banner/Texts.php:1
7434
+ msgid "Naming of all services in first view"
7435
+ msgstr "Benennung aller Services in der ersten Ansicht"
7436
+
7437
+ #: inc/view/customize/banner/Texts.php:1
7438
+ msgid ""
7439
+ "Use <code>{{services}}</code> and <code>{{serviceGroups}}</code> as a "
7440
+ "placeholder for a list of services and groups."
7441
+ msgstr ""
7442
+ "Verwende <code>{{services}}</code> und <code>{{serviceGroups}}</code> als "
7443
+ "Platzhalter für eine Liste von Services und Gruppen."
7444
+
7445
  #: inc/view/customize/banner/Texts.php:1
7446
  msgid "Consent Forwarding"
7447
  msgstr "Weiterleitung der Einwilligung"
7516
  "Der Altershinweis ist derzeit deaktiviert. Bitte navigiere zu "
7517
  "%1$sEinstellungen > Einwilligung%2$s, um diesen zu aktivieren."
7518
 
7519
+ #. translators:
7520
+ #: inc/view/customize/banner/Texts.php:1
7521
+ msgid ""
7522
+ "Naming of all services in first view is currently disabled. Please navigate "
7523
+ "to %1$sSettings > Consent%2$s to activate it."
7524
+ msgstr ""
7525
+ "Die Liste aller Services ist derzeit deaktiviert. Bitte navigiere zu "
7526
+ "%1$sEinstellungen > Einwilligung%2$s, um diese zu aktivieren."
7527
+
7528
  #. translators:
7529
  #: inc/view/customize/banner/Texts.php:1
7530
  msgid ""
7540
  msgstr "Privatsphäre-Einstellungen"
7541
 
7542
  #: inc/view/customize/banner/Texts.php:1
7543
+ msgid "Set privacy settings individually"
7544
+ msgstr "Privatsphäre-Einstellungen individuell festlegen"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7545
 
7546
  #: inc/view/customize/banner/Texts.php:1
7547
  msgid ""
7581
  "zustimmen, um diese Inhalte zu sehen. Bitte deine Eltern oder "
7582
  "Erziehungsberechtigten, dem Service mit dir zuzustimmen!"
7583
 
7584
+ #: inc/view/customize/banner/Texts.php:1
7585
+ msgid ""
7586
+ "By accepting all services, you allow {{services}} to be loaded. These "
7587
+ "services are divided into groups {{serviceGroups}} according to their "
7588
+ "purpose (belonging marked with superscript numbers)."
7589
+ msgstr ""
7590
+ "Wenn du alle Services akzeptierst, erlaubst du, dass {{services}} geladen "
7591
+ "werden. Diese sind nach ihrem Zweck in Gruppen {{serviceGroups}} unterteilt "
7592
+ "(Zugehörigkeit durch hochgestellte Zahlen gekennzeichnet)."
7593
+
7594
  #: inc/view/customize/banner/Texts.php:1
7595
  msgid "Your consent is also applicable on {{websites}}."
7596
  msgstr "Deine Einwilligung gilt auch auf {{websites}}."
7710
  msgid "Please provide a `type` attribute in your shortcode. Allowed: %s!"
7711
  msgstr "Bitte gib in deinem Shortcode das Attribut `type` an. Erlaubt: %s!"
7712
 
7713
+ #~ msgid ""
7714
+ #~ "We use cookies and similar technologies on our website and process your "
7715
+ #~ "personal data (e.g. IP address), for example, to personalize content and "
7716
+ #~ "ads, to integrate media from third-party providers or to analyze traffic "
7717
+ #~ "on our website. Data processing may also happen as a result of cookies "
7718
+ #~ "being set. We share this data with third parties that we name in the "
7719
+ #~ "privacy settings.<br/><br/>The data processing may take place with your "
7720
+ #~ "consent or on the basis of a legitimate interest, which you can object to "
7721
+ #~ "in the privacy settings. You have the right not to consent and to change "
7722
+ #~ "or revoke your consent at a later time. For more information on the use "
7723
+ #~ "of your data, please visit our {{privacyPolicy}}privacy policy{{/"
7724
+ #~ "privacyPolicy}}.<br/><br/>Below you will find an overview of all services "
7725
+ #~ "used by this website. You can view detailed information about each "
7726
+ #~ "service and agree to them individually or exercise your right to object."
7727
+ #~ msgstr ""
7728
+ #~ "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7729
+ #~ "verarbeiten personenbezogene Daten von dir (z.B. IP-Adresse), um z.B. "
7730
+ #~ "Inhalte und Anzeigen zu personalisieren, Medien von Drittanbietern "
7731
+ #~ "einzubinden oder Zugriffe auf unsere Website zu analysieren. Die "
7732
+ #~ "Datenverarbeitung kann auch erst in Folge gesetzter Cookies stattfinden. "
7733
+ #~ "Wir teilen diese Daten mit Dritten, die wir in den Privatsphäre-"
7734
+ #~ "Einstellungen benennen.<br/><br/>Die Datenverarbeitung kann mit deiner "
7735
+ #~ "Einwilligung oder auf Basis eines berechtigten Interesses erfolgen, dem "
7736
+ #~ "du in den Privatsphäre-Einstellungen widersprechen kannst. Du hast das "
7737
+ #~ "Recht, nicht einzuwilligen und deine Einwilligung zu einem späteren "
7738
+ #~ "Zeitpunkt zu ändern oder zu widerrufen. Weitere Informationen zur "
7739
+ #~ "Verwendung deiner Daten findest du in unserer {{privacyPolicy}}"
7740
+ #~ "Datenschutzerklärung{{/privacyPolicy}}.<br/><br/>Nachstehend findest du "
7741
+ #~ "eine Übersicht über alle von dieser Website genutzten Dienste. Du kannst "
7742
+ #~ "detaillierte Informationen zu jedem Dienst einsehen und diesen einzeln "
7743
+ #~ "zustimmen oder von deinem Widerspruchsrecht Gebrauch machen."
7744
+
7745
+ #~ msgid "Duration (milliseconds)"
7746
+ #~ msgstr "Dauer (Millisekunden)"
7747
+
7748
+ #~ msgid ""
7749
+ #~ "The \"Accept\" and \"Reject\" buttons should be the same size (button and "
7750
+ #~ "text size) so that they are considered equal."
7751
+ #~ msgstr ""
7752
+ #~ "Die Buttons \"Akzeptieren\" und \"Ablehnen\" sollten die gleiche Größe "
7753
+ #~ "haben (Button- und Textgröße), damit sie als gleichwertig angesehen "
7754
+ #~ "werden."
7755
+
7756
+ #~ msgid "Height (px)"
7757
+ #~ msgstr "Höhe (px)"
7758
+
7759
  #~ msgid "Place shortcodes in your privacy policy"
7760
  #~ msgstr "Platziere Shortcodes in deiner Datenschutzerklärung"
7761
 
languages/real-cookie-banner-de_CH.mo CHANGED
Binary file
languages/real-cookie-banner-de_CH.po CHANGED
@@ -2,7 +2,7 @@ msgid ""
2
  msgstr ""
3
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
4
  "POT-Creation-Date: n/a\n"
5
- "PO-Revision-Date: 2022-04-29 07:43+0000\n"
6
  "Last-Translator: Matthias Günter <matthias.guenter@devowl.io>\n"
7
  "Language-Team: German <https://translate.devowl.io/projects/wordpress-real-"
8
  "cookie-banner-backend-php/develop/de/>\n"
@@ -220,7 +220,7 @@ msgstr ""
220
  msgid "Host"
221
  msgstr "Host"
222
 
223
- #: inc/Assets.php:1
224
  msgid "Duration"
225
  msgstr "Dauer"
226
 
@@ -248,6 +248,10 @@ msgstr "Monat(e)"
248
  msgid "year(s)"
249
  msgstr "Jahr(e)"
250
 
 
 
 
 
251
  #: inc/Assets.php:1 inc/view/customize/banner/BasicLayout.php:1
252
  #: inc/view/customize/banner/BodyDesign.php:1
253
  #: inc/view/customize/banner/individual/SaveButton.php:1
@@ -323,6 +327,11 @@ msgstr "Keine Lizenz aktiviert - kein Produktionseinsatz!"
323
  msgid "Product license not for production use!"
324
  msgstr "Produktlizenz nicht für den Produktionseinsatz!"
325
 
 
 
 
 
 
326
  #: inc/Assets.php:1 inc/view/checklist/GetPro.php:1
327
  msgid "Learn more"
328
  msgstr "Mehr erfahren"
@@ -5023,9 +5032,6 @@ msgid "Border"
5023
  msgstr "Rahmen"
5024
 
5025
  #: inc/overrides/pro/view/customize/banner/TcfBodyDesign.php:1
5026
- #: inc/view/customize/banner/BodyDesign.php:1
5027
- #: inc/view/customize/banner/individual/Group.php:1
5028
- #: inc/view/customize/banner/individual/SaveButton.php:1
5029
  msgid "Border width (px)"
5030
  msgstr "Rahmen breite (px)"
5031
 
@@ -5111,6 +5117,14 @@ msgstr ""
5111
  "genutzt. Details zu den einzelnen Gruppen und Zwecken der Services findest "
5112
  "du in den individuellen Privatsphäre-Einstellungen."
5113
 
 
 
 
 
 
 
 
 
5114
  #: inc/overrides/pro/view/TcfBanner.php:1
5115
  msgid "Vendor list"
5116
  msgstr "Liste der Anbieter"
@@ -6328,6 +6342,23 @@ msgstr ""
6328
  msgid "View stats"
6329
  msgstr "Statistiken ansehen"
6330
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6331
  #: inc/view/ConfigPage.php:1
6332
  msgid ""
6333
  "A cookie banner for your website is installed. With it, you can integrate e."
@@ -6381,8 +6412,8 @@ msgstr "Banner"
6381
 
6382
  #: inc/view/customize/banner/BasicLayout.php:1
6383
  #: inc/view/customize/banner/individual/Layout.php:1
6384
- msgid "Maximum width (px)"
6385
- msgstr "Maximale Breite (px)"
6386
 
6387
  #: inc/view/customize/banner/BasicLayout.php:1
6388
  msgid "Position"
@@ -6441,8 +6472,8 @@ msgid "Bottom"
6441
  msgstr "Unten"
6442
 
6443
  #: inc/view/customize/banner/BasicLayout.php:1
6444
- msgid "Maximum content width (px)"
6445
- msgstr "Maximale Inhaltsbreite (px)"
6446
 
6447
  #: inc/view/customize/banner/BasicLayout.php:1
6448
  msgid "Dialog border radius"
@@ -6456,10 +6487,6 @@ msgstr "Button-Rahmen: Abgerundete Ecken"
6456
  msgid "Animation on display"
6457
  msgstr "Animation beim Einblenden"
6458
 
6459
- #: inc/view/customize/banner/BasicLayout.php:1
6460
- msgid "Duration (milliseconds)"
6461
- msgstr "Dauer (Millisekunden)"
6462
-
6463
  #: inc/view/customize/banner/BasicLayout.php:1
6464
  msgid "Animation only on mobile devices"
6465
  msgstr "Animation nur auf mobilen Geräten"
@@ -6513,14 +6540,6 @@ msgstr ""
6513
  "Beachte, dass diese Option für Besucher mit einem älteren Browser (z. B. "
6514
  "Internet Explorer) nicht funktioniert."
6515
 
6516
- #: inc/view/customize/banner/BodyDesign.php:1
6517
- msgid ""
6518
- "The \"Accept\" and \"Reject\" buttons should be the same size (button and "
6519
- "text size) so that they are considered equal."
6520
- msgstr ""
6521
- "Die Buttons \"Akzeptieren\" und \"Ablehnen\" sollten die gleiche Größe haben "
6522
- "(Button- und Textgröße), damit sie als gleichwertig angesehen werden."
6523
-
6524
  #: inc/view/customize/banner/BodyDesign.php:1
6525
  msgid "Body"
6526
  msgstr "Hauptbereich (Body)"
@@ -6596,14 +6615,14 @@ msgstr "Trenner"
6596
  #: inc/view/customize/banner/BodyDesign.php:1
6597
  #: inc/view/customize/banner/Design.php:1
6598
  #: inc/view/customize/banner/individual/Group.php:1
6599
- msgid "Width (px)"
6600
- msgstr "Breite (px)"
6601
 
6602
  #: inc/view/customize/banner/BodyDesign.php:1
6603
  #: inc/view/customize/banner/FooterDesign.php:1
6604
  #: inc/view/customize/banner/HeaderDesign.php:1
6605
- msgid "Height (px)"
6606
- msgstr "Höhe (px)"
6607
 
6608
  #: inc/view/customize/banner/BodyDesign.php:1
6609
  #: inc/view/customize/banner/Design.php:1
@@ -6633,6 +6652,12 @@ msgstr "Buttons nebeneinander ausrichten"
6633
  msgid "Define inner distance of the button/link."
6634
  msgstr "Definiere den Innenabstand des Buttons/Links."
6635
 
 
 
 
 
 
 
6636
  #: inc/view/customize/banner/BodyDesign.php:1
6637
  #: inc/view/customize/banner/FooterDesign.php:1
6638
  #: inc/view/customize/banner/individual/SaveButton.php:1
@@ -6663,6 +6688,31 @@ msgstr "Rahmenfarbe"
6663
  msgid "Button: Continue without consent"
6664
  msgstr "Button: Weiter ohne Einwilligung"
6665
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6666
  #: inc/view/customize/banner/BodyDesign.php:1
6667
  msgid "Button: Individual privacy preferences"
6668
  msgstr "Button: Individuelle Einstellungen"
@@ -6830,7 +6880,6 @@ msgstr ""
6830
 
6831
  #: inc/view/customize/banner/Decision.php:1
6832
  #: inc/view/customize/banner/individual/Texts.php:1
6833
- #: inc/view/customize/banner/Texts.php:1
6834
  msgid "Individual privacy preferences"
6835
  msgstr "Individuelle Privatsphäre-Einstellungen"
6836
 
@@ -6847,6 +6896,37 @@ msgstr ""
6847
  "Daher muss dem Nutzer die Möglichkeit gegeben werden, die Seite mit den "
6848
  "individuellen Privatsphäre-Einstellungen aufzurufen."
6849
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6850
  #: inc/view/customize/banner/Decision.php:1
6851
  msgid "Custom choice in first view"
6852
  msgstr "Benutzerdefinierte Auswahl in der ersten Ansicht"
@@ -6868,6 +6948,11 @@ msgid "Text of \"Accept all\" changes when user changes selection"
6868
  msgstr ""
6869
  "Text von “Alle akzeptieren” ändert sich, wenn der Benutzer die Auswahl ändert"
6870
 
 
 
 
 
 
6871
  #: inc/view/customize/banner/Design.php:1
6872
  #: inc/view/customize/banner/individual/Texts.php:1
6873
  #: inc/view/customize/banner/Texts.php:1
@@ -7047,8 +7132,8 @@ msgid "Define the inner distance of the group box."
7047
  msgstr "Definiere den Innenabstand der Gruppen-Box."
7048
 
7049
  #: inc/view/customize/banner/individual/Group.php:1
7050
- msgid "Spacing between groups (px)"
7051
- msgstr "Abstand zwischen Gruppen (px)"
7052
 
7053
  #: inc/view/customize/banner/individual/Group.php:1
7054
  msgid "Border radius"
@@ -7085,6 +7170,15 @@ msgstr "Definiere den Innenabstand des Buttons."
7085
  msgid "Texts"
7086
  msgstr "Texte"
7087
 
 
 
 
 
 
 
 
 
 
7088
  #: inc/view/customize/banner/individual/Texts.php:1
7089
  msgid "\"Save\" button/link"
7090
  msgstr "\"Speichern”-Button/Link"
@@ -7098,30 +7192,49 @@ msgid "\"Hide service information\" link"
7098
  msgstr "\"Service-Informationen ausblenden”-Link"
7099
 
7100
  #: inc/view/customize/banner/individual/Texts.php:1
 
7101
  msgid ""
7102
- "We use cookies and similar technologies on our website and process personal "
7103
- "data about you, such as your IP address. We also share this data with third "
7104
- "parties. Data processing may be done with your consent or on the basis of a "
7105
- "legitimate interest, which you can object to. You have the right to consent "
7106
- "to essential services only and to modify or revoke your consent at a later "
7107
- "time in the privacy policy. Below you will find an overview of all services "
7108
- "used by this website. You can view detailed information about each service "
7109
- "and agree to them individually or exercise your right to object."
7110
  msgstr ""
7111
  "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7112
- "verarbeiten personenbezogene Daten (z.B. deine IP-Adresse) über dich. Wir "
7113
- "teilen diese Daten auch mit Dritten. Die Datenverarbeitung kann mit deiner "
7114
- "Einwilligung oder auf der Grundlage eines berechtigten Interesses erfolgen, "
7115
- "dem du widersprechen kannst. Du hast das Recht, nur in essenzielle Services "
7116
- "einzuwilligen und deine Einwilligung zu einem späteren Zeitpunkt in der "
7117
- "Datenschutzerklärung zu ändern oder zu widerrufen. Nachfolgend findest du "
7118
- "eine Übersicht über alle Services, die von dieser Website genutzt werden. Du "
7119
- "kannst detaillierte Informationen zu jedem Service einsehen und diesen "
7120
- "einzeln zustimmen oder von deinem Widerspruchsrecht Gebrauch machen."
7121
 
7122
  #: inc/view/customize/banner/individual/Texts.php:1
7123
- msgid "Save custom choices"
7124
- msgstr "Individuelle Auswahlen speichern"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7125
 
7126
  #: inc/view/customize/banner/individual/Texts.php:1
7127
  msgid "Show service information"
@@ -7313,6 +7426,22 @@ msgstr "Altershinweis im Cookie Banner"
7313
  msgid "Age notice in content blocker"
7314
  msgstr "Altershinweis im Content Blocker"
7315
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7316
  #: inc/view/customize/banner/Texts.php:1
7317
  msgid "Consent Forwarding"
7318
  msgstr "Weiterleitung der Einwilligung"
@@ -7387,6 +7516,15 @@ msgstr ""
7387
  "Der Altershinweis ist derzeit deaktiviert. Bitte navigiere zu "
7388
  "%1$sEinstellungen > Einwilligung%2$s, um diesen zu aktivieren."
7389
 
 
 
 
 
 
 
 
 
 
7390
  #. translators:
7391
  #: inc/view/customize/banner/Texts.php:1
7392
  msgid ""
@@ -7402,22 +7540,8 @@ msgid "Privacy preferences"
7402
  msgstr "Privatsphäre-Einstellungen"
7403
 
7404
  #: inc/view/customize/banner/Texts.php:1
7405
- msgid ""
7406
- "We use cookies and similar technologies on our website and process personal "
7407
- "data about you, such as your IP address. We also share this data with third "
7408
- "parties. Data processing may be done with your consent or on the basis of a "
7409
- "legitimate interest, which you can object to in the individual privacy "
7410
- "settings. You have the right to consent to essential services only and to "
7411
- "modify or revoke your consent at a later time in the privacy policy."
7412
- msgstr ""
7413
- "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7414
- "verarbeiten personenbezogene Daten (z.B. deine IP-Adresse) über dich. Wir "
7415
- "teilen diese Daten auch mit Dritten. Die Datenverarbeitung kann mit deiner "
7416
- "Einwilligung oder auf Basis eines berechtigten Interesses erfolgen, dem du "
7417
- "in den individuellen Privatsphäre-Einstellungen widersprechen kannst. Du "
7418
- "hast das Recht, nur in essenzielle Services einzuwilligen und deine "
7419
- "Einwilligung in der Datenschutzerklärung zu einem späteren Zeitpunkt zu "
7420
- "ändern oder zu widerrufen."
7421
 
7422
  #: inc/view/customize/banner/Texts.php:1
7423
  msgid ""
@@ -7457,6 +7581,16 @@ msgstr ""
7457
  "zustimmen, um diese Inhalte zu sehen. Bitte deine Eltern oder "
7458
  "Erziehungsberechtigten, dem Service mit dir zuzustimmen!"
7459
 
 
 
 
 
 
 
 
 
 
 
7460
  #: inc/view/customize/banner/Texts.php:1
7461
  msgid "Your consent is also applicable on {{websites}}."
7462
  msgstr "Deine Einwilligung gilt auch auf {{websites}}."
@@ -7576,6 +7710,52 @@ msgstr "Bitte gib ein `text`-Attribut in deinem Shortcode an!"
7576
  msgid "Please provide a `type` attribute in your shortcode. Allowed: %s!"
7577
  msgstr "Bitte gib in deinem Shortcode das Attribut `type` an. Erlaubt: %s!"
7578
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7579
  #~ msgid "Place shortcodes in your privacy policy"
7580
  #~ msgstr "Platziere Shortcodes in deiner Datenschutzerklärung"
7581
 
2
  msgstr ""
3
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
4
  "POT-Creation-Date: n/a\n"
5
+ "PO-Revision-Date: 2022-05-24 09:42+0000\n"
6
  "Last-Translator: Matthias Günter <matthias.guenter@devowl.io>\n"
7
  "Language-Team: German <https://translate.devowl.io/projects/wordpress-real-"
8
  "cookie-banner-backend-php/develop/de/>\n"
220
  msgid "Host"
221
  msgstr "Host"
222
 
223
+ #: inc/Assets.php:1 inc/view/customize/banner/BasicLayout.php:1
224
  msgid "Duration"
225
  msgstr "Dauer"
226
 
248
  msgid "year(s)"
249
  msgstr "Jahr(e)"
250
 
251
+ #: inc/Assets.php:1
252
+ msgid "No expiration"
253
+ msgstr "Kein Ablauf"
254
+
255
  #: inc/Assets.php:1 inc/view/customize/banner/BasicLayout.php:1
256
  #: inc/view/customize/banner/BodyDesign.php:1
257
  #: inc/view/customize/banner/individual/SaveButton.php:1
327
  msgid "Product license not for production use!"
328
  msgstr "Produktlizenz nicht für den Produktionseinsatz!"
329
 
330
+ #. translators:
331
+ #: inc/Assets.php:1
332
+ msgid " and "
333
+ msgstr " und "
334
+
335
  #: inc/Assets.php:1 inc/view/checklist/GetPro.php:1
336
  msgid "Learn more"
337
  msgstr "Mehr erfahren"
5032
  msgstr "Rahmen"
5033
 
5034
  #: inc/overrides/pro/view/customize/banner/TcfBodyDesign.php:1
 
 
 
5035
  msgid "Border width (px)"
5036
  msgstr "Rahmen breite (px)"
5037
 
5117
  "genutzt. Details zu den einzelnen Gruppen und Zwecken der Services findest "
5118
  "du in den individuellen Privatsphäre-Einstellungen."
5119
 
5120
+ #: inc/overrides/pro/view/TcfBanner.php:1
5121
+ msgid ""
5122
+ "In addition, you consent to the transfer of data to partners under the TCF "
5123
+ "standard for the following purposes:"
5124
+ msgstr ""
5125
+ "Darüber hinaus stimmst du der Übermittlung von Daten an Partner im Rahmen "
5126
+ "des TCF-Standards für die folgenden Zwecke zu:"
5127
+
5128
  #: inc/overrides/pro/view/TcfBanner.php:1
5129
  msgid "Vendor list"
5130
  msgstr "Liste der Anbieter"
6342
  msgid "View stats"
6343
  msgstr "Statistiken ansehen"
6344
 
6345
+ #: inc/view/ConfigPage.php:1
6346
+ msgid "Set privacy policy URL"
6347
+ msgstr "Datenschutzerklärung Seite einstellen"
6348
+
6349
+ #: inc/view/ConfigPage.php:1
6350
+ msgid ""
6351
+ "There are no privacy policies with further information linked for the "
6352
+ "following services in your cookie banner. We now consider these to be "
6353
+ "mandatory in order to comply with the information obligations under the "
6354
+ "GDPR. Please provide a privacy policy for each service!"
6355
+ msgstr ""
6356
+ "Für folgende Services in deinen Cookie Banner sind keine "
6357
+ "Datenschutzerklärungen mit weiterführenden Informationen verlinkt. Wir "
6358
+ "halten diese mittlerweile als zwingend notwendig, um den "
6359
+ "Informationspflichten nach DSGVO nachzukommen. Bitte hinterlege in jedem "
6360
+ "Service eine Datenschutzerklärung!"
6361
+
6362
  #: inc/view/ConfigPage.php:1
6363
  msgid ""
6364
  "A cookie banner for your website is installed. With it, you can integrate e."
6412
 
6413
  #: inc/view/customize/banner/BasicLayout.php:1
6414
  #: inc/view/customize/banner/individual/Layout.php:1
6415
+ msgid "Maximum width"
6416
+ msgstr "Maximale Breite"
6417
 
6418
  #: inc/view/customize/banner/BasicLayout.php:1
6419
  msgid "Position"
6472
  msgstr "Unten"
6473
 
6474
  #: inc/view/customize/banner/BasicLayout.php:1
6475
+ msgid "Maximum content width"
6476
+ msgstr "Maximale Inhaltsbreite"
6477
 
6478
  #: inc/view/customize/banner/BasicLayout.php:1
6479
  msgid "Dialog border radius"
6487
  msgid "Animation on display"
6488
  msgstr "Animation beim Einblenden"
6489
 
 
 
 
 
6490
  #: inc/view/customize/banner/BasicLayout.php:1
6491
  msgid "Animation only on mobile devices"
6492
  msgstr "Animation nur auf mobilen Geräten"
6540
  "Beachte, dass diese Option für Besucher mit einem älteren Browser (z. B. "
6541
  "Internet Explorer) nicht funktioniert."
6542
 
 
 
 
 
 
 
 
 
6543
  #: inc/view/customize/banner/BodyDesign.php:1
6544
  msgid "Body"
6545
  msgstr "Hauptbereich (Body)"
6615
  #: inc/view/customize/banner/BodyDesign.php:1
6616
  #: inc/view/customize/banner/Design.php:1
6617
  #: inc/view/customize/banner/individual/Group.php:1
6618
+ msgid "Width"
6619
+ msgstr "Breite"
6620
 
6621
  #: inc/view/customize/banner/BodyDesign.php:1
6622
  #: inc/view/customize/banner/FooterDesign.php:1
6623
  #: inc/view/customize/banner/HeaderDesign.php:1
6624
+ msgid "Height"
6625
+ msgstr "Höhe"
6626
 
6627
  #: inc/view/customize/banner/BodyDesign.php:1
6628
  #: inc/view/customize/banner/Design.php:1
6652
  msgid "Define inner distance of the button/link."
6653
  msgstr "Definiere den Innenabstand des Buttons/Links."
6654
 
6655
+ #: inc/view/customize/banner/BodyDesign.php:1
6656
+ #: inc/view/customize/banner/individual/Group.php:1
6657
+ #: inc/view/customize/banner/individual/SaveButton.php:1
6658
+ msgid "Border width"
6659
+ msgstr "Rahmen-Breite"
6660
+
6661
  #: inc/view/customize/banner/BodyDesign.php:1
6662
  #: inc/view/customize/banner/FooterDesign.php:1
6663
  #: inc/view/customize/banner/individual/SaveButton.php:1
6688
  msgid "Button: Continue without consent"
6689
  msgstr "Button: Weiter ohne Einwilligung"
6690
 
6691
+ #: inc/view/customize/banner/BodyDesign.php:1
6692
+ #: inc/view/customize/banner/individual/SaveButton.php:1
6693
+ msgid "Use the same stylings as for \"Accept all\""
6694
+ msgstr "Gleiche Formatierung wie für \"Alle akzeptieren\" verwenden"
6695
+
6696
+ #: inc/view/customize/banner/BodyDesign.php:1
6697
+ #: inc/view/customize/banner/individual/SaveButton.php:1
6698
+ msgid ""
6699
+ "According to the <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6700
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">guidance of the data "
6701
+ "protection authorities in Germany (German)</a>, there must be an equivalent "
6702
+ "way for your visitors to express their choice (agree to everything, continue "
6703
+ "without consent or an indivudual decision). Equivalent does not necessarily "
6704
+ "mean that the buttons/links must look exactly the same. However, you should "
6705
+ "be safest if they look exactly the same."
6706
+ msgstr ""
6707
+ "Gemäß der <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6708
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">Orientierungshilfe der "
6709
+ "deutschen Datenschutzbehörden</a> muss es für deine Besucher eine "
6710
+ "gleichwertige Möglichkeit geben, ihren Willen auszudrücken (allem zustimmen, "
6711
+ "ohne Zustimmung fortfahren oder eine individuelle Entscheidung treffen). "
6712
+ "Gleichwertig bedeutet nicht unbedingt, dass die Buttons/Links genau gleich "
6713
+ "aussehen müssen. Am sichersten bist du jedoch, wenn sie genau gleich "
6714
+ "aussehen."
6715
+
6716
  #: inc/view/customize/banner/BodyDesign.php:1
6717
  msgid "Button: Individual privacy preferences"
6718
  msgstr "Button: Individuelle Einstellungen"
6880
 
6881
  #: inc/view/customize/banner/Decision.php:1
6882
  #: inc/view/customize/banner/individual/Texts.php:1
 
6883
  msgid "Individual privacy preferences"
6884
  msgstr "Individuelle Privatsphäre-Einstellungen"
6885
 
6896
  "Daher muss dem Nutzer die Möglichkeit gegeben werden, die Seite mit den "
6897
  "individuellen Privatsphäre-Einstellungen aufzurufen."
6898
 
6899
+ #: inc/view/customize/banner/Decision.php:1
6900
+ msgid "Order of the buttons"
6901
+ msgstr "Reihenfolge der Buttons"
6902
+
6903
+ #: inc/view/customize/banner/Decision.php:1
6904
+ msgid ""
6905
+ "According to the <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6906
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">guidance of the data "
6907
+ "protection authorities in Germany (German)</a>, there must be an equivalent "
6908
+ "way for your visitors to express their choice (agree to everything, continue "
6909
+ "without consent or an indivudual decision). Which order of options is "
6910
+ "considered equivalent is unclear. Therefore, the options should be arranged "
6911
+ "according to the cultural conditions of the main target country."
6912
+ msgstr ""
6913
+ "Gemäß der <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6914
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">Orientierungshilfe der "
6915
+ "deutschen Datenschutzbehörden</a> muss es für deine Besucher eine "
6916
+ "gleichwertige Möglichkeit geben, ihren Willen auszudrücken (allem zustimmen, "
6917
+ "ohne Zustimmung fortfahren oder eine individuelle Entscheidung treffen). "
6918
+ "Welche Reihenfolge der Optionen als gleichwertig gilt, ist unklar. Daher "
6919
+ "sollten die Optionen nach den kulturellen Gegebenheiten des Hauptziellandes "
6920
+ "angeordnet werden."
6921
+
6922
+ #: inc/view/customize/banner/Decision.php:1
6923
+ msgid "Service groups as bullet list"
6924
+ msgstr "Service-Gruppen als Aufzählungsliste ausgeben"
6925
+
6926
+ #: inc/view/customize/banner/Decision.php:1
6927
+ msgid "Show service groups as bullet list"
6928
+ msgstr "Service-Gruppen als Aufzählungsliste ausgeben"
6929
+
6930
  #: inc/view/customize/banner/Decision.php:1
6931
  msgid "Custom choice in first view"
6932
  msgstr "Benutzerdefinierte Auswahl in der ersten Ansicht"
6948
  msgstr ""
6949
  "Text von “Alle akzeptieren” ändert sich, wenn der Benutzer die Auswahl ändert"
6950
 
6951
+ #: inc/view/customize/banner/Decision.php:1
6952
+ #: inc/view/customize/banner/individual/Texts.php:1
6953
+ msgid "Save custom choices"
6954
+ msgstr "Individuelle Auswahlen speichern"
6955
+
6956
  #: inc/view/customize/banner/Design.php:1
6957
  #: inc/view/customize/banner/individual/Texts.php:1
6958
  #: inc/view/customize/banner/Texts.php:1
7132
  msgstr "Definiere den Innenabstand der Gruppen-Box."
7133
 
7134
  #: inc/view/customize/banner/individual/Group.php:1
7135
+ msgid "Spacing between groups"
7136
+ msgstr "Abstand zwischen Gruppen"
7137
 
7138
  #: inc/view/customize/banner/individual/Group.php:1
7139
  msgid "Border radius"
7170
  msgid "Texts"
7171
  msgstr "Texte"
7172
 
7173
+ #: inc/view/customize/banner/individual/Texts.php:1
7174
+ #: inc/view/customize/banner/Texts.php:1
7175
+ msgid ""
7176
+ "Use <code>{{privacyPolicy}}privacy policy{{/privacyPolicy}}</code> as a "
7177
+ "placeholder for the privacy policy link."
7178
+ msgstr ""
7179
+ "Verwende <code>{{privacyPolicy}}Datenschutzerklärung{{/privacyPolicy}}</"
7180
+ "code> als Platzhalter für den Link zur Datenschutzerklärung."
7181
+
7182
  #: inc/view/customize/banner/individual/Texts.php:1
7183
  msgid "\"Save\" button/link"
7184
  msgstr "\"Speichern”-Button/Link"
7192
  msgstr "\"Service-Informationen ausblenden”-Link"
7193
 
7194
  #: inc/view/customize/banner/individual/Texts.php:1
7195
+ #: inc/view/customize/banner/Texts.php:1
7196
  msgid ""
7197
+ "We use cookies and similar technologies on our website and process your "
7198
+ "personal data (e.g. IP address), for example, to personalize content and "
7199
+ "ads, to integrate media from third-party providers or to analyze traffic on "
7200
+ "our website. Data processing may also happen as a result of cookies being "
7201
+ "set. We share this data with third parties that we name in the privacy "
7202
+ "settings."
 
 
7203
  msgstr ""
7204
  "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7205
+ "verarbeiten personenbezogene Daten von dir (z.B. IP-Adresse), um z.B. "
7206
+ "Inhalte und Anzeigen zu personalisieren, Medien von Drittanbietern "
7207
+ "einzubinden oder Zugriffe auf unsere Website zu analysieren. Die "
7208
+ "Datenverarbeitung kann auch erst in Folge gesetzter Cookies stattfinden. Wir "
7209
+ "teilen diese Daten mit Dritten, die wir in den Privatsphäre-Einstellungen "
7210
+ "benennen."
 
 
 
7211
 
7212
  #: inc/view/customize/banner/individual/Texts.php:1
7213
+ #: inc/view/customize/banner/Texts.php:1
7214
+ msgid ""
7215
+ "The data processing may take place with your consent or on the basis of a "
7216
+ "legitimate interest, which you can object to in the privacy settings. You "
7217
+ "have the right not to consent and to change or revoke your consent at a "
7218
+ "later time. For more information on the use of your data, please visit our "
7219
+ "{{privacyPolicy}}privacy policy{{/privacyPolicy}}."
7220
+ msgstr ""
7221
+ "Die Datenverarbeitung kann mit deiner Einwilligung oder auf Basis eines "
7222
+ "berechtigten Interesses erfolgen, dem du in den Privatsphäre-Einstellungen "
7223
+ "widersprechen kannst. Du hast das Recht, nicht einzuwilligen und deine "
7224
+ "Einwilligung zu einem späteren Zeitpunkt zu ändern oder zu widerrufen. "
7225
+ "Weitere Informationen zur Verwendung deiner Daten findest du in unserer "
7226
+ "{{privacyPolicy}}Datenschutzerklärung{{/privacyPolicy}}."
7227
+
7228
+ #: inc/view/customize/banner/individual/Texts.php:1
7229
+ msgid ""
7230
+ "Below you will find an overview of all services used by this website. You "
7231
+ "can view detailed information about each service and agree to them "
7232
+ "individually or exercise your right to object."
7233
+ msgstr ""
7234
+ "Im Folgenden findest du eine Übersicht über alle Services, die von dieser "
7235
+ "Website genutzt werden. Du kannst dir detaillierte Informationen zu jedem "
7236
+ "Service ansehen und ihm einzeln zustimmen oder von deinem Widerspruchsrecht "
7237
+ "Gebrauch machen."
7238
 
7239
  #: inc/view/customize/banner/individual/Texts.php:1
7240
  msgid "Show service information"
7426
  msgid "Age notice in content blocker"
7427
  msgstr "Altershinweis im Content Blocker"
7428
 
7429
+ #: inc/view/customize/banner/Texts.php:1
7430
+ msgid "List of services"
7431
+ msgstr "Liste der Services"
7432
+
7433
+ #: inc/view/customize/banner/Texts.php:1
7434
+ msgid "Naming of all services in first view"
7435
+ msgstr "Benennung aller Services in der ersten Ansicht"
7436
+
7437
+ #: inc/view/customize/banner/Texts.php:1
7438
+ msgid ""
7439
+ "Use <code>{{services}}</code> and <code>{{serviceGroups}}</code> as a "
7440
+ "placeholder for a list of services and groups."
7441
+ msgstr ""
7442
+ "Verwende <code>{{services}}</code> und <code>{{serviceGroups}}</code> als "
7443
+ "Platzhalter für eine Liste von Services und Gruppen."
7444
+
7445
  #: inc/view/customize/banner/Texts.php:1
7446
  msgid "Consent Forwarding"
7447
  msgstr "Weiterleitung der Einwilligung"
7516
  "Der Altershinweis ist derzeit deaktiviert. Bitte navigiere zu "
7517
  "%1$sEinstellungen > Einwilligung%2$s, um diesen zu aktivieren."
7518
 
7519
+ #. translators:
7520
+ #: inc/view/customize/banner/Texts.php:1
7521
+ msgid ""
7522
+ "Naming of all services in first view is currently disabled. Please navigate "
7523
+ "to %1$sSettings > Consent%2$s to activate it."
7524
+ msgstr ""
7525
+ "Die Liste aller Services ist derzeit deaktiviert. Bitte navigiere zu "
7526
+ "%1$sEinstellungen > Einwilligung%2$s, um diese zu aktivieren."
7527
+
7528
  #. translators:
7529
  #: inc/view/customize/banner/Texts.php:1
7530
  msgid ""
7540
  msgstr "Privatsphäre-Einstellungen"
7541
 
7542
  #: inc/view/customize/banner/Texts.php:1
7543
+ msgid "Set privacy settings individually"
7544
+ msgstr "Privatsphäre-Einstellungen individuell festlegen"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7545
 
7546
  #: inc/view/customize/banner/Texts.php:1
7547
  msgid ""
7581
  "zustimmen, um diese Inhalte zu sehen. Bitte deine Eltern oder "
7582
  "Erziehungsberechtigten, dem Service mit dir zuzustimmen!"
7583
 
7584
+ #: inc/view/customize/banner/Texts.php:1
7585
+ msgid ""
7586
+ "By accepting all services, you allow {{services}} to be loaded. These "
7587
+ "services are divided into groups {{serviceGroups}} according to their "
7588
+ "purpose (belonging marked with superscript numbers)."
7589
+ msgstr ""
7590
+ "Wenn du alle Services akzeptierst, erlaubst du, dass {{services}} geladen "
7591
+ "werden. Diese sind nach ihrem Zweck in Gruppen {{serviceGroups}} unterteilt "
7592
+ "(Zugehörigkeit durch hochgestellte Zahlen gekennzeichnet)."
7593
+
7594
  #: inc/view/customize/banner/Texts.php:1
7595
  msgid "Your consent is also applicable on {{websites}}."
7596
  msgstr "Deine Einwilligung gilt auch auf {{websites}}."
7710
  msgid "Please provide a `type` attribute in your shortcode. Allowed: %s!"
7711
  msgstr "Bitte gib in deinem Shortcode das Attribut `type` an. Erlaubt: %s!"
7712
 
7713
+ #~ msgid ""
7714
+ #~ "We use cookies and similar technologies on our website and process your "
7715
+ #~ "personal data (e.g. IP address), for example, to personalize content and "
7716
+ #~ "ads, to integrate media from third-party providers or to analyze traffic "
7717
+ #~ "on our website. Data processing may also happen as a result of cookies "
7718
+ #~ "being set. We share this data with third parties that we name in the "
7719
+ #~ "privacy settings.<br/><br/>The data processing may take place with your "
7720
+ #~ "consent or on the basis of a legitimate interest, which you can object to "
7721
+ #~ "in the privacy settings. You have the right not to consent and to change "
7722
+ #~ "or revoke your consent at a later time. For more information on the use "
7723
+ #~ "of your data, please visit our {{privacyPolicy}}privacy policy{{/"
7724
+ #~ "privacyPolicy}}.<br/><br/>Below you will find an overview of all services "
7725
+ #~ "used by this website. You can view detailed information about each "
7726
+ #~ "service and agree to them individually or exercise your right to object."
7727
+ #~ msgstr ""
7728
+ #~ "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7729
+ #~ "verarbeiten personenbezogene Daten von dir (z.B. IP-Adresse), um z.B. "
7730
+ #~ "Inhalte und Anzeigen zu personalisieren, Medien von Drittanbietern "
7731
+ #~ "einzubinden oder Zugriffe auf unsere Website zu analysieren. Die "
7732
+ #~ "Datenverarbeitung kann auch erst in Folge gesetzter Cookies stattfinden. "
7733
+ #~ "Wir teilen diese Daten mit Dritten, die wir in den Privatsphäre-"
7734
+ #~ "Einstellungen benennen.<br/><br/>Die Datenverarbeitung kann mit deiner "
7735
+ #~ "Einwilligung oder auf Basis eines berechtigten Interesses erfolgen, dem "
7736
+ #~ "du in den Privatsphäre-Einstellungen widersprechen kannst. Du hast das "
7737
+ #~ "Recht, nicht einzuwilligen und deine Einwilligung zu einem späteren "
7738
+ #~ "Zeitpunkt zu ändern oder zu widerrufen. Weitere Informationen zur "
7739
+ #~ "Verwendung deiner Daten findest du in unserer {{privacyPolicy}}"
7740
+ #~ "Datenschutzerklärung{{/privacyPolicy}}.<br/><br/>Nachstehend findest du "
7741
+ #~ "eine Übersicht über alle von dieser Website genutzten Dienste. Du kannst "
7742
+ #~ "detaillierte Informationen zu jedem Dienst einsehen und diesen einzeln "
7743
+ #~ "zustimmen oder von deinem Widerspruchsrecht Gebrauch machen."
7744
+
7745
+ #~ msgid "Duration (milliseconds)"
7746
+ #~ msgstr "Dauer (Millisekunden)"
7747
+
7748
+ #~ msgid ""
7749
+ #~ "The \"Accept\" and \"Reject\" buttons should be the same size (button and "
7750
+ #~ "text size) so that they are considered equal."
7751
+ #~ msgstr ""
7752
+ #~ "Die Buttons \"Akzeptieren\" und \"Ablehnen\" sollten die gleiche Größe "
7753
+ #~ "haben (Button- und Textgröße), damit sie als gleichwertig angesehen "
7754
+ #~ "werden."
7755
+
7756
+ #~ msgid "Height (px)"
7757
+ #~ msgstr "Höhe (px)"
7758
+
7759
  #~ msgid "Place shortcodes in your privacy policy"
7760
  #~ msgstr "Platziere Shortcodes in deiner Datenschutzerklärung"
7761
 
languages/real-cookie-banner-de_CH_informal.mo CHANGED
Binary file
languages/real-cookie-banner-de_CH_informal.po CHANGED
@@ -2,7 +2,7 @@ msgid ""
2
  msgstr ""
3
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
4
  "POT-Creation-Date: n/a\n"
5
- "PO-Revision-Date: 2022-04-29 07:43+0000\n"
6
  "Last-Translator: Matthias Günter <matthias.guenter@devowl.io>\n"
7
  "Language-Team: German <https://translate.devowl.io/projects/wordpress-real-"
8
  "cookie-banner-backend-php/develop/de/>\n"
@@ -220,7 +220,7 @@ msgstr ""
220
  msgid "Host"
221
  msgstr "Host"
222
 
223
- #: inc/Assets.php:1
224
  msgid "Duration"
225
  msgstr "Dauer"
226
 
@@ -248,6 +248,10 @@ msgstr "Monat(e)"
248
  msgid "year(s)"
249
  msgstr "Jahr(e)"
250
 
 
 
 
 
251
  #: inc/Assets.php:1 inc/view/customize/banner/BasicLayout.php:1
252
  #: inc/view/customize/banner/BodyDesign.php:1
253
  #: inc/view/customize/banner/individual/SaveButton.php:1
@@ -323,6 +327,11 @@ msgstr "Keine Lizenz aktiviert - kein Produktionseinsatz!"
323
  msgid "Product license not for production use!"
324
  msgstr "Produktlizenz nicht für den Produktionseinsatz!"
325
 
 
 
 
 
 
326
  #: inc/Assets.php:1 inc/view/checklist/GetPro.php:1
327
  msgid "Learn more"
328
  msgstr "Mehr erfahren"
@@ -5023,9 +5032,6 @@ msgid "Border"
5023
  msgstr "Rahmen"
5024
 
5025
  #: inc/overrides/pro/view/customize/banner/TcfBodyDesign.php:1
5026
- #: inc/view/customize/banner/BodyDesign.php:1
5027
- #: inc/view/customize/banner/individual/Group.php:1
5028
- #: inc/view/customize/banner/individual/SaveButton.php:1
5029
  msgid "Border width (px)"
5030
  msgstr "Rahmen breite (px)"
5031
 
@@ -5111,6 +5117,14 @@ msgstr ""
5111
  "genutzt. Details zu den einzelnen Gruppen und Zwecken der Services findest "
5112
  "du in den individuellen Privatsphäre-Einstellungen."
5113
 
 
 
 
 
 
 
 
 
5114
  #: inc/overrides/pro/view/TcfBanner.php:1
5115
  msgid "Vendor list"
5116
  msgstr "Liste der Anbieter"
@@ -6328,6 +6342,23 @@ msgstr ""
6328
  msgid "View stats"
6329
  msgstr "Statistiken ansehen"
6330
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6331
  #: inc/view/ConfigPage.php:1
6332
  msgid ""
6333
  "A cookie banner for your website is installed. With it, you can integrate e."
@@ -6381,8 +6412,8 @@ msgstr "Banner"
6381
 
6382
  #: inc/view/customize/banner/BasicLayout.php:1
6383
  #: inc/view/customize/banner/individual/Layout.php:1
6384
- msgid "Maximum width (px)"
6385
- msgstr "Maximale Breite (px)"
6386
 
6387
  #: inc/view/customize/banner/BasicLayout.php:1
6388
  msgid "Position"
@@ -6441,8 +6472,8 @@ msgid "Bottom"
6441
  msgstr "Unten"
6442
 
6443
  #: inc/view/customize/banner/BasicLayout.php:1
6444
- msgid "Maximum content width (px)"
6445
- msgstr "Maximale Inhaltsbreite (px)"
6446
 
6447
  #: inc/view/customize/banner/BasicLayout.php:1
6448
  msgid "Dialog border radius"
@@ -6456,10 +6487,6 @@ msgstr "Button-Rahmen: Abgerundete Ecken"
6456
  msgid "Animation on display"
6457
  msgstr "Animation beim Einblenden"
6458
 
6459
- #: inc/view/customize/banner/BasicLayout.php:1
6460
- msgid "Duration (milliseconds)"
6461
- msgstr "Dauer (Millisekunden)"
6462
-
6463
  #: inc/view/customize/banner/BasicLayout.php:1
6464
  msgid "Animation only on mobile devices"
6465
  msgstr "Animation nur auf mobilen Geräten"
@@ -6513,14 +6540,6 @@ msgstr ""
6513
  "Beachte, dass diese Option für Besucher mit einem älteren Browser (z. B. "
6514
  "Internet Explorer) nicht funktioniert."
6515
 
6516
- #: inc/view/customize/banner/BodyDesign.php:1
6517
- msgid ""
6518
- "The \"Accept\" and \"Reject\" buttons should be the same size (button and "
6519
- "text size) so that they are considered equal."
6520
- msgstr ""
6521
- "Die Buttons \"Akzeptieren\" und \"Ablehnen\" sollten die gleiche Größe haben "
6522
- "(Button- und Textgröße), damit sie als gleichwertig angesehen werden."
6523
-
6524
  #: inc/view/customize/banner/BodyDesign.php:1
6525
  msgid "Body"
6526
  msgstr "Hauptbereich (Body)"
@@ -6596,14 +6615,14 @@ msgstr "Trenner"
6596
  #: inc/view/customize/banner/BodyDesign.php:1
6597
  #: inc/view/customize/banner/Design.php:1
6598
  #: inc/view/customize/banner/individual/Group.php:1
6599
- msgid "Width (px)"
6600
- msgstr "Breite (px)"
6601
 
6602
  #: inc/view/customize/banner/BodyDesign.php:1
6603
  #: inc/view/customize/banner/FooterDesign.php:1
6604
  #: inc/view/customize/banner/HeaderDesign.php:1
6605
- msgid "Height (px)"
6606
- msgstr "Höhe (px)"
6607
 
6608
  #: inc/view/customize/banner/BodyDesign.php:1
6609
  #: inc/view/customize/banner/Design.php:1
@@ -6633,6 +6652,12 @@ msgstr "Buttons nebeneinander ausrichten"
6633
  msgid "Define inner distance of the button/link."
6634
  msgstr "Definiere den Innenabstand des Buttons/Links."
6635
 
 
 
 
 
 
 
6636
  #: inc/view/customize/banner/BodyDesign.php:1
6637
  #: inc/view/customize/banner/FooterDesign.php:1
6638
  #: inc/view/customize/banner/individual/SaveButton.php:1
@@ -6663,6 +6688,31 @@ msgstr "Rahmenfarbe"
6663
  msgid "Button: Continue without consent"
6664
  msgstr "Button: Weiter ohne Einwilligung"
6665
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6666
  #: inc/view/customize/banner/BodyDesign.php:1
6667
  msgid "Button: Individual privacy preferences"
6668
  msgstr "Button: Individuelle Einstellungen"
@@ -6830,7 +6880,6 @@ msgstr ""
6830
 
6831
  #: inc/view/customize/banner/Decision.php:1
6832
  #: inc/view/customize/banner/individual/Texts.php:1
6833
- #: inc/view/customize/banner/Texts.php:1
6834
  msgid "Individual privacy preferences"
6835
  msgstr "Individuelle Privatsphäre-Einstellungen"
6836
 
@@ -6847,6 +6896,37 @@ msgstr ""
6847
  "Daher muss dem Nutzer die Möglichkeit gegeben werden, die Seite mit den "
6848
  "individuellen Privatsphäre-Einstellungen aufzurufen."
6849
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6850
  #: inc/view/customize/banner/Decision.php:1
6851
  msgid "Custom choice in first view"
6852
  msgstr "Benutzerdefinierte Auswahl in der ersten Ansicht"
@@ -6868,6 +6948,11 @@ msgid "Text of \"Accept all\" changes when user changes selection"
6868
  msgstr ""
6869
  "Text von “Alle akzeptieren” ändert sich, wenn der Benutzer die Auswahl ändert"
6870
 
 
 
 
 
 
6871
  #: inc/view/customize/banner/Design.php:1
6872
  #: inc/view/customize/banner/individual/Texts.php:1
6873
  #: inc/view/customize/banner/Texts.php:1
@@ -7047,8 +7132,8 @@ msgid "Define the inner distance of the group box."
7047
  msgstr "Definiere den Innenabstand der Gruppen-Box."
7048
 
7049
  #: inc/view/customize/banner/individual/Group.php:1
7050
- msgid "Spacing between groups (px)"
7051
- msgstr "Abstand zwischen Gruppen (px)"
7052
 
7053
  #: inc/view/customize/banner/individual/Group.php:1
7054
  msgid "Border radius"
@@ -7085,6 +7170,15 @@ msgstr "Definiere den Innenabstand des Buttons."
7085
  msgid "Texts"
7086
  msgstr "Texte"
7087
 
 
 
 
 
 
 
 
 
 
7088
  #: inc/view/customize/banner/individual/Texts.php:1
7089
  msgid "\"Save\" button/link"
7090
  msgstr "\"Speichern”-Button/Link"
@@ -7098,30 +7192,49 @@ msgid "\"Hide service information\" link"
7098
  msgstr "\"Service-Informationen ausblenden”-Link"
7099
 
7100
  #: inc/view/customize/banner/individual/Texts.php:1
 
7101
  msgid ""
7102
- "We use cookies and similar technologies on our website and process personal "
7103
- "data about you, such as your IP address. We also share this data with third "
7104
- "parties. Data processing may be done with your consent or on the basis of a "
7105
- "legitimate interest, which you can object to. You have the right to consent "
7106
- "to essential services only and to modify or revoke your consent at a later "
7107
- "time in the privacy policy. Below you will find an overview of all services "
7108
- "used by this website. You can view detailed information about each service "
7109
- "and agree to them individually or exercise your right to object."
7110
  msgstr ""
7111
  "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7112
- "verarbeiten personenbezogene Daten (z.B. deine IP-Adresse) über dich. Wir "
7113
- "teilen diese Daten auch mit Dritten. Die Datenverarbeitung kann mit deiner "
7114
- "Einwilligung oder auf der Grundlage eines berechtigten Interesses erfolgen, "
7115
- "dem du widersprechen kannst. Du hast das Recht, nur in essenzielle Services "
7116
- "einzuwilligen und deine Einwilligung zu einem späteren Zeitpunkt in der "
7117
- "Datenschutzerklärung zu ändern oder zu widerrufen. Nachfolgend findest du "
7118
- "eine Übersicht über alle Services, die von dieser Website genutzt werden. Du "
7119
- "kannst detaillierte Informationen zu jedem Service einsehen und diesen "
7120
- "einzeln zustimmen oder von deinem Widerspruchsrecht Gebrauch machen."
7121
 
7122
  #: inc/view/customize/banner/individual/Texts.php:1
7123
- msgid "Save custom choices"
7124
- msgstr "Individuelle Auswahlen speichern"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7125
 
7126
  #: inc/view/customize/banner/individual/Texts.php:1
7127
  msgid "Show service information"
@@ -7313,6 +7426,22 @@ msgstr "Altershinweis im Cookie Banner"
7313
  msgid "Age notice in content blocker"
7314
  msgstr "Altershinweis im Content Blocker"
7315
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7316
  #: inc/view/customize/banner/Texts.php:1
7317
  msgid "Consent Forwarding"
7318
  msgstr "Weiterleitung der Einwilligung"
@@ -7387,6 +7516,15 @@ msgstr ""
7387
  "Der Altershinweis ist derzeit deaktiviert. Bitte navigiere zu "
7388
  "%1$sEinstellungen > Einwilligung%2$s, um diesen zu aktivieren."
7389
 
 
 
 
 
 
 
 
 
 
7390
  #. translators:
7391
  #: inc/view/customize/banner/Texts.php:1
7392
  msgid ""
@@ -7402,22 +7540,8 @@ msgid "Privacy preferences"
7402
  msgstr "Privatsphäre-Einstellungen"
7403
 
7404
  #: inc/view/customize/banner/Texts.php:1
7405
- msgid ""
7406
- "We use cookies and similar technologies on our website and process personal "
7407
- "data about you, such as your IP address. We also share this data with third "
7408
- "parties. Data processing may be done with your consent or on the basis of a "
7409
- "legitimate interest, which you can object to in the individual privacy "
7410
- "settings. You have the right to consent to essential services only and to "
7411
- "modify or revoke your consent at a later time in the privacy policy."
7412
- msgstr ""
7413
- "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7414
- "verarbeiten personenbezogene Daten (z.B. deine IP-Adresse) über dich. Wir "
7415
- "teilen diese Daten auch mit Dritten. Die Datenverarbeitung kann mit deiner "
7416
- "Einwilligung oder auf Basis eines berechtigten Interesses erfolgen, dem du "
7417
- "in den individuellen Privatsphäre-Einstellungen widersprechen kannst. Du "
7418
- "hast das Recht, nur in essenzielle Services einzuwilligen und deine "
7419
- "Einwilligung in der Datenschutzerklärung zu einem späteren Zeitpunkt zu "
7420
- "ändern oder zu widerrufen."
7421
 
7422
  #: inc/view/customize/banner/Texts.php:1
7423
  msgid ""
@@ -7457,6 +7581,16 @@ msgstr ""
7457
  "zustimmen, um diese Inhalte zu sehen. Bitte deine Eltern oder "
7458
  "Erziehungsberechtigten, dem Service mit dir zuzustimmen!"
7459
 
 
 
 
 
 
 
 
 
 
 
7460
  #: inc/view/customize/banner/Texts.php:1
7461
  msgid "Your consent is also applicable on {{websites}}."
7462
  msgstr "Deine Einwilligung gilt auch auf {{websites}}."
@@ -7576,6 +7710,52 @@ msgstr "Bitte gib ein `text`-Attribut in deinem Shortcode an!"
7576
  msgid "Please provide a `type` attribute in your shortcode. Allowed: %s!"
7577
  msgstr "Bitte gib in deinem Shortcode das Attribut `type` an. Erlaubt: %s!"
7578
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7579
  #~ msgid "Place shortcodes in your privacy policy"
7580
  #~ msgstr "Platziere Shortcodes in deiner Datenschutzerklärung"
7581
 
2
  msgstr ""
3
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
4
  "POT-Creation-Date: n/a\n"
5
+ "PO-Revision-Date: 2022-05-24 09:42+0000\n"
6
  "Last-Translator: Matthias Günter <matthias.guenter@devowl.io>\n"
7
  "Language-Team: German <https://translate.devowl.io/projects/wordpress-real-"
8
  "cookie-banner-backend-php/develop/de/>\n"
220
  msgid "Host"
221
  msgstr "Host"
222
 
223
+ #: inc/Assets.php:1 inc/view/customize/banner/BasicLayout.php:1
224
  msgid "Duration"
225
  msgstr "Dauer"
226
 
248
  msgid "year(s)"
249
  msgstr "Jahr(e)"
250
 
251
+ #: inc/Assets.php:1
252
+ msgid "No expiration"
253
+ msgstr "Kein Ablauf"
254
+
255
  #: inc/Assets.php:1 inc/view/customize/banner/BasicLayout.php:1
256
  #: inc/view/customize/banner/BodyDesign.php:1
257
  #: inc/view/customize/banner/individual/SaveButton.php:1
327
  msgid "Product license not for production use!"
328
  msgstr "Produktlizenz nicht für den Produktionseinsatz!"
329
 
330
+ #. translators:
331
+ #: inc/Assets.php:1
332
+ msgid " and "
333
+ msgstr " und "
334
+
335
  #: inc/Assets.php:1 inc/view/checklist/GetPro.php:1
336
  msgid "Learn more"
337
  msgstr "Mehr erfahren"
5032
  msgstr "Rahmen"
5033
 
5034
  #: inc/overrides/pro/view/customize/banner/TcfBodyDesign.php:1
 
 
 
5035
  msgid "Border width (px)"
5036
  msgstr "Rahmen breite (px)"
5037
 
5117
  "genutzt. Details zu den einzelnen Gruppen und Zwecken der Services findest "
5118
  "du in den individuellen Privatsphäre-Einstellungen."
5119
 
5120
+ #: inc/overrides/pro/view/TcfBanner.php:1
5121
+ msgid ""
5122
+ "In addition, you consent to the transfer of data to partners under the TCF "
5123
+ "standard for the following purposes:"
5124
+ msgstr ""
5125
+ "Darüber hinaus stimmst du der Übermittlung von Daten an Partner im Rahmen "
5126
+ "des TCF-Standards für die folgenden Zwecke zu:"
5127
+
5128
  #: inc/overrides/pro/view/TcfBanner.php:1
5129
  msgid "Vendor list"
5130
  msgstr "Liste der Anbieter"
6342
  msgid "View stats"
6343
  msgstr "Statistiken ansehen"
6344
 
6345
+ #: inc/view/ConfigPage.php:1
6346
+ msgid "Set privacy policy URL"
6347
+ msgstr "Datenschutzerklärung Seite einstellen"
6348
+
6349
+ #: inc/view/ConfigPage.php:1
6350
+ msgid ""
6351
+ "There are no privacy policies with further information linked for the "
6352
+ "following services in your cookie banner. We now consider these to be "
6353
+ "mandatory in order to comply with the information obligations under the "
6354
+ "GDPR. Please provide a privacy policy for each service!"
6355
+ msgstr ""
6356
+ "Für folgende Services in deinen Cookie Banner sind keine "
6357
+ "Datenschutzerklärungen mit weiterführenden Informationen verlinkt. Wir "
6358
+ "halten diese mittlerweile als zwingend notwendig, um den "
6359
+ "Informationspflichten nach DSGVO nachzukommen. Bitte hinterlege in jedem "
6360
+ "Service eine Datenschutzerklärung!"
6361
+
6362
  #: inc/view/ConfigPage.php:1
6363
  msgid ""
6364
  "A cookie banner for your website is installed. With it, you can integrate e."
6412
 
6413
  #: inc/view/customize/banner/BasicLayout.php:1
6414
  #: inc/view/customize/banner/individual/Layout.php:1
6415
+ msgid "Maximum width"
6416
+ msgstr "Maximale Breite"
6417
 
6418
  #: inc/view/customize/banner/BasicLayout.php:1
6419
  msgid "Position"
6472
  msgstr "Unten"
6473
 
6474
  #: inc/view/customize/banner/BasicLayout.php:1
6475
+ msgid "Maximum content width"
6476
+ msgstr "Maximale Inhaltsbreite"
6477
 
6478
  #: inc/view/customize/banner/BasicLayout.php:1
6479
  msgid "Dialog border radius"
6487
  msgid "Animation on display"
6488
  msgstr "Animation beim Einblenden"
6489
 
 
 
 
 
6490
  #: inc/view/customize/banner/BasicLayout.php:1
6491
  msgid "Animation only on mobile devices"
6492
  msgstr "Animation nur auf mobilen Geräten"
6540
  "Beachte, dass diese Option für Besucher mit einem älteren Browser (z. B. "
6541
  "Internet Explorer) nicht funktioniert."
6542
 
 
 
 
 
 
 
 
 
6543
  #: inc/view/customize/banner/BodyDesign.php:1
6544
  msgid "Body"
6545
  msgstr "Hauptbereich (Body)"
6615
  #: inc/view/customize/banner/BodyDesign.php:1
6616
  #: inc/view/customize/banner/Design.php:1
6617
  #: inc/view/customize/banner/individual/Group.php:1
6618
+ msgid "Width"
6619
+ msgstr "Breite"
6620
 
6621
  #: inc/view/customize/banner/BodyDesign.php:1
6622
  #: inc/view/customize/banner/FooterDesign.php:1
6623
  #: inc/view/customize/banner/HeaderDesign.php:1
6624
+ msgid "Height"
6625
+ msgstr "Höhe"
6626
 
6627
  #: inc/view/customize/banner/BodyDesign.php:1
6628
  #: inc/view/customize/banner/Design.php:1
6652
  msgid "Define inner distance of the button/link."
6653
  msgstr "Definiere den Innenabstand des Buttons/Links."
6654
 
6655
+ #: inc/view/customize/banner/BodyDesign.php:1
6656
+ #: inc/view/customize/banner/individual/Group.php:1
6657
+ #: inc/view/customize/banner/individual/SaveButton.php:1
6658
+ msgid "Border width"
6659
+ msgstr "Rahmen-Breite"
6660
+
6661
  #: inc/view/customize/banner/BodyDesign.php:1
6662
  #: inc/view/customize/banner/FooterDesign.php:1
6663
  #: inc/view/customize/banner/individual/SaveButton.php:1
6688
  msgid "Button: Continue without consent"
6689
  msgstr "Button: Weiter ohne Einwilligung"
6690
 
6691
+ #: inc/view/customize/banner/BodyDesign.php:1
6692
+ #: inc/view/customize/banner/individual/SaveButton.php:1
6693
+ msgid "Use the same stylings as for \"Accept all\""
6694
+ msgstr "Gleiche Formatierung wie für \"Alle akzeptieren\" verwenden"
6695
+
6696
+ #: inc/view/customize/banner/BodyDesign.php:1
6697
+ #: inc/view/customize/banner/individual/SaveButton.php:1
6698
+ msgid ""
6699
+ "According to the <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6700
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">guidance of the data "
6701
+ "protection authorities in Germany (German)</a>, there must be an equivalent "
6702
+ "way for your visitors to express their choice (agree to everything, continue "
6703
+ "without consent or an indivudual decision). Equivalent does not necessarily "
6704
+ "mean that the buttons/links must look exactly the same. However, you should "
6705
+ "be safest if they look exactly the same."
6706
+ msgstr ""
6707
+ "Gemäß der <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6708
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">Orientierungshilfe der "
6709
+ "deutschen Datenschutzbehörden</a> muss es für deine Besucher eine "
6710
+ "gleichwertige Möglichkeit geben, ihren Willen auszudrücken (allem zustimmen, "
6711
+ "ohne Zustimmung fortfahren oder eine individuelle Entscheidung treffen). "
6712
+ "Gleichwertig bedeutet nicht unbedingt, dass die Buttons/Links genau gleich "
6713
+ "aussehen müssen. Am sichersten bist du jedoch, wenn sie genau gleich "
6714
+ "aussehen."
6715
+
6716
  #: inc/view/customize/banner/BodyDesign.php:1
6717
  msgid "Button: Individual privacy preferences"
6718
  msgstr "Button: Individuelle Einstellungen"
6880
 
6881
  #: inc/view/customize/banner/Decision.php:1
6882
  #: inc/view/customize/banner/individual/Texts.php:1
 
6883
  msgid "Individual privacy preferences"
6884
  msgstr "Individuelle Privatsphäre-Einstellungen"
6885
 
6896
  "Daher muss dem Nutzer die Möglichkeit gegeben werden, die Seite mit den "
6897
  "individuellen Privatsphäre-Einstellungen aufzurufen."
6898
 
6899
+ #: inc/view/customize/banner/Decision.php:1
6900
+ msgid "Order of the buttons"
6901
+ msgstr "Reihenfolge der Buttons"
6902
+
6903
+ #: inc/view/customize/banner/Decision.php:1
6904
+ msgid ""
6905
+ "According to the <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6906
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">guidance of the data "
6907
+ "protection authorities in Germany (German)</a>, there must be an equivalent "
6908
+ "way for your visitors to express their choice (agree to everything, continue "
6909
+ "without consent or an indivudual decision). Which order of options is "
6910
+ "considered equivalent is unclear. Therefore, the options should be arranged "
6911
+ "according to the cultural conditions of the main target country."
6912
+ msgstr ""
6913
+ "Gemäß der <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6914
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">Orientierungshilfe der "
6915
+ "deutschen Datenschutzbehörden</a> muss es für deine Besucher eine "
6916
+ "gleichwertige Möglichkeit geben, ihren Willen auszudrücken (allem zustimmen, "
6917
+ "ohne Zustimmung fortfahren oder eine individuelle Entscheidung treffen). "
6918
+ "Welche Reihenfolge der Optionen als gleichwertig gilt, ist unklar. Daher "
6919
+ "sollten die Optionen nach den kulturellen Gegebenheiten des Hauptziellandes "
6920
+ "angeordnet werden."
6921
+
6922
+ #: inc/view/customize/banner/Decision.php:1
6923
+ msgid "Service groups as bullet list"
6924
+ msgstr "Service-Gruppen als Aufzählungsliste ausgeben"
6925
+
6926
+ #: inc/view/customize/banner/Decision.php:1
6927
+ msgid "Show service groups as bullet list"
6928
+ msgstr "Service-Gruppen als Aufzählungsliste ausgeben"
6929
+
6930
  #: inc/view/customize/banner/Decision.php:1
6931
  msgid "Custom choice in first view"
6932
  msgstr "Benutzerdefinierte Auswahl in der ersten Ansicht"
6948
  msgstr ""
6949
  "Text von “Alle akzeptieren” ändert sich, wenn der Benutzer die Auswahl ändert"
6950
 
6951
+ #: inc/view/customize/banner/Decision.php:1
6952
+ #: inc/view/customize/banner/individual/Texts.php:1
6953
+ msgid "Save custom choices"
6954
+ msgstr "Individuelle Auswahlen speichern"
6955
+
6956
  #: inc/view/customize/banner/Design.php:1
6957
  #: inc/view/customize/banner/individual/Texts.php:1
6958
  #: inc/view/customize/banner/Texts.php:1
7132
  msgstr "Definiere den Innenabstand der Gruppen-Box."
7133
 
7134
  #: inc/view/customize/banner/individual/Group.php:1
7135
+ msgid "Spacing between groups"
7136
+ msgstr "Abstand zwischen Gruppen"
7137
 
7138
  #: inc/view/customize/banner/individual/Group.php:1
7139
  msgid "Border radius"
7170
  msgid "Texts"
7171
  msgstr "Texte"
7172
 
7173
+ #: inc/view/customize/banner/individual/Texts.php:1
7174
+ #: inc/view/customize/banner/Texts.php:1
7175
+ msgid ""
7176
+ "Use <code>{{privacyPolicy}}privacy policy{{/privacyPolicy}}</code> as a "
7177
+ "placeholder for the privacy policy link."
7178
+ msgstr ""
7179
+ "Verwende <code>{{privacyPolicy}}Datenschutzerklärung{{/privacyPolicy}}</"
7180
+ "code> als Platzhalter für den Link zur Datenschutzerklärung."
7181
+
7182
  #: inc/view/customize/banner/individual/Texts.php:1
7183
  msgid "\"Save\" button/link"
7184
  msgstr "\"Speichern”-Button/Link"
7192
  msgstr "\"Service-Informationen ausblenden”-Link"
7193
 
7194
  #: inc/view/customize/banner/individual/Texts.php:1
7195
+ #: inc/view/customize/banner/Texts.php:1
7196
  msgid ""
7197
+ "We use cookies and similar technologies on our website and process your "
7198
+ "personal data (e.g. IP address), for example, to personalize content and "
7199
+ "ads, to integrate media from third-party providers or to analyze traffic on "
7200
+ "our website. Data processing may also happen as a result of cookies being "
7201
+ "set. We share this data with third parties that we name in the privacy "
7202
+ "settings."
 
 
7203
  msgstr ""
7204
  "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7205
+ "verarbeiten personenbezogene Daten von dir (z.B. IP-Adresse), um z.B. "
7206
+ "Inhalte und Anzeigen zu personalisieren, Medien von Drittanbietern "
7207
+ "einzubinden oder Zugriffe auf unsere Website zu analysieren. Die "
7208
+ "Datenverarbeitung kann auch erst in Folge gesetzter Cookies stattfinden. Wir "
7209
+ "teilen diese Daten mit Dritten, die wir in den Privatsphäre-Einstellungen "
7210
+ "benennen."
 
 
 
7211
 
7212
  #: inc/view/customize/banner/individual/Texts.php:1
7213
+ #: inc/view/customize/banner/Texts.php:1
7214
+ msgid ""
7215
+ "The data processing may take place with your consent or on the basis of a "
7216
+ "legitimate interest, which you can object to in the privacy settings. You "
7217
+ "have the right not to consent and to change or revoke your consent at a "
7218
+ "later time. For more information on the use of your data, please visit our "
7219
+ "{{privacyPolicy}}privacy policy{{/privacyPolicy}}."
7220
+ msgstr ""
7221
+ "Die Datenverarbeitung kann mit deiner Einwilligung oder auf Basis eines "
7222
+ "berechtigten Interesses erfolgen, dem du in den Privatsphäre-Einstellungen "
7223
+ "widersprechen kannst. Du hast das Recht, nicht einzuwilligen und deine "
7224
+ "Einwilligung zu einem späteren Zeitpunkt zu ändern oder zu widerrufen. "
7225
+ "Weitere Informationen zur Verwendung deiner Daten findest du in unserer "
7226
+ "{{privacyPolicy}}Datenschutzerklärung{{/privacyPolicy}}."
7227
+
7228
+ #: inc/view/customize/banner/individual/Texts.php:1
7229
+ msgid ""
7230
+ "Below you will find an overview of all services used by this website. You "
7231
+ "can view detailed information about each service and agree to them "
7232
+ "individually or exercise your right to object."
7233
+ msgstr ""
7234
+ "Im Folgenden findest du eine Übersicht über alle Services, die von dieser "
7235
+ "Website genutzt werden. Du kannst dir detaillierte Informationen zu jedem "
7236
+ "Service ansehen und ihm einzeln zustimmen oder von deinem Widerspruchsrecht "
7237
+ "Gebrauch machen."
7238
 
7239
  #: inc/view/customize/banner/individual/Texts.php:1
7240
  msgid "Show service information"
7426
  msgid "Age notice in content blocker"
7427
  msgstr "Altershinweis im Content Blocker"
7428
 
7429
+ #: inc/view/customize/banner/Texts.php:1
7430
+ msgid "List of services"
7431
+ msgstr "Liste der Services"
7432
+
7433
+ #: inc/view/customize/banner/Texts.php:1
7434
+ msgid "Naming of all services in first view"
7435
+ msgstr "Benennung aller Services in der ersten Ansicht"
7436
+
7437
+ #: inc/view/customize/banner/Texts.php:1
7438
+ msgid ""
7439
+ "Use <code>{{services}}</code> and <code>{{serviceGroups}}</code> as a "
7440
+ "placeholder for a list of services and groups."
7441
+ msgstr ""
7442
+ "Verwende <code>{{services}}</code> und <code>{{serviceGroups}}</code> als "
7443
+ "Platzhalter für eine Liste von Services und Gruppen."
7444
+
7445
  #: inc/view/customize/banner/Texts.php:1
7446
  msgid "Consent Forwarding"
7447
  msgstr "Weiterleitung der Einwilligung"
7516
  "Der Altershinweis ist derzeit deaktiviert. Bitte navigiere zu "
7517
  "%1$sEinstellungen > Einwilligung%2$s, um diesen zu aktivieren."
7518
 
7519
+ #. translators:
7520
+ #: inc/view/customize/banner/Texts.php:1
7521
+ msgid ""
7522
+ "Naming of all services in first view is currently disabled. Please navigate "
7523
+ "to %1$sSettings > Consent%2$s to activate it."
7524
+ msgstr ""
7525
+ "Die Liste aller Services ist derzeit deaktiviert. Bitte navigiere zu "
7526
+ "%1$sEinstellungen > Einwilligung%2$s, um diese zu aktivieren."
7527
+
7528
  #. translators:
7529
  #: inc/view/customize/banner/Texts.php:1
7530
  msgid ""
7540
  msgstr "Privatsphäre-Einstellungen"
7541
 
7542
  #: inc/view/customize/banner/Texts.php:1
7543
+ msgid "Set privacy settings individually"
7544
+ msgstr "Privatsphäre-Einstellungen individuell festlegen"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7545
 
7546
  #: inc/view/customize/banner/Texts.php:1
7547
  msgid ""
7581
  "zustimmen, um diese Inhalte zu sehen. Bitte deine Eltern oder "
7582
  "Erziehungsberechtigten, dem Service mit dir zuzustimmen!"
7583
 
7584
+ #: inc/view/customize/banner/Texts.php:1
7585
+ msgid ""
7586
+ "By accepting all services, you allow {{services}} to be loaded. These "
7587
+ "services are divided into groups {{serviceGroups}} according to their "
7588
+ "purpose (belonging marked with superscript numbers)."
7589
+ msgstr ""
7590
+ "Wenn du alle Services akzeptierst, erlaubst du, dass {{services}} geladen "
7591
+ "werden. Diese sind nach ihrem Zweck in Gruppen {{serviceGroups}} unterteilt "
7592
+ "(Zugehörigkeit durch hochgestellte Zahlen gekennzeichnet)."
7593
+
7594
  #: inc/view/customize/banner/Texts.php:1
7595
  msgid "Your consent is also applicable on {{websites}}."
7596
  msgstr "Deine Einwilligung gilt auch auf {{websites}}."
7710
  msgid "Please provide a `type` attribute in your shortcode. Allowed: %s!"
7711
  msgstr "Bitte gib in deinem Shortcode das Attribut `type` an. Erlaubt: %s!"
7712
 
7713
+ #~ msgid ""
7714
+ #~ "We use cookies and similar technologies on our website and process your "
7715
+ #~ "personal data (e.g. IP address), for example, to personalize content and "
7716
+ #~ "ads, to integrate media from third-party providers or to analyze traffic "
7717
+ #~ "on our website. Data processing may also happen as a result of cookies "
7718
+ #~ "being set. We share this data with third parties that we name in the "
7719
+ #~ "privacy settings.<br/><br/>The data processing may take place with your "
7720
+ #~ "consent or on the basis of a legitimate interest, which you can object to "
7721
+ #~ "in the privacy settings. You have the right not to consent and to change "
7722
+ #~ "or revoke your consent at a later time. For more information on the use "
7723
+ #~ "of your data, please visit our {{privacyPolicy}}privacy policy{{/"
7724
+ #~ "privacyPolicy}}.<br/><br/>Below you will find an overview of all services "
7725
+ #~ "used by this website. You can view detailed information about each "
7726
+ #~ "service and agree to them individually or exercise your right to object."
7727
+ #~ msgstr ""
7728
+ #~ "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7729
+ #~ "verarbeiten personenbezogene Daten von dir (z.B. IP-Adresse), um z.B. "
7730
+ #~ "Inhalte und Anzeigen zu personalisieren, Medien von Drittanbietern "
7731
+ #~ "einzubinden oder Zugriffe auf unsere Website zu analysieren. Die "
7732
+ #~ "Datenverarbeitung kann auch erst in Folge gesetzter Cookies stattfinden. "
7733
+ #~ "Wir teilen diese Daten mit Dritten, die wir in den Privatsphäre-"
7734
+ #~ "Einstellungen benennen.<br/><br/>Die Datenverarbeitung kann mit deiner "
7735
+ #~ "Einwilligung oder auf Basis eines berechtigten Interesses erfolgen, dem "
7736
+ #~ "du in den Privatsphäre-Einstellungen widersprechen kannst. Du hast das "
7737
+ #~ "Recht, nicht einzuwilligen und deine Einwilligung zu einem späteren "
7738
+ #~ "Zeitpunkt zu ändern oder zu widerrufen. Weitere Informationen zur "
7739
+ #~ "Verwendung deiner Daten findest du in unserer {{privacyPolicy}}"
7740
+ #~ "Datenschutzerklärung{{/privacyPolicy}}.<br/><br/>Nachstehend findest du "
7741
+ #~ "eine Übersicht über alle von dieser Website genutzten Dienste. Du kannst "
7742
+ #~ "detaillierte Informationen zu jedem Dienst einsehen und diesen einzeln "
7743
+ #~ "zustimmen oder von deinem Widerspruchsrecht Gebrauch machen."
7744
+
7745
+ #~ msgid "Duration (milliseconds)"
7746
+ #~ msgstr "Dauer (Millisekunden)"
7747
+
7748
+ #~ msgid ""
7749
+ #~ "The \"Accept\" and \"Reject\" buttons should be the same size (button and "
7750
+ #~ "text size) so that they are considered equal."
7751
+ #~ msgstr ""
7752
+ #~ "Die Buttons \"Akzeptieren\" und \"Ablehnen\" sollten die gleiche Größe "
7753
+ #~ "haben (Button- und Textgröße), damit sie als gleichwertig angesehen "
7754
+ #~ "werden."
7755
+
7756
+ #~ msgid "Height (px)"
7757
+ #~ msgstr "Höhe (px)"
7758
+
7759
  #~ msgid "Place shortcodes in your privacy policy"
7760
  #~ msgstr "Platziere Shortcodes in deiner Datenschutzerklärung"
7761
 
languages/real-cookie-banner-de_DE.mo CHANGED
Binary file
languages/real-cookie-banner-de_DE.po CHANGED
@@ -2,7 +2,7 @@ msgid ""
2
  msgstr ""
3
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
4
  "POT-Creation-Date: n/a\n"
5
- "PO-Revision-Date: 2022-04-29 07:43+0000\n"
6
  "Last-Translator: Matthias Günter <matthias.guenter@devowl.io>\n"
7
  "Language-Team: German <https://translate.devowl.io/projects/wordpress-real-"
8
  "cookie-banner-backend-php/develop/de/>\n"
@@ -220,7 +220,7 @@ msgstr ""
220
  msgid "Host"
221
  msgstr "Host"
222
 
223
- #: inc/Assets.php:1
224
  msgid "Duration"
225
  msgstr "Dauer"
226
 
@@ -248,6 +248,10 @@ msgstr "Monat(e)"
248
  msgid "year(s)"
249
  msgstr "Jahr(e)"
250
 
 
 
 
 
251
  #: inc/Assets.php:1 inc/view/customize/banner/BasicLayout.php:1
252
  #: inc/view/customize/banner/BodyDesign.php:1
253
  #: inc/view/customize/banner/individual/SaveButton.php:1
@@ -323,6 +327,11 @@ msgstr "Keine Lizenz aktiviert - kein Produktionseinsatz!"
323
  msgid "Product license not for production use!"
324
  msgstr "Produktlizenz nicht für den Produktionseinsatz!"
325
 
 
 
 
 
 
326
  #: inc/Assets.php:1 inc/view/checklist/GetPro.php:1
327
  msgid "Learn more"
328
  msgstr "Mehr erfahren"
@@ -5023,9 +5032,6 @@ msgid "Border"
5023
  msgstr "Rahmen"
5024
 
5025
  #: inc/overrides/pro/view/customize/banner/TcfBodyDesign.php:1
5026
- #: inc/view/customize/banner/BodyDesign.php:1
5027
- #: inc/view/customize/banner/individual/Group.php:1
5028
- #: inc/view/customize/banner/individual/SaveButton.php:1
5029
  msgid "Border width (px)"
5030
  msgstr "Rahmen breite (px)"
5031
 
@@ -5111,6 +5117,14 @@ msgstr ""
5111
  "genutzt. Details zu den einzelnen Gruppen und Zwecken der Services findest "
5112
  "du in den individuellen Privatsphäre-Einstellungen."
5113
 
 
 
 
 
 
 
 
 
5114
  #: inc/overrides/pro/view/TcfBanner.php:1
5115
  msgid "Vendor list"
5116
  msgstr "Liste der Anbieter"
@@ -6328,6 +6342,23 @@ msgstr ""
6328
  msgid "View stats"
6329
  msgstr "Statistiken ansehen"
6330
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6331
  #: inc/view/ConfigPage.php:1
6332
  msgid ""
6333
  "A cookie banner for your website is installed. With it, you can integrate e."
@@ -6381,8 +6412,8 @@ msgstr "Banner"
6381
 
6382
  #: inc/view/customize/banner/BasicLayout.php:1
6383
  #: inc/view/customize/banner/individual/Layout.php:1
6384
- msgid "Maximum width (px)"
6385
- msgstr "Maximale Breite (px)"
6386
 
6387
  #: inc/view/customize/banner/BasicLayout.php:1
6388
  msgid "Position"
@@ -6441,8 +6472,8 @@ msgid "Bottom"
6441
  msgstr "Unten"
6442
 
6443
  #: inc/view/customize/banner/BasicLayout.php:1
6444
- msgid "Maximum content width (px)"
6445
- msgstr "Maximale Inhaltsbreite (px)"
6446
 
6447
  #: inc/view/customize/banner/BasicLayout.php:1
6448
  msgid "Dialog border radius"
@@ -6456,10 +6487,6 @@ msgstr "Button-Rahmen: Abgerundete Ecken"
6456
  msgid "Animation on display"
6457
  msgstr "Animation beim Einblenden"
6458
 
6459
- #: inc/view/customize/banner/BasicLayout.php:1
6460
- msgid "Duration (milliseconds)"
6461
- msgstr "Dauer (Millisekunden)"
6462
-
6463
  #: inc/view/customize/banner/BasicLayout.php:1
6464
  msgid "Animation only on mobile devices"
6465
  msgstr "Animation nur auf mobilen Geräten"
@@ -6513,14 +6540,6 @@ msgstr ""
6513
  "Beachte, dass diese Option für Besucher mit einem älteren Browser (z. B. "
6514
  "Internet Explorer) nicht funktioniert."
6515
 
6516
- #: inc/view/customize/banner/BodyDesign.php:1
6517
- msgid ""
6518
- "The \"Accept\" and \"Reject\" buttons should be the same size (button and "
6519
- "text size) so that they are considered equal."
6520
- msgstr ""
6521
- "Die Buttons \"Akzeptieren\" und \"Ablehnen\" sollten die gleiche Größe haben "
6522
- "(Button- und Textgröße), damit sie als gleichwertig angesehen werden."
6523
-
6524
  #: inc/view/customize/banner/BodyDesign.php:1
6525
  msgid "Body"
6526
  msgstr "Hauptbereich (Body)"
@@ -6596,14 +6615,14 @@ msgstr "Trenner"
6596
  #: inc/view/customize/banner/BodyDesign.php:1
6597
  #: inc/view/customize/banner/Design.php:1
6598
  #: inc/view/customize/banner/individual/Group.php:1
6599
- msgid "Width (px)"
6600
- msgstr "Breite (px)"
6601
 
6602
  #: inc/view/customize/banner/BodyDesign.php:1
6603
  #: inc/view/customize/banner/FooterDesign.php:1
6604
  #: inc/view/customize/banner/HeaderDesign.php:1
6605
- msgid "Height (px)"
6606
- msgstr "Höhe (px)"
6607
 
6608
  #: inc/view/customize/banner/BodyDesign.php:1
6609
  #: inc/view/customize/banner/Design.php:1
@@ -6633,6 +6652,12 @@ msgstr "Buttons nebeneinander ausrichten"
6633
  msgid "Define inner distance of the button/link."
6634
  msgstr "Definiere den Innenabstand des Buttons/Links."
6635
 
 
 
 
 
 
 
6636
  #: inc/view/customize/banner/BodyDesign.php:1
6637
  #: inc/view/customize/banner/FooterDesign.php:1
6638
  #: inc/view/customize/banner/individual/SaveButton.php:1
@@ -6663,6 +6688,31 @@ msgstr "Rahmenfarbe"
6663
  msgid "Button: Continue without consent"
6664
  msgstr "Button: Weiter ohne Einwilligung"
6665
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6666
  #: inc/view/customize/banner/BodyDesign.php:1
6667
  msgid "Button: Individual privacy preferences"
6668
  msgstr "Button: Individuelle Einstellungen"
@@ -6830,7 +6880,6 @@ msgstr ""
6830
 
6831
  #: inc/view/customize/banner/Decision.php:1
6832
  #: inc/view/customize/banner/individual/Texts.php:1
6833
- #: inc/view/customize/banner/Texts.php:1
6834
  msgid "Individual privacy preferences"
6835
  msgstr "Individuelle Privatsphäre-Einstellungen"
6836
 
@@ -6847,6 +6896,37 @@ msgstr ""
6847
  "Daher muss dem Nutzer die Möglichkeit gegeben werden, die Seite mit den "
6848
  "individuellen Privatsphäre-Einstellungen aufzurufen."
6849
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6850
  #: inc/view/customize/banner/Decision.php:1
6851
  msgid "Custom choice in first view"
6852
  msgstr "Benutzerdefinierte Auswahl in der ersten Ansicht"
@@ -6868,6 +6948,11 @@ msgid "Text of \"Accept all\" changes when user changes selection"
6868
  msgstr ""
6869
  "Text von “Alle akzeptieren” ändert sich, wenn der Benutzer die Auswahl ändert"
6870
 
 
 
 
 
 
6871
  #: inc/view/customize/banner/Design.php:1
6872
  #: inc/view/customize/banner/individual/Texts.php:1
6873
  #: inc/view/customize/banner/Texts.php:1
@@ -7047,8 +7132,8 @@ msgid "Define the inner distance of the group box."
7047
  msgstr "Definiere den Innenabstand der Gruppen-Box."
7048
 
7049
  #: inc/view/customize/banner/individual/Group.php:1
7050
- msgid "Spacing between groups (px)"
7051
- msgstr "Abstand zwischen Gruppen (px)"
7052
 
7053
  #: inc/view/customize/banner/individual/Group.php:1
7054
  msgid "Border radius"
@@ -7085,6 +7170,15 @@ msgstr "Definiere den Innenabstand des Buttons."
7085
  msgid "Texts"
7086
  msgstr "Texte"
7087
 
 
 
 
 
 
 
 
 
 
7088
  #: inc/view/customize/banner/individual/Texts.php:1
7089
  msgid "\"Save\" button/link"
7090
  msgstr "\"Speichern”-Button/Link"
@@ -7098,30 +7192,49 @@ msgid "\"Hide service information\" link"
7098
  msgstr "\"Service-Informationen ausblenden”-Link"
7099
 
7100
  #: inc/view/customize/banner/individual/Texts.php:1
 
7101
  msgid ""
7102
- "We use cookies and similar technologies on our website and process personal "
7103
- "data about you, such as your IP address. We also share this data with third "
7104
- "parties. Data processing may be done with your consent or on the basis of a "
7105
- "legitimate interest, which you can object to. You have the right to consent "
7106
- "to essential services only and to modify or revoke your consent at a later "
7107
- "time in the privacy policy. Below you will find an overview of all services "
7108
- "used by this website. You can view detailed information about each service "
7109
- "and agree to them individually or exercise your right to object."
7110
  msgstr ""
7111
  "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7112
- "verarbeiten personenbezogene Daten (z.B. deine IP-Adresse) über dich. Wir "
7113
- "teilen diese Daten auch mit Dritten. Die Datenverarbeitung kann mit deiner "
7114
- "Einwilligung oder auf der Grundlage eines berechtigten Interesses erfolgen, "
7115
- "dem du widersprechen kannst. Du hast das Recht, nur in essenzielle Services "
7116
- "einzuwilligen und deine Einwilligung zu einem späteren Zeitpunkt in der "
7117
- "Datenschutzerklärung zu ändern oder zu widerrufen. Nachfolgend findest du "
7118
- "eine Übersicht über alle Services, die von dieser Website genutzt werden. Du "
7119
- "kannst detaillierte Informationen zu jedem Service einsehen und diesen "
7120
- "einzeln zustimmen oder von deinem Widerspruchsrecht Gebrauch machen."
7121
 
7122
  #: inc/view/customize/banner/individual/Texts.php:1
7123
- msgid "Save custom choices"
7124
- msgstr "Individuelle Auswahlen speichern"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7125
 
7126
  #: inc/view/customize/banner/individual/Texts.php:1
7127
  msgid "Show service information"
@@ -7313,6 +7426,22 @@ msgstr "Altershinweis im Cookie Banner"
7313
  msgid "Age notice in content blocker"
7314
  msgstr "Altershinweis im Content Blocker"
7315
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7316
  #: inc/view/customize/banner/Texts.php:1
7317
  msgid "Consent Forwarding"
7318
  msgstr "Weiterleitung der Einwilligung"
@@ -7387,6 +7516,15 @@ msgstr ""
7387
  "Der Altershinweis ist derzeit deaktiviert. Bitte navigiere zu "
7388
  "%1$sEinstellungen > Einwilligung%2$s, um diesen zu aktivieren."
7389
 
 
 
 
 
 
 
 
 
 
7390
  #. translators:
7391
  #: inc/view/customize/banner/Texts.php:1
7392
  msgid ""
@@ -7402,22 +7540,8 @@ msgid "Privacy preferences"
7402
  msgstr "Privatsphäre-Einstellungen"
7403
 
7404
  #: inc/view/customize/banner/Texts.php:1
7405
- msgid ""
7406
- "We use cookies and similar technologies on our website and process personal "
7407
- "data about you, such as your IP address. We also share this data with third "
7408
- "parties. Data processing may be done with your consent or on the basis of a "
7409
- "legitimate interest, which you can object to in the individual privacy "
7410
- "settings. You have the right to consent to essential services only and to "
7411
- "modify or revoke your consent at a later time in the privacy policy."
7412
- msgstr ""
7413
- "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7414
- "verarbeiten personenbezogene Daten (z.B. deine IP-Adresse) über dich. Wir "
7415
- "teilen diese Daten auch mit Dritten. Die Datenverarbeitung kann mit deiner "
7416
- "Einwilligung oder auf Basis eines berechtigten Interesses erfolgen, dem du "
7417
- "in den individuellen Privatsphäre-Einstellungen widersprechen kannst. Du "
7418
- "hast das Recht, nur in essenzielle Services einzuwilligen und deine "
7419
- "Einwilligung in der Datenschutzerklärung zu einem späteren Zeitpunkt zu "
7420
- "ändern oder zu widerrufen."
7421
 
7422
  #: inc/view/customize/banner/Texts.php:1
7423
  msgid ""
@@ -7457,6 +7581,16 @@ msgstr ""
7457
  "zustimmen, um diese Inhalte zu sehen. Bitte deine Eltern oder "
7458
  "Erziehungsberechtigten, dem Service mit dir zuzustimmen!"
7459
 
 
 
 
 
 
 
 
 
 
 
7460
  #: inc/view/customize/banner/Texts.php:1
7461
  msgid "Your consent is also applicable on {{websites}}."
7462
  msgstr "Deine Einwilligung gilt auch auf {{websites}}."
@@ -7576,6 +7710,52 @@ msgstr "Bitte gib ein `text`-Attribut in deinem Shortcode an!"
7576
  msgid "Please provide a `type` attribute in your shortcode. Allowed: %s!"
7577
  msgstr "Bitte gib in deinem Shortcode das Attribut `type` an. Erlaubt: %s!"
7578
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7579
  #~ msgid "Place shortcodes in your privacy policy"
7580
  #~ msgstr "Platziere Shortcodes in deiner Datenschutzerklärung"
7581
 
2
  msgstr ""
3
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
4
  "POT-Creation-Date: n/a\n"
5
+ "PO-Revision-Date: 2022-05-24 09:42+0000\n"
6
  "Last-Translator: Matthias Günter <matthias.guenter@devowl.io>\n"
7
  "Language-Team: German <https://translate.devowl.io/projects/wordpress-real-"
8
  "cookie-banner-backend-php/develop/de/>\n"
220
  msgid "Host"
221
  msgstr "Host"
222
 
223
+ #: inc/Assets.php:1 inc/view/customize/banner/BasicLayout.php:1
224
  msgid "Duration"
225
  msgstr "Dauer"
226
 
248
  msgid "year(s)"
249
  msgstr "Jahr(e)"
250
 
251
+ #: inc/Assets.php:1
252
+ msgid "No expiration"
253
+ msgstr "Kein Ablauf"
254
+
255
  #: inc/Assets.php:1 inc/view/customize/banner/BasicLayout.php:1
256
  #: inc/view/customize/banner/BodyDesign.php:1
257
  #: inc/view/customize/banner/individual/SaveButton.php:1
327
  msgid "Product license not for production use!"
328
  msgstr "Produktlizenz nicht für den Produktionseinsatz!"
329
 
330
+ #. translators:
331
+ #: inc/Assets.php:1
332
+ msgid " and "
333
+ msgstr " und "
334
+
335
  #: inc/Assets.php:1 inc/view/checklist/GetPro.php:1
336
  msgid "Learn more"
337
  msgstr "Mehr erfahren"
5032
  msgstr "Rahmen"
5033
 
5034
  #: inc/overrides/pro/view/customize/banner/TcfBodyDesign.php:1
 
 
 
5035
  msgid "Border width (px)"
5036
  msgstr "Rahmen breite (px)"
5037
 
5117
  "genutzt. Details zu den einzelnen Gruppen und Zwecken der Services findest "
5118
  "du in den individuellen Privatsphäre-Einstellungen."
5119
 
5120
+ #: inc/overrides/pro/view/TcfBanner.php:1
5121
+ msgid ""
5122
+ "In addition, you consent to the transfer of data to partners under the TCF "
5123
+ "standard for the following purposes:"
5124
+ msgstr ""
5125
+ "Darüber hinaus stimmst du der Übermittlung von Daten an Partner im Rahmen "
5126
+ "des TCF-Standards für die folgenden Zwecke zu:"
5127
+
5128
  #: inc/overrides/pro/view/TcfBanner.php:1
5129
  msgid "Vendor list"
5130
  msgstr "Liste der Anbieter"
6342
  msgid "View stats"
6343
  msgstr "Statistiken ansehen"
6344
 
6345
+ #: inc/view/ConfigPage.php:1
6346
+ msgid "Set privacy policy URL"
6347
+ msgstr "Datenschutzerklärung Seite einstellen"
6348
+
6349
+ #: inc/view/ConfigPage.php:1
6350
+ msgid ""
6351
+ "There are no privacy policies with further information linked for the "
6352
+ "following services in your cookie banner. We now consider these to be "
6353
+ "mandatory in order to comply with the information obligations under the "
6354
+ "GDPR. Please provide a privacy policy for each service!"
6355
+ msgstr ""
6356
+ "Für folgende Services in deinen Cookie Banner sind keine "
6357
+ "Datenschutzerklärungen mit weiterführenden Informationen verlinkt. Wir "
6358
+ "halten diese mittlerweile als zwingend notwendig, um den "
6359
+ "Informationspflichten nach DSGVO nachzukommen. Bitte hinterlege in jedem "
6360
+ "Service eine Datenschutzerklärung!"
6361
+
6362
  #: inc/view/ConfigPage.php:1
6363
  msgid ""
6364
  "A cookie banner for your website is installed. With it, you can integrate e."
6412
 
6413
  #: inc/view/customize/banner/BasicLayout.php:1
6414
  #: inc/view/customize/banner/individual/Layout.php:1
6415
+ msgid "Maximum width"
6416
+ msgstr "Maximale Breite"
6417
 
6418
  #: inc/view/customize/banner/BasicLayout.php:1
6419
  msgid "Position"
6472
  msgstr "Unten"
6473
 
6474
  #: inc/view/customize/banner/BasicLayout.php:1
6475
+ msgid "Maximum content width"
6476
+ msgstr "Maximale Inhaltsbreite"
6477
 
6478
  #: inc/view/customize/banner/BasicLayout.php:1
6479
  msgid "Dialog border radius"
6487
  msgid "Animation on display"
6488
  msgstr "Animation beim Einblenden"
6489
 
 
 
 
 
6490
  #: inc/view/customize/banner/BasicLayout.php:1
6491
  msgid "Animation only on mobile devices"
6492
  msgstr "Animation nur auf mobilen Geräten"
6540
  "Beachte, dass diese Option für Besucher mit einem älteren Browser (z. B. "
6541
  "Internet Explorer) nicht funktioniert."
6542
 
 
 
 
 
 
 
 
 
6543
  #: inc/view/customize/banner/BodyDesign.php:1
6544
  msgid "Body"
6545
  msgstr "Hauptbereich (Body)"
6615
  #: inc/view/customize/banner/BodyDesign.php:1
6616
  #: inc/view/customize/banner/Design.php:1
6617
  #: inc/view/customize/banner/individual/Group.php:1
6618
+ msgid "Width"
6619
+ msgstr "Breite"
6620
 
6621
  #: inc/view/customize/banner/BodyDesign.php:1
6622
  #: inc/view/customize/banner/FooterDesign.php:1
6623
  #: inc/view/customize/banner/HeaderDesign.php:1
6624
+ msgid "Height"
6625
+ msgstr "Höhe"
6626
 
6627
  #: inc/view/customize/banner/BodyDesign.php:1
6628
  #: inc/view/customize/banner/Design.php:1
6652
  msgid "Define inner distance of the button/link."
6653
  msgstr "Definiere den Innenabstand des Buttons/Links."
6654
 
6655
+ #: inc/view/customize/banner/BodyDesign.php:1
6656
+ #: inc/view/customize/banner/individual/Group.php:1
6657
+ #: inc/view/customize/banner/individual/SaveButton.php:1
6658
+ msgid "Border width"
6659
+ msgstr "Rahmen-Breite"
6660
+
6661
  #: inc/view/customize/banner/BodyDesign.php:1
6662
  #: inc/view/customize/banner/FooterDesign.php:1
6663
  #: inc/view/customize/banner/individual/SaveButton.php:1
6688
  msgid "Button: Continue without consent"
6689
  msgstr "Button: Weiter ohne Einwilligung"
6690
 
6691
+ #: inc/view/customize/banner/BodyDesign.php:1
6692
+ #: inc/view/customize/banner/individual/SaveButton.php:1
6693
+ msgid "Use the same stylings as for \"Accept all\""
6694
+ msgstr "Gleiche Formatierung wie für \"Alle akzeptieren\" verwenden"
6695
+
6696
+ #: inc/view/customize/banner/BodyDesign.php:1
6697
+ #: inc/view/customize/banner/individual/SaveButton.php:1
6698
+ msgid ""
6699
+ "According to the <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6700
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">guidance of the data "
6701
+ "protection authorities in Germany (German)</a>, there must be an equivalent "
6702
+ "way for your visitors to express their choice (agree to everything, continue "
6703
+ "without consent or an indivudual decision). Equivalent does not necessarily "
6704
+ "mean that the buttons/links must look exactly the same. However, you should "
6705
+ "be safest if they look exactly the same."
6706
+ msgstr ""
6707
+ "Gemäß der <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6708
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">Orientierungshilfe der "
6709
+ "deutschen Datenschutzbehörden</a> muss es für deine Besucher eine "
6710
+ "gleichwertige Möglichkeit geben, ihren Willen auszudrücken (allem zustimmen, "
6711
+ "ohne Zustimmung fortfahren oder eine individuelle Entscheidung treffen). "
6712
+ "Gleichwertig bedeutet nicht unbedingt, dass die Buttons/Links genau gleich "
6713
+ "aussehen müssen. Am sichersten bist du jedoch, wenn sie genau gleich "
6714
+ "aussehen."
6715
+
6716
  #: inc/view/customize/banner/BodyDesign.php:1
6717
  msgid "Button: Individual privacy preferences"
6718
  msgstr "Button: Individuelle Einstellungen"
6880
 
6881
  #: inc/view/customize/banner/Decision.php:1
6882
  #: inc/view/customize/banner/individual/Texts.php:1
 
6883
  msgid "Individual privacy preferences"
6884
  msgstr "Individuelle Privatsphäre-Einstellungen"
6885
 
6896
  "Daher muss dem Nutzer die Möglichkeit gegeben werden, die Seite mit den "
6897
  "individuellen Privatsphäre-Einstellungen aufzurufen."
6898
 
6899
+ #: inc/view/customize/banner/Decision.php:1
6900
+ msgid "Order of the buttons"
6901
+ msgstr "Reihenfolge der Buttons"
6902
+
6903
+ #: inc/view/customize/banner/Decision.php:1
6904
+ msgid ""
6905
+ "According to the <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6906
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">guidance of the data "
6907
+ "protection authorities in Germany (German)</a>, there must be an equivalent "
6908
+ "way for your visitors to express their choice (agree to everything, continue "
6909
+ "without consent or an indivudual decision). Which order of options is "
6910
+ "considered equivalent is unclear. Therefore, the options should be arranged "
6911
+ "according to the cultural conditions of the main target country."
6912
+ msgstr ""
6913
+ "Gemäß der <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6914
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">Orientierungshilfe der "
6915
+ "deutschen Datenschutzbehörden</a> muss es für deine Besucher eine "
6916
+ "gleichwertige Möglichkeit geben, ihren Willen auszudrücken (allem zustimmen, "
6917
+ "ohne Zustimmung fortfahren oder eine individuelle Entscheidung treffen). "
6918
+ "Welche Reihenfolge der Optionen als gleichwertig gilt, ist unklar. Daher "
6919
+ "sollten die Optionen nach den kulturellen Gegebenheiten des Hauptziellandes "
6920
+ "angeordnet werden."
6921
+
6922
+ #: inc/view/customize/banner/Decision.php:1
6923
+ msgid "Service groups as bullet list"
6924
+ msgstr "Service-Gruppen als Aufzählungsliste ausgeben"
6925
+
6926
+ #: inc/view/customize/banner/Decision.php:1
6927
+ msgid "Show service groups as bullet list"
6928
+ msgstr "Service-Gruppen als Aufzählungsliste ausgeben"
6929
+
6930
  #: inc/view/customize/banner/Decision.php:1
6931
  msgid "Custom choice in first view"
6932
  msgstr "Benutzerdefinierte Auswahl in der ersten Ansicht"
6948
  msgstr ""
6949
  "Text von “Alle akzeptieren” ändert sich, wenn der Benutzer die Auswahl ändert"
6950
 
6951
+ #: inc/view/customize/banner/Decision.php:1
6952
+ #: inc/view/customize/banner/individual/Texts.php:1
6953
+ msgid "Save custom choices"
6954
+ msgstr "Individuelle Auswahlen speichern"
6955
+
6956
  #: inc/view/customize/banner/Design.php:1
6957
  #: inc/view/customize/banner/individual/Texts.php:1
6958
  #: inc/view/customize/banner/Texts.php:1
7132
  msgstr "Definiere den Innenabstand der Gruppen-Box."
7133
 
7134
  #: inc/view/customize/banner/individual/Group.php:1
7135
+ msgid "Spacing between groups"
7136
+ msgstr "Abstand zwischen Gruppen"
7137
 
7138
  #: inc/view/customize/banner/individual/Group.php:1
7139
  msgid "Border radius"
7170
  msgid "Texts"
7171
  msgstr "Texte"
7172
 
7173
+ #: inc/view/customize/banner/individual/Texts.php:1
7174
+ #: inc/view/customize/banner/Texts.php:1
7175
+ msgid ""
7176
+ "Use <code>{{privacyPolicy}}privacy policy{{/privacyPolicy}}</code> as a "
7177
+ "placeholder for the privacy policy link."
7178
+ msgstr ""
7179
+ "Verwende <code>{{privacyPolicy}}Datenschutzerklärung{{/privacyPolicy}}</"
7180
+ "code> als Platzhalter für den Link zur Datenschutzerklärung."
7181
+
7182
  #: inc/view/customize/banner/individual/Texts.php:1
7183
  msgid "\"Save\" button/link"
7184
  msgstr "\"Speichern”-Button/Link"
7192
  msgstr "\"Service-Informationen ausblenden”-Link"
7193
 
7194
  #: inc/view/customize/banner/individual/Texts.php:1
7195
+ #: inc/view/customize/banner/Texts.php:1
7196
  msgid ""
7197
+ "We use cookies and similar technologies on our website and process your "
7198
+ "personal data (e.g. IP address), for example, to personalize content and "
7199
+ "ads, to integrate media from third-party providers or to analyze traffic on "
7200
+ "our website. Data processing may also happen as a result of cookies being "
7201
+ "set. We share this data with third parties that we name in the privacy "
7202
+ "settings."
 
 
7203
  msgstr ""
7204
  "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7205
+ "verarbeiten personenbezogene Daten von dir (z.B. IP-Adresse), um z.B. "
7206
+ "Inhalte und Anzeigen zu personalisieren, Medien von Drittanbietern "
7207
+ "einzubinden oder Zugriffe auf unsere Website zu analysieren. Die "
7208
+ "Datenverarbeitung kann auch erst in Folge gesetzter Cookies stattfinden. Wir "
7209
+ "teilen diese Daten mit Dritten, die wir in den Privatsphäre-Einstellungen "
7210
+ "benennen."
 
 
 
7211
 
7212
  #: inc/view/customize/banner/individual/Texts.php:1
7213
+ #: inc/view/customize/banner/Texts.php:1
7214
+ msgid ""
7215
+ "The data processing may take place with your consent or on the basis of a "
7216
+ "legitimate interest, which you can object to in the privacy settings. You "
7217
+ "have the right not to consent and to change or revoke your consent at a "
7218
+ "later time. For more information on the use of your data, please visit our "
7219
+ "{{privacyPolicy}}privacy policy{{/privacyPolicy}}."
7220
+ msgstr ""
7221
+ "Die Datenverarbeitung kann mit deiner Einwilligung oder auf Basis eines "
7222
+ "berechtigten Interesses erfolgen, dem du in den Privatsphäre-Einstellungen "
7223
+ "widersprechen kannst. Du hast das Recht, nicht einzuwilligen und deine "
7224
+ "Einwilligung zu einem späteren Zeitpunkt zu ändern oder zu widerrufen. "
7225
+ "Weitere Informationen zur Verwendung deiner Daten findest du in unserer "
7226
+ "{{privacyPolicy}}Datenschutzerklärung{{/privacyPolicy}}."
7227
+
7228
+ #: inc/view/customize/banner/individual/Texts.php:1
7229
+ msgid ""
7230
+ "Below you will find an overview of all services used by this website. You "
7231
+ "can view detailed information about each service and agree to them "
7232
+ "individually or exercise your right to object."
7233
+ msgstr ""
7234
+ "Im Folgenden findest du eine Übersicht über alle Services, die von dieser "
7235
+ "Website genutzt werden. Du kannst dir detaillierte Informationen zu jedem "
7236
+ "Service ansehen und ihm einzeln zustimmen oder von deinem Widerspruchsrecht "
7237
+ "Gebrauch machen."
7238
 
7239
  #: inc/view/customize/banner/individual/Texts.php:1
7240
  msgid "Show service information"
7426
  msgid "Age notice in content blocker"
7427
  msgstr "Altershinweis im Content Blocker"
7428
 
7429
+ #: inc/view/customize/banner/Texts.php:1
7430
+ msgid "List of services"
7431
+ msgstr "Liste der Services"
7432
+
7433
+ #: inc/view/customize/banner/Texts.php:1
7434
+ msgid "Naming of all services in first view"
7435
+ msgstr "Benennung aller Services in der ersten Ansicht"
7436
+
7437
+ #: inc/view/customize/banner/Texts.php:1
7438
+ msgid ""
7439
+ "Use <code>{{services}}</code> and <code>{{serviceGroups}}</code> as a "
7440
+ "placeholder for a list of services and groups."
7441
+ msgstr ""
7442
+ "Verwende <code>{{services}}</code> und <code>{{serviceGroups}}</code> als "
7443
+ "Platzhalter für eine Liste von Services und Gruppen."
7444
+
7445
  #: inc/view/customize/banner/Texts.php:1
7446
  msgid "Consent Forwarding"
7447
  msgstr "Weiterleitung der Einwilligung"
7516
  "Der Altershinweis ist derzeit deaktiviert. Bitte navigiere zu "
7517
  "%1$sEinstellungen > Einwilligung%2$s, um diesen zu aktivieren."
7518
 
7519
+ #. translators:
7520
+ #: inc/view/customize/banner/Texts.php:1
7521
+ msgid ""
7522
+ "Naming of all services in first view is currently disabled. Please navigate "
7523
+ "to %1$sSettings > Consent%2$s to activate it."
7524
+ msgstr ""
7525
+ "Die Liste aller Services ist derzeit deaktiviert. Bitte navigiere zu "
7526
+ "%1$sEinstellungen > Einwilligung%2$s, um diese zu aktivieren."
7527
+
7528
  #. translators:
7529
  #: inc/view/customize/banner/Texts.php:1
7530
  msgid ""
7540
  msgstr "Privatsphäre-Einstellungen"
7541
 
7542
  #: inc/view/customize/banner/Texts.php:1
7543
+ msgid "Set privacy settings individually"
7544
+ msgstr "Privatsphäre-Einstellungen individuell festlegen"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7545
 
7546
  #: inc/view/customize/banner/Texts.php:1
7547
  msgid ""
7581
  "zustimmen, um diese Inhalte zu sehen. Bitte deine Eltern oder "
7582
  "Erziehungsberechtigten, dem Service mit dir zuzustimmen!"
7583
 
7584
+ #: inc/view/customize/banner/Texts.php:1
7585
+ msgid ""
7586
+ "By accepting all services, you allow {{services}} to be loaded. These "
7587
+ "services are divided into groups {{serviceGroups}} according to their "
7588
+ "purpose (belonging marked with superscript numbers)."
7589
+ msgstr ""
7590
+ "Wenn du alle Services akzeptierst, erlaubst du, dass {{services}} geladen "
7591
+ "werden. Diese sind nach ihrem Zweck in Gruppen {{serviceGroups}} unterteilt "
7592
+ "(Zugehörigkeit durch hochgestellte Zahlen gekennzeichnet)."
7593
+
7594
  #: inc/view/customize/banner/Texts.php:1
7595
  msgid "Your consent is also applicable on {{websites}}."
7596
  msgstr "Deine Einwilligung gilt auch auf {{websites}}."
7710
  msgid "Please provide a `type` attribute in your shortcode. Allowed: %s!"
7711
  msgstr "Bitte gib in deinem Shortcode das Attribut `type` an. Erlaubt: %s!"
7712
 
7713
+ #~ msgid ""
7714
+ #~ "We use cookies and similar technologies on our website and process your "
7715
+ #~ "personal data (e.g. IP address), for example, to personalize content and "
7716
+ #~ "ads, to integrate media from third-party providers or to analyze traffic "
7717
+ #~ "on our website. Data processing may also happen as a result of cookies "
7718
+ #~ "being set. We share this data with third parties that we name in the "
7719
+ #~ "privacy settings.<br/><br/>The data processing may take place with your "
7720
+ #~ "consent or on the basis of a legitimate interest, which you can object to "
7721
+ #~ "in the privacy settings. You have the right not to consent and to change "
7722
+ #~ "or revoke your consent at a later time. For more information on the use "
7723
+ #~ "of your data, please visit our {{privacyPolicy}}privacy policy{{/"
7724
+ #~ "privacyPolicy}}.<br/><br/>Below you will find an overview of all services "
7725
+ #~ "used by this website. You can view detailed information about each "
7726
+ #~ "service and agree to them individually or exercise your right to object."
7727
+ #~ msgstr ""
7728
+ #~ "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7729
+ #~ "verarbeiten personenbezogene Daten von dir (z.B. IP-Adresse), um z.B. "
7730
+ #~ "Inhalte und Anzeigen zu personalisieren, Medien von Drittanbietern "
7731
+ #~ "einzubinden oder Zugriffe auf unsere Website zu analysieren. Die "
7732
+ #~ "Datenverarbeitung kann auch erst in Folge gesetzter Cookies stattfinden. "
7733
+ #~ "Wir teilen diese Daten mit Dritten, die wir in den Privatsphäre-"
7734
+ #~ "Einstellungen benennen.<br/><br/>Die Datenverarbeitung kann mit deiner "
7735
+ #~ "Einwilligung oder auf Basis eines berechtigten Interesses erfolgen, dem "
7736
+ #~ "du in den Privatsphäre-Einstellungen widersprechen kannst. Du hast das "
7737
+ #~ "Recht, nicht einzuwilligen und deine Einwilligung zu einem späteren "
7738
+ #~ "Zeitpunkt zu ändern oder zu widerrufen. Weitere Informationen zur "
7739
+ #~ "Verwendung deiner Daten findest du in unserer {{privacyPolicy}}"
7740
+ #~ "Datenschutzerklärung{{/privacyPolicy}}.<br/><br/>Nachstehend findest du "
7741
+ #~ "eine Übersicht über alle von dieser Website genutzten Dienste. Du kannst "
7742
+ #~ "detaillierte Informationen zu jedem Dienst einsehen und diesen einzeln "
7743
+ #~ "zustimmen oder von deinem Widerspruchsrecht Gebrauch machen."
7744
+
7745
+ #~ msgid "Duration (milliseconds)"
7746
+ #~ msgstr "Dauer (Millisekunden)"
7747
+
7748
+ #~ msgid ""
7749
+ #~ "The \"Accept\" and \"Reject\" buttons should be the same size (button and "
7750
+ #~ "text size) so that they are considered equal."
7751
+ #~ msgstr ""
7752
+ #~ "Die Buttons \"Akzeptieren\" und \"Ablehnen\" sollten die gleiche Größe "
7753
+ #~ "haben (Button- und Textgröße), damit sie als gleichwertig angesehen "
7754
+ #~ "werden."
7755
+
7756
+ #~ msgid "Height (px)"
7757
+ #~ msgstr "Höhe (px)"
7758
+
7759
  #~ msgid "Place shortcodes in your privacy policy"
7760
  #~ msgstr "Platziere Shortcodes in deiner Datenschutzerklärung"
7761
 
languages/real-cookie-banner-de_DE_formal.mo CHANGED
Binary file
languages/real-cookie-banner-de_DE_formal.po CHANGED
@@ -5,7 +5,7 @@ msgstr ""
5
  "Project-Id-Version: n/a\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
7
  "POT-Creation-Date: n/a\n"
8
- "PO-Revision-Date: 2022-04-29 07:43+0000\n"
9
  "Last-Translator: Matthias Günter <matthias.guenter@devowl.io>\n"
10
  "Language-Team: German (formal) <https://translate.devowl.io/projects/"
11
  "wordpress-real-cookie-banner-backend-php/develop/de@formal/>\n"
@@ -224,7 +224,7 @@ msgstr ""
224
  msgid "Host"
225
  msgstr "Host"
226
 
227
- #: inc/Assets.php:1
228
  msgid "Duration"
229
  msgstr "Dauer"
230
 
@@ -252,6 +252,10 @@ msgstr "Monat(e)"
252
  msgid "year(s)"
253
  msgstr "Jahr(e)"
254
 
 
 
 
 
255
  #: inc/Assets.php:1 inc/view/customize/banner/BasicLayout.php:1
256
  #: inc/view/customize/banner/BodyDesign.php:1
257
  #: inc/view/customize/banner/individual/SaveButton.php:1
@@ -327,6 +331,11 @@ msgstr "Keine Lizenz aktiviert – kein Einsatz auf produktiven Systemen!"
327
  msgid "Product license not for production use!"
328
  msgstr "Produktlizenz nicht für den Produktionseinsatz!"
329
 
 
 
 
 
 
330
  #: inc/Assets.php:1 inc/view/checklist/GetPro.php:1
331
  msgid "Learn more"
332
  msgstr "Mehr erfahren"
@@ -5039,9 +5048,6 @@ msgid "Border"
5039
  msgstr "Rahmen"
5040
 
5041
  #: inc/overrides/pro/view/customize/banner/TcfBodyDesign.php:1
5042
- #: inc/view/customize/banner/BodyDesign.php:1
5043
- #: inc/view/customize/banner/individual/Group.php:1
5044
- #: inc/view/customize/banner/individual/SaveButton.php:1
5045
  msgid "Border width (px)"
5046
  msgstr "Rahmenbreite (px)"
5047
 
@@ -5127,6 +5133,14 @@ msgstr ""
5127
  "mit Ihrer Zustimmung genutzt. Einzelheiten zu den einzelnen Gruppen und "
5128
  "Zwecken der Dienste finden Sie in den jeweiligen Datenschutzeinstellungen."
5129
 
 
 
 
 
 
 
 
 
5130
  #: inc/overrides/pro/view/TcfBanner.php:1
5131
  msgid "Vendor list"
5132
  msgstr "Liste der Anbieter"
@@ -6345,6 +6359,23 @@ msgstr ""
6345
  msgid "View stats"
6346
  msgstr "Statistiken ansehen"
6347
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6348
  #: inc/view/ConfigPage.php:1
6349
  msgid ""
6350
  "A cookie banner for your website is installed. With it, you can integrate e."
@@ -6398,8 +6429,8 @@ msgstr "Banner"
6398
 
6399
  #: inc/view/customize/banner/BasicLayout.php:1
6400
  #: inc/view/customize/banner/individual/Layout.php:1
6401
- msgid "Maximum width (px)"
6402
- msgstr "Maximale Breite (px)"
6403
 
6404
  #: inc/view/customize/banner/BasicLayout.php:1
6405
  msgid "Position"
@@ -6458,8 +6489,8 @@ msgid "Bottom"
6458
  msgstr "Unten"
6459
 
6460
  #: inc/view/customize/banner/BasicLayout.php:1
6461
- msgid "Maximum content width (px)"
6462
- msgstr "Maximale Inhaltsbreite (px)"
6463
 
6464
  #: inc/view/customize/banner/BasicLayout.php:1
6465
  msgid "Dialog border radius"
@@ -6473,10 +6504,6 @@ msgstr "Button: Abgerundete Ecken"
6473
  msgid "Animation on display"
6474
  msgstr "Animation beim Einblenden"
6475
 
6476
- #: inc/view/customize/banner/BasicLayout.php:1
6477
- msgid "Duration (milliseconds)"
6478
- msgstr "Dauer (Millisekunden)"
6479
-
6480
  #: inc/view/customize/banner/BasicLayout.php:1
6481
  msgid "Animation only on mobile devices"
6482
  msgstr "Animation nur auf mobilen Geräten"
@@ -6530,14 +6557,6 @@ msgstr ""
6530
  "Beachten Sie, dass für Besucher mit einem älteren Browser (z.B. Internet "
6531
  "Explorer) diese Option nicht funktioniert."
6532
 
6533
- #: inc/view/customize/banner/BodyDesign.php:1
6534
- msgid ""
6535
- "The \"Accept\" and \"Reject\" buttons should be the same size (button and "
6536
- "text size) so that they are considered equal."
6537
- msgstr ""
6538
- "Die Buttons „Akzeptieren“ und „Ablehnen“ sollten die gleiche Größe haben "
6539
- "(Button- und Textgröße), damit sie als gleichwertig angesehen werden."
6540
-
6541
  #: inc/view/customize/banner/BodyDesign.php:1
6542
  msgid "Body"
6543
  msgstr "Hauptbereich (Body)"
@@ -6613,14 +6632,14 @@ msgstr "Trennelement"
6613
  #: inc/view/customize/banner/BodyDesign.php:1
6614
  #: inc/view/customize/banner/Design.php:1
6615
  #: inc/view/customize/banner/individual/Group.php:1
6616
- msgid "Width (px)"
6617
- msgstr "Breite (px)"
6618
 
6619
  #: inc/view/customize/banner/BodyDesign.php:1
6620
  #: inc/view/customize/banner/FooterDesign.php:1
6621
  #: inc/view/customize/banner/HeaderDesign.php:1
6622
- msgid "Height (px)"
6623
- msgstr "Höhe (px)"
6624
 
6625
  #: inc/view/customize/banner/BodyDesign.php:1
6626
  #: inc/view/customize/banner/Design.php:1
@@ -6650,6 +6669,12 @@ msgstr "Buttons nebeneinander ausrichten"
6650
  msgid "Define inner distance of the button/link."
6651
  msgstr "Definieren Sie den Innenabstand des Buttons/Links."
6652
 
 
 
 
 
 
 
6653
  #: inc/view/customize/banner/BodyDesign.php:1
6654
  #: inc/view/customize/banner/FooterDesign.php:1
6655
  #: inc/view/customize/banner/individual/SaveButton.php:1
@@ -6680,6 +6705,31 @@ msgstr "Rahmenfarbe"
6680
  msgid "Button: Continue without consent"
6681
  msgstr "Button: Weiter ohne Einwilligung"
6682
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6683
  #: inc/view/customize/banner/BodyDesign.php:1
6684
  msgid "Button: Individual privacy preferences"
6685
  msgstr "Button: Individuelle Einstellung"
@@ -6847,7 +6897,6 @@ msgstr ""
6847
 
6848
  #: inc/view/customize/banner/Decision.php:1
6849
  #: inc/view/customize/banner/individual/Texts.php:1
6850
- #: inc/view/customize/banner/Texts.php:1
6851
  msgid "Individual privacy preferences"
6852
  msgstr "Individuelle Privatsphäre-Präferenzen"
6853
 
@@ -6864,6 +6913,37 @@ msgstr ""
6864
  "muss der Nutzer die Möglichkeit haben, die Seite mit den individuellen "
6865
  "Privatsphären-Einstellungen aufzurufen."
6866
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6867
  #: inc/view/customize/banner/Decision.php:1
6868
  msgid "Custom choice in first view"
6869
  msgstr "Benutzerdefinierte Auswahl in der ersten Ansicht"
@@ -6885,6 +6965,11 @@ msgid "Text of \"Accept all\" changes when user changes selection"
6885
  msgstr ""
6886
  "Text von „Alle akzeptieren“ ändert, wenn der Benutzer die Auswahl ändert"
6887
 
 
 
 
 
 
6888
  #: inc/view/customize/banner/Design.php:1
6889
  #: inc/view/customize/banner/individual/Texts.php:1
6890
  #: inc/view/customize/banner/Texts.php:1
@@ -7064,8 +7149,8 @@ msgid "Define the inner distance of the group box."
7064
  msgstr "Innenabstand der Gruppen-Box definieren."
7065
 
7066
  #: inc/view/customize/banner/individual/Group.php:1
7067
- msgid "Spacing between groups (px)"
7068
- msgstr "Abstand zwischen Gruppen (px)"
7069
 
7070
  #: inc/view/customize/banner/individual/Group.php:1
7071
  msgid "Border radius"
@@ -7102,6 +7187,15 @@ msgstr "Innenabstand des Buttons definieren."
7102
  msgid "Texts"
7103
  msgstr "Texte"
7104
 
 
 
 
 
 
 
 
 
 
7105
  #: inc/view/customize/banner/individual/Texts.php:1
7106
  msgid "\"Save\" button/link"
7107
  msgstr "„Speichern“ Button/Link"
@@ -7115,30 +7209,48 @@ msgid "\"Hide service information\" link"
7115
  msgstr "„Service-Informationen ausblenden“-Link"
7116
 
7117
  #: inc/view/customize/banner/individual/Texts.php:1
 
7118
  msgid ""
7119
- "We use cookies and similar technologies on our website and process personal "
7120
- "data about you, such as your IP address. We also share this data with third "
7121
- "parties. Data processing may be done with your consent or on the basis of a "
7122
- "legitimate interest, which you can object to. You have the right to consent "
7123
- "to essential services only and to modify or revoke your consent at a later "
7124
- "time in the privacy policy. Below you will find an overview of all services "
7125
- "used by this website. You can view detailed information about each service "
7126
- "and agree to them individually or exercise your right to object."
7127
  msgstr ""
7128
  "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7129
- "verarbeiten personenbezogene Daten über Sie, wie Ihre IP-Adresse. Wir teilen "
7130
- "diese Daten auch mit Dritten. Die Datenverarbeitung kann mit Ihrer "
7131
- "Einwilligung oder auf der Grundlage eines berechtigten Interesses erfolgen, "
7132
- "dem Sie widersprechen können. Sie haben das Recht, nur in essenzielle "
7133
- "Services einzuwilligen und Ihre Einwilligung zu einem späteren Zeitpunkt in "
7134
- "der Datenschutzerklärung zu ändern oder zu widerrufen. Nachfolgend finden "
7135
- "Sie eine Übersicht über alle Services, die von dieser Website genutzt "
7136
- "werden. Sie können detaillierte Informationen zu jedem Service einsehen und "
7137
- "diesen einzeln zustimmen oder von Ihrem Widerspruchsrecht Gebrauch machen."
7138
 
7139
  #: inc/view/customize/banner/individual/Texts.php:1
7140
- msgid "Save custom choices"
7141
- msgstr "Individuelle Auswahl speichern"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7142
 
7143
  #: inc/view/customize/banner/individual/Texts.php:1
7144
  msgid "Show service information"
@@ -7330,6 +7442,22 @@ msgstr "Altershinweis im Cookie Banner"
7330
  msgid "Age notice in content blocker"
7331
  msgstr "Altershinweis in Content Blocker"
7332
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7333
  #: inc/view/customize/banner/Texts.php:1
7334
  msgid "Consent Forwarding"
7335
  msgstr "Weiterleitung der Einwilligung"
@@ -7405,6 +7533,15 @@ msgstr ""
7405
  "Der Altershinweis ist derzeit deaktiviert. Bitte navigieren Sie zu "
7406
  "%1$sEinstellungen > Einwilligung%2$s, um ihn zu aktivieren."
7407
 
 
 
 
 
 
 
 
 
 
7408
  #. translators:
7409
  #: inc/view/customize/banner/Texts.php:1
7410
  msgid ""
@@ -7420,22 +7557,8 @@ msgid "Privacy preferences"
7420
  msgstr "Privatsphäre-Einstellungen"
7421
 
7422
  #: inc/view/customize/banner/Texts.php:1
7423
- msgid ""
7424
- "We use cookies and similar technologies on our website and process personal "
7425
- "data about you, such as your IP address. We also share this data with third "
7426
- "parties. Data processing may be done with your consent or on the basis of a "
7427
- "legitimate interest, which you can object to in the individual privacy "
7428
- "settings. You have the right to consent to essential services only and to "
7429
- "modify or revoke your consent at a later time in the privacy policy."
7430
- msgstr ""
7431
- "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7432
- "verarbeiten personenbezogene Daten über Sie, wie Ihre IP-Adresse. Wir teilen "
7433
- "diese Daten auch mit Dritten. Die Datenverarbeitung kann mit Ihrer "
7434
- "Einwilligung oder auf Basis eines berechtigten Interesses erfolgen, dem Sie "
7435
- "in den individuellen Privatsphäre-Einstellungen widersprechen können. Sie "
7436
- "haben das Recht, nur in essenzielle Services einzuwilligen und Ihre "
7437
- "Einwilligung in der Datenschutzerklärung zu einem späteren Zeitpunkt zu "
7438
- "ändern oder zu widerrufen."
7439
 
7440
  #: inc/view/customize/banner/Texts.php:1
7441
  msgid ""
@@ -7474,6 +7597,16 @@ msgstr ""
7474
  "zustimmen, um diese Inhalte zu sehen. Bitten Sie Ihre Eltern oder "
7475
  "Erziehungsberechtigten, dem Service mit Ihnen zuzustimmen!"
7476
 
 
 
 
 
 
 
 
 
 
 
7477
  #: inc/view/customize/banner/Texts.php:1
7478
  msgid "Your consent is also applicable on {{websites}}."
7479
  msgstr "Ihre Einwilligung gilt auch auf {{websites}}."
@@ -7594,6 +7727,51 @@ msgid "Please provide a `type` attribute in your shortcode. Allowed: %s!"
7594
  msgstr ""
7595
  "Bitte geben Sie in Ihrem Shortcode das Attribut `type` an. Erlaubt: %s!"
7596
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7597
  #~ msgid "Place shortcodes in your privacy policy"
7598
  #~ msgstr "Platzieren Sie Shortcodes in Ihrer Datenschutzerklärung"
7599
 
5
  "Project-Id-Version: n/a\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
7
  "POT-Creation-Date: n/a\n"
8
+ "PO-Revision-Date: 2022-05-24 09:42+0000\n"
9
  "Last-Translator: Matthias Günter <matthias.guenter@devowl.io>\n"
10
  "Language-Team: German (formal) <https://translate.devowl.io/projects/"
11
  "wordpress-real-cookie-banner-backend-php/develop/de@formal/>\n"
224
  msgid "Host"
225
  msgstr "Host"
226
 
227
+ #: inc/Assets.php:1 inc/view/customize/banner/BasicLayout.php:1
228
  msgid "Duration"
229
  msgstr "Dauer"
230
 
252
  msgid "year(s)"
253
  msgstr "Jahr(e)"
254
 
255
+ #: inc/Assets.php:1
256
+ msgid "No expiration"
257
+ msgstr "Kein Ablauf"
258
+
259
  #: inc/Assets.php:1 inc/view/customize/banner/BasicLayout.php:1
260
  #: inc/view/customize/banner/BodyDesign.php:1
261
  #: inc/view/customize/banner/individual/SaveButton.php:1
331
  msgid "Product license not for production use!"
332
  msgstr "Produktlizenz nicht für den Produktionseinsatz!"
333
 
334
+ #. translators:
335
+ #: inc/Assets.php:1
336
+ msgid " and "
337
+ msgstr " und "
338
+
339
  #: inc/Assets.php:1 inc/view/checklist/GetPro.php:1
340
  msgid "Learn more"
341
  msgstr "Mehr erfahren"
5048
  msgstr "Rahmen"
5049
 
5050
  #: inc/overrides/pro/view/customize/banner/TcfBodyDesign.php:1
 
 
 
5051
  msgid "Border width (px)"
5052
  msgstr "Rahmenbreite (px)"
5053
 
5133
  "mit Ihrer Zustimmung genutzt. Einzelheiten zu den einzelnen Gruppen und "
5134
  "Zwecken der Dienste finden Sie in den jeweiligen Datenschutzeinstellungen."
5135
 
5136
+ #: inc/overrides/pro/view/TcfBanner.php:1
5137
+ msgid ""
5138
+ "In addition, you consent to the transfer of data to partners under the TCF "
5139
+ "standard for the following purposes:"
5140
+ msgstr ""
5141
+ "Darüber hinaus stimmen Sie der Übermittlung von Daten an Partner im Rahmen "
5142
+ "des TCF-Standards für die folgenden Zwecke zu:"
5143
+
5144
  #: inc/overrides/pro/view/TcfBanner.php:1
5145
  msgid "Vendor list"
5146
  msgstr "Liste der Anbieter"
6359
  msgid "View stats"
6360
  msgstr "Statistiken ansehen"
6361
 
6362
+ #: inc/view/ConfigPage.php:1
6363
+ msgid "Set privacy policy URL"
6364
+ msgstr "Seite für Datenschutzerklärung festlegen"
6365
+
6366
+ #: inc/view/ConfigPage.php:1
6367
+ msgid ""
6368
+ "There are no privacy policies with further information linked for the "
6369
+ "following services in your cookie banner. We now consider these to be "
6370
+ "mandatory in order to comply with the information obligations under the "
6371
+ "GDPR. Please provide a privacy policy for each service!"
6372
+ msgstr ""
6373
+ "Für folgende Services in Ihrem Cookie Banner sind keine "
6374
+ "Datenschutzerklärungen mit weiterführenden Informationen verlinkt. Wir "
6375
+ "halten diese mittlerweile als zwingend notwendig, um den "
6376
+ "Informationspflichten nach DSGVO nachzukommen. Bitte hinterlegen Sie in "
6377
+ "jedem Service eine Datenschutzerklärung!"
6378
+
6379
  #: inc/view/ConfigPage.php:1
6380
  msgid ""
6381
  "A cookie banner for your website is installed. With it, you can integrate e."
6429
 
6430
  #: inc/view/customize/banner/BasicLayout.php:1
6431
  #: inc/view/customize/banner/individual/Layout.php:1
6432
+ msgid "Maximum width"
6433
+ msgstr "Maximale Breite"
6434
 
6435
  #: inc/view/customize/banner/BasicLayout.php:1
6436
  msgid "Position"
6489
  msgstr "Unten"
6490
 
6491
  #: inc/view/customize/banner/BasicLayout.php:1
6492
+ msgid "Maximum content width"
6493
+ msgstr "Maximale Inhaltsbreite"
6494
 
6495
  #: inc/view/customize/banner/BasicLayout.php:1
6496
  msgid "Dialog border radius"
6504
  msgid "Animation on display"
6505
  msgstr "Animation beim Einblenden"
6506
 
 
 
 
 
6507
  #: inc/view/customize/banner/BasicLayout.php:1
6508
  msgid "Animation only on mobile devices"
6509
  msgstr "Animation nur auf mobilen Geräten"
6557
  "Beachten Sie, dass für Besucher mit einem älteren Browser (z.B. Internet "
6558
  "Explorer) diese Option nicht funktioniert."
6559
 
 
 
 
 
 
 
 
 
6560
  #: inc/view/customize/banner/BodyDesign.php:1
6561
  msgid "Body"
6562
  msgstr "Hauptbereich (Body)"
6632
  #: inc/view/customize/banner/BodyDesign.php:1
6633
  #: inc/view/customize/banner/Design.php:1
6634
  #: inc/view/customize/banner/individual/Group.php:1
6635
+ msgid "Width"
6636
+ msgstr "Breite"
6637
 
6638
  #: inc/view/customize/banner/BodyDesign.php:1
6639
  #: inc/view/customize/banner/FooterDesign.php:1
6640
  #: inc/view/customize/banner/HeaderDesign.php:1
6641
+ msgid "Height"
6642
+ msgstr "Höhe"
6643
 
6644
  #: inc/view/customize/banner/BodyDesign.php:1
6645
  #: inc/view/customize/banner/Design.php:1
6669
  msgid "Define inner distance of the button/link."
6670
  msgstr "Definieren Sie den Innenabstand des Buttons/Links."
6671
 
6672
+ #: inc/view/customize/banner/BodyDesign.php:1
6673
+ #: inc/view/customize/banner/individual/Group.php:1
6674
+ #: inc/view/customize/banner/individual/SaveButton.php:1
6675
+ msgid "Border width"
6676
+ msgstr "Rahmen-Breite"
6677
+
6678
  #: inc/view/customize/banner/BodyDesign.php:1
6679
  #: inc/view/customize/banner/FooterDesign.php:1
6680
  #: inc/view/customize/banner/individual/SaveButton.php:1
6705
  msgid "Button: Continue without consent"
6706
  msgstr "Button: Weiter ohne Einwilligung"
6707
 
6708
+ #: inc/view/customize/banner/BodyDesign.php:1
6709
+ #: inc/view/customize/banner/individual/SaveButton.php:1
6710
+ msgid "Use the same stylings as for \"Accept all\""
6711
+ msgstr "Gleiche Formatierung wie für \"Alle akzeptieren\" verwenden"
6712
+
6713
+ #: inc/view/customize/banner/BodyDesign.php:1
6714
+ #: inc/view/customize/banner/individual/SaveButton.php:1
6715
+ msgid ""
6716
+ "According to the <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6717
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">guidance of the data "
6718
+ "protection authorities in Germany (German)</a>, there must be an equivalent "
6719
+ "way for your visitors to express their choice (agree to everything, continue "
6720
+ "without consent or an indivudual decision). Equivalent does not necessarily "
6721
+ "mean that the buttons/links must look exactly the same. However, you should "
6722
+ "be safest if they look exactly the same."
6723
+ msgstr ""
6724
+ "Gemäß <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6725
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">Orientierungshilfe der "
6726
+ "deutschen Datenschutzbehörden</a> muss es für Ihre Besucher eine "
6727
+ "gleichwertige Möglichkeit geben, ihren Willen auszudrücken (allem zustimmen, "
6728
+ "ohne Zustimmung fortfahren oder eine individuelle Entscheidung treffen). "
6729
+ "Gleichwertig bedeutet nicht unbedingt, dass die Buttons/Links genau gleich "
6730
+ "aussehen müssen. Sie sind jedoch am sichersten, wenn sie genau gleich "
6731
+ "aussehen."
6732
+
6733
  #: inc/view/customize/banner/BodyDesign.php:1
6734
  msgid "Button: Individual privacy preferences"
6735
  msgstr "Button: Individuelle Einstellung"
6897
 
6898
  #: inc/view/customize/banner/Decision.php:1
6899
  #: inc/view/customize/banner/individual/Texts.php:1
 
6900
  msgid "Individual privacy preferences"
6901
  msgstr "Individuelle Privatsphäre-Präferenzen"
6902
 
6913
  "muss der Nutzer die Möglichkeit haben, die Seite mit den individuellen "
6914
  "Privatsphären-Einstellungen aufzurufen."
6915
 
6916
+ #: inc/view/customize/banner/Decision.php:1
6917
+ msgid "Order of the buttons"
6918
+ msgstr "Reihenfolge der Buttons"
6919
+
6920
+ #: inc/view/customize/banner/Decision.php:1
6921
+ msgid ""
6922
+ "According to the <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6923
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">guidance of the data "
6924
+ "protection authorities in Germany (German)</a>, there must be an equivalent "
6925
+ "way for your visitors to express their choice (agree to everything, continue "
6926
+ "without consent or an indivudual decision). Which order of options is "
6927
+ "considered equivalent is unclear. Therefore, the options should be arranged "
6928
+ "according to the cultural conditions of the main target country."
6929
+ msgstr ""
6930
+ "Gemäß <a href=\"https://www.datenschutzkonferenz-online.de/media/"
6931
+ "oh/20211220_oh_telemedien.pdf\" target=\"_blank\">Orientierungshilfe der "
6932
+ "deutschen Datenschutzbehörden</a> muss es für Ihre Besucher eine "
6933
+ "gleichwertige Möglichkeit geben, ihren Willen auszudrücken (allem zustimmen, "
6934
+ "ohne Zustimmung fortfahren oder eine individuelle Entscheidung treffen). "
6935
+ "Welche Reihenfolge der Optionen als gleichwertig angesehen wird, ist unklar. "
6936
+ "Daher sollten die Optionen nach den kulturellen Gegebenheiten des "
6937
+ "Hauptziellandes angeordnet werden."
6938
+
6939
+ #: inc/view/customize/banner/Decision.php:1
6940
+ msgid "Service groups as bullet list"
6941
+ msgstr "Service-Gruppen als Aufzählungsliste ausgeben"
6942
+
6943
+ #: inc/view/customize/banner/Decision.php:1
6944
+ msgid "Show service groups as bullet list"
6945
+ msgstr "Service-Gruppen als Aufzählungsliste ausgeben"
6946
+
6947
  #: inc/view/customize/banner/Decision.php:1
6948
  msgid "Custom choice in first view"
6949
  msgstr "Benutzerdefinierte Auswahl in der ersten Ansicht"
6965
  msgstr ""
6966
  "Text von „Alle akzeptieren“ ändert, wenn der Benutzer die Auswahl ändert"
6967
 
6968
+ #: inc/view/customize/banner/Decision.php:1
6969
+ #: inc/view/customize/banner/individual/Texts.php:1
6970
+ msgid "Save custom choices"
6971
+ msgstr "Individuelle Auswahl speichern"
6972
+
6973
  #: inc/view/customize/banner/Design.php:1
6974
  #: inc/view/customize/banner/individual/Texts.php:1
6975
  #: inc/view/customize/banner/Texts.php:1
7149
  msgstr "Innenabstand der Gruppen-Box definieren."
7150
 
7151
  #: inc/view/customize/banner/individual/Group.php:1
7152
+ msgid "Spacing between groups"
7153
+ msgstr "Abstand zwischen Gruppen"
7154
 
7155
  #: inc/view/customize/banner/individual/Group.php:1
7156
  msgid "Border radius"
7187
  msgid "Texts"
7188
  msgstr "Texte"
7189
 
7190
+ #: inc/view/customize/banner/individual/Texts.php:1
7191
+ #: inc/view/customize/banner/Texts.php:1
7192
+ msgid ""
7193
+ "Use <code>{{privacyPolicy}}privacy policy{{/privacyPolicy}}</code> as a "
7194
+ "placeholder for the privacy policy link."
7195
+ msgstr ""
7196
+ "Verwenden Sie <code>{{privacyPolicy}}Datenschutzerklärung{{/privacyPolicy}}</"
7197
+ "code> als Platzhalter für den Link zur Datenschutzerklärung."
7198
+
7199
  #: inc/view/customize/banner/individual/Texts.php:1
7200
  msgid "\"Save\" button/link"
7201
  msgstr "„Speichern“ Button/Link"
7209
  msgstr "„Service-Informationen ausblenden“-Link"
7210
 
7211
  #: inc/view/customize/banner/individual/Texts.php:1
7212
+ #: inc/view/customize/banner/Texts.php:1
7213
  msgid ""
7214
+ "We use cookies and similar technologies on our website and process your "
7215
+ "personal data (e.g. IP address), for example, to personalize content and "
7216
+ "ads, to integrate media from third-party providers or to analyze traffic on "
7217
+ "our website. Data processing may also happen as a result of cookies being "
7218
+ "set. We share this data with third parties that we name in the privacy "
7219
+ "settings."
 
 
7220
  msgstr ""
7221
  "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7222
+ "verarbeiten Ihre personenbezogenen Daten (z.B. IP-Adresse), um z.B. Inhalte "
7223
+ "und Anzeigen zu personalisieren, Medien von Drittanbietern einzubinden oder "
7224
+ "Zugriffe auf unsere Website zu analysieren. Die Datenverarbeitung kann auch "
7225
+ "erst in Folge gesetzter Cookies stattfinden. Wir geben diese Daten an Dritte "
7226
+ "weiter, die wir in den Privatsphäre-Einstellungen benennen."
 
 
 
 
7227
 
7228
  #: inc/view/customize/banner/individual/Texts.php:1
7229
+ #: inc/view/customize/banner/Texts.php:1
7230
+ msgid ""
7231
+ "The data processing may take place with your consent or on the basis of a "
7232
+ "legitimate interest, which you can object to in the privacy settings. You "
7233
+ "have the right not to consent and to change or revoke your consent at a "
7234
+ "later time. For more information on the use of your data, please visit our "
7235
+ "{{privacyPolicy}}privacy policy{{/privacyPolicy}}."
7236
+ msgstr ""
7237
+ "Die Datenverarbeitung kann mit Ihrer Einwilligung oder auf Basis eines "
7238
+ "berechtigten Interesses erfolgen, dem Sie in den Privatsphäre-Einstellungen "
7239
+ "widersprechen können. Sie haben das Recht, Ihre Einwilligung nicht zu "
7240
+ "erteilen und Ihre Einwilligung zu einem späteren Zeitpunkt zu ändern oder zu "
7241
+ "widerrufen. Weitere Informationen über die Verwendung Ihrer Daten finden Sie "
7242
+ "in unserer {{privacyPolicy}}Datenschutzerklärung{{/privacyPolicy}}."
7243
+
7244
+ #: inc/view/customize/banner/individual/Texts.php:1
7245
+ msgid ""
7246
+ "Below you will find an overview of all services used by this website. You "
7247
+ "can view detailed information about each service and agree to them "
7248
+ "individually or exercise your right to object."
7249
+ msgstr ""
7250
+ "Nachstehend finden Sie eine Übersicht über alle von dieser Website genutzten "
7251
+ "Services. Sie können detaillierte Informationen zu jedem Service einsehen "
7252
+ "und diesen einzeln zustimmen oder von Ihrem Widerspruchsrecht Gebrauch "
7253
+ "machen."
7254
 
7255
  #: inc/view/customize/banner/individual/Texts.php:1
7256
  msgid "Show service information"
7442
  msgid "Age notice in content blocker"
7443
  msgstr "Altershinweis in Content Blocker"
7444
 
7445
+ #: inc/view/customize/banner/Texts.php:1
7446
+ msgid "List of services"
7447
+ msgstr "Liste der Services"
7448
+
7449
+ #: inc/view/customize/banner/Texts.php:1
7450
+ msgid "Naming of all services in first view"
7451
+ msgstr "Benennung aller Services in der ersten Ansicht"
7452
+
7453
+ #: inc/view/customize/banner/Texts.php:1
7454
+ msgid ""
7455
+ "Use <code>{{services}}</code> and <code>{{serviceGroups}}</code> as a "
7456
+ "placeholder for a list of services and groups."
7457
+ msgstr ""
7458
+ "Verwenden Sie <code>{{services}}</code> und <code>{{serviceGroups}}</code> "
7459
+ "als Platzhalter für eine Liste von Services und Gruppen."
7460
+
7461
  #: inc/view/customize/banner/Texts.php:1
7462
  msgid "Consent Forwarding"
7463
  msgstr "Weiterleitung der Einwilligung"
7533
  "Der Altershinweis ist derzeit deaktiviert. Bitte navigieren Sie zu "
7534
  "%1$sEinstellungen > Einwilligung%2$s, um ihn zu aktivieren."
7535
 
7536
+ #. translators:
7537
+ #: inc/view/customize/banner/Texts.php:1
7538
+ msgid ""
7539
+ "Naming of all services in first view is currently disabled. Please navigate "
7540
+ "to %1$sSettings > Consent%2$s to activate it."
7541
+ msgstr ""
7542
+ "Die Liste aller Services ist derzeit deaktiviert. Bitte navigieren Sie zu "
7543
+ "%1$sEinstellungen > Einwilligung%2$s, um diese zu aktivieren."
7544
+
7545
  #. translators:
7546
  #: inc/view/customize/banner/Texts.php:1
7547
  msgid ""
7557
  msgstr "Privatsphäre-Einstellungen"
7558
 
7559
  #: inc/view/customize/banner/Texts.php:1
7560
+ msgid "Set privacy settings individually"
7561
+ msgstr "Privatsphäre-Einstellungen individuell festlegen"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7562
 
7563
  #: inc/view/customize/banner/Texts.php:1
7564
  msgid ""
7597
  "zustimmen, um diese Inhalte zu sehen. Bitten Sie Ihre Eltern oder "
7598
  "Erziehungsberechtigten, dem Service mit Ihnen zuzustimmen!"
7599
 
7600
+ #: inc/view/customize/banner/Texts.php:1
7601
+ msgid ""
7602
+ "By accepting all services, you allow {{services}} to be loaded. These "
7603
+ "services are divided into groups {{serviceGroups}} according to their "
7604
+ "purpose (belonging marked with superscript numbers)."
7605
+ msgstr ""
7606
+ "Indem Sie alle Services akzeptieren, erlauben Sie, dass {{services}} geladen "
7607
+ "werden. Diese sind nach ihrem Zweck in Gruppen {{serviceGroups}} unterteilt "
7608
+ "(Zugehörigkeit durch hochgestellte Zahlen gekennzeichnet)."
7609
+
7610
  #: inc/view/customize/banner/Texts.php:1
7611
  msgid "Your consent is also applicable on {{websites}}."
7612
  msgstr "Ihre Einwilligung gilt auch auf {{websites}}."
7727
  msgstr ""
7728
  "Bitte geben Sie in Ihrem Shortcode das Attribut `type` an. Erlaubt: %s!"
7729
 
7730
+ #~ msgid ""
7731
+ #~ "We use cookies and similar technologies on our website and process your "
7732
+ #~ "personal data (e.g. IP address), for example, to personalize content and "
7733
+ #~ "ads, to integrate media from third-party providers or to analyze traffic "
7734
+ #~ "on our website. Data processing may also happen as a result of cookies "
7735
+ #~ "being set. We share this data with third parties that we name in the "
7736
+ #~ "privacy settings.<br/><br/>The data processing may take place with your "
7737
+ #~ "consent or on the basis of a legitimate interest, which you can object to "
7738
+ #~ "in the privacy settings. You have the right not to consent and to change "
7739
+ #~ "or revoke your consent at a later time. For more information on the use "
7740
+ #~ "of your data, please visit our {{privacyPolicy}}privacy policy{{/"
7741
+ #~ "privacyPolicy}}.<br/><br/>Below you will find an overview of all services "
7742
+ #~ "used by this website. You can view detailed information about each "
7743
+ #~ "service and agree to them individually or exercise your right to object."
7744
+ #~ msgstr ""
7745
+ #~ "Wir verwenden Cookies und ähnliche Technologien auf unserer Website und "
7746
+ #~ "verarbeiten Ihre personenbezogenen Daten (z.B. IP-Adresse), um z.B. "
7747
+ #~ "Inhalte und Anzeigen zu personalisieren, Medien von Drittanbietern "
7748
+ #~ "einzubinden oder Zugriffe auf unsere Website zu analysieren. Die "
7749
+ #~ "Datenverarbeitung kann auch erst in Folge gesetzter Cookies stattfinden. "
7750
+ #~ "Wir geben diese Daten an Dritte weiter, die wir in den Privatsphäre-"
7751
+ #~ "Einstellungen benennen.<br/><br/>Die Datenverarbeitung kann mit Ihrer "
7752
+ #~ "Einwilligung oder auf Basis eines berechtigten Interesses erfolgen, dem "
7753
+ #~ "Sie in den Privatsphäre-Einstellungen widersprechen können. Sie haben das "
7754
+ #~ "Recht, Ihre Einwilligung nicht zu erteilen und Ihre Einwilligung zu einem "
7755
+ #~ "späteren Zeitpunkt zu ändern oder zu widerrufen. Weitere Informationen "
7756
+ #~ "über die Verwendung Ihrer Daten finden Sie in unserer {{privacyPolicy}}"
7757
+ #~ "Datenschutzerklärung{{/privacyPolicy}}.<br/><br/>Nachstehend finden Sie "
7758
+ #~ "eine Übersicht über alle von dieser Website genutzten Dienste. Sie können "
7759
+ #~ "detaillierte Informationen zu jedem Dienst einsehen und diesen einzeln "
7760
+ #~ "zustimmen oder von Ihrem Widerspruchsrecht Gebrauch machen."
7761
+
7762
+ #~ msgid "Duration (milliseconds)"
7763
+ #~ msgstr "Dauer (Millisekunden)"
7764
+
7765
+ #~ msgid ""
7766
+ #~ "The \"Accept\" and \"Reject\" buttons should be the same size (button and "
7767
+ #~ "text size) so that they are considered equal."
7768
+ #~ msgstr ""
7769
+ #~ "Die Buttons „Akzeptieren“ und „Ablehnen“ sollten die gleiche Größe haben "
7770
+ #~ "(Button- und Textgröße), damit sie als gleichwertig angesehen werden."
7771
+
7772
+ #~ msgid "Height (px)"
7773
+ #~ msgstr "Höhe (px)"
7774
+
7775
  #~ msgid "Place shortcodes in your privacy policy"
7776
  #~ msgstr "Platzieren Sie Shortcodes in Ihrer Datenschutzerklärung"
7777
 
languages/real-cookie-banner-el.mo CHANGED
Binary file
languages/real-cookie-banner-el.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Δεν έχει ενεργοποιηθεί άδεια χρήσης - ό
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Άδεια χρήσης προϊόντος όχι για παραγωγική χρήση!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Άδεια χρήσης προϊόντος όχι για παραγωγική χρήση!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " και "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Δεν υπάρχει λήξη"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Επιπλέον, συναινείτε στη διαβίβαση δεδομένων σε συνεργάτες σύμφωνα με το πρότυπο TCF για τους ακόλουθους σκοπούς:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Κατάλογος προμηθευτών"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Προμηθευτές"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Εμφάνιση περισσότερων"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Απόκρυψη"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Επεξεργασία δεδομένων βάσει της νομικής βάσης της:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Δεν υπάρχουν αιτήματα πωλητών για σκοπούς βάσει αυτής της νομικής βάσης."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Μη τυποποιημένη επεξεργασία δεδομένων"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Ορισμένες υπηρεσίες θέτουν cookies ή/και επεξεργάζονται προσωπικά δεδομένα χωρίς να συμμορφώνονται με τα πρότυπα επικοινωνίας συναίνεσης. Οι υπηρεσίες αυτές χωρίζονται σε διάφορες ομάδες. Οι λεγόμενες \"βασικές υπηρεσίες\" χρησιμοποιούνται με βάση το έννομο συμφέρον και δεν μπορούν να εξαιρεθούν (ενδέχεται να πρέπει να υποβληθεί αντίρρηση μέσω ηλεκτρονικού ταχυδρομείου ή επιστολής σύμφωνα με την πολιτική απορρήτου), ενώ όλες οι άλλες υπηρεσίες χρησιμοποιούνται μόνο μετά από συγκατάθεση."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Τυποποιημένη επεξεργασία δεδομένων σύμφωνα με την TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Το Πλαίσιο Διαφάνειας και Συγκατάθεσης (TCF) είναι ένα πρότυπο για τη λήψη συνεπούς συγκατάθεσης για την επεξεργασία προσωπικών δεδομένων και τη ρύθμιση cookie. Αυτό θα πρέπει να επιτρέπει σε όλα τα μέρη της ψηφιακής (διαφημιστικής) αλυσίδας να διασφαλίζουν ότι ορίζουν, επεξεργάζονται και αποθηκεύουν δεδομένα και cookies σύμφωνα με τον ΓΚΠΔ και την οδηγία για την προστασία της ιδιωτικής ζωής στις ηλεκτρονικές επικοινωνίες."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Σκοποί"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Ειδικοί σκοποί"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Χαρακτηριστικά"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Ειδικά χαρακτηριστικά"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Οι σκοποί περιγράφουν για ποιο σκοπό ποιοι πάροχοι μπορούν να θέτουν cookies και να επεξεργάζονται προσωπικά δεδομένα. Οι σκοποί προεπιλέγονται εάν υπάρχει έννομο συμφέρον για την επεξεργασία των δεδομένων του. Για όλους τους άλλους σκοπούς, η επεξεργασία δεδομένων γίνεται μόνο με ρητή συγκατάθεση."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Οι ειδικοί σκοποί για τον ορισμό cookies και την επεξεργασία προσωπικών δεδομένων από τους προμηθευτές μας περιγράφουν σκοπούς για τους οποίους έχουμε έννομο συμφέρον που δεν μπορεί να απορριφθεί. Για παράδειγμα, πρέπει να επεξεργαστούμε δεδομένα για την πρόληψη της απάτης."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Τα χαρακτηριστικά για την επεξεργασία δεδομένων προσωπικού χαρακτήρα περιγράφουν τον τρόπο με τον οποίο τα δεδομένα χρησιμοποιούνται για την εκπλήρωση ενός ή περισσότερων σκοπών. Τα χαρακτηριστικά δεν μπορούν να εξαιρεθούν, αλλά στην ενότητα \"Σκοποί\", οι σκοποί που οδηγούν στη χρήση των χαρακτηριστικών μπορούν να επιλεγούν ή να αποεπιλεγούν. Οποιοσδήποτε σκοπός μπορεί να οδηγήσει στη χρήση χαρακτηριστικών."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Τα ειδικά χαρακτηριστικά για την επεξεργασία δεδομένων προσωπικού χαρακτήρα περιγράφουν τον τρόπο με τον οποίο τα δεδομένα χρησιμοποιούνται για την εκπλήρωση ενός ή περισσότερων σκοπών με βαθύ τρόπο. Τα δεδομένα προσωπικού χαρακτήρα υποβάλλονται σε επεξεργασία με αυτόν τον τρόπο μόνο με ρητή συγκατάθεση."
languages/real-cookie-banner-es_AR.mo CHANGED
Binary file
languages/real-cookie-banner-es_AR.po CHANGED
@@ -146,3 +146,87 @@ msgstr "No se ha activado la licencia - ¡no es para uso de producción!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " y "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "No hay caducidad"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Además, usted autoriza la transferencia de datos a los socios en el marco de la norma TCF para los siguientes fines:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lista de proveedores"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Proveedores"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Mostrar más"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Ocultar"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Tratamiento de datos sobre la base legal de:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Ningún proveedor solicita fines bajo esta base legal."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Tratamiento de datos no estandarizado"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Algunos servicios instalan cookies y/o procesan datos personales sin cumplir con las normas de comunicación de consentimiento. Estos servicios se dividen en varios grupos. Los denominados \"servicios esenciales\" se utilizan sobre la base de un interés legítimo y no pueden excluirse (puede ser necesario presentar una objeción por correo electrónico o por carta de acuerdo con la política de privacidad), mientras que todos los demás servicios se utilizan sólo después de haber dado el consentimiento."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Tratamiento de datos estandarizado según el TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "El Marco de Transparencia y Consentimiento (TCF) es una norma para obtener un consentimiento coherente para el tratamiento de datos personales y la instalación de cookies. Esto debería permitir a todas las partes de la cadena digital (publicitaria) garantizar que establecen, procesan y almacenan los datos y las cookies de acuerdo con el RGPD y la Directiva sobre privacidad electrónica."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Fines"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Fines especiales"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Características"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Características especiales"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Los propósitos describen con qué fin los proveedores pueden establecer cookies y procesar datos personales. Las finalidades se preseleccionan si existe un interés legítimo para su tratamiento de datos. Para todos los demás fines, los datos sólo se tratarán con el consentimiento explícito."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Las finalidades especiales para la instalación de cookies y el tratamiento de datos personales por parte de nuestros proveedores describen los fines para los que tenemos un interés legítimo que no puede ser rechazado. Por ejemplo, necesitamos procesar los datos para prevenir el fraude."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Las funciones para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o varios fines. Las funciones no pueden excluirse, pero en la sección \"Finalidades\" pueden seleccionarse o deseleccionarse las finalidades que conducen al uso de las funciones. Cualquier finalidad puede dar lugar a la utilización de las funciones."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Las características especiales para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o más propósitos de manera profunda. Los datos personales sólo se tratarán de este modo con el consentimiento explícito."
languages/real-cookie-banner-es_CL.mo CHANGED
Binary file
languages/real-cookie-banner-es_CL.po CHANGED
@@ -146,3 +146,87 @@ msgstr "No se ha activado la licencia - ¡no es para uso de producción!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " y "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "No hay caducidad"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Además, usted autoriza la transferencia de datos a los socios en el marco de la norma TCF para los siguientes fines:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lista de proveedores"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Proveedores"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Mostrar más"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Ocultar"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Tratamiento de datos sobre la base legal de:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Ningún proveedor solicita fines bajo esta base legal."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Tratamiento de datos no estandarizado"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Algunos servicios instalan cookies y/o procesan datos personales sin cumplir con las normas de comunicación de consentimiento. Estos servicios se dividen en varios grupos. Los denominados \"servicios esenciales\" se utilizan sobre la base de un interés legítimo y no pueden excluirse (puede ser necesario presentar una objeción por correo electrónico o por carta de acuerdo con la política de privacidad), mientras que todos los demás servicios se utilizan sólo después de haber dado el consentimiento."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Tratamiento de datos estandarizado según el TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "El Marco de Transparencia y Consentimiento (TCF) es una norma para obtener un consentimiento coherente para el tratamiento de datos personales y la instalación de cookies. Esto debería permitir a todas las partes de la cadena digital (publicitaria) garantizar que establecen, procesan y almacenan los datos y las cookies de acuerdo con el RGPD y la Directiva sobre privacidad electrónica."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Fines"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Fines especiales"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Características"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Características especiales"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Los propósitos describen con qué fin los proveedores pueden establecer cookies y procesar datos personales. Las finalidades se preseleccionan si existe un interés legítimo para su tratamiento de datos. Para todos los demás fines, los datos sólo se tratarán con el consentimiento explícito."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Las finalidades especiales para la instalación de cookies y el tratamiento de datos personales por parte de nuestros proveedores describen los fines para los que tenemos un interés legítimo que no puede ser rechazado. Por ejemplo, necesitamos procesar los datos para prevenir el fraude."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Las funciones para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o varios fines. Las funciones no pueden excluirse, pero en la sección \"Finalidades\" pueden seleccionarse o deseleccionarse las finalidades que conducen al uso de las funciones. Cualquier finalidad puede dar lugar a la utilización de las funciones."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Las características especiales para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o más propósitos de manera profunda. Los datos personales sólo se tratarán de este modo con el consentimiento explícito."
languages/real-cookie-banner-es_CO.mo CHANGED
Binary file
languages/real-cookie-banner-es_CO.po CHANGED
@@ -146,3 +146,87 @@ msgstr "No se ha activado la licencia - ¡no es para uso de producción!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " y "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "No hay caducidad"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Además, usted autoriza la transferencia de datos a los socios en el marco de la norma TCF para los siguientes fines:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lista de proveedores"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Proveedores"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Mostrar más"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Ocultar"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Tratamiento de datos sobre la base legal de:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Ningún proveedor solicita fines bajo esta base legal."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Tratamiento de datos no estandarizado"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Algunos servicios instalan cookies y/o procesan datos personales sin cumplir con las normas de comunicación de consentimiento. Estos servicios se dividen en varios grupos. Los denominados \"servicios esenciales\" se utilizan sobre la base de un interés legítimo y no pueden excluirse (puede ser necesario presentar una objeción por correo electrónico o por carta de acuerdo con la política de privacidad), mientras que todos los demás servicios se utilizan sólo después de haber dado el consentimiento."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Tratamiento de datos estandarizado según el TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "El Marco de Transparencia y Consentimiento (TCF) es una norma para obtener un consentimiento coherente para el tratamiento de datos personales y la instalación de cookies. Esto debería permitir a todas las partes de la cadena digital (publicitaria) garantizar que establecen, procesan y almacenan los datos y las cookies de acuerdo con el RGPD y la Directiva sobre privacidad electrónica."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Fines"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Fines especiales"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Características"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Características especiales"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Los propósitos describen con qué fin los proveedores pueden establecer cookies y procesar datos personales. Las finalidades se preseleccionan si existe un interés legítimo para su tratamiento de datos. Para todos los demás fines, los datos sólo se tratarán con el consentimiento explícito."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Las finalidades especiales para la instalación de cookies y el tratamiento de datos personales por parte de nuestros proveedores describen los fines para los que tenemos un interés legítimo que no puede ser rechazado. Por ejemplo, necesitamos procesar los datos para prevenir el fraude."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Las funciones para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o varios fines. Las funciones no pueden excluirse, pero en la sección \"Finalidades\" pueden seleccionarse o deseleccionarse las finalidades que conducen al uso de las funciones. Cualquier finalidad puede dar lugar a la utilización de las funciones."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Las características especiales para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o más propósitos de manera profunda. Los datos personales sólo se tratarán de este modo con el consentimiento explícito."
languages/real-cookie-banner-es_CR.mo CHANGED
Binary file
languages/real-cookie-banner-es_CR.po CHANGED
@@ -146,3 +146,87 @@ msgstr "No se ha activado la licencia - ¡no es para uso de producción!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " y "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "No hay caducidad"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Además, usted autoriza la transferencia de datos a los socios en el marco de la norma TCF para los siguientes fines:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lista de proveedores"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Proveedores"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Mostrar más"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Ocultar"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Tratamiento de datos sobre la base legal de:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Ningún proveedor solicita fines bajo esta base legal."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Tratamiento de datos no estandarizado"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Algunos servicios instalan cookies y/o procesan datos personales sin cumplir con las normas de comunicación de consentimiento. Estos servicios se dividen en varios grupos. Los denominados \"servicios esenciales\" se utilizan sobre la base de un interés legítimo y no pueden excluirse (puede ser necesario presentar una objeción por correo electrónico o por carta de acuerdo con la política de privacidad), mientras que todos los demás servicios se utilizan sólo después de haber dado el consentimiento."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Tratamiento de datos estandarizado según el TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "El Marco de Transparencia y Consentimiento (TCF) es una norma para obtener un consentimiento coherente para el tratamiento de datos personales y la instalación de cookies. Esto debería permitir a todas las partes de la cadena digital (publicitaria) garantizar que establecen, procesan y almacenan los datos y las cookies de acuerdo con el RGPD y la Directiva sobre privacidad electrónica."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Fines"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Fines especiales"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Características"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Características especiales"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Los propósitos describen con qué fin los proveedores pueden establecer cookies y procesar datos personales. Las finalidades se preseleccionan si existe un interés legítimo para su tratamiento de datos. Para todos los demás fines, los datos sólo se tratarán con el consentimiento explícito."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Las finalidades especiales para la instalación de cookies y el tratamiento de datos personales por parte de nuestros proveedores describen los fines para los que tenemos un interés legítimo que no puede ser rechazado. Por ejemplo, necesitamos procesar los datos para prevenir el fraude."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Las funciones para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o varios fines. Las funciones no pueden excluirse, pero en la sección \"Finalidades\" pueden seleccionarse o deseleccionarse las finalidades que conducen al uso de las funciones. Cualquier finalidad puede dar lugar a la utilización de las funciones."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Las características especiales para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o más propósitos de manera profunda. Los datos personales sólo se tratarán de este modo con el consentimiento explícito."
languages/real-cookie-banner-es_ES.mo CHANGED
Binary file
languages/real-cookie-banner-es_ES.po CHANGED
@@ -146,3 +146,87 @@ msgstr "No se ha activado la licencia - ¡no es para uso de producción!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " y "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "No hay caducidad"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Además, usted autoriza la transferencia de datos a los socios en el marco de la norma TCF para los siguientes fines:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lista de proveedores"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Proveedores"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Mostrar más"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Ocultar"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Tratamiento de datos sobre la base legal de:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Ningún proveedor solicita fines bajo esta base legal."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Tratamiento de datos no estandarizado"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Algunos servicios instalan cookies y/o procesan datos personales sin cumplir con las normas de comunicación de consentimiento. Estos servicios se dividen en varios grupos. Los denominados \"servicios esenciales\" se utilizan sobre la base de un interés legítimo y no pueden excluirse (puede ser necesario presentar una objeción por correo electrónico o por carta de acuerdo con la política de privacidad), mientras que todos los demás servicios se utilizan sólo después de haber dado el consentimiento."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Tratamiento de datos estandarizado según el TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "El Marco de Transparencia y Consentimiento (TCF) es una norma para obtener un consentimiento coherente para el tratamiento de datos personales y la instalación de cookies. Esto debería permitir a todas las partes de la cadena digital (publicitaria) garantizar que establecen, procesan y almacenan los datos y las cookies de acuerdo con el RGPD y la Directiva sobre privacidad electrónica."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Fines"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Fines especiales"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Características"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Características especiales"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Los propósitos describen con qué fin los proveedores pueden establecer cookies y procesar datos personales. Las finalidades se preseleccionan si existe un interés legítimo para su tratamiento de datos. Para todos los demás fines, los datos sólo se tratarán con el consentimiento explícito."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Las finalidades especiales para la instalación de cookies y el tratamiento de datos personales por parte de nuestros proveedores describen los fines para los que tenemos un interés legítimo que no puede ser rechazado. Por ejemplo, necesitamos procesar los datos para prevenir el fraude."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Las funciones para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o varios fines. Las funciones no pueden excluirse, pero en la sección \"Finalidades\" pueden seleccionarse o deseleccionarse las finalidades que conducen al uso de las funciones. Cualquier finalidad puede dar lugar a la utilización de las funciones."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Las características especiales para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o más propósitos de manera profunda. Los datos personales sólo se tratarán de este modo con el consentimiento explícito."
languages/real-cookie-banner-es_GT.mo CHANGED
Binary file
languages/real-cookie-banner-es_GT.po CHANGED
@@ -146,3 +146,87 @@ msgstr "No se ha activado la licencia - ¡no es para uso de producción!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " y "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "No hay caducidad"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Además, usted autoriza la transferencia de datos a los socios en el marco de la norma TCF para los siguientes fines:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lista de proveedores"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Proveedores"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Mostrar más"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Ocultar"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Tratamiento de datos sobre la base legal de:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Ningún proveedor solicita fines bajo esta base legal."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Tratamiento de datos no estandarizado"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Algunos servicios instalan cookies y/o procesan datos personales sin cumplir con las normas de comunicación de consentimiento. Estos servicios se dividen en varios grupos. Los denominados \"servicios esenciales\" se utilizan sobre la base de un interés legítimo y no pueden excluirse (puede ser necesario presentar una objeción por correo electrónico o por carta de acuerdo con la política de privacidad), mientras que todos los demás servicios se utilizan sólo después de haber dado el consentimiento."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Tratamiento de datos estandarizado según el TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "El Marco de Transparencia y Consentimiento (TCF) es una norma para obtener un consentimiento coherente para el tratamiento de datos personales y la instalación de cookies. Esto debería permitir a todas las partes de la cadena digital (publicitaria) garantizar que establecen, procesan y almacenan los datos y las cookies de acuerdo con el RGPD y la Directiva sobre privacidad electrónica."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Fines"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Fines especiales"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Características"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Características especiales"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Los propósitos describen con qué fin los proveedores pueden establecer cookies y procesar datos personales. Las finalidades se preseleccionan si existe un interés legítimo para su tratamiento de datos. Para todos los demás fines, los datos sólo se tratarán con el consentimiento explícito."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Las finalidades especiales para la instalación de cookies y el tratamiento de datos personales por parte de nuestros proveedores describen los fines para los que tenemos un interés legítimo que no puede ser rechazado. Por ejemplo, necesitamos procesar los datos para prevenir el fraude."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Las funciones para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o varios fines. Las funciones no pueden excluirse, pero en la sección \"Finalidades\" pueden seleccionarse o deseleccionarse las finalidades que conducen al uso de las funciones. Cualquier finalidad puede dar lugar a la utilización de las funciones."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Las características especiales para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o más propósitos de manera profunda. Los datos personales sólo se tratarán de este modo con el consentimiento explícito."
languages/real-cookie-banner-es_MX.mo CHANGED
Binary file
languages/real-cookie-banner-es_MX.po CHANGED
@@ -146,3 +146,87 @@ msgstr "No se ha activado la licencia - ¡no es para uso de producción!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " y "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "No hay caducidad"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Además, usted autoriza la transferencia de datos a los socios en el marco de la norma TCF para los siguientes fines:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lista de proveedores"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Proveedores"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Mostrar más"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Ocultar"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Tratamiento de datos sobre la base legal de:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Ningún proveedor solicita fines bajo esta base legal."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Tratamiento de datos no estandarizado"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Algunos servicios instalan cookies y/o procesan datos personales sin cumplir con las normas de comunicación de consentimiento. Estos servicios se dividen en varios grupos. Los denominados \"servicios esenciales\" se utilizan sobre la base de un interés legítimo y no pueden excluirse (puede ser necesario presentar una objeción por correo electrónico o por carta de acuerdo con la política de privacidad), mientras que todos los demás servicios se utilizan sólo después de haber dado el consentimiento."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Tratamiento de datos estandarizado según el TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "El Marco de Transparencia y Consentimiento (TCF) es una norma para obtener un consentimiento coherente para el tratamiento de datos personales y la instalación de cookies. Esto debería permitir a todas las partes de la cadena digital (publicitaria) garantizar que establecen, procesan y almacenan los datos y las cookies de acuerdo con el RGPD y la Directiva sobre privacidad electrónica."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Fines"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Fines especiales"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Características"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Características especiales"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Los propósitos describen con qué fin los proveedores pueden establecer cookies y procesar datos personales. Las finalidades se preseleccionan si existe un interés legítimo para su tratamiento de datos. Para todos los demás fines, los datos sólo se tratarán con el consentimiento explícito."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Las finalidades especiales para la instalación de cookies y el tratamiento de datos personales por parte de nuestros proveedores describen los fines para los que tenemos un interés legítimo que no puede ser rechazado. Por ejemplo, necesitamos procesar los datos para prevenir el fraude."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Las funciones para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o varios fines. Las funciones no pueden excluirse, pero en la sección \"Finalidades\" pueden seleccionarse o deseleccionarse las finalidades que conducen al uso de las funciones. Cualquier finalidad puede dar lugar a la utilización de las funciones."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Las características especiales para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o más propósitos de manera profunda. Los datos personales sólo se tratarán de este modo con el consentimiento explícito."
languages/real-cookie-banner-es_PE.mo CHANGED
Binary file
languages/real-cookie-banner-es_PE.po CHANGED
@@ -146,3 +146,87 @@ msgstr "No se ha activado la licencia - ¡no es para uso de producción!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " y "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "No hay caducidad"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Además, usted autoriza la transferencia de datos a los socios en el marco de la norma TCF para los siguientes fines:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lista de proveedores"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Proveedores"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Mostrar más"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Ocultar"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Tratamiento de datos sobre la base legal de:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Ningún proveedor solicita fines bajo esta base legal."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Tratamiento de datos no estandarizado"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Algunos servicios instalan cookies y/o procesan datos personales sin cumplir con las normas de comunicación de consentimiento. Estos servicios se dividen en varios grupos. Los denominados \"servicios esenciales\" se utilizan sobre la base de un interés legítimo y no pueden excluirse (puede ser necesario presentar una objeción por correo electrónico o por carta de acuerdo con la política de privacidad), mientras que todos los demás servicios se utilizan sólo después de haber dado el consentimiento."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Tratamiento de datos estandarizado según el TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "El Marco de Transparencia y Consentimiento (TCF) es una norma para obtener un consentimiento coherente para el tratamiento de datos personales y la instalación de cookies. Esto debería permitir a todas las partes de la cadena digital (publicitaria) garantizar que establecen, procesan y almacenan los datos y las cookies de acuerdo con el RGPD y la Directiva sobre privacidad electrónica."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Fines"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Fines especiales"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Características"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Características especiales"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Los propósitos describen con qué fin los proveedores pueden establecer cookies y procesar datos personales. Las finalidades se preseleccionan si existe un interés legítimo para su tratamiento de datos. Para todos los demás fines, los datos sólo se tratarán con el consentimiento explícito."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Las finalidades especiales para la instalación de cookies y el tratamiento de datos personales por parte de nuestros proveedores describen los fines para los que tenemos un interés legítimo que no puede ser rechazado. Por ejemplo, necesitamos procesar los datos para prevenir el fraude."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Las funciones para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o varios fines. Las funciones no pueden excluirse, pero en la sección \"Finalidades\" pueden seleccionarse o deseleccionarse las finalidades que conducen al uso de las funciones. Cualquier finalidad puede dar lugar a la utilización de las funciones."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Las características especiales para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o más propósitos de manera profunda. Los datos personales sólo se tratarán de este modo con el consentimiento explícito."
languages/real-cookie-banner-es_UY.mo CHANGED
Binary file
languages/real-cookie-banner-es_UY.po CHANGED
@@ -146,3 +146,87 @@ msgstr "No se ha activado la licencia - ¡no es para uso de producción!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " y "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "No hay caducidad"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Además, usted autoriza la transferencia de datos a los socios en el marco de la norma TCF para los siguientes fines:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lista de proveedores"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Proveedores"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Mostrar más"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Ocultar"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Tratamiento de datos sobre la base legal de:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Ningún proveedor solicita fines bajo esta base legal."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Tratamiento de datos no estandarizado"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Algunos servicios instalan cookies y/o procesan datos personales sin cumplir con las normas de comunicación de consentimiento. Estos servicios se dividen en varios grupos. Los denominados \"servicios esenciales\" se utilizan sobre la base de un interés legítimo y no pueden excluirse (puede ser necesario presentar una objeción por correo electrónico o por carta de acuerdo con la política de privacidad), mientras que todos los demás servicios se utilizan sólo después de haber dado el consentimiento."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Tratamiento de datos estandarizado según el TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "El Marco de Transparencia y Consentimiento (TCF) es una norma para obtener un consentimiento coherente para el tratamiento de datos personales y la instalación de cookies. Esto debería permitir a todas las partes de la cadena digital (publicitaria) garantizar que establecen, procesan y almacenan los datos y las cookies de acuerdo con el RGPD y la Directiva sobre privacidad electrónica."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Fines"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Fines especiales"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Características"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Características especiales"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Los propósitos describen con qué fin los proveedores pueden establecer cookies y procesar datos personales. Las finalidades se preseleccionan si existe un interés legítimo para su tratamiento de datos. Para todos los demás fines, los datos sólo se tratarán con el consentimiento explícito."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Las finalidades especiales para la instalación de cookies y el tratamiento de datos personales por parte de nuestros proveedores describen los fines para los que tenemos un interés legítimo que no puede ser rechazado. Por ejemplo, necesitamos procesar los datos para prevenir el fraude."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Las funciones para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o varios fines. Las funciones no pueden excluirse, pero en la sección \"Finalidades\" pueden seleccionarse o deseleccionarse las finalidades que conducen al uso de las funciones. Cualquier finalidad puede dar lugar a la utilización de las funciones."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Las características especiales para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o más propósitos de manera profunda. Los datos personales sólo se tratarán de este modo con el consentimiento explícito."
languages/real-cookie-banner-es_VE.mo CHANGED
Binary file
languages/real-cookie-banner-es_VE.po CHANGED
@@ -146,3 +146,87 @@ msgstr "No se ha activado la licencia - ¡no es para uso de producción!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "La licencia del producto no es para uso de producción!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " y "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "No hay caducidad"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Además, usted autoriza la transferencia de datos a los socios en el marco de la norma TCF para los siguientes fines:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lista de proveedores"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Proveedores"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Mostrar más"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Ocultar"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Tratamiento de datos sobre la base legal de:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Ningún proveedor solicita fines bajo esta base legal."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Tratamiento de datos no estandarizado"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Algunos servicios instalan cookies y/o procesan datos personales sin cumplir con las normas de comunicación de consentimiento. Estos servicios se dividen en varios grupos. Los denominados \"servicios esenciales\" se utilizan sobre la base de un interés legítimo y no pueden excluirse (puede ser necesario presentar una objeción por correo electrónico o por carta de acuerdo con la política de privacidad), mientras que todos los demás servicios se utilizan sólo después de haber dado el consentimiento."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Tratamiento de datos estandarizado según el TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "El Marco de Transparencia y Consentimiento (TCF) es una norma para obtener un consentimiento coherente para el tratamiento de datos personales y la instalación de cookies. Esto debería permitir a todas las partes de la cadena digital (publicitaria) garantizar que establecen, procesan y almacenan los datos y las cookies de acuerdo con el RGPD y la Directiva sobre privacidad electrónica."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Fines"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Fines especiales"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Características"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Características especiales"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Los propósitos describen con qué fin los proveedores pueden establecer cookies y procesar datos personales. Las finalidades se preseleccionan si existe un interés legítimo para su tratamiento de datos. Para todos los demás fines, los datos sólo se tratarán con el consentimiento explícito."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Las finalidades especiales para la instalación de cookies y el tratamiento de datos personales por parte de nuestros proveedores describen los fines para los que tenemos un interés legítimo que no puede ser rechazado. Por ejemplo, necesitamos procesar los datos para prevenir el fraude."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Las funciones para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o varios fines. Las funciones no pueden excluirse, pero en la sección \"Finalidades\" pueden seleccionarse o deseleccionarse las finalidades que conducen al uso de las funciones. Cualquier finalidad puede dar lugar a la utilización de las funciones."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Las características especiales para el tratamiento de datos personales describen cómo se utilizan los datos para cumplir uno o más propósitos de manera profunda. Los datos personales sólo se tratarán de este modo con el consentimiento explícito."
languages/real-cookie-banner-fi.mo CHANGED
Binary file
languages/real-cookie-banner-fi.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Ei lisenssiä aktivoitu - ei tuotantokäyttöön!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Tuotteen lisenssi ei ole tarkoitettu tuotantokäyttöön!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Tuotteen lisenssi ei ole tarkoitettu tuotantokäyttöön!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " ja "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Ei voimassaoloaikaa"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Lisäksi annat suostumuksesi tietojen siirtämiseen TCF-standardin mukaisille yhteistyökumppaneille seuraavia tarkoituksia varten:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Myyjäluettelo"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Myyjät"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Näytä lisää"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Piilota"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Tietojen käsittely oikeudellisella perusteella:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Tietojenkäsittelyn oikeusperusta: Ei myyjäpyyntöjä tämän oikeusperustan nojalla."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Ei-standardoitu tietojenkäsittely"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Jotkin palvelut asettavat evästeitä ja/tai käsittelevät henkilötietoja noudattamatta suostumusviestinnän standardeja. Nämä palvelut jaetaan useisiin ryhmiin. Ns. välttämättömiä palveluita käytetään oikeutetun edun perusteella, eikä niitä voi poistaa käytöstä (vastalause on ehkä tehtävä sähköpostitse tai kirjeitse tietosuojakäytännön mukaisesti), kun taas kaikkia muita palveluita käytetään vasta suostumuksen antamisen jälkeen."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "TCF:n mukaisesti standardoitu tietojenkäsittely"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Avoimuus- ja suostumuskehys (TCF, Transparency and Consent Framework) on standardi, jonka avulla saadaan johdonmukainen suostumus henkilötietojen käsittelyyn ja evästeiden asettamiseen. Tämän pitäisi antaa kaikille digitaalisen (mainos)ketjun osapuolille mahdollisuus varmistaa, että ne asettavat, käsittelevät ja tallentavat tietoja ja evästeitä yleisen tietosuoja-asetuksen ja sähköisen viestinnän tietosuojadirektiivin mukaisesti."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Käyttötarkoitukset"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Erityistarkoitukset"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Ominaisuudet"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Erityisominaisuudet"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Käyttötarkoitukset kuvaavat, mitä tarkoitusta varten palveluntarjoajat voivat asettaa evästeitä ja käsitellä henkilötietoja. Käyttötarkoitukset valitaan ennalta, jos tietojen käsittelyyn on oikeutettu etu. Kaikkia muita tarkoituksia varten tietoja käsitellään vain nimenomaisella suostumuksella."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Erityiset tarkoitukset evästeiden asettamiselle ja toimittajiemme suorittamalle henkilötietojen käsittelylle kuvaavat tarkoituksia, joita varten meillä on oikeutettu etu, jota ei voida hylätä. Meidän on esimerkiksi käsiteltävä tietoja petosten estämiseksi."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Henkilötietojen käsittelyn ominaisuuksissa kuvataan, miten tietoja käytetään yhden tai useamman tarkoituksen täyttämiseksi. Ominaisuuksia ei voi kieltää, mutta kohdassa \"Käyttötarkoitukset\" voidaan valita tai poistaa tarkoitukset, jotka johtavat ominaisuuksien käyttöön. Mikä tahansa tarkoitus voi johtaa ominaisuuksien käyttöön."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Henkilötietojen käsittelyn erityispiirteet kuvaavat, miten tietoja käytetään yhden tai useamman tarkoituksen täyttämiseksi perusteellisesti. Henkilötietoja käsitellään tällä tavoin vain nimenomaisella suostumuksella."
languages/real-cookie-banner-fr_BE.mo CHANGED
Binary file
languages/real-cookie-banner-fr_BE.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Aucune licence activée - pas pour une utilisation en production !"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licence de produit non destinée à la production !"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licence de produit non destinée à la production !"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " et "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Pas d'expiration"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "En outre, vous consentez au transfert de données à des partenaires dans le cadre de la norme TCF aux fins suivantes :"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Liste des vendeurs"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Vendeurs"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Afficher plus"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Cacher"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Traitement des données sur la base juridique de :"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Aucune demande de vendeur ne porte sur cette base juridique."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Traitement des données non normalisé"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Certains services définissent des cookies et/ou traitent des données personnelles sans respecter les normes de communication du consentement. Ces services sont divisés en plusieurs groupes. Les services dits \"essentiels\" sont utilisés sur la base de l'intérêt légitime et ne peuvent pas être désactivés (une objection peut devoir être faite par e-mail ou par lettre conformément à la politique de confidentialité), tandis que tous les autres services ne sont utilisés qu'après avoir donné leur consentement."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Traitement des données normalisé selon le TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Le cadre de transparence et de consentement (TCF) est une norme permettant d'obtenir un consentement cohérent pour le traitement des données personnelles et la mise en place de cookies. Cela devrait permettre à toutes les parties de la chaîne (publicitaire) numérique de s'assurer qu'elles définissent, traitent et stockent les données et les cookies conformément au GDPR et à la directive ePrivacy."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Finalités"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Objectifs particuliers"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Caractéristiques"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Caractéristiques spéciales"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Les finalités décrivent dans quel but les fournisseurs peuvent installer des cookies et traiter des données personnelles. Les finalités sont présélectionnées s'il existe un intérêt légitime pour le traitement des données. Pour toutes les autres finalités, les données ne seront traitées qu'avec un consentement explicite."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Les finalités particulières pour la mise en place de cookies et le traitement des données à caractère personnel par nos fournisseurs décrivent les finalités pour lesquelles nous avons un intérêt légitime qui ne peut être rejeté. Par exemple, nous devons traiter des données pour prévenir la fraude."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Les caractéristiques du traitement des données à caractère personnel décrivent la manière dont les données sont utilisées pour atteindre un ou plusieurs objectifs. Les fonctionnalités ne peuvent pas être refusées, mais dans la section \"Objectifs\", les objectifs qui conduisent à l'utilisation des fonctionnalités peuvent être sélectionnés ou désélectionnés. Toute finalité peut entraîner l'utilisation de fonctionnalités."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Les caractéristiques spéciales de traitement des données à caractère personnel décrivent comment les données sont utilisées pour atteindre une ou plusieurs finalités de manière approfondie. Les données personnelles ne seront traitées de cette manière qu'avec un consentement explicite."
languages/real-cookie-banner-fr_CA.mo CHANGED
Binary file
languages/real-cookie-banner-fr_CA.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Aucune licence activée - pas pour une utilisation en production !"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licence de produit non destinée à la production !"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licence de produit non destinée à la production !"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " et "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Pas d'expiration"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "En outre, vous consentez au transfert de données à des partenaires dans le cadre de la norme TCF aux fins suivantes :"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Liste des vendeurs"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Vendeurs"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Afficher plus"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Cacher"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Traitement des données sur la base juridique de :"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Aucune demande de vendeur ne porte sur cette base juridique."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Traitement des données non normalisé"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Certains services définissent des cookies et/ou traitent des données personnelles sans respecter les normes de communication du consentement. Ces services sont divisés en plusieurs groupes. Les services dits \"essentiels\" sont utilisés sur la base de l'intérêt légitime et ne peuvent pas être désactivés (une objection peut devoir être faite par e-mail ou par lettre conformément à la politique de confidentialité), tandis que tous les autres services ne sont utilisés qu'après avoir donné leur consentement."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Traitement des données normalisé selon le TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Le cadre de transparence et de consentement (TCF) est une norme permettant d'obtenir un consentement cohérent pour le traitement des données personnelles et la mise en place de cookies. Cela devrait permettre à toutes les parties de la chaîne (publicitaire) numérique de s'assurer qu'elles définissent, traitent et stockent les données et les cookies conformément au GDPR et à la directive ePrivacy."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Finalités"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Objectifs particuliers"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Caractéristiques"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Caractéristiques spéciales"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Les finalités décrivent dans quel but les fournisseurs peuvent installer des cookies et traiter des données personnelles. Les finalités sont présélectionnées s'il existe un intérêt légitime pour le traitement des données. Pour toutes les autres finalités, les données ne seront traitées qu'avec un consentement explicite."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Les finalités particulières pour la mise en place de cookies et le traitement des données à caractère personnel par nos fournisseurs décrivent les finalités pour lesquelles nous avons un intérêt légitime qui ne peut être rejeté. Par exemple, nous devons traiter des données pour prévenir la fraude."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Les caractéristiques du traitement des données à caractère personnel décrivent la manière dont les données sont utilisées pour atteindre un ou plusieurs objectifs. Les fonctionnalités ne peuvent pas être refusées, mais dans la section \"Objectifs\", les objectifs qui conduisent à l'utilisation des fonctionnalités peuvent être sélectionnés ou désélectionnés. Toute finalité peut entraîner l'utilisation de fonctionnalités."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Les caractéristiques spéciales de traitement des données à caractère personnel décrivent comment les données sont utilisées pour atteindre une ou plusieurs finalités de manière approfondie. Les données personnelles ne seront traitées de cette manière qu'avec un consentement explicite."
languages/real-cookie-banner-fr_FR.mo CHANGED
Binary file
languages/real-cookie-banner-fr_FR.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Aucune licence activée - pas pour une utilisation en production !"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licence de produit non destinée à la production !"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licence de produit non destinée à la production !"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " et "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Pas d'expiration"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "En outre, vous consentez au transfert de données à des partenaires dans le cadre de la norme TCF aux fins suivantes :"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Liste des vendeurs"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Vendeurs"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Afficher plus"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Cacher"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Traitement des données sur la base juridique de :"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Aucune demande de vendeur ne porte sur cette base juridique."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Traitement des données non normalisé"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Certains services définissent des cookies et/ou traitent des données personnelles sans respecter les normes de communication du consentement. Ces services sont divisés en plusieurs groupes. Les services dits \"essentiels\" sont utilisés sur la base de l'intérêt légitime et ne peuvent pas être désactivés (une objection peut devoir être faite par e-mail ou par lettre conformément à la politique de confidentialité), tandis que tous les autres services ne sont utilisés qu'après avoir donné leur consentement."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Traitement des données normalisé selon le TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Le cadre de transparence et de consentement (TCF) est une norme permettant d'obtenir un consentement cohérent pour le traitement des données personnelles et la mise en place de cookies. Cela devrait permettre à toutes les parties de la chaîne (publicitaire) numérique de s'assurer qu'elles définissent, traitent et stockent les données et les cookies conformément au GDPR et à la directive ePrivacy."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Finalités"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Objectifs particuliers"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Caractéristiques"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Caractéristiques spéciales"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Les finalités décrivent dans quel but les fournisseurs peuvent installer des cookies et traiter des données personnelles. Les finalités sont présélectionnées s'il existe un intérêt légitime pour le traitement des données. Pour toutes les autres finalités, les données ne seront traitées qu'avec un consentement explicite."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Les finalités particulières pour la mise en place de cookies et le traitement des données à caractère personnel par nos fournisseurs décrivent les finalités pour lesquelles nous avons un intérêt légitime qui ne peut être rejeté. Par exemple, nous devons traiter des données pour prévenir la fraude."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Les caractéristiques du traitement des données à caractère personnel décrivent la manière dont les données sont utilisées pour atteindre un ou plusieurs objectifs. Les fonctionnalités ne peuvent pas être refusées, mais dans la section \"Objectifs\", les objectifs qui conduisent à l'utilisation des fonctionnalités peuvent être sélectionnés ou désélectionnés. Toute finalité peut entraîner l'utilisation de fonctionnalités."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Les caractéristiques spéciales de traitement des données à caractère personnel décrivent comment les données sont utilisées pour atteindre une ou plusieurs finalités de manière approfondie. Les données personnelles ne seront traitées de cette manière qu'avec un consentement explicite."
languages/real-cookie-banner-it_IT.mo CHANGED
Binary file
languages/real-cookie-banner-it_IT.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Nessuna licenza attivata - non per uso produttivo!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licenza del prodotto non per uso di produzione!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licenza del prodotto non per uso di produzione!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " e "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Nessuna scadenza"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Inoltre, l'utente acconsente al trasferimento dei dati ai partner in base allo standard TCF per i seguenti scopi:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Elenco dei fornitori"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Fornitori"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Mostra di più"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Nascondi"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Trattamento dei dati sulla base giuridica di:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Non ci sono richieste di venditori in base a questa base giuridica."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Trattamento dei dati non standardizzato"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Alcuni servizi impostano cookie e/o elaborano dati personali senza rispettare gli standard di comunicazione del consenso. Questi servizi si dividono in diversi gruppi. I cosiddetti \"servizi essenziali\" sono utilizzati in base al legittimo interesse e non possono essere rifiutati (può essere necessaria un'obiezione via e-mail o lettera in conformità con l'informativa sulla privacy), mentre tutti gli altri servizi sono utilizzati solo dopo aver dato il consenso."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Trattamento dei dati standardizzato secondo il TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Il Transparency and Consent Framework (TCF) è uno standard per ottenere un consenso coerente per il trattamento dei dati personali e l'impostazione dei cookie. Ciò dovrebbe consentire a tutte le parti della catena digitale (pubblicitaria) di garantire l'impostazione, l'elaborazione e l'archiviazione dei dati e dei cookie in conformità con il GDPR e la direttiva ePrivacy."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Finalità"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Scopi speciali"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Caratteristiche"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Caratteristiche speciali"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Le finalità descrivono per quale scopo i fornitori possono impostare i cookie ed elaborare i dati personali. Le finalità sono preselezionate se esiste un interesse legittimo per il trattamento dei dati. Per tutti gli altri scopi, i dati saranno trattati solo con il consenso esplicito."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Le finalità speciali per l'impostazione dei cookie e il trattamento dei dati personali da parte dei nostri fornitori descrivono scopi per i quali abbiamo un interesse legittimo che non può essere rifiutato. Ad esempio, abbiamo bisogno di elaborare i dati per prevenire le frodi."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Le funzioni per il trattamento dei dati personali descrivono le modalità di utilizzo dei dati per il raggiungimento di uno o più scopi. Le funzioni non possono essere escluse, ma nella sezione \"Finalità\" è possibile selezionare o deselezionare le finalità che portano all'utilizzo delle funzioni. Qualsiasi finalità può portare all'utilizzo delle funzioni."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Le funzioni speciali per il trattamento dei dati personali descrivono come i dati vengono utilizzati per soddisfare una o più finalità in modo profondo. I dati personali saranno trattati in questo modo solo con il consenso esplicito."
languages/real-cookie-banner-nl_BE.mo CHANGED
Binary file
languages/real-cookie-banner-nl_BE.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Geen licentie geactiveerd - niet voor productie gebruik!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Product licentie niet voor productie gebruik!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Product licentie niet voor productie gebruik!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " en "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Geen vervaldatum"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Bovendien stemt u in met de overdracht van gegevens aan partners volgens de TCF-norm voor de volgende doeleinden:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lijst van leveranciers"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Verkopers"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Meer tonen"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Verbergen"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Gegevensverwerking op de wettelijke basis van:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Geen verzoeken van verkopers doeleinden onder deze rechtsgrondslag."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Niet-gestandaardiseerde gegevensverwerking"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Sommige diensten plaatsen cookies en/of verwerken persoonsgegevens zonder te voldoen aan de normen voor communicatie met toestemming. Deze diensten zijn onderverdeeld in verschillende groepen. Zogenaamde \"essentiële diensten\" worden gebruikt op basis van gerechtvaardigd belang en kunnen niet worden uitgeschakeld (een bezwaar moet eventueel per e-mail of brief worden ingediend overeenkomstig het privacybeleid), terwijl alle andere diensten pas worden gebruikt nadat toestemming is gegeven."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Gegevensverwerking gestandaardiseerd volgens TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Het Transparantie en Toestemmingsraamwerk (TCF) is een standaard voor het verkrijgen van consistente toestemming voor het verwerken van persoonsgegevens en het plaatsen van cookies. Hiermee moeten alle partijen in de digitale (reclame)keten ervoor kunnen zorgen dat zij gegevens en cookies plaatsen, verwerken en opslaan in overeenstemming met de GDPR en de ePrivacyrichtlijn."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Doeleinden"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Speciale doeleinden"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Functies"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Speciale kenmerken"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Doeleinden beschrijven voor welk doel welke aanbieders cookies mogen plaatsen en persoonsgegevens mogen verwerken. Doeleinden worden vooraf gekozen indien er een gerechtvaardigd belang is voor de verwerking van de gegevens. Voor alle andere doeleinden worden gegevens alleen verwerkt met uitdrukkelijke toestemming."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Speciale doeleinden voor het plaatsen van cookies en het verwerken van persoonsgegevens door onze leveranciers beschrijven doeleinden waarvoor wij een legitiem belang hebben dat niet kan worden afgewezen. Wij moeten bijvoorbeeld gegevens verwerken om fraude te voorkomen."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Functies voor de verwerking van persoonsgegevens beschrijven hoe gegevens worden gebruikt om te voldoen aan een of meer doeleinden. Kenmerken kunnen niet worden geweigerd, maar in de rubriek \"Doeleinden\" kunnen de doeleinden die tot het gebruik van kenmerken leiden, worden geselecteerd of gedeselecteerd. Elk doel kan leiden tot het gebruik van kenmerken."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Speciale kenmerken voor de verwerking van persoonsgegevens beschrijven hoe gegevens worden gebruikt om op een diepgaande manier te voldoen aan een of meer doeleinden. Persoonsgegevens worden op deze manier alleen verwerkt met uitdrukkelijke toestemming."
languages/real-cookie-banner-nl_NL.mo CHANGED
Binary file
languages/real-cookie-banner-nl_NL.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Geen licentie geactiveerd - niet voor productie gebruik!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Product licentie niet voor productie gebruik!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Product licentie niet voor productie gebruik!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " en "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Geen vervaldatum"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Bovendien stemt u in met de overdracht van gegevens aan partners volgens de TCF-norm voor de volgende doeleinden:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lijst van leveranciers"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Verkopers"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Meer tonen"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Verbergen"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Gegevensverwerking op de wettelijke basis van:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Geen verzoeken van verkopers doeleinden onder deze rechtsgrondslag."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Niet-gestandaardiseerde gegevensverwerking"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Sommige diensten plaatsen cookies en/of verwerken persoonsgegevens zonder te voldoen aan de normen voor communicatie met toestemming. Deze diensten zijn onderverdeeld in verschillende groepen. Zogenaamde \"essentiële diensten\" worden gebruikt op basis van gerechtvaardigd belang en kunnen niet worden uitgeschakeld (een bezwaar moet eventueel per e-mail of brief worden ingediend overeenkomstig het privacybeleid), terwijl alle andere diensten pas worden gebruikt nadat toestemming is gegeven."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Gegevensverwerking gestandaardiseerd volgens TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Het Transparantie en Toestemmingsraamwerk (TCF) is een standaard voor het verkrijgen van consistente toestemming voor het verwerken van persoonsgegevens en het plaatsen van cookies. Hiermee moeten alle partijen in de digitale (reclame)keten ervoor kunnen zorgen dat zij gegevens en cookies plaatsen, verwerken en opslaan in overeenstemming met de GDPR en de ePrivacyrichtlijn."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Doeleinden"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Speciale doeleinden"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Functies"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Speciale kenmerken"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Doeleinden beschrijven voor welk doel welke aanbieders cookies mogen plaatsen en persoonsgegevens mogen verwerken. Doeleinden worden vooraf gekozen indien er een gerechtvaardigd belang is voor de verwerking van de gegevens. Voor alle andere doeleinden worden gegevens alleen verwerkt met uitdrukkelijke toestemming."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Speciale doeleinden voor het plaatsen van cookies en het verwerken van persoonsgegevens door onze leveranciers beschrijven doeleinden waarvoor wij een legitiem belang hebben dat niet kan worden afgewezen. Wij moeten bijvoorbeeld gegevens verwerken om fraude te voorkomen."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Functies voor de verwerking van persoonsgegevens beschrijven hoe gegevens worden gebruikt om te voldoen aan een of meer doeleinden. Kenmerken kunnen niet worden geweigerd, maar in de rubriek \"Doeleinden\" kunnen de doeleinden die tot het gebruik van kenmerken leiden, worden geselecteerd of gedeselecteerd. Elk doel kan leiden tot het gebruik van kenmerken."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Speciale kenmerken voor de verwerking van persoonsgegevens beschrijven hoe gegevens worden gebruikt om op een diepgaande manier te voldoen aan een of meer doeleinden. Persoonsgegevens worden op deze manier alleen verwerkt met uitdrukkelijke toestemming."
languages/real-cookie-banner-nl_NL_formal.mo CHANGED
Binary file
languages/real-cookie-banner-nl_NL_formal.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Geen licentie geactiveerd - niet voor productie gebruik!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Product licentie niet voor productie gebruik!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Product licentie niet voor productie gebruik!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " en "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Geen vervaldatum"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Bovendien stemt u in met de overdracht van gegevens aan partners volgens de TCF-norm voor de volgende doeleinden:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lijst van leveranciers"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Verkopers"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Meer tonen"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Verbergen"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Gegevensverwerking op de wettelijke basis van:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Geen verzoeken van verkopers doeleinden onder deze rechtsgrondslag."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Niet-gestandaardiseerde gegevensverwerking"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Sommige diensten plaatsen cookies en/of verwerken persoonsgegevens zonder te voldoen aan de normen voor communicatie met toestemming. Deze diensten zijn onderverdeeld in verschillende groepen. Zogenaamde \"essentiële diensten\" worden gebruikt op basis van gerechtvaardigd belang en kunnen niet worden uitgeschakeld (een bezwaar moet eventueel per e-mail of brief worden ingediend overeenkomstig het privacybeleid), terwijl alle andere diensten pas worden gebruikt nadat toestemming is gegeven."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Gegevensverwerking gestandaardiseerd volgens TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Het Transparantie en Toestemmingsraamwerk (TCF) is een standaard voor het verkrijgen van consistente toestemming voor het verwerken van persoonsgegevens en het plaatsen van cookies. Hiermee moeten alle partijen in de digitale (reclame)keten ervoor kunnen zorgen dat zij gegevens en cookies plaatsen, verwerken en opslaan in overeenstemming met de GDPR en de ePrivacyrichtlijn."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Doeleinden"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Speciale doeleinden"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Functies"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Speciale kenmerken"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Doeleinden beschrijven voor welk doel welke aanbieders cookies mogen plaatsen en persoonsgegevens mogen verwerken. Doeleinden worden vooraf gekozen indien er een gerechtvaardigd belang is voor de verwerking van de gegevens. Voor alle andere doeleinden worden gegevens alleen verwerkt met uitdrukkelijke toestemming."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Speciale doeleinden voor het plaatsen van cookies en het verwerken van persoonsgegevens door onze leveranciers beschrijven doeleinden waarvoor wij een legitiem belang hebben dat niet kan worden afgewezen. Wij moeten bijvoorbeeld gegevens verwerken om fraude te voorkomen."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Functies voor de verwerking van persoonsgegevens beschrijven hoe gegevens worden gebruikt om te voldoen aan een of meer doeleinden. Kenmerken kunnen niet worden geweigerd, maar in de rubriek \"Doeleinden\" kunnen de doeleinden die tot het gebruik van kenmerken leiden, worden geselecteerd of gedeselecteerd. Elk doel kan leiden tot het gebruik van kenmerken."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Speciale kenmerken voor de verwerking van persoonsgegevens beschrijven hoe gegevens worden gebruikt om op een diepgaande manier te voldoen aan een of meer doeleinden. Persoonsgegevens worden op deze manier alleen verwerkt met uitdrukkelijke toestemming."
languages/real-cookie-banner-pl_PL.mo CHANGED
Binary file
languages/real-cookie-banner-pl_PL.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Brak aktywnej licencji - nie do użytku produkcyjnego!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licencja produktu nie do użytku produkcyjnego!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licencja produktu nie do użytku produkcyjnego!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " i "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Brak wygaśnięcia"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Ponadto użytkownik wyraża zgodę na przekazywanie danych partnerom w ramach standardu TCF w następujących celach:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lista sprzedawców"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Sprzedawcy"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Pokaż więcej"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Ukryj"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Przetwarzanie danych w oparciu o podstawę prawną:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Brak celów zapytań od sprzedawców w ramach tej podstawy prawnej."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Niestandaryzowane przetwarzanie danych"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Niektóre serwisy ustawiają pliki cookie i/lub przetwarzają dane osobowe bez przestrzegania standardów komunikacji w zakresie zgody. Usługi te można podzielić na kilka grup. Tak zwane \"usługi podstawowe\" są wykorzystywane w oparciu o uzasadniony interes i nie można z nich zrezygnować (sprzeciw może być zgłoszony pocztą elektroniczną lub listownie zgodnie z polityką prywatności), natomiast wszystkie inne usługi są wykorzystywane wyłącznie po wyrażeniu zgody."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Standaryzacja przetwarzania danych zgodnie z TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Ramowe zasady przejrzystości i zgody (TCF) to standard uzyskiwania spójnej zgody na przetwarzanie danych osobowych i ustawianie plików cookie. Powinno to umożliwić wszystkim stronom w łańcuchu cyfrowym (reklamowym) zapewnienie, że ustawiają, przetwarzają i przechowują dane i pliki cookie zgodnie z GDPR i dyrektywą o prywatności i łączności elektronicznej."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Cele"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Cele specjalne"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Funkcje"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Cechy szczególne"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Cele opisują, w jakim celu dostawcy mogą ustawiać pliki cookie i przetwarzać dane osobowe. Cele są wybierane wstępnie, jeśli istnieje uzasadniony interes w przetwarzaniu danych. Dla wszystkich innych celów dane będą przetwarzane wyłącznie za wyraźną zgodą."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Szczególne cele ustawiania plików cookie i przetwarzania danych osobowych przez naszych sprzedawców opisują cele, w których mamy uzasadniony interes, którego nie można odrzucić. Na przykład, musimy przetwarzać dane, aby zapobiec oszustwom."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Funkcje przetwarzania danych osobowych opisują sposób, w jaki dane są wykorzystywane do realizacji jednego lub więcej celów. Z funkcji nie można zrezygnować, ale w sekcji \"Cele\" można wybrać lub usunąć cele, które prowadzą do korzystania z funkcji. Każdy cel może prowadzić do wykorzystania funkcji."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Specjalne cechy przetwarzania danych osobowych opisują, w jaki sposób dane są wykorzystywane do spełnienia jednego lub więcej celów w głęboki sposób. Dane osobowe będą przetwarzane w ten sposób wyłącznie za wyraźną zgodą."
languages/real-cookie-banner-pt_BR.mo CHANGED
Binary file
languages/real-cookie-banner-pt_BR.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Sem licença ativada - não para uso na produção!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licença de produto não para uso de produção!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licença de produto não para uso de produção!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " e "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Nenhuma expiração"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Além disso, você consente com a transferência de dados a parceiros sob a norma TCF para os seguintes propósitos:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lista de fornecedores"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Fornecedores"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Mostrar mais"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Esconder"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Processamento de dados com base na base legal de:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Nenhum fornecedor solicita objetivos sob esta base legal."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Processamento de dados não-padronizados"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Alguns serviços estabelecem cookies e/ou processam dados pessoais sem cumprir com as normas de comunicação de consentimento. Estes serviços estão divididos em vários grupos. Os chamados \"serviços essenciais\" são utilizados com base em interesse legítimo e não podem ser excluídos (uma objeção pode ter que ser feita por e-mail ou carta de acordo com a política de privacidade), enquanto todos os outros serviços são utilizados somente após o consentimento ter sido dado."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Processamento de dados padronizado de acordo com a TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "A Estrutura de Transparência e Consentimento (TCF) é um padrão para obter um consentimento consistente para o processamento de dados pessoais e configuração de cookies. Isto deve permitir que todas as partes da cadeia digital (publicidade) possam garantir que eles definam, processem e armazenem dados e cookies de acordo com a GDPR e a Diretiva de Privacidade Eletrônica (ePrivacy Directive)."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Propósitos"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Finalidades especiais"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Características"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Características especiais"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Os propósitos descrevem para qual finalidade os fornecedores podem definir cookies e processar dados pessoais. Os propósitos são pré-selecionados se houver um interesse legítimo para o processamento de seus dados. Para todos os outros fins, os dados só serão processados com consentimento explícito."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Finalidades especiais para definir cookies e processar dados pessoais por nossos fornecedores descrevem as finalidades para as quais temos um interesse legítimo que não pode ser rejeitado. Por exemplo, precisamos processar dados para evitar fraudes."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Características para o processamento de dados pessoais descrevem como os dados são utilizados para cumprir uma ou mais finalidades. Os recursos não podem ser excluídos, mas na seção \"Propósitos\", os propósitos que levam ao uso de recursos podem ser selecionados ou desmarcados. Qualquer finalidade pode levar ao uso de recursos."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Características especiais para o processamento de dados pessoais descrevem como os dados são usados para cumprir uma ou mais finalidades de forma profunda. Os dados pessoais só serão processados desta forma com o consentimento explícito."
languages/real-cookie-banner-pt_PT.mo CHANGED
Binary file
languages/real-cookie-banner-pt_PT.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Sem licença ativada - não para uso na produção!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licença de produto não para uso de produção!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licença de produto não para uso de produção!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " e "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Nenhuma expiração"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Além disso, você consente com a transferência de dados a parceiros sob a norma TCF para os seguintes propósitos:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lista de fornecedores"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Fornecedores"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Mostrar mais"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Esconder"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Processamento de dados com base na base legal de:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Nenhum fornecedor solicita objetivos sob esta base legal."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Processamento de dados não-padronizados"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Alguns serviços estabelecem cookies e/ou processam dados pessoais sem cumprir com as normas de comunicação de consentimento. Estes serviços estão divididos em vários grupos. Os chamados \"serviços essenciais\" são utilizados com base em interesse legítimo e não podem ser excluídos (uma objeção pode ter que ser feita por e-mail ou carta de acordo com a política de privacidade), enquanto todos os outros serviços são utilizados somente após o consentimento ter sido dado."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Processamento de dados padronizado de acordo com a TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "A Estrutura de Transparência e Consentimento (TCF) é um padrão para obter um consentimento consistente para o processamento de dados pessoais e configuração de cookies. Isto deve permitir que todas as partes da cadeia digital (publicidade) possam garantir que eles definam, processem e armazenem dados e cookies de acordo com a GDPR e a Diretiva de Privacidade Eletrônica (ePrivacy Directive)."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Propósitos"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Finalidades especiais"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Características"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Características especiais"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Os propósitos descrevem para qual finalidade os fornecedores podem definir cookies e processar dados pessoais. Os propósitos são pré-selecionados se houver um interesse legítimo para o processamento de seus dados. Para todos os outros fins, os dados só serão processados com consentimento explícito."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Finalidades especiais para definir cookies e processar dados pessoais por nossos fornecedores descrevem as finalidades para as quais temos um interesse legítimo que não pode ser rejeitado. Por exemplo, precisamos processar dados para evitar fraudes."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Características para o processamento de dados pessoais descrevem como os dados são utilizados para cumprir uma ou mais finalidades. Os recursos não podem ser excluídos, mas na seção \"Propósitos\", os propósitos que levam ao uso de recursos podem ser selecionados ou desmarcados. Qualquer finalidade pode levar ao uso de recursos."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Características especiais para o processamento de dados pessoais descrevem como os dados são usados para cumprir uma ou mais finalidades de forma profunda. Os dados pessoais só serão processados desta forma com o consentimento explícito."
languages/real-cookie-banner-ro_RO.mo CHANGED
Binary file
languages/real-cookie-banner-ro_RO.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Nici o licență activată - nu pentru utilizare în producție!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licența produsului nu este destinată utilizării în producție!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Licența produsului nu este destinată utilizării în producție!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " și "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Fără expirare"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "În plus, sunteți de acord cu transferul de date către parteneri în conformitate cu standardul TCF în următoarele scopuri:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Lista furnizorilor"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Furnizori"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Afișați mai multe"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Ascundeți"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Prelucrarea datelor în baza temeiului juridic al:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Nu există scopuri de solicitare a furnizorilor în temeiul acestui temei juridic."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Prelucrarea nestandardizată a datelor"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Unele servicii setează cookie-uri și/sau prelucrează date cu caracter personal fără a respecta standardele de comunicare a consimțământului. Aceste servicii sunt împărțite în mai multe grupuri. Așa-numitele \"servicii esențiale\" sunt utilizate pe baza interesului legitim și nu pot fi refuzate (este posibil să fie necesară o obiecție prin e-mail sau scrisoare, în conformitate cu politica de confidențialitate), în timp ce toate celelalte servicii sunt utilizate numai după ce a fost acordat consimțământul."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Prelucrarea datelor standardizată în conformitate cu TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Cadrul de transparență și consimțământ (TCF) este un standard pentru obținerea unui consimțământ coerent pentru prelucrarea datelor cu caracter personal și pentru setarea de cookie-uri. Acest lucru ar trebui să permită tuturor părților din lanțul digital (publicitar) să se asigure că setează, prelucrează și stochează datele și cookie-urile în conformitate cu GDPR și cu Directiva privind confidențialitatea în mediul electronic."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Scopuri"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Scopuri speciale"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Caracteristici"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Caracteristici speciale"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Scopurile descriu în ce scop care furnizori pot seta module cookie și prelucra date cu caracter personal. Scopurile sunt preselectate în cazul în care există un interes legitim pentru prelucrarea datelor sale. Pentru toate celelalte scopuri, datele vor fi prelucrate numai cu consimțământul explicit."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Scopurile speciale pentru setarea modulelor cookie și prelucrarea datelor cu caracter personal de către furnizorii noștri descriu scopurile pentru care avem un interes legitim care nu poate fi respins. De exemplu, trebuie să prelucrăm datele pentru a preveni frauda."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Caracteristicile pentru prelucrarea datelor cu caracter personal descriu modul în care datele sunt utilizate pentru a îndeplini unul sau mai multe scopuri. Caracteristicile nu pot fi refuzate, dar în secțiunea \"Scopuri\", scopurile care conduc la utilizarea caracteristicilor pot fi selectate sau deselectate. Orice scop poate conduce la utilizarea caracteristicilor."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Caracteristicile speciale pentru prelucrarea datelor cu caracter personal descriu modul în care datele sunt utilizate pentru a îndeplini unul sau mai multe scopuri într-un mod profund. Datele cu caracter personal vor fi prelucrate în acest mod numai cu consimțământul explicit."
languages/real-cookie-banner-ru_RU.mo CHANGED
Binary file
languages/real-cookie-banner-ru_RU.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Лицензия не активирована - не для произ
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Лицензия на продукт не для производственного использования!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Лицензия на продукт не для производственного использования!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " и "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Без срока годности"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Кроме того, вы даете согласие на передачу данных партнерам в соответствии со стандартом TCF для следующих целей:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Список поставщиков"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Поставщики"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Показать больше"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Скрыть"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Обработка данных на законном основании:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "На этой правовой основе не было запросов от поставщиков."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Нестандартизированная обработка данных"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Некоторые сервисы устанавливают файлы cookie и/или обрабатывают персональные данные без соблюдения стандартов передачи согласия. Такие сервисы делятся на несколько групп. Так называемые \"основные услуги\" используются на основании законных интересов и от них нельзя отказаться (возражение может быть сделано по электронной почте или письмом в соответствии с политикой конфиденциальности), в то время как все остальные услуги используются только после получения согласия."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Обработка данных стандартизирована в соответствии с TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Transparency and Consent Framework (TCF) - это стандарт для получения последовательного согласия на обработку персональных данных и установку файлов cookie. Это должно позволить всем участникам цифровой (рекламной) цепочки обеспечить установку, обработку и хранение данных и файлов cookie в соответствии с GDPR и Директивой ePrivacy."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Цели"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Специальные цели"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Функции"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Специальные функции"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Цели описывают, для какой цели какие провайдеры могут устанавливать файлы cookie и обрабатывать персональные данные. Цели выбираются заранее, если существует законный интерес для обработки данных. Для всех остальных целей данные будут обрабатываться только с явного согласия."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Специальные цели для установки cookies и обработки персональных данных нашими поставщиками описывают цели, для которых у нас есть законный интерес, от которого нельзя отказаться. Например, нам необходимо обрабатывать данные для предотвращения мошенничества."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Функции обработки персональных данных описывают, как данные используются для выполнения одной или нескольких целей. От функций нельзя отказаться, но в разделе \"Цели\" можно выбрать или отменить выбор целей, которые приводят к использованию функций. Любая цель может привести к использованию функций."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Особенности обработки персональных данных описывают, как данные используются для глубокого выполнения одной или нескольких целей. Персональные данные будут обрабатываться таким образом только с явного согласия."
languages/real-cookie-banner-sv_SE.mo CHANGED
Binary file
languages/real-cookie-banner-sv_SE.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Ingen licens aktiverad - inte för produktionsbruk!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Produktlicens inte för produktionsbruk!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Produktlicens inte för produktionsbruk!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " och "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Inget utgångsdatum"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Dessutom samtycker du till att uppgifter överförs till partners enligt TCF-standarden för följande ändamål:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Leverantörslista"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Leverantörer"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Visa mer"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Dölj"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Behandling av uppgifter på rättslig grund av:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Ingen begäran från en säljare har gjorts på denna rättsliga grund."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Icke-standardiserad databehandling"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Vissa tjänster ställer in cookies och/eller behandlar personuppgifter utan att följa standarderna för kommunikation om samtycke. Dessa tjänster är indelade i flera grupper. Så kallade \"väsentliga tjänster\" används på grundval av legitimt intresse och kan inte avregistreras (en invändning kan behöva göras via e-post eller brev i enlighet med sekretesspolicyn), medan alla andra tjänster används endast efter att samtycke har getts."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "Standardiserad databehandling enligt TCF"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Transparency and Consent Framework (TCF) är en standard för att få ett konsekvent samtycke till behandling av personuppgifter och cookie-inställning. Detta ska göra det möjligt för alla parter i den digitala (reklam)kedjan att se till att de ställer in, behandlar och lagrar data och cookies i enlighet med GDPR och direktivet om integritet och elektronisk kommunikation."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Ändamål"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "Särskilda ändamål"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Funktioner"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Särskilda funktioner"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Ändamålen beskriver för vilket syfte vilka leverantörer får ställa in cookies och behandla personuppgifter. Ändamålen väljs i förväg om det finns ett legitimt intresse för behandlingen av uppgifterna. För alla andra ändamål behandlas uppgifter endast med uttryckligt samtycke."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Särskilda ändamål för att sätta cookies och behandla personuppgifter av våra leverantörer beskriver ändamål för vilka vi har ett legitimt intresse som inte kan avvisas. Vi behöver till exempel behandla uppgifter för att förhindra bedrägerier."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Funktioner för behandling av personuppgifter beskriver hur uppgifterna används för att uppfylla ett eller flera ändamål. Funktioner kan inte väljas bort, men i avsnittet \"Ändamål\" kan ändamål som leder till användning av funktioner väljas eller avfärdas. Alla syften kan leda till att funktioner används."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Särskilda funktioner för behandling av personuppgifter beskriver hur uppgifter används för att uppfylla ett eller flera ändamål på ett djupgående sätt. Personuppgifter kommer endast att behandlas på detta sätt med uttryckligt samtycke."
languages/real-cookie-banner-tr_TR.mo CHANGED
Binary file
languages/real-cookie-banner-tr_TR.po CHANGED
@@ -146,3 +146,87 @@ msgstr "Hiçbir lisans etkinleştirilmedi - üretim kullanımı için değil!"
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Ürün lisansı üretim amaçlı değil!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  #: inc/Assets.php:1
147
  msgid "Product license not for production use!"
148
  msgstr "Ürün lisansı üretim amaçlı değil!"
149
+
150
+ #: inc/Assets.php:1
151
+ msgid " and "
152
+ msgstr " ve "
153
+
154
+ #: inc/Assets.php:1
155
+ msgid "No expiration"
156
+ msgstr "Bitiş süresi yok"
157
+
158
+ #: inc/Assets.php:1
159
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
160
+ msgstr "Ek olarak, aşağıdaki amaçlarla TCF standardı kapsamında ortaklara veri aktarımına izin vermiş olursunuz:"
161
+
162
+ #: inc/Assets.php:1
163
+ msgid "Vendor list"
164
+ msgstr "Satıcı listesi"
165
+
166
+ #: inc/Assets.php:1
167
+ msgid "Vendors"
168
+ msgstr "Satıcılar"
169
+
170
+ #: inc/Assets.php:1
171
+ msgid "Show more"
172
+ msgstr "Daha fazla göster"
173
+
174
+ #: inc/Assets.php:1
175
+ msgid "Hide"
176
+ msgstr "Saklamak"
177
+
178
+ #: inc/Assets.php:1
179
+ msgid "Data processing on the legal basis of:"
180
+ msgstr "Aşağıdakilerin yasal temeli üzerinde veri işleme:"
181
+
182
+ #: inc/Assets.php:1
183
+ msgid "No vendor requests purposes under this legal basis."
184
+ msgstr "Bu yasal dayanak altında hiçbir satıcı amaç talep etmez."
185
+
186
+ #: inc/Assets.php:1
187
+ msgid "Non-standardized data processing"
188
+ msgstr "Standartlaştırılmamış veri işleme"
189
+
190
+ #: inc/Assets.php:1
191
+ msgid "Some services set cookies and/or process personal data without complying with consent communication standards. These services are divided into several groups. So-called \"essential services\" are used based on legitimate interest and cannot be opted out (an objection may have to be made by email or letter in accordance with the privacy policy), while all other services are used only after consent has been given."
192
+ msgstr "Bazı hizmetler, rıza iletişim standartlarına uymadan çerezler yerleştirir ve/veya kişisel verileri işler. Bu hizmetler birkaç gruba ayrılır. Sözde \"temel hizmetler\" meşru menfaat temelinde kullanılır ve devre dışı bırakılamaz (gizlilik politikasına uygun olarak e-posta veya mektup yoluyla itirazda bulunulması gerekebilir), diğer tüm hizmetler yalnızca onay verildikten sonra kullanılır. ."
193
+
194
+ #: inc/Assets.php:1
195
+ msgid "Data processing standardized according to TCF"
196
+ msgstr "TCF'ye göre standartlaştırılmış veri işleme"
197
+
198
+ #: inc/Assets.php:1
199
+ msgid "The Transparency and Consent Framework (TCF) is a standard for obtaining consistent consent for processing of personal data and cookie setting. This should enable all parties in the digital (advertising) chain to ensure that they set, process and store data and cookies in accordance with the GDPR and the ePrivacy Directive."
200
+ msgstr "Şeffaflık ve Rıza Çerçevesi (TCF), kişisel verilerin işlenmesi ve çerez ayarı için tutarlı izin alınmasına yönelik bir standarttır. Bu, dijital (reklamcılık) zincirindeki tüm tarafların verileri ve çerezleri GDPR ve eGizlilik Yönergesi uyarınca ayarladıklarından, işlediklerinden ve sakladıklarından emin olmalarını sağlamalıdır."
201
+
202
+ #: inc/Assets.php:1
203
+ msgid "Purposes"
204
+ msgstr "Amaçlar"
205
+
206
+ #: inc/Assets.php:1
207
+ msgid "Special purposes"
208
+ msgstr "özel amaçlar"
209
+
210
+ #: inc/Assets.php:1
211
+ msgid "Features"
212
+ msgstr "Özellikler"
213
+
214
+ #: inc/Assets.php:1
215
+ msgid "Special features"
216
+ msgstr "Özel özellikler"
217
+
218
+ #: inc/Assets.php:1
219
+ msgid "Purposes describe for which purpose which providers may set cookies and process personal data. Purposes are pre-selected if there is a legitimate interest for its data processing. For all other purposes, data will only be processed with explicit consent."
220
+ msgstr "Amaçlar, hangi sağlayıcıların çerezleri hangi amaçla ayarlayabileceğini ve kişisel verileri işleyebileceğini açıklar. Verilerin işlenmesi için meşru bir menfaat varsa, amaçlar önceden seçilir. Diğer tüm amaçlar için veriler yalnızca açık rıza ile işlenecektir."
221
+
222
+ #: inc/Assets.php:1
223
+ msgid "Special purposes for setting cookies and processing personal data by our vendors describe purposes for which we have a legitimate interest that cannot be rejected. For example, we need to process data to prevent fraud."
224
+ msgstr "Tanımlama bilgilerinin ayarlanmasına ve satıcılarımız tarafından kişisel verilerin işlenmesine yönelik özel amaçlar, reddedilemeyecek meşru bir menfaatimizin olduğu amaçları tanımlar. Örneğin, dolandırıcılığı önlemek için verileri işlememiz gerekir."
225
+
226
+ #: inc/Assets.php:1
227
+ msgid "Features for processing personal data describe how data is used to fulfill one or more purposes. Features cannot be opted out, but in the \"Purposes\" section, purposes that lead to the use of features can be selected or deselected. Any purpose can lead to features being used."
228
+ msgstr "Kişisel verilerin işlenmesine yönelik özellikler, verilerin bir veya daha fazla amacı yerine getirmek için nasıl kullanıldığını açıklar. Özellikler devre dışı bırakılamaz, ancak \"Amaçlar\" bölümünde özelliklerin kullanımına yol açan amaçlar seçilebilir veya seçimi kaldırılabilir. Herhangi bir amaç, özelliklerin kullanılmasına neden olabilir."
229
+
230
+ #: inc/Assets.php:1
231
+ msgid "Special features for processing personal data describe how data is used to fulfill one or more purposes in a profound way. Personal data will only be processed in this way with explicit consent."
232
+ msgstr "Kişisel verilerin işlenmesine yönelik özel özellikler, verilerin bir veya daha fazla amacı kapsamlı bir şekilde yerine getirmek için nasıl kullanıldığını açıklar. Kişisel veriler bu şekilde ancak açık rıza ile işlenecektir."
languages/real-cookie-banner.pot CHANGED
@@ -157,6 +157,8 @@ msgid "Host"
157
  msgstr ""
158
 
159
  #: inc/Assets.php:1
 
 
160
  msgid "Duration"
161
  msgstr ""
162
 
@@ -184,6 +186,10 @@ msgstr ""
184
  msgid "year(s)"
185
  msgstr ""
186
 
 
 
 
 
187
  #: inc/Assets.php:1
188
  #: inc/view/customize/banner/BasicLayout.php:1
189
  #: inc/view/customize/banner/BasicLayout.php:1
@@ -266,6 +272,11 @@ msgstr ""
266
  msgid "Product license not for production use!"
267
  msgstr ""
268
 
 
 
 
 
 
269
  #: inc/Assets.php:1
270
  #: inc/view/checklist/GetPro.php:1
271
  msgid "Learn more"
@@ -2405,11 +2416,6 @@ msgid "Border"
2405
  msgstr ""
2406
 
2407
  #: inc/overrides/pro/view/customize/banner/TcfBodyDesign.php:1
2408
- #: inc/view/customize/banner/BodyDesign.php:1
2409
- #: inc/view/customize/banner/BodyDesign.php:1
2410
- #: inc/view/customize/banner/BodyDesign.php:1
2411
- #: inc/view/customize/banner/individual/Group.php:1
2412
- #: inc/view/customize/banner/individual/SaveButton.php:1
2413
  msgid "Border width (px)"
2414
  msgstr ""
2415
 
@@ -2505,6 +2511,10 @@ msgstr ""
2505
  msgid "Services that do not share consents via the TCF standard, but via other technologies. These are divided into several groups according to their purpose. Some of them are used based on a legitimate interest (e.g. threat prevention), others are used only with your consent. Details about the individual groups and purposes of the services can be found in the individual privacy settings."
2506
  msgstr ""
2507
 
 
 
 
 
2508
  #: inc/overrides/pro/view/TcfBanner.php:1
2509
  msgid "Vendor list"
2510
  msgstr ""
@@ -3282,6 +3292,14 @@ msgstr ""
3282
  msgid "View stats"
3283
  msgstr ""
3284
 
 
 
 
 
 
 
 
 
3285
  #: inc/view/ConfigPage.php:1
3286
  msgid "A cookie banner for your website is installed. With it, you can integrate e.g. <strong>Google Analytics, Google Maps or YouTube videos</strong> legally compliant. You just have to configure it!"
3287
  msgstr ""
@@ -3323,7 +3341,7 @@ msgstr ""
3323
  #: inc/view/customize/banner/BasicLayout.php:1
3324
  #: inc/view/customize/banner/individual/Layout.php:1
3325
  #: inc/view/customize/banner/individual/Layout.php:1
3326
- msgid "Maximum width (px)"
3327
  msgstr ""
3328
 
3329
  #: inc/view/customize/banner/BasicLayout.php:1
@@ -3385,7 +3403,7 @@ msgid "Bottom"
3385
  msgstr ""
3386
 
3387
  #: inc/view/customize/banner/BasicLayout.php:1
3388
- msgid "Maximum content width (px)"
3389
  msgstr ""
3390
 
3391
  #: inc/view/customize/banner/BasicLayout.php:1
@@ -3400,11 +3418,6 @@ msgstr ""
3400
  msgid "Animation on display"
3401
  msgstr ""
3402
 
3403
- #: inc/view/customize/banner/BasicLayout.php:1
3404
- #: inc/view/customize/banner/BasicLayout.php:1
3405
- msgid "Duration (milliseconds)"
3406
- msgstr ""
3407
-
3408
  #: inc/view/customize/banner/BasicLayout.php:1
3409
  #: inc/view/customize/banner/BasicLayout.php:1
3410
  msgid "Animation only on mobile devices"
@@ -3446,10 +3459,6 @@ msgstr ""
3446
  msgid "Note that for visitors with an older browser (e.g. Internet Explorer) this option will not work."
3447
  msgstr ""
3448
 
3449
- #: inc/view/customize/banner/BodyDesign.php:1
3450
- msgid "The \"Accept\" and \"Reject\" buttons should be the same size (button and text size) so that they are considered equal."
3451
- msgstr ""
3452
-
3453
  #: inc/view/customize/banner/BodyDesign.php:1
3454
  msgid "Body"
3455
  msgstr ""
@@ -3531,13 +3540,13 @@ msgstr ""
3531
  #: inc/view/customize/banner/BodyDesign.php:1
3532
  #: inc/view/customize/banner/Design.php:1
3533
  #: inc/view/customize/banner/individual/Group.php:1
3534
- msgid "Width (px)"
3535
  msgstr ""
3536
 
3537
  #: inc/view/customize/banner/BodyDesign.php:1
3538
  #: inc/view/customize/banner/FooterDesign.php:1
3539
  #: inc/view/customize/banner/HeaderDesign.php:1
3540
- msgid "Height (px)"
3541
  msgstr ""
3542
 
3543
  #: inc/view/customize/banner/BodyDesign.php:1
@@ -3573,6 +3582,14 @@ msgstr ""
3573
  msgid "Define inner distance of the button/link."
3574
  msgstr ""
3575
 
 
 
 
 
 
 
 
 
3576
  #: inc/view/customize/banner/BodyDesign.php:1
3577
  #: inc/view/customize/banner/BodyDesign.php:1
3578
  #: inc/view/customize/banner/BodyDesign.php:1
@@ -3609,6 +3626,16 @@ msgstr ""
3609
  msgid "Button: Continue without consent"
3610
  msgstr ""
3611
 
 
 
 
 
 
 
 
 
 
 
3612
  #: inc/view/customize/banner/BodyDesign.php:1
3613
  msgid "Button: Individual privacy preferences"
3614
  msgstr ""
@@ -3670,6 +3697,7 @@ msgstr ""
3670
  msgid "Consent options"
3671
  msgstr ""
3672
 
 
3673
  #: inc/view/customize/banner/Decision.php:1
3674
  #: inc/view/customize/banner/Texts.php:1
3675
  msgid "Accept all"
@@ -3695,6 +3723,7 @@ msgstr ""
3695
  msgid "Link"
3696
  msgstr ""
3697
 
 
3698
  #: inc/view/customize/banner/Decision.php:1
3699
  #: inc/view/customize/banner/Texts.php:1
3700
  msgid "Continue without consent"
@@ -3712,9 +3741,9 @@ msgstr ""
3712
  msgid "An \"X\" icon is displayed at the top right of the cookie banner, which allows website visitors to close the cookie banner. It has the same function as clicking on the \"Continue without consent\" button/link."
3713
  msgstr ""
3714
 
 
3715
  #: inc/view/customize/banner/Decision.php:1
3716
  #: inc/view/customize/banner/individual/Texts.php:1
3717
- #: inc/view/customize/banner/Texts.php:1
3718
  msgid "Individual privacy preferences"
3719
  msgstr ""
3720
 
@@ -3722,6 +3751,22 @@ msgstr ""
3722
  msgid "According to the GDPR (EU 2016/679) and the ePrivacy Directive (EU 2009/136/EC), the user must be free to choose which services to use and be informed about their purpose before giving consent. Therefore, the user must be given the opportunity to access the page with the individual privacy settings."
3723
  msgstr ""
3724
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3725
  #: inc/view/customize/banner/Decision.php:1
3726
  msgid "Custom choice in first view"
3727
  msgstr ""
@@ -3742,6 +3787,11 @@ msgstr ""
3742
  msgid "Text of \"Accept all\" changes when user changes selection"
3743
  msgstr ""
3744
 
 
 
 
 
 
3745
  #: inc/view/customize/banner/Design.php:1
3746
  #: inc/view/customize/banner/individual/Texts.php:1
3747
  #: inc/view/customize/banner/Texts.php:1
@@ -3903,7 +3953,7 @@ msgid "Define the inner distance of the group box."
3903
  msgstr ""
3904
 
3905
  #: inc/view/customize/banner/individual/Group.php:1
3906
- msgid "Spacing between groups (px)"
3907
  msgstr ""
3908
 
3909
  #: inc/view/customize/banner/individual/Group.php:1
@@ -3943,6 +3993,11 @@ msgstr ""
3943
  msgid "Texts"
3944
  msgstr ""
3945
 
 
 
 
 
 
3946
  #: inc/view/customize/banner/individual/Texts.php:1
3947
  msgid "\"Save\" button/link"
3948
  msgstr ""
@@ -3956,11 +4011,17 @@ msgid "\"Hide service information\" link"
3956
  msgstr ""
3957
 
3958
  #: inc/view/customize/banner/individual/Texts.php:1
3959
- msgid "We use cookies and similar technologies on our website and process personal data about you, such as your IP address. We also share this data with third parties. Data processing may be done with your consent or on the basis of a legitimate interest, which you can object to. You have the right to consent to essential services only and to modify or revoke your consent at a later time in the privacy policy. Below you will find an overview of all services used by this website. You can view detailed information about each service and agree to them individually or exercise your right to object."
 
3960
  msgstr ""
3961
 
3962
  #: inc/view/customize/banner/individual/Texts.php:1
3963
- msgid "Save custom choices"
 
 
 
 
 
3964
  msgstr ""
3965
 
3966
  #: inc/view/customize/banner/individual/Texts.php:1
@@ -4110,6 +4171,18 @@ msgstr ""
4110
  msgid "Age notice in content blocker"
4111
  msgstr ""
4112
 
 
 
 
 
 
 
 
 
 
 
 
 
4113
  #: inc/view/customize/banner/Texts.php:1
4114
  msgid "Consent Forwarding"
4115
  msgstr ""
@@ -4156,6 +4229,11 @@ msgstr ""
4156
  msgid "Age notice is currently disabled. Please navigate to %1$sSettings > Consent%2$s to activate it."
4157
  msgstr ""
4158
 
 
 
 
 
 
4159
  #. translators:
4160
  #: inc/view/customize/banner/Texts.php:1
4161
  msgid "Consent Forwarding is currently disabled. Please navigate to %1$sSettings > Multisite / Consent Forwarding%2$s to activate it."
@@ -4166,7 +4244,7 @@ msgid "Privacy preferences"
4166
  msgstr ""
4167
 
4168
  #: inc/view/customize/banner/Texts.php:1
4169
- msgid "We use cookies and similar technologies on our website and process personal data about you, such as your IP address. We also share this data with third parties. Data processing may be done with your consent or on the basis of a legitimate interest, which you can object to in the individual privacy settings. You have the right to consent to essential services only and to modify or revoke your consent at a later time in the privacy policy."
4170
  msgstr ""
4171
 
4172
  #: inc/view/customize/banner/Texts.php:1
@@ -4181,6 +4259,10 @@ msgstr ""
4181
  msgid "You are under 16 years old? Unfortunately, you are not permitted to consent to this service to view this content. Please ask your parents or guardians to agree to the service with you!"
4182
  msgstr ""
4183
 
 
 
 
 
4184
  #: inc/view/customize/banner/Texts.php:1
4185
  msgid "Your consent is also applicable on {{websites}}."
4186
  msgstr ""
157
  msgstr ""
158
 
159
  #: inc/Assets.php:1
160
+ #: inc/view/customize/banner/BasicLayout.php:1
161
+ #: inc/view/customize/banner/BasicLayout.php:1
162
  msgid "Duration"
163
  msgstr ""
164
 
186
  msgid "year(s)"
187
  msgstr ""
188
 
189
+ #: inc/Assets.php:1
190
+ msgid "No expiration"
191
+ msgstr ""
192
+
193
  #: inc/Assets.php:1
194
  #: inc/view/customize/banner/BasicLayout.php:1
195
  #: inc/view/customize/banner/BasicLayout.php:1
272
  msgid "Product license not for production use!"
273
  msgstr ""
274
 
275
+ #. translators:
276
+ #: inc/Assets.php:1
277
+ msgid " and "
278
+ msgstr ""
279
+
280
  #: inc/Assets.php:1
281
  #: inc/view/checklist/GetPro.php:1
282
  msgid "Learn more"
2416
  msgstr ""
2417
 
2418
  #: inc/overrides/pro/view/customize/banner/TcfBodyDesign.php:1
 
 
 
 
 
2419
  msgid "Border width (px)"
2420
  msgstr ""
2421
 
2511
  msgid "Services that do not share consents via the TCF standard, but via other technologies. These are divided into several groups according to their purpose. Some of them are used based on a legitimate interest (e.g. threat prevention), others are used only with your consent. Details about the individual groups and purposes of the services can be found in the individual privacy settings."
2512
  msgstr ""
2513
 
2514
+ #: inc/overrides/pro/view/TcfBanner.php:1
2515
+ msgid "In addition, you consent to the transfer of data to partners under the TCF standard for the following purposes:"
2516
+ msgstr ""
2517
+
2518
  #: inc/overrides/pro/view/TcfBanner.php:1
2519
  msgid "Vendor list"
2520
  msgstr ""
3292
  msgid "View stats"
3293
  msgstr ""
3294
 
3295
+ #: inc/view/ConfigPage.php:1
3296
+ msgid "Set privacy policy URL"
3297
+ msgstr ""
3298
+
3299
+ #: inc/view/ConfigPage.php:1
3300
+ msgid "There are no privacy policies with further information linked for the following services in your cookie banner. We now consider these to be mandatory in order to comply with the information obligations under the GDPR. Please provide a privacy policy for each service!"
3301
+ msgstr ""
3302
+
3303
  #: inc/view/ConfigPage.php:1
3304
  msgid "A cookie banner for your website is installed. With it, you can integrate e.g. <strong>Google Analytics, Google Maps or YouTube videos</strong> legally compliant. You just have to configure it!"
3305
  msgstr ""
3341
  #: inc/view/customize/banner/BasicLayout.php:1
3342
  #: inc/view/customize/banner/individual/Layout.php:1
3343
  #: inc/view/customize/banner/individual/Layout.php:1
3344
+ msgid "Maximum width"
3345
  msgstr ""
3346
 
3347
  #: inc/view/customize/banner/BasicLayout.php:1
3403
  msgstr ""
3404
 
3405
  #: inc/view/customize/banner/BasicLayout.php:1
3406
+ msgid "Maximum content width"
3407
  msgstr ""
3408
 
3409
  #: inc/view/customize/banner/BasicLayout.php:1
3418
  msgid "Animation on display"
3419
  msgstr ""
3420
 
 
 
 
 
 
3421
  #: inc/view/customize/banner/BasicLayout.php:1
3422
  #: inc/view/customize/banner/BasicLayout.php:1
3423
  msgid "Animation only on mobile devices"
3459
  msgid "Note that for visitors with an older browser (e.g. Internet Explorer) this option will not work."
3460
  msgstr ""
3461
 
 
 
 
 
3462
  #: inc/view/customize/banner/BodyDesign.php:1
3463
  msgid "Body"
3464
  msgstr ""
3540
  #: inc/view/customize/banner/BodyDesign.php:1
3541
  #: inc/view/customize/banner/Design.php:1
3542
  #: inc/view/customize/banner/individual/Group.php:1
3543
+ msgid "Width"
3544
  msgstr ""
3545
 
3546
  #: inc/view/customize/banner/BodyDesign.php:1
3547
  #: inc/view/customize/banner/FooterDesign.php:1
3548
  #: inc/view/customize/banner/HeaderDesign.php:1
3549
+ msgid "Height"
3550
  msgstr ""
3551
 
3552
  #: inc/view/customize/banner/BodyDesign.php:1
3582
  msgid "Define inner distance of the button/link."
3583
  msgstr ""
3584
 
3585
+ #: inc/view/customize/banner/BodyDesign.php:1
3586
+ #: inc/view/customize/banner/BodyDesign.php:1
3587
+ #: inc/view/customize/banner/BodyDesign.php:1
3588
+ #: inc/view/customize/banner/individual/Group.php:1
3589
+ #: inc/view/customize/banner/individual/SaveButton.php:1
3590
+ msgid "Border width"
3591
+ msgstr ""
3592
+
3593
  #: inc/view/customize/banner/BodyDesign.php:1
3594
  #: inc/view/customize/banner/BodyDesign.php:1
3595
  #: inc/view/customize/banner/BodyDesign.php:1
3626
  msgid "Button: Continue without consent"
3627
  msgstr ""
3628
 
3629
+ #: inc/view/customize/banner/BodyDesign.php:1
3630
+ #: inc/view/customize/banner/individual/SaveButton.php:1
3631
+ msgid "Use the same stylings as for \"Accept all\""
3632
+ msgstr ""
3633
+
3634
+ #: inc/view/customize/banner/BodyDesign.php:1
3635
+ #: inc/view/customize/banner/individual/SaveButton.php:1
3636
+ msgid "According to the <a href=\"https://www.datenschutzkonferenz-online.de/media/oh/20211220_oh_telemedien.pdf\" target=\"_blank\">guidance of the data protection authorities in Germany (German)</a>, there must be an equivalent way for your visitors to express their choice (agree to everything, continue without consent or an indivudual decision). Equivalent does not necessarily mean that the buttons/links must look exactly the same. However, you should be safest if they look exactly the same."
3637
+ msgstr ""
3638
+
3639
  #: inc/view/customize/banner/BodyDesign.php:1
3640
  msgid "Button: Individual privacy preferences"
3641
  msgstr ""
3697
  msgid "Consent options"
3698
  msgstr ""
3699
 
3700
+ #: inc/view/customize/banner/Decision.php:1
3701
  #: inc/view/customize/banner/Decision.php:1
3702
  #: inc/view/customize/banner/Texts.php:1
3703
  msgid "Accept all"
3723
  msgid "Link"
3724
  msgstr ""
3725
 
3726
+ #: inc/view/customize/banner/Decision.php:1
3727
  #: inc/view/customize/banner/Decision.php:1
3728
  #: inc/view/customize/banner/Texts.php:1
3729
  msgid "Continue without consent"
3741
  msgid "An \"X\" icon is displayed at the top right of the cookie banner, which allows website visitors to close the cookie banner. It has the same function as clicking on the \"Continue without consent\" button/link."
3742
  msgstr ""
3743
 
3744
+ #: inc/view/customize/banner/Decision.php:1
3745
  #: inc/view/customize/banner/Decision.php:1
3746
  #: inc/view/customize/banner/individual/Texts.php:1
 
3747
  msgid "Individual privacy preferences"
3748
  msgstr ""
3749
 
3751
  msgid "According to the GDPR (EU 2016/679) and the ePrivacy Directive (EU 2009/136/EC), the user must be free to choose which services to use and be informed about their purpose before giving consent. Therefore, the user must be given the opportunity to access the page with the individual privacy settings."
3752
  msgstr ""
3753
 
3754
+ #: inc/view/customize/banner/Decision.php:1
3755
+ msgid "Order of the buttons"
3756
+ msgstr ""
3757
+
3758
+ #: inc/view/customize/banner/Decision.php:1
3759
+ msgid "According to the <a href=\"https://www.datenschutzkonferenz-online.de/media/oh/20211220_oh_telemedien.pdf\" target=\"_blank\">guidance of the data protection authorities in Germany (German)</a>, there must be an equivalent way for your visitors to express their choice (agree to everything, continue without consent or an indivudual decision). Which order of options is considered equivalent is unclear. Therefore, the options should be arranged according to the cultural conditions of the main target country."
3760
+ msgstr ""
3761
+
3762
+ #: inc/view/customize/banner/Decision.php:1
3763
+ msgid "Service groups as bullet list"
3764
+ msgstr ""
3765
+
3766
+ #: inc/view/customize/banner/Decision.php:1
3767
+ msgid "Show service groups as bullet list"
3768
+ msgstr ""
3769
+
3770
  #: inc/view/customize/banner/Decision.php:1
3771
  msgid "Custom choice in first view"
3772
  msgstr ""
3787
  msgid "Text of \"Accept all\" changes when user changes selection"
3788
  msgstr ""
3789
 
3790
+ #: inc/view/customize/banner/Decision.php:1
3791
+ #: inc/view/customize/banner/individual/Texts.php:1
3792
+ msgid "Save custom choices"
3793
+ msgstr ""
3794
+
3795
  #: inc/view/customize/banner/Design.php:1
3796
  #: inc/view/customize/banner/individual/Texts.php:1
3797
  #: inc/view/customize/banner/Texts.php:1
3953
  msgstr ""
3954
 
3955
  #: inc/view/customize/banner/individual/Group.php:1
3956
+ msgid "Spacing between groups"
3957
  msgstr ""
3958
 
3959
  #: inc/view/customize/banner/individual/Group.php:1
3993
  msgid "Texts"
3994
  msgstr ""
3995
 
3996
+ #: inc/view/customize/banner/individual/Texts.php:1
3997
+ #: inc/view/customize/banner/Texts.php:1
3998
+ msgid "Use <code>{{privacyPolicy}}privacy policy{{/privacyPolicy}}</code> as a placeholder for the privacy policy link."
3999
+ msgstr ""
4000
+
4001
  #: inc/view/customize/banner/individual/Texts.php:1
4002
  msgid "\"Save\" button/link"
4003
  msgstr ""
4011
  msgstr ""
4012
 
4013
  #: inc/view/customize/banner/individual/Texts.php:1
4014
+ #: inc/view/customize/banner/Texts.php:1
4015
+ msgid "We use cookies and similar technologies on our website and process your personal data (e.g. IP address), for example, to personalize content and ads, to integrate media from third-party providers or to analyze traffic on our website. Data processing may also happen as a result of cookies being set. We share this data with third parties that we name in the privacy settings."
4016
  msgstr ""
4017
 
4018
  #: inc/view/customize/banner/individual/Texts.php:1
4019
+ #: inc/view/customize/banner/Texts.php:1
4020
+ msgid "The data processing may take place with your consent or on the basis of a legitimate interest, which you can object to in the privacy settings. You have the right not to consent and to change or revoke your consent at a later time. For more information on the use of your data, please visit our {{privacyPolicy}}privacy policy{{/privacyPolicy}}."
4021
+ msgstr ""
4022
+
4023
+ #: inc/view/customize/banner/individual/Texts.php:1
4024
+ msgid "Below you will find an overview of all services used by this website. You can view detailed information about each service and agree to them individually or exercise your right to object."
4025
  msgstr ""
4026
 
4027
  #: inc/view/customize/banner/individual/Texts.php:1
4171
  msgid "Age notice in content blocker"
4172
  msgstr ""
4173
 
4174
+ #: inc/view/customize/banner/Texts.php:1
4175
+ msgid "List of services"
4176
+ msgstr ""
4177
+
4178
+ #: inc/view/customize/banner/Texts.php:1
4179
+ msgid "Naming of all services in first view"
4180
+ msgstr ""
4181
+
4182
+ #: inc/view/customize/banner/Texts.php:1
4183
+ msgid "Use <code>{{services}}</code> and <code>{{serviceGroups}}</code> as a placeholder for a list of services and groups."
4184
+ msgstr ""
4185
+
4186
  #: inc/view/customize/banner/Texts.php:1
4187
  msgid "Consent Forwarding"
4188
  msgstr ""
4229
  msgid "Age notice is currently disabled. Please navigate to %1$sSettings > Consent%2$s to activate it."
4230
  msgstr ""
4231
 
4232
+ #. translators:
4233
+ #: inc/view/customize/banner/Texts.php:1
4234
+ msgid "Naming of all services in first view is currently disabled. Please navigate to %1$sSettings > Consent%2$s to activate it."
4235
+ msgstr ""
4236
+
4237
  #. translators:
4238
  #: inc/view/customize/banner/Texts.php:1
4239
  msgid "Consent Forwarding is currently disabled. Please navigate to %1$sSettings > Multisite / Consent Forwarding%2$s to activate it."
4244
  msgstr ""
4245
 
4246
  #: inc/view/customize/banner/Texts.php:1
4247
+ msgid "Set privacy settings individually"
4248
  msgstr ""
4249
 
4250
  #: inc/view/customize/banner/Texts.php:1
4259
  msgid "You are under 16 years old? Unfortunately, you are not permitted to consent to this service to view this content. Please ask your parents or guardians to agree to the service with you!"
4260
  msgstr ""
4261
 
4262
+ #: inc/view/customize/banner/Texts.php:1
4263
+ msgid "By accepting all services, you allow {{services}} to be loaded. These services are divided into groups {{serviceGroups}} according to their purpose (belonging marked with superscript numbers)."
4264
+ msgstr ""
4265
+
4266
  #: inc/view/customize/banner/Texts.php:1
4267
  msgid "Your consent is also applicable on {{websites}}."
4268
  msgstr ""
public/dist/191.lite.js CHANGED
@@ -1,2 +1,2 @@
1
  "use strict";(self.webpackChunkrealCookieBanner_name_=self.webpackChunkrealCookieBanner_name_||[]).push([[191],{8122:function(e,t,n){n.d(t,{Z:function(){return l}});var a=n(7363),r={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z"}}]},name:"left",theme:"outlined"},c=n(3751),o=function(e,t){return a.createElement(c.Z,Object.assign({},e,{ref:t,icon:r}))};o.displayName="LeftOutlined";var l=a.forwardRef(o)},4632:function(e,t,n){n.d(t,{Z:function(){return l}});var a=n(7363),r={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"}}]},name:"right",theme:"outlined"},c=n(3751),o=function(e,t){return a.createElement(c.Z,Object.assign({},e,{ref:t,icon:r}))};o.displayName="RightOutlined";var l=a.forwardRef(o)},3735:function(e,t,n){n.d(t,{Z:function(){return g}});var a=n(63),r=n(4741),c=n(7363),o=n(2286),l=n.n(o),i=n(733),s=n(4178),u=function(e){var t=e.prefixCls,n=e.className,o=e.hoverable,i=void 0===o||o,u=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n}(e,["prefixCls","className","hoverable"]);return c.createElement(s.C,null,(function(e){var o=(0,e.getPrefixCls)("card",t),s=l()("".concat(o,"-grid"),n,(0,a.Z)({},"".concat(o,"-grid-hoverable"),i));return c.createElement("div",(0,r.Z)({},u,{className:s}))}))},p=n(9440),m=n(5489),d=n(8503),h=n(8533),f=function(e){var t,n,o,f=c.useContext(s.E_),g=f.getPrefixCls,v=f.direction,y=c.useContext(h.Z),b=e.prefixCls,x=e.className,E=e.extra,C=e.headStyle,N=void 0===C?{}:C,Z=e.bodyStyle,P=void 0===Z?{}:Z,S=e.title,O=e.loading,k=e.bordered,I=void 0===k||k,w=e.size,z=e.type,j=e.cover,T=e.actions,_=e.tabList,K=e.children,V=e.activeTabKey,L=e.defaultActiveTabKey,M=e.tabBarExtraContent,B=e.hoverable,J=e.tabProps,R=void 0===J?{}:J,D=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n}(e,["prefixCls","className","extra","headStyle","bodyStyle","title","loading","bordered","size","type","cover","actions","tabList","children","activeTabKey","defaultActiveTabKey","tabBarExtraContent","hoverable","tabProps"]),G=g("card",b),U=0===P.padding||"0px"===P.padding?{padding:24}:void 0,A=c.createElement("div",{className:"".concat(G,"-loading-block")}),q=c.createElement("div",{className:"".concat(G,"-loading-content"),style:U},c.createElement(m.Z,{gutter:8},c.createElement(d.Z,{span:22},A)),c.createElement(m.Z,{gutter:8},c.createElement(d.Z,{span:8},A),c.createElement(d.Z,{span:15},A)),c.createElement(m.Z,{gutter:8},c.createElement(d.Z,{span:6},A),c.createElement(d.Z,{span:18},A)),c.createElement(m.Z,{gutter:8},c.createElement(d.Z,{span:13},A),c.createElement(d.Z,{span:9},A)),c.createElement(m.Z,{gutter:8},c.createElement(d.Z,{span:4},A),c.createElement(d.Z,{span:3},A),c.createElement(d.Z,{span:16},A))),H=void 0!==V,Q=(0,r.Z)((0,r.Z)({},R),(t={},(0,a.Z)(t,H?"activeKey":"defaultActiveKey",H?V:L),(0,a.Z)(t,"tabBarExtraContent",M),t)),W=_&&_.length?c.createElement(p.Z,(0,r.Z)({size:"large"},Q,{className:"".concat(G,"-head-tabs"),onChange:function(t){var n;null===(n=e.onTabChange)||void 0===n||n.call(e,t)}}),_.map((function(e){return c.createElement(p.Z.TabPane,{tab:e.tab,disabled:e.disabled,key:e.key})}))):null;(S||E||W)&&(o=c.createElement("div",{className:"".concat(G,"-head"),style:N},c.createElement("div",{className:"".concat(G,"-head-wrapper")},S&&c.createElement("div",{className:"".concat(G,"-head-title")},S),E&&c.createElement("div",{className:"".concat(G,"-extra")},E)),W));var F,Y=j?c.createElement("div",{className:"".concat(G,"-cover")},j):null,X=c.createElement("div",{className:"".concat(G,"-body"),style:P},O?q:K),$=T&&T.length?c.createElement("ul",{className:"".concat(G,"-actions")},function(e){return e.map((function(t,n){return c.createElement("li",{style:{width:"".concat(100/e.length,"%")},key:"action-".concat(n)},c.createElement("span",null,t))}))}(T)):null,ee=(0,i.Z)(D,["onTabChange"]),te=w||y,ne=l()(G,(n={},(0,a.Z)(n,"".concat(G,"-loading"),O),(0,a.Z)(n,"".concat(G,"-bordered"),I),(0,a.Z)(n,"".concat(G,"-hoverable"),B),(0,a.Z)(n,"".concat(G,"-contain-grid"),(c.Children.forEach(e.children,(function(e){e&&e.type&&e.type===u&&(F=!0)})),F)),(0,a.Z)(n,"".concat(G,"-contain-tabs"),_&&_.length),(0,a.Z)(n,"".concat(G,"-").concat(te),te),(0,a.Z)(n,"".concat(G,"-type-").concat(z),!!z),(0,a.Z)(n,"".concat(G,"-rtl"),"rtl"===v),n),x);return c.createElement("div",(0,r.Z)({},ee,{className:ne}),o,Y,X,$)};f.Grid=u,f.Meta=function(e){return c.createElement(s.C,null,(function(t){var n=t.getPrefixCls,a=e.prefixCls,o=e.className,i=e.avatar,s=e.title,u=e.description,p=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n}(e,["prefixCls","className","avatar","title","description"]),m=n("card",a),d=l()("".concat(m,"-meta"),o),h=i?c.createElement("div",{className:"".concat(m,"-meta-avatar")},i):null,f=s?c.createElement("div",{className:"".concat(m,"-meta-title")},s):null,g=u?c.createElement("div",{className:"".concat(m,"-meta-description")},u):null,v=f||g?c.createElement("div",{className:"".concat(m,"-meta-detail")},f,g):null;return c.createElement("div",(0,r.Z)({},p,{className:d}),h,v)}))};var g=f},5806:function(e,t,n){var a=n(7228),r=n(7363),c=n(5e3);t.Z=function(){var e=(0,r.useState)({}),t=(0,a.Z)(e,2),n=t[0],o=t[1];return(0,r.useEffect)((function(){var e=c.ZP.subscribe((function(e){o(e)}));return function(){return c.ZP.unsubscribe(e)}}),[]),n}},9455:function(e,t,n){n.d(t,{ZM:function(){return C},ZP:function(){return Z}});var a=n(7870),r=n(4741),c=n(63),o=n(7228),l=n(3429),i=n(7363),s=n(2286),u=n.n(s),p=n(9591),m=n(5806),d=n(5e3),h=n(4178),f=n(754),g=n(9388),v=n(2275),y=n(8929),b=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n},x=function(e){var t,n=e.prefixCls,a=e.children,o=e.actions,l=e.extra,s=e.className,p=e.colStyle,m=b(e,["prefixCls","children","actions","extra","className","colStyle"]),d=i.useContext(C),f=d.grid,g=d.itemLayout,x=(0,i.useContext(h.E_).getPrefixCls)("list",n),E=o&&o.length>0&&i.createElement("ul",{className:"".concat(x,"-item-action"),key:"actions"},o.map((function(e,t){return i.createElement("li",{key:"".concat(x,"-item-action-").concat(t)},e,t!==o.length-1&&i.createElement("em",{className:"".concat(x,"-item-action-split")}))}))),N=f?"div":"li",Z=i.createElement(N,(0,r.Z)({},m,{className:u()("".concat(x,"-item"),(0,c.Z)({},"".concat(x,"-item-no-flex"),!("vertical"===g?l:(i.Children.forEach(a,(function(e){"string"==typeof e&&(t=!0)})),!(t&&i.Children.count(a)>1)))),s)}),"vertical"===g&&l?[i.createElement("div",{className:"".concat(x,"-item-main"),key:"content"},a,E),i.createElement("div",{className:"".concat(x,"-item-extra"),key:"extra"},l)]:[a,E,(0,y.Tm)(l,{key:"extra"})]);return f?i.createElement(v.Z,{flex:1,style:p},Z):Z};x.Meta=function(e){var t=e.prefixCls,n=e.className,a=e.avatar,c=e.title,o=e.description,l=b(e,["prefixCls","className","avatar","title","description"]),s=(0,i.useContext(h.E_).getPrefixCls)("list",t),p=u()("".concat(s,"-item-meta"),n),m=i.createElement("div",{className:"".concat(s,"-item-meta-content")},c&&i.createElement("h4",{className:"".concat(s,"-item-meta-title")},c),o&&i.createElement("div",{className:"".concat(s,"-item-meta-description")},o));return i.createElement("div",(0,r.Z)({},l,{className:p}),a&&i.createElement("div",{className:"".concat(s,"-item-meta-avatar")},a),(c||o)&&m)};var E=x,C=i.createContext({});function N(e){var t,n=e.pagination,s=void 0!==n&&n,v=e.prefixCls,y=e.bordered,b=void 0!==y&&y,x=e.split,E=void 0===x||x,N=e.className,Z=e.children,P=e.itemLayout,S=e.loadMore,O=e.grid,k=e.dataSource,I=void 0===k?[]:k,w=e.size,z=e.header,j=e.footer,T=e.loading,_=void 0!==T&&T,K=e.rowKey,V=e.renderItem,L=e.locale,M=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n}(e,["pagination","prefixCls","bordered","split","className","children","itemLayout","loadMore","grid","dataSource","size","header","footer","loading","rowKey","renderItem","locale"]),B=s&&"object"===(0,l.Z)(s)?s:{},J=i.useState(B.defaultCurrent||1),R=(0,o.Z)(J,2),D=R[0],G=R[1],U=i.useState(B.defaultPageSize||10),A=(0,o.Z)(U,2),q=A[0],H=A[1],Q=i.useContext(h.E_),W=Q.getPrefixCls,F=Q.renderEmpty,Y=Q.direction,X={},$=function(e){return function(t,n){G(t),H(n),s&&s[e]&&s[e](t,n)}},ee=$("onChange"),te=$("onShowSizeChange"),ne=W("list",v),ae=_;"boolean"==typeof ae&&(ae={spinning:ae});var re=ae&&ae.spinning,ce="";switch(w){case"large":ce="lg";break;case"small":ce="sm"}var oe=u()(ne,(t={},(0,c.Z)(t,"".concat(ne,"-vertical"),"vertical"===P),(0,c.Z)(t,"".concat(ne,"-").concat(ce),ce),(0,c.Z)(t,"".concat(ne,"-split"),E),(0,c.Z)(t,"".concat(ne,"-bordered"),b),(0,c.Z)(t,"".concat(ne,"-loading"),re),(0,c.Z)(t,"".concat(ne,"-grid"),!!O),(0,c.Z)(t,"".concat(ne,"-something-after-last-item"),!!(S||s||j)),(0,c.Z)(t,"".concat(ne,"-rtl"),"rtl"===Y),t),N),le=(0,r.Z)((0,r.Z)((0,r.Z)({},{current:1,total:0}),{total:I.length,current:D,pageSize:q}),s||{}),ie=Math.ceil(le.total/le.pageSize);le.current>ie&&(le.current=ie);var se=s?i.createElement("div",{className:"".concat(ne,"-pagination")},i.createElement(f.Z,(0,r.Z)({},le,{onChange:ee,onShowSizeChange:te}))):null,ue=(0,a.Z)(I);s&&I.length>(le.current-1)*le.pageSize&&(ue=(0,a.Z)(I).splice((le.current-1)*le.pageSize,le.pageSize));var pe=(0,m.Z)(),me=i.useMemo((function(){for(var e=0;e<d.c4.length;e+=1){var t=d.c4[e];if(pe[t])return t}}),[pe]),de=i.useMemo((function(){if(O){var e=me&&O[me]?O[me]:O.column;return e?{width:"".concat(100/e,"%"),maxWidth:"".concat(100/e,"%")}:void 0}}),[null==O?void 0:O.column,me]),he=re&&i.createElement("div",{style:{minHeight:53}});if(ue.length>0){var fe=ue.map((function(e,t){return function(e,t){return V?((n="function"==typeof K?K(e):"string"==typeof K?e[K]:e.key)||(n="list-item-".concat(t)),X[t]=n,V(e,t)):null;var n}(e,t)})),ge=i.Children.map(fe,(function(e,t){return i.createElement("div",{key:X[t],style:de},e)}));he=O?i.createElement(g.Z,{gutter:O.gutter},ge):i.createElement("ul",{className:"".concat(ne,"-items")},fe)}else Z||re||(he=function(e,t){return i.createElement("div",{className:"".concat(e,"-empty-text")},L&&L.emptyText||t("List"))}(ne,F));var ve=le.position||"bottom";return i.createElement(C.Provider,{value:{grid:O,itemLayout:P}},i.createElement("div",(0,r.Z)({className:oe},M),("top"===ve||"both"===ve)&&se,z&&i.createElement("div",{className:"".concat(ne,"-header")},z),i.createElement(p.Z,ae,he,Z),j&&i.createElement("div",{className:"".concat(ne,"-footer")},j),S||("bottom"===ve||"both"===ve)&&se))}C.Consumer,N.Item=E;var Z=N},754:function(e,t,n){n.d(t,{Z:function(){return L}});var a=n(63),r=n(4741),c=n(7363),o=n.n(c),l=n(2711),i=n(6762),s=n(3340),u=n(3841),p=n(5952),m=n(2286),d=n.n(m),h=function(e){var t,n="".concat(e.rootPrefixCls,"-item"),r=d()(n,"".concat(n,"-").concat(e.page),(t={},(0,a.Z)(t,"".concat(n,"-active"),e.active),(0,a.Z)(t,e.className,!!e.className),(0,a.Z)(t,"".concat(n,"-disabled"),!e.page),t));return o().createElement("li",{title:e.showTitle?e.page:null,className:r,onClick:function(){e.onClick(e.page)},onKeyPress:function(t){e.onKeyPress(t,e.onClick,e.page)},tabIndex:"0"},e.itemRender(e.page,"page",o().createElement("a",{rel:"nofollow"},e.page)))},f=function(e){(0,u.Z)(n,e);var t=(0,p.Z)(n);function n(){var e;(0,i.Z)(this,n);for(var a=arguments.length,r=new Array(a),c=0;c<a;c++)r[c]=arguments[c];return(e=t.call.apply(t,[this].concat(r))).state={goInputText:""},e.buildOptionText=function(t){return"".concat(t," ").concat(e.props.locale.items_per_page)},e.changeSize=function(t){e.props.changeSize(Number(t))},e.handleChange=function(t){e.setState({goInputText:t.target.value})},e.handleBlur=function(t){var n=e.props,a=n.goButton,r=n.quickGo,c=n.rootPrefixCls,o=e.state.goInputText;a||""===o||(e.setState({goInputText:""}),t.relatedTarget&&(t.relatedTarget.className.indexOf("".concat(c,"-item-link"))>=0||t.relatedTarget.className.indexOf("".concat(c,"-item"))>=0)||r(e.getValidValue()))},e.go=function(t){""!==e.state.goInputText&&(13!==t.keyCode&&"click"!==t.type||(e.setState({goInputText:""}),e.props.quickGo(e.getValidValue())))},e}return(0,s.Z)(n,[{key:"getValidValue",value:function(){var e=this.state.goInputText;return!e||isNaN(e)?void 0:Number(e)}},{key:"getPageSizeOptions",value:function(){var e=this.props,t=e.pageSize,n=e.pageSizeOptions;return n.some((function(e){return e.toString()===t.toString()}))?n:n.concat([t.toString()]).sort((function(e,t){return(isNaN(Number(e))?0:Number(e))-(isNaN(Number(t))?0:Number(t))}))}},{key:"render",value:function(){var e=this,t=this.props,n=t.pageSize,a=t.locale,r=t.rootPrefixCls,c=t.changeSize,l=t.quickGo,i=t.goButton,s=t.selectComponentClass,u=t.buildOptionText,p=t.selectPrefixCls,m=t.disabled,d=this.state.goInputText,h="".concat(r,"-options"),f=s,g=null,v=null,y=null;if(!c&&!l)return null;var b=this.getPageSizeOptions();if(c&&f){var x=b.map((function(t,n){return o().createElement(f.Option,{key:n,value:t.toString()},(u||e.buildOptionText)(t))}));g=o().createElement(f,{disabled:m,prefixCls:p,showSearch:!1,className:"".concat(h,"-size-changer"),optionLabelProp:"children",dropdownMatchSelectWidth:!1,value:(n||b[0]).toString(),onChange:this.changeSize,getPopupContainer:function(e){return e.parentNode}},x)}return l&&(i&&(y="boolean"==typeof i?o().createElement("button",{type:"button",onClick:this.go,onKeyUp:this.go,disabled:m,className:"".concat(h,"-quick-jumper-button")},a.jump_to_confirm):o().createElement("span",{onClick:this.go,onKeyUp:this.go},i)),v=o().createElement("div",{className:"".concat(h,"-quick-jumper")},a.jump_to,o().createElement("input",{disabled:m,type:"text",value:d,onChange:this.handleChange,onKeyUp:this.go,onBlur:this.handleBlur}),a.page,y)),o().createElement("li",{className:"".concat(h)},g,v)}}]),n}(o().Component);f.defaultProps={pageSizeOptions:["10","20","50","100"]};var g=f;function v(){}function y(e,t,n){var a=void 0===e?t.pageSize:e;return Math.floor((n.total-1)/a)+1}var b=function(e){(0,u.Z)(n,e);var t=(0,p.Z)(n);function n(e){var a;(0,i.Z)(this,n),(a=t.call(this,e)).getJumpPrevPage=function(){return Math.max(1,a.state.current-(a.props.showLessItems?3:5))},a.getJumpNextPage=function(){return Math.min(y(void 0,a.state,a.props),a.state.current+(a.props.showLessItems?3:5))},a.getItemIcon=function(e,t){var n=a.props.prefixCls,r=e||o().createElement("button",{type:"button","aria-label":t,className:"".concat(n,"-item-link")});return"function"==typeof e&&(r=o().createElement(e,(0,l.Z)({},a.props))),r},a.savePaginationNode=function(e){a.paginationNode=e},a.isValid=function(e){return"number"==typeof(t=e)&&isFinite(t)&&Math.floor(t)===t&&e!==a.state.current;var t},a.shouldDisplayQuickJumper=function(){var e=a.props,t=e.showQuickJumper,n=e.pageSize;return!(e.total<=n)&&t},a.handleKeyDown=function(e){38!==e.keyCode&&40!==e.keyCode||e.preventDefault()},a.handleKeyUp=function(e){var t=a.getValidValue(e);t!==a.state.currentInputValue&&a.setState({currentInputValue:t}),13===e.keyCode?a.handleChange(t):38===e.keyCode?a.handleChange(t-1):40===e.keyCode&&a.handleChange(t+1)},a.changePageSize=function(e){var t=a.state.current,n=y(e,a.state,a.props);t=t>n?n:t,0===n&&(t=a.state.current),"number"==typeof e&&("pageSize"in a.props||a.setState({pageSize:e}),"current"in a.props||a.setState({current:t,currentInputValue:t})),a.props.onShowSizeChange(t,e),"onChange"in a.props&&a.props.onChange&&a.props.onChange(t,e)},a.handleChange=function(e){var t=a.props.disabled,n=e;if(a.isValid(n)&&!t){var r=y(void 0,a.state,a.props);n>r?n=r:n<1&&(n=1),"current"in a.props||a.setState({current:n,currentInputValue:n});var c=a.state.pageSize;return a.props.onChange(n,c),n}return a.state.current},a.prev=function(){a.hasPrev()&&a.handleChange(a.state.current-1)},a.next=function(){a.hasNext()&&a.handleChange(a.state.current+1)},a.jumpPrev=function(){a.handleChange(a.getJumpPrevPage())},a.jumpNext=function(){a.handleChange(a.getJumpNextPage())},a.hasPrev=function(){return a.state.current>1},a.hasNext=function(){return a.state.current<y(void 0,a.state,a.props)},a.runIfEnter=function(e,t){if("Enter"===e.key||13===e.charCode){for(var n=arguments.length,a=new Array(n>2?n-2:0),r=2;r<n;r++)a[r-2]=arguments[r];t.apply(void 0,a)}},a.runIfEnterPrev=function(e){a.runIfEnter(e,a.prev)},a.runIfEnterNext=function(e){a.runIfEnter(e,a.next)},a.runIfEnterJumpPrev=function(e){a.runIfEnter(e,a.jumpPrev)},a.runIfEnterJumpNext=function(e){a.runIfEnter(e,a.jumpNext)},a.handleGoTO=function(e){13!==e.keyCode&&"click"!==e.type||a.handleChange(a.state.currentInputValue)};var r=e.onChange!==v;"current"in e&&!r&&console.warn("Warning: You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.");var c=e.defaultCurrent;"current"in e&&(c=e.current);var s=e.defaultPageSize;return"pageSize"in e&&(s=e.pageSize),c=Math.min(c,y(s,void 0,e)),a.state={current:c,currentInputValue:c,pageSize:s},a}return(0,s.Z)(n,[{key:"componentDidUpdate",value:function(e,t){var n=this.props.prefixCls;if(t.current!==this.state.current&&this.paginationNode){var a=this.paginationNode.querySelector(".".concat(n,"-item-").concat(t.current));a&&document.activeElement===a&&a.blur()}}},{key:"getValidValue",value:function(e){var t=e.target.value,n=y(void 0,this.state,this.props),a=this.state.currentInputValue;return""===t?t:isNaN(Number(t))?a:t>=n?n:Number(t)}},{key:"getShowSizeChanger",value:function(){var e=this.props,t=e.showSizeChanger,n=e.total,a=e.totalBoundaryShowSizeChanger;return void 0!==t?t:n>a}},{key:"renderPrev",value:function(e){var t=this.props,n=t.prevIcon,a=(0,t.itemRender)(e,"prev",this.getItemIcon(n,"prev page")),r=!this.hasPrev();return(0,c.isValidElement)(a)?(0,c.cloneElement)(a,{disabled:r}):a}},{key:"renderNext",value:function(e){var t=this.props,n=t.nextIcon,a=(0,t.itemRender)(e,"next",this.getItemIcon(n,"next page")),r=!this.hasNext();return(0,c.isValidElement)(a)?(0,c.cloneElement)(a,{disabled:r}):a}},{key:"render",value:function(){var e=this,t=this.props,n=t.prefixCls,l=t.className,i=t.style,s=t.disabled,u=t.hideOnSinglePage,p=t.total,m=t.locale,f=t.showQuickJumper,v=t.showLessItems,b=t.showTitle,x=t.showTotal,E=t.simple,C=t.itemRender,N=t.showPrevNextJumpers,Z=t.jumpPrevIcon,P=t.jumpNextIcon,S=t.selectComponentClass,O=t.selectPrefixCls,k=t.pageSizeOptions,I=this.state,w=I.current,z=I.pageSize,j=I.currentInputValue;if(!0===u&&p<=z)return null;var T=y(void 0,this.state,this.props),_=[],K=null,V=null,L=null,M=null,B=null,J=f&&f.goButton,R=v?1:2,D=w-1>0?w-1:0,G=w+1<T?w+1:T,U=Object.keys(this.props).reduce((function(t,n){return"data-"!==n.substr(0,5)&&"aria-"!==n.substr(0,5)&&"role"!==n||(t[n]=e.props[n]),t}),{});if(E)return J&&(B="boolean"==typeof J?o().createElement("button",{type:"button",onClick:this.handleGoTO,onKeyUp:this.handleGoTO},m.jump_to_confirm):o().createElement("span",{onClick:this.handleGoTO,onKeyUp:this.handleGoTO},J),B=o().createElement("li",{title:b?"".concat(m.jump_to).concat(w,"/").concat(T):null,className:"".concat(n,"-simple-pager")},B)),o().createElement("ul",(0,r.Z)({className:d()(n,"".concat(n,"-simple"),(0,a.Z)({},"".concat(n,"-disabled"),s),l),style:i,ref:this.savePaginationNode},U),o().createElement("li",{title:b?m.prev_page:null,onClick:this.prev,tabIndex:this.hasPrev()?0:null,onKeyPress:this.runIfEnterPrev,className:d()("".concat(n,"-prev"),(0,a.Z)({},"".concat(n,"-disabled"),!this.hasPrev())),"aria-disabled":!this.hasPrev()},this.renderPrev(D)),o().createElement("li",{title:b?"".concat(w,"/").concat(T):null,className:"".concat(n,"-simple-pager")},o().createElement("input",{type:"text",value:j,disabled:s,onKeyDown:this.handleKeyDown,onKeyUp:this.handleKeyUp,onChange:this.handleKeyUp,size:"3"}),o().createElement("span",{className:"".concat(n,"-slash")},"/"),T),o().createElement("li",{title:b?m.next_page:null,onClick:this.next,tabIndex:this.hasPrev()?0:null,onKeyPress:this.runIfEnterNext,className:d()("".concat(n,"-next"),(0,a.Z)({},"".concat(n,"-disabled"),!this.hasNext())),"aria-disabled":!this.hasNext()},this.renderNext(G)),B);if(T<=3+2*R){var A={locale:m,rootPrefixCls:n,onClick:this.handleChange,onKeyPress:this.runIfEnter,showTitle:b,itemRender:C};T||_.push(o().createElement(h,(0,r.Z)({},A,{key:"noPager",page:T,className:"".concat(n,"-disabled")})));for(var q=1;q<=T;q+=1){var H=w===q;_.push(o().createElement(h,(0,r.Z)({},A,{key:q,page:q,active:H})))}}else{var Q=v?m.prev_3:m.prev_5,W=v?m.next_3:m.next_5;N&&(K=o().createElement("li",{title:b?Q:null,key:"prev",onClick:this.jumpPrev,tabIndex:"0",onKeyPress:this.runIfEnterJumpPrev,className:d()("".concat(n,"-jump-prev"),(0,a.Z)({},"".concat(n,"-jump-prev-custom-icon"),!!Z))},C(this.getJumpPrevPage(),"jump-prev",this.getItemIcon(Z,"prev page"))),V=o().createElement("li",{title:b?W:null,key:"next",tabIndex:"0",onClick:this.jumpNext,onKeyPress:this.runIfEnterJumpNext,className:d()("".concat(n,"-jump-next"),(0,a.Z)({},"".concat(n,"-jump-next-custom-icon"),!!P))},C(this.getJumpNextPage(),"jump-next",this.getItemIcon(P,"next page")))),M=o().createElement(h,{locale:m,last:!0,rootPrefixCls:n,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:T,page:T,active:!1,showTitle:b,itemRender:C}),L=o().createElement(h,{locale:m,rootPrefixCls:n,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:1,page:1,active:!1,showTitle:b,itemRender:C});var F=Math.max(1,w-R),Y=Math.min(w+R,T);w-1<=R&&(Y=1+2*R),T-w<=R&&(F=T-2*R);for(var X=F;X<=Y;X+=1){var $=w===X;_.push(o().createElement(h,{locale:m,rootPrefixCls:n,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:X,page:X,active:$,showTitle:b,itemRender:C}))}w-1>=2*R&&3!==w&&(_[0]=(0,c.cloneElement)(_[0],{className:"".concat(n,"-item-after-jump-prev")}),_.unshift(K)),T-w>=2*R&&w!==T-2&&(_[_.length-1]=(0,c.cloneElement)(_[_.length-1],{className:"".concat(n,"-item-before-jump-next")}),_.push(V)),1!==F&&_.unshift(L),Y!==T&&_.push(M)}var ee=null;x&&(ee=o().createElement("li",{className:"".concat(n,"-total-text")},x(p,[0===p?0:(w-1)*z+1,w*z>p?p:w*z])));var te=!this.hasPrev()||!T,ne=!this.hasNext()||!T;return o().createElement("ul",(0,r.Z)({className:d()(n,l,(0,a.Z)({},"".concat(n,"-disabled"),s)),style:i,unselectable:"unselectable",ref:this.savePaginationNode},U),ee,o().createElement("li",{title:b?m.prev_page:null,onClick:this.prev,tabIndex:te?null:0,onKeyPress:this.runIfEnterPrev,className:d()("".concat(n,"-prev"),(0,a.Z)({},"".concat(n,"-disabled"),te)),"aria-disabled":te},this.renderPrev(D)),_,o().createElement("li",{title:b?m.next_page:null,onClick:this.next,tabIndex:ne?null:0,onKeyPress:this.runIfEnterNext,className:d()("".concat(n,"-next"),(0,a.Z)({},"".concat(n,"-disabled"),ne)),"aria-disabled":ne},this.renderNext(G)),o().createElement(g,{disabled:s,locale:m,rootPrefixCls:n,selectComponentClass:S,selectPrefixCls:O,changeSize:this.getShowSizeChanger()?this.changePageSize:null,current:w,pageSize:z,pageSizeOptions:k,quickGo:this.shouldDisplayQuickJumper()?this.handleChange:null,goButton:J}))}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n={};if("current"in e&&(n.current=e.current,e.current!==t.current&&(n.currentInputValue=n.current)),"pageSize"in e&&e.pageSize!==t.pageSize){var a=t.current,r=y(e.pageSize,t,e);a=a>r?r:a,"current"in e||(n.current=a,n.currentInputValue=a),n.pageSize=e.pageSize}return n}}]),n}(o().Component);b.defaultProps={defaultCurrent:1,total:0,defaultPageSize:10,onChange:v,className:"",selectPrefixCls:"rc-select",prefixCls:"rc-pagination",selectComponentClass:null,hideOnSinglePage:!1,showPrevNextJumpers:!0,showQuickJumper:!1,showLessItems:!1,showTitle:!0,onShowSizeChange:v,locale:{items_per_page:"条/页",jump_to:"跳至",jump_to_confirm:"确定",page:"页",prev_page:"上一页",next_page:"下一页",prev_5:"向前 5 页",next_5:"向后 5 页",prev_3:"向前 3 页",next_3:"向后 3 页"},style:{},itemRender:function(e,t,n){return n},totalBoundaryShowSizeChanger:50};var x=b,E=n(2191),C=n(8122),N=n(4632),Z={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z"}}]},name:"double-left",theme:"outlined"},P=n(3751),S=function(e,t){return c.createElement(P.Z,Object.assign({},e,{ref:t,icon:Z}))};S.displayName="DoubleLeftOutlined";var O=c.forwardRef(S),k={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z"}}]},name:"double-right",theme:"outlined"},I=function(e,t){return c.createElement(P.Z,Object.assign({},e,{ref:t,icon:k}))};I.displayName="DoubleRightOutlined";var w=c.forwardRef(I),z=n(3828),j=function(e){return c.createElement(z.Z,(0,r.Z)({size:"small"},e))};j.Option=z.Z.Option;var T=j,_=n(7416),K=n(4178),V=n(5806),L=function(e){var t=e.prefixCls,n=e.selectPrefixCls,o=e.className,l=e.size,i=e.locale,s=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n}(e,["prefixCls","selectPrefixCls","className","size","locale"]),u=(0,V.Z)().xs,p=c.useContext(K.E_),m=p.getPrefixCls,h=p.direction,f=m("pagination",t),g=function(e){var t=(0,r.Z)((0,r.Z)({},e),i),p="small"===l||!(!u||l||!s.responsive),g=m("select",n),v=d()((0,a.Z)({mini:p},"".concat(f,"-rtl"),"rtl"===h),o);return c.createElement(x,(0,r.Z)({},s,{prefixCls:f,selectPrefixCls:g},function(){var e=c.createElement("span",{className:"".concat(f,"-item-ellipsis")},"•••"),t=c.createElement("button",{className:"".concat(f,"-item-link"),type:"button",tabIndex:-1},c.createElement(C.Z,null)),n=c.createElement("button",{className:"".concat(f,"-item-link"),type:"button",tabIndex:-1},c.createElement(N.Z,null)),a=c.createElement("a",{className:"".concat(f,"-item-link")},c.createElement("div",{className:"".concat(f,"-item-container")},c.createElement(O,{className:"".concat(f,"-item-link-icon")}),e)),r=c.createElement("a",{className:"".concat(f,"-item-link")},c.createElement("div",{className:"".concat(f,"-item-container")},c.createElement(w,{className:"".concat(f,"-item-link-icon")}),e));if("rtl"===h){var o=[n,t];t=o[0],n=o[1];var l=[r,a];a=l[0],r=l[1]}return{prevIcon:t,nextIcon:n,jumpPrevIcon:a,jumpNextIcon:r}}(),{className:v,selectComponentClass:p?T:z.Z,locale:t}))};return c.createElement(_.Z,{componentName:"Pagination",defaultLocale:E.Z},g)}}}]);
2
- //# sourceMappingURL=191.lite.js.map?ver=e7cc201b0fd38612fca5
1
  "use strict";(self.webpackChunkrealCookieBanner_name_=self.webpackChunkrealCookieBanner_name_||[]).push([[191],{8122:function(e,t,n){n.d(t,{Z:function(){return l}});var a=n(7363),r={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z"}}]},name:"left",theme:"outlined"},c=n(3751),o=function(e,t){return a.createElement(c.Z,Object.assign({},e,{ref:t,icon:r}))};o.displayName="LeftOutlined";var l=a.forwardRef(o)},4632:function(e,t,n){n.d(t,{Z:function(){return l}});var a=n(7363),r={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"}}]},name:"right",theme:"outlined"},c=n(3751),o=function(e,t){return a.createElement(c.Z,Object.assign({},e,{ref:t,icon:r}))};o.displayName="RightOutlined";var l=a.forwardRef(o)},3735:function(e,t,n){n.d(t,{Z:function(){return g}});var a=n(63),r=n(4741),c=n(7363),o=n(2286),l=n.n(o),i=n(733),s=n(4178),u=function(e){var t=e.prefixCls,n=e.className,o=e.hoverable,i=void 0===o||o,u=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n}(e,["prefixCls","className","hoverable"]);return c.createElement(s.C,null,(function(e){var o=(0,e.getPrefixCls)("card",t),s=l()("".concat(o,"-grid"),n,(0,a.Z)({},"".concat(o,"-grid-hoverable"),i));return c.createElement("div",(0,r.Z)({},u,{className:s}))}))},p=n(9440),m=n(5489),d=n(8503),h=n(8533),f=function(e){var t,n,o,f=c.useContext(s.E_),g=f.getPrefixCls,v=f.direction,y=c.useContext(h.Z),b=e.prefixCls,x=e.className,E=e.extra,C=e.headStyle,N=void 0===C?{}:C,Z=e.bodyStyle,P=void 0===Z?{}:Z,S=e.title,O=e.loading,k=e.bordered,I=void 0===k||k,w=e.size,z=e.type,j=e.cover,T=e.actions,_=e.tabList,K=e.children,V=e.activeTabKey,L=e.defaultActiveTabKey,M=e.tabBarExtraContent,B=e.hoverable,J=e.tabProps,R=void 0===J?{}:J,D=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n}(e,["prefixCls","className","extra","headStyle","bodyStyle","title","loading","bordered","size","type","cover","actions","tabList","children","activeTabKey","defaultActiveTabKey","tabBarExtraContent","hoverable","tabProps"]),G=g("card",b),U=0===P.padding||"0px"===P.padding?{padding:24}:void 0,A=c.createElement("div",{className:"".concat(G,"-loading-block")}),q=c.createElement("div",{className:"".concat(G,"-loading-content"),style:U},c.createElement(m.Z,{gutter:8},c.createElement(d.Z,{span:22},A)),c.createElement(m.Z,{gutter:8},c.createElement(d.Z,{span:8},A),c.createElement(d.Z,{span:15},A)),c.createElement(m.Z,{gutter:8},c.createElement(d.Z,{span:6},A),c.createElement(d.Z,{span:18},A)),c.createElement(m.Z,{gutter:8},c.createElement(d.Z,{span:13},A),c.createElement(d.Z,{span:9},A)),c.createElement(m.Z,{gutter:8},c.createElement(d.Z,{span:4},A),c.createElement(d.Z,{span:3},A),c.createElement(d.Z,{span:16},A))),H=void 0!==V,Q=(0,r.Z)((0,r.Z)({},R),(t={},(0,a.Z)(t,H?"activeKey":"defaultActiveKey",H?V:L),(0,a.Z)(t,"tabBarExtraContent",M),t)),W=_&&_.length?c.createElement(p.Z,(0,r.Z)({size:"large"},Q,{className:"".concat(G,"-head-tabs"),onChange:function(t){var n;null===(n=e.onTabChange)||void 0===n||n.call(e,t)}}),_.map((function(e){return c.createElement(p.Z.TabPane,{tab:e.tab,disabled:e.disabled,key:e.key})}))):null;(S||E||W)&&(o=c.createElement("div",{className:"".concat(G,"-head"),style:N},c.createElement("div",{className:"".concat(G,"-head-wrapper")},S&&c.createElement("div",{className:"".concat(G,"-head-title")},S),E&&c.createElement("div",{className:"".concat(G,"-extra")},E)),W));var F,Y=j?c.createElement("div",{className:"".concat(G,"-cover")},j):null,X=c.createElement("div",{className:"".concat(G,"-body"),style:P},O?q:K),$=T&&T.length?c.createElement("ul",{className:"".concat(G,"-actions")},function(e){return e.map((function(t,n){return c.createElement("li",{style:{width:"".concat(100/e.length,"%")},key:"action-".concat(n)},c.createElement("span",null,t))}))}(T)):null,ee=(0,i.Z)(D,["onTabChange"]),te=w||y,ne=l()(G,(n={},(0,a.Z)(n,"".concat(G,"-loading"),O),(0,a.Z)(n,"".concat(G,"-bordered"),I),(0,a.Z)(n,"".concat(G,"-hoverable"),B),(0,a.Z)(n,"".concat(G,"-contain-grid"),(c.Children.forEach(e.children,(function(e){e&&e.type&&e.type===u&&(F=!0)})),F)),(0,a.Z)(n,"".concat(G,"-contain-tabs"),_&&_.length),(0,a.Z)(n,"".concat(G,"-").concat(te),te),(0,a.Z)(n,"".concat(G,"-type-").concat(z),!!z),(0,a.Z)(n,"".concat(G,"-rtl"),"rtl"===v),n),x);return c.createElement("div",(0,r.Z)({},ee,{className:ne}),o,Y,X,$)};f.Grid=u,f.Meta=function(e){return c.createElement(s.C,null,(function(t){var n=t.getPrefixCls,a=e.prefixCls,o=e.className,i=e.avatar,s=e.title,u=e.description,p=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n}(e,["prefixCls","className","avatar","title","description"]),m=n("card",a),d=l()("".concat(m,"-meta"),o),h=i?c.createElement("div",{className:"".concat(m,"-meta-avatar")},i):null,f=s?c.createElement("div",{className:"".concat(m,"-meta-title")},s):null,g=u?c.createElement("div",{className:"".concat(m,"-meta-description")},u):null,v=f||g?c.createElement("div",{className:"".concat(m,"-meta-detail")},f,g):null;return c.createElement("div",(0,r.Z)({},p,{className:d}),h,v)}))};var g=f},5806:function(e,t,n){var a=n(7228),r=n(7363),c=n(5e3);t.Z=function(){var e=(0,r.useState)({}),t=(0,a.Z)(e,2),n=t[0],o=t[1];return(0,r.useEffect)((function(){var e=c.ZP.subscribe((function(e){o(e)}));return function(){return c.ZP.unsubscribe(e)}}),[]),n}},9455:function(e,t,n){n.d(t,{ZM:function(){return C},ZP:function(){return Z}});var a=n(7870),r=n(4741),c=n(63),o=n(7228),l=n(3429),i=n(7363),s=n(2286),u=n.n(s),p=n(9591),m=n(5806),d=n(5e3),h=n(4178),f=n(754),g=n(9388),v=n(2275),y=n(8929),b=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n},x=function(e){var t,n=e.prefixCls,a=e.children,o=e.actions,l=e.extra,s=e.className,p=e.colStyle,m=b(e,["prefixCls","children","actions","extra","className","colStyle"]),d=i.useContext(C),f=d.grid,g=d.itemLayout,x=(0,i.useContext(h.E_).getPrefixCls)("list",n),E=o&&o.length>0&&i.createElement("ul",{className:"".concat(x,"-item-action"),key:"actions"},o.map((function(e,t){return i.createElement("li",{key:"".concat(x,"-item-action-").concat(t)},e,t!==o.length-1&&i.createElement("em",{className:"".concat(x,"-item-action-split")}))}))),N=f?"div":"li",Z=i.createElement(N,(0,r.Z)({},m,{className:u()("".concat(x,"-item"),(0,c.Z)({},"".concat(x,"-item-no-flex"),!("vertical"===g?l:(i.Children.forEach(a,(function(e){"string"==typeof e&&(t=!0)})),!(t&&i.Children.count(a)>1)))),s)}),"vertical"===g&&l?[i.createElement("div",{className:"".concat(x,"-item-main"),key:"content"},a,E),i.createElement("div",{className:"".concat(x,"-item-extra"),key:"extra"},l)]:[a,E,(0,y.Tm)(l,{key:"extra"})]);return f?i.createElement(v.Z,{flex:1,style:p},Z):Z};x.Meta=function(e){var t=e.prefixCls,n=e.className,a=e.avatar,c=e.title,o=e.description,l=b(e,["prefixCls","className","avatar","title","description"]),s=(0,i.useContext(h.E_).getPrefixCls)("list",t),p=u()("".concat(s,"-item-meta"),n),m=i.createElement("div",{className:"".concat(s,"-item-meta-content")},c&&i.createElement("h4",{className:"".concat(s,"-item-meta-title")},c),o&&i.createElement("div",{className:"".concat(s,"-item-meta-description")},o));return i.createElement("div",(0,r.Z)({},l,{className:p}),a&&i.createElement("div",{className:"".concat(s,"-item-meta-avatar")},a),(c||o)&&m)};var E=x,C=i.createContext({});function N(e){var t,n=e.pagination,s=void 0!==n&&n,v=e.prefixCls,y=e.bordered,b=void 0!==y&&y,x=e.split,E=void 0===x||x,N=e.className,Z=e.children,P=e.itemLayout,S=e.loadMore,O=e.grid,k=e.dataSource,I=void 0===k?[]:k,w=e.size,z=e.header,j=e.footer,T=e.loading,_=void 0!==T&&T,K=e.rowKey,V=e.renderItem,L=e.locale,M=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n}(e,["pagination","prefixCls","bordered","split","className","children","itemLayout","loadMore","grid","dataSource","size","header","footer","loading","rowKey","renderItem","locale"]),B=s&&"object"===(0,l.Z)(s)?s:{},J=i.useState(B.defaultCurrent||1),R=(0,o.Z)(J,2),D=R[0],G=R[1],U=i.useState(B.defaultPageSize||10),A=(0,o.Z)(U,2),q=A[0],H=A[1],Q=i.useContext(h.E_),W=Q.getPrefixCls,F=Q.renderEmpty,Y=Q.direction,X={},$=function(e){return function(t,n){G(t),H(n),s&&s[e]&&s[e](t,n)}},ee=$("onChange"),te=$("onShowSizeChange"),ne=W("list",v),ae=_;"boolean"==typeof ae&&(ae={spinning:ae});var re=ae&&ae.spinning,ce="";switch(w){case"large":ce="lg";break;case"small":ce="sm"}var oe=u()(ne,(t={},(0,c.Z)(t,"".concat(ne,"-vertical"),"vertical"===P),(0,c.Z)(t,"".concat(ne,"-").concat(ce),ce),(0,c.Z)(t,"".concat(ne,"-split"),E),(0,c.Z)(t,"".concat(ne,"-bordered"),b),(0,c.Z)(t,"".concat(ne,"-loading"),re),(0,c.Z)(t,"".concat(ne,"-grid"),!!O),(0,c.Z)(t,"".concat(ne,"-something-after-last-item"),!!(S||s||j)),(0,c.Z)(t,"".concat(ne,"-rtl"),"rtl"===Y),t),N),le=(0,r.Z)((0,r.Z)((0,r.Z)({},{current:1,total:0}),{total:I.length,current:D,pageSize:q}),s||{}),ie=Math.ceil(le.total/le.pageSize);le.current>ie&&(le.current=ie);var se=s?i.createElement("div",{className:"".concat(ne,"-pagination")},i.createElement(f.Z,(0,r.Z)({},le,{onChange:ee,onShowSizeChange:te}))):null,ue=(0,a.Z)(I);s&&I.length>(le.current-1)*le.pageSize&&(ue=(0,a.Z)(I).splice((le.current-1)*le.pageSize,le.pageSize));var pe=(0,m.Z)(),me=i.useMemo((function(){for(var e=0;e<d.c4.length;e+=1){var t=d.c4[e];if(pe[t])return t}}),[pe]),de=i.useMemo((function(){if(O){var e=me&&O[me]?O[me]:O.column;return e?{width:"".concat(100/e,"%"),maxWidth:"".concat(100/e,"%")}:void 0}}),[null==O?void 0:O.column,me]),he=re&&i.createElement("div",{style:{minHeight:53}});if(ue.length>0){var fe=ue.map((function(e,t){return function(e,t){return V?((n="function"==typeof K?K(e):"string"==typeof K?e[K]:e.key)||(n="list-item-".concat(t)),X[t]=n,V(e,t)):null;var n}(e,t)})),ge=i.Children.map(fe,(function(e,t){return i.createElement("div",{key:X[t],style:de},e)}));he=O?i.createElement(g.Z,{gutter:O.gutter},ge):i.createElement("ul",{className:"".concat(ne,"-items")},fe)}else Z||re||(he=function(e,t){return i.createElement("div",{className:"".concat(e,"-empty-text")},L&&L.emptyText||t("List"))}(ne,F));var ve=le.position||"bottom";return i.createElement(C.Provider,{value:{grid:O,itemLayout:P}},i.createElement("div",(0,r.Z)({className:oe},M),("top"===ve||"both"===ve)&&se,z&&i.createElement("div",{className:"".concat(ne,"-header")},z),i.createElement(p.Z,ae,he,Z),j&&i.createElement("div",{className:"".concat(ne,"-footer")},j),S||("bottom"===ve||"both"===ve)&&se))}C.Consumer,N.Item=E;var Z=N},754:function(e,t,n){n.d(t,{Z:function(){return L}});var a=n(63),r=n(4741),c=n(7363),o=n.n(c),l=n(2711),i=n(6762),s=n(3340),u=n(3841),p=n(5952),m=n(2286),d=n.n(m),h=function(e){var t,n="".concat(e.rootPrefixCls,"-item"),r=d()(n,"".concat(n,"-").concat(e.page),(t={},(0,a.Z)(t,"".concat(n,"-active"),e.active),(0,a.Z)(t,e.className,!!e.className),(0,a.Z)(t,"".concat(n,"-disabled"),!e.page),t));return o().createElement("li",{title:e.showTitle?e.page:null,className:r,onClick:function(){e.onClick(e.page)},onKeyPress:function(t){e.onKeyPress(t,e.onClick,e.page)},tabIndex:"0"},e.itemRender(e.page,"page",o().createElement("a",{rel:"nofollow"},e.page)))},f=function(e){(0,u.Z)(n,e);var t=(0,p.Z)(n);function n(){var e;(0,i.Z)(this,n);for(var a=arguments.length,r=new Array(a),c=0;c<a;c++)r[c]=arguments[c];return(e=t.call.apply(t,[this].concat(r))).state={goInputText:""},e.buildOptionText=function(t){return"".concat(t," ").concat(e.props.locale.items_per_page)},e.changeSize=function(t){e.props.changeSize(Number(t))},e.handleChange=function(t){e.setState({goInputText:t.target.value})},e.handleBlur=function(t){var n=e.props,a=n.goButton,r=n.quickGo,c=n.rootPrefixCls,o=e.state.goInputText;a||""===o||(e.setState({goInputText:""}),t.relatedTarget&&(t.relatedTarget.className.indexOf("".concat(c,"-item-link"))>=0||t.relatedTarget.className.indexOf("".concat(c,"-item"))>=0)||r(e.getValidValue()))},e.go=function(t){""!==e.state.goInputText&&(13!==t.keyCode&&"click"!==t.type||(e.setState({goInputText:""}),e.props.quickGo(e.getValidValue())))},e}return(0,s.Z)(n,[{key:"getValidValue",value:function(){var e=this.state.goInputText;return!e||isNaN(e)?void 0:Number(e)}},{key:"getPageSizeOptions",value:function(){var e=this.props,t=e.pageSize,n=e.pageSizeOptions;return n.some((function(e){return e.toString()===t.toString()}))?n:n.concat([t.toString()]).sort((function(e,t){return(isNaN(Number(e))?0:Number(e))-(isNaN(Number(t))?0:Number(t))}))}},{key:"render",value:function(){var e=this,t=this.props,n=t.pageSize,a=t.locale,r=t.rootPrefixCls,c=t.changeSize,l=t.quickGo,i=t.goButton,s=t.selectComponentClass,u=t.buildOptionText,p=t.selectPrefixCls,m=t.disabled,d=this.state.goInputText,h="".concat(r,"-options"),f=s,g=null,v=null,y=null;if(!c&&!l)return null;var b=this.getPageSizeOptions();if(c&&f){var x=b.map((function(t,n){return o().createElement(f.Option,{key:n,value:t.toString()},(u||e.buildOptionText)(t))}));g=o().createElement(f,{disabled:m,prefixCls:p,showSearch:!1,className:"".concat(h,"-size-changer"),optionLabelProp:"children",dropdownMatchSelectWidth:!1,value:(n||b[0]).toString(),onChange:this.changeSize,getPopupContainer:function(e){return e.parentNode}},x)}return l&&(i&&(y="boolean"==typeof i?o().createElement("button",{type:"button",onClick:this.go,onKeyUp:this.go,disabled:m,className:"".concat(h,"-quick-jumper-button")},a.jump_to_confirm):o().createElement("span",{onClick:this.go,onKeyUp:this.go},i)),v=o().createElement("div",{className:"".concat(h,"-quick-jumper")},a.jump_to,o().createElement("input",{disabled:m,type:"text",value:d,onChange:this.handleChange,onKeyUp:this.go,onBlur:this.handleBlur}),a.page,y)),o().createElement("li",{className:"".concat(h)},g,v)}}]),n}(o().Component);f.defaultProps={pageSizeOptions:["10","20","50","100"]};var g=f;function v(){}function y(e,t,n){var a=void 0===e?t.pageSize:e;return Math.floor((n.total-1)/a)+1}var b=function(e){(0,u.Z)(n,e);var t=(0,p.Z)(n);function n(e){var a;(0,i.Z)(this,n),(a=t.call(this,e)).getJumpPrevPage=function(){return Math.max(1,a.state.current-(a.props.showLessItems?3:5))},a.getJumpNextPage=function(){return Math.min(y(void 0,a.state,a.props),a.state.current+(a.props.showLessItems?3:5))},a.getItemIcon=function(e,t){var n=a.props.prefixCls,r=e||o().createElement("button",{type:"button","aria-label":t,className:"".concat(n,"-item-link")});return"function"==typeof e&&(r=o().createElement(e,(0,l.Z)({},a.props))),r},a.savePaginationNode=function(e){a.paginationNode=e},a.isValid=function(e){return"number"==typeof(t=e)&&isFinite(t)&&Math.floor(t)===t&&e!==a.state.current;var t},a.shouldDisplayQuickJumper=function(){var e=a.props,t=e.showQuickJumper,n=e.pageSize;return!(e.total<=n)&&t},a.handleKeyDown=function(e){38!==e.keyCode&&40!==e.keyCode||e.preventDefault()},a.handleKeyUp=function(e){var t=a.getValidValue(e);t!==a.state.currentInputValue&&a.setState({currentInputValue:t}),13===e.keyCode?a.handleChange(t):38===e.keyCode?a.handleChange(t-1):40===e.keyCode&&a.handleChange(t+1)},a.changePageSize=function(e){var t=a.state.current,n=y(e,a.state,a.props);t=t>n?n:t,0===n&&(t=a.state.current),"number"==typeof e&&("pageSize"in a.props||a.setState({pageSize:e}),"current"in a.props||a.setState({current:t,currentInputValue:t})),a.props.onShowSizeChange(t,e),"onChange"in a.props&&a.props.onChange&&a.props.onChange(t,e)},a.handleChange=function(e){var t=a.props.disabled,n=e;if(a.isValid(n)&&!t){var r=y(void 0,a.state,a.props);n>r?n=r:n<1&&(n=1),"current"in a.props||a.setState({current:n,currentInputValue:n});var c=a.state.pageSize;return a.props.onChange(n,c),n}return a.state.current},a.prev=function(){a.hasPrev()&&a.handleChange(a.state.current-1)},a.next=function(){a.hasNext()&&a.handleChange(a.state.current+1)},a.jumpPrev=function(){a.handleChange(a.getJumpPrevPage())},a.jumpNext=function(){a.handleChange(a.getJumpNextPage())},a.hasPrev=function(){return a.state.current>1},a.hasNext=function(){return a.state.current<y(void 0,a.state,a.props)},a.runIfEnter=function(e,t){if("Enter"===e.key||13===e.charCode){for(var n=arguments.length,a=new Array(n>2?n-2:0),r=2;r<n;r++)a[r-2]=arguments[r];t.apply(void 0,a)}},a.runIfEnterPrev=function(e){a.runIfEnter(e,a.prev)},a.runIfEnterNext=function(e){a.runIfEnter(e,a.next)},a.runIfEnterJumpPrev=function(e){a.runIfEnter(e,a.jumpPrev)},a.runIfEnterJumpNext=function(e){a.runIfEnter(e,a.jumpNext)},a.handleGoTO=function(e){13!==e.keyCode&&"click"!==e.type||a.handleChange(a.state.currentInputValue)};var r=e.onChange!==v;"current"in e&&!r&&console.warn("Warning: You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.");var c=e.defaultCurrent;"current"in e&&(c=e.current);var s=e.defaultPageSize;return"pageSize"in e&&(s=e.pageSize),c=Math.min(c,y(s,void 0,e)),a.state={current:c,currentInputValue:c,pageSize:s},a}return(0,s.Z)(n,[{key:"componentDidUpdate",value:function(e,t){var n=this.props.prefixCls;if(t.current!==this.state.current&&this.paginationNode){var a=this.paginationNode.querySelector(".".concat(n,"-item-").concat(t.current));a&&document.activeElement===a&&a.blur()}}},{key:"getValidValue",value:function(e){var t=e.target.value,n=y(void 0,this.state,this.props),a=this.state.currentInputValue;return""===t?t:isNaN(Number(t))?a:t>=n?n:Number(t)}},{key:"getShowSizeChanger",value:function(){var e=this.props,t=e.showSizeChanger,n=e.total,a=e.totalBoundaryShowSizeChanger;return void 0!==t?t:n>a}},{key:"renderPrev",value:function(e){var t=this.props,n=t.prevIcon,a=(0,t.itemRender)(e,"prev",this.getItemIcon(n,"prev page")),r=!this.hasPrev();return(0,c.isValidElement)(a)?(0,c.cloneElement)(a,{disabled:r}):a}},{key:"renderNext",value:function(e){var t=this.props,n=t.nextIcon,a=(0,t.itemRender)(e,"next",this.getItemIcon(n,"next page")),r=!this.hasNext();return(0,c.isValidElement)(a)?(0,c.cloneElement)(a,{disabled:r}):a}},{key:"render",value:function(){var e=this,t=this.props,n=t.prefixCls,l=t.className,i=t.style,s=t.disabled,u=t.hideOnSinglePage,p=t.total,m=t.locale,f=t.showQuickJumper,v=t.showLessItems,b=t.showTitle,x=t.showTotal,E=t.simple,C=t.itemRender,N=t.showPrevNextJumpers,Z=t.jumpPrevIcon,P=t.jumpNextIcon,S=t.selectComponentClass,O=t.selectPrefixCls,k=t.pageSizeOptions,I=this.state,w=I.current,z=I.pageSize,j=I.currentInputValue;if(!0===u&&p<=z)return null;var T=y(void 0,this.state,this.props),_=[],K=null,V=null,L=null,M=null,B=null,J=f&&f.goButton,R=v?1:2,D=w-1>0?w-1:0,G=w+1<T?w+1:T,U=Object.keys(this.props).reduce((function(t,n){return"data-"!==n.substr(0,5)&&"aria-"!==n.substr(0,5)&&"role"!==n||(t[n]=e.props[n]),t}),{});if(E)return J&&(B="boolean"==typeof J?o().createElement("button",{type:"button",onClick:this.handleGoTO,onKeyUp:this.handleGoTO},m.jump_to_confirm):o().createElement("span",{onClick:this.handleGoTO,onKeyUp:this.handleGoTO},J),B=o().createElement("li",{title:b?"".concat(m.jump_to).concat(w,"/").concat(T):null,className:"".concat(n,"-simple-pager")},B)),o().createElement("ul",(0,r.Z)({className:d()(n,"".concat(n,"-simple"),(0,a.Z)({},"".concat(n,"-disabled"),s),l),style:i,ref:this.savePaginationNode},U),o().createElement("li",{title:b?m.prev_page:null,onClick:this.prev,tabIndex:this.hasPrev()?0:null,onKeyPress:this.runIfEnterPrev,className:d()("".concat(n,"-prev"),(0,a.Z)({},"".concat(n,"-disabled"),!this.hasPrev())),"aria-disabled":!this.hasPrev()},this.renderPrev(D)),o().createElement("li",{title:b?"".concat(w,"/").concat(T):null,className:"".concat(n,"-simple-pager")},o().createElement("input",{type:"text",value:j,disabled:s,onKeyDown:this.handleKeyDown,onKeyUp:this.handleKeyUp,onChange:this.handleKeyUp,size:"3"}),o().createElement("span",{className:"".concat(n,"-slash")},"/"),T),o().createElement("li",{title:b?m.next_page:null,onClick:this.next,tabIndex:this.hasPrev()?0:null,onKeyPress:this.runIfEnterNext,className:d()("".concat(n,"-next"),(0,a.Z)({},"".concat(n,"-disabled"),!this.hasNext())),"aria-disabled":!this.hasNext()},this.renderNext(G)),B);if(T<=3+2*R){var A={locale:m,rootPrefixCls:n,onClick:this.handleChange,onKeyPress:this.runIfEnter,showTitle:b,itemRender:C};T||_.push(o().createElement(h,(0,r.Z)({},A,{key:"noPager",page:T,className:"".concat(n,"-disabled")})));for(var q=1;q<=T;q+=1){var H=w===q;_.push(o().createElement(h,(0,r.Z)({},A,{key:q,page:q,active:H})))}}else{var Q=v?m.prev_3:m.prev_5,W=v?m.next_3:m.next_5;N&&(K=o().createElement("li",{title:b?Q:null,key:"prev",onClick:this.jumpPrev,tabIndex:"0",onKeyPress:this.runIfEnterJumpPrev,className:d()("".concat(n,"-jump-prev"),(0,a.Z)({},"".concat(n,"-jump-prev-custom-icon"),!!Z))},C(this.getJumpPrevPage(),"jump-prev",this.getItemIcon(Z,"prev page"))),V=o().createElement("li",{title:b?W:null,key:"next",tabIndex:"0",onClick:this.jumpNext,onKeyPress:this.runIfEnterJumpNext,className:d()("".concat(n,"-jump-next"),(0,a.Z)({},"".concat(n,"-jump-next-custom-icon"),!!P))},C(this.getJumpNextPage(),"jump-next",this.getItemIcon(P,"next page")))),M=o().createElement(h,{locale:m,last:!0,rootPrefixCls:n,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:T,page:T,active:!1,showTitle:b,itemRender:C}),L=o().createElement(h,{locale:m,rootPrefixCls:n,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:1,page:1,active:!1,showTitle:b,itemRender:C});var F=Math.max(1,w-R),Y=Math.min(w+R,T);w-1<=R&&(Y=1+2*R),T-w<=R&&(F=T-2*R);for(var X=F;X<=Y;X+=1){var $=w===X;_.push(o().createElement(h,{locale:m,rootPrefixCls:n,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:X,page:X,active:$,showTitle:b,itemRender:C}))}w-1>=2*R&&3!==w&&(_[0]=(0,c.cloneElement)(_[0],{className:"".concat(n,"-item-after-jump-prev")}),_.unshift(K)),T-w>=2*R&&w!==T-2&&(_[_.length-1]=(0,c.cloneElement)(_[_.length-1],{className:"".concat(n,"-item-before-jump-next")}),_.push(V)),1!==F&&_.unshift(L),Y!==T&&_.push(M)}var ee=null;x&&(ee=o().createElement("li",{className:"".concat(n,"-total-text")},x(p,[0===p?0:(w-1)*z+1,w*z>p?p:w*z])));var te=!this.hasPrev()||!T,ne=!this.hasNext()||!T;return o().createElement("ul",(0,r.Z)({className:d()(n,l,(0,a.Z)({},"".concat(n,"-disabled"),s)),style:i,unselectable:"unselectable",ref:this.savePaginationNode},U),ee,o().createElement("li",{title:b?m.prev_page:null,onClick:this.prev,tabIndex:te?null:0,onKeyPress:this.runIfEnterPrev,className:d()("".concat(n,"-prev"),(0,a.Z)({},"".concat(n,"-disabled"),te)),"aria-disabled":te},this.renderPrev(D)),_,o().createElement("li",{title:b?m.next_page:null,onClick:this.next,tabIndex:ne?null:0,onKeyPress:this.runIfEnterNext,className:d()("".concat(n,"-next"),(0,a.Z)({},"".concat(n,"-disabled"),ne)),"aria-disabled":ne},this.renderNext(G)),o().createElement(g,{disabled:s,locale:m,rootPrefixCls:n,selectComponentClass:S,selectPrefixCls:O,changeSize:this.getShowSizeChanger()?this.changePageSize:null,current:w,pageSize:z,pageSizeOptions:k,quickGo:this.shouldDisplayQuickJumper()?this.handleChange:null,goButton:J}))}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n={};if("current"in e&&(n.current=e.current,e.current!==t.current&&(n.currentInputValue=n.current)),"pageSize"in e&&e.pageSize!==t.pageSize){var a=t.current,r=y(e.pageSize,t,e);a=a>r?r:a,"current"in e||(n.current=a,n.currentInputValue=a),n.pageSize=e.pageSize}return n}}]),n}(o().Component);b.defaultProps={defaultCurrent:1,total:0,defaultPageSize:10,onChange:v,className:"",selectPrefixCls:"rc-select",prefixCls:"rc-pagination",selectComponentClass:null,hideOnSinglePage:!1,showPrevNextJumpers:!0,showQuickJumper:!1,showLessItems:!1,showTitle:!0,onShowSizeChange:v,locale:{items_per_page:"条/页",jump_to:"跳至",jump_to_confirm:"确定",page:"页",prev_page:"上一页",next_page:"下一页",prev_5:"向前 5 页",next_5:"向后 5 页",prev_3:"向前 3 页",next_3:"向后 3 页"},style:{},itemRender:function(e,t,n){return n},totalBoundaryShowSizeChanger:50};var x=b,E=n(2191),C=n(8122),N=n(4632),Z={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z"}}]},name:"double-left",theme:"outlined"},P=n(3751),S=function(e,t){return c.createElement(P.Z,Object.assign({},e,{ref:t,icon:Z}))};S.displayName="DoubleLeftOutlined";var O=c.forwardRef(S),k={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z"}}]},name:"double-right",theme:"outlined"},I=function(e,t){return c.createElement(P.Z,Object.assign({},e,{ref:t,icon:k}))};I.displayName="DoubleRightOutlined";var w=c.forwardRef(I),z=n(3828),j=function(e){return c.createElement(z.Z,(0,r.Z)({size:"small"},e))};j.Option=z.Z.Option;var T=j,_=n(7416),K=n(4178),V=n(5806),L=function(e){var t=e.prefixCls,n=e.selectPrefixCls,o=e.className,l=e.size,i=e.locale,s=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n}(e,["prefixCls","selectPrefixCls","className","size","locale"]),u=(0,V.Z)().xs,p=c.useContext(K.E_),m=p.getPrefixCls,h=p.direction,f=m("pagination",t),g=function(e){var t=(0,r.Z)((0,r.Z)({},e),i),p="small"===l||!(!u||l||!s.responsive),g=m("select",n),v=d()((0,a.Z)({mini:p},"".concat(f,"-rtl"),"rtl"===h),o);return c.createElement(x,(0,r.Z)({},s,{prefixCls:f,selectPrefixCls:g},function(){var e=c.createElement("span",{className:"".concat(f,"-item-ellipsis")},"•••"),t=c.createElement("button",{className:"".concat(f,"-item-link"),type:"button",tabIndex:-1},c.createElement(C.Z,null)),n=c.createElement("button",{className:"".concat(f,"-item-link"),type:"button",tabIndex:-1},c.createElement(N.Z,null)),a=c.createElement("a",{className:"".concat(f,"-item-link")},c.createElement("div",{className:"".concat(f,"-item-container")},c.createElement(O,{className:"".concat(f,"-item-link-icon")}),e)),r=c.createElement("a",{className:"".concat(f,"-item-link")},c.createElement("div",{className:"".concat(f,"-item-container")},c.createElement(w,{className:"".concat(f,"-item-link-icon")}),e));if("rtl"===h){var o=[n,t];t=o[0],n=o[1];var l=[r,a];a=l[0],r=l[1]}return{prevIcon:t,nextIcon:n,jumpPrevIcon:a,jumpNextIcon:r}}(),{className:v,selectComponentClass:p?T:z.Z,locale:t}))};return c.createElement(_.Z,{componentName:"Pagination",defaultLocale:E.Z},g)}}}]);
2
+ //# sourceMappingURL=191.lite.js.map?ver=59d6c6957751262b22aa
public/dist/191.lite.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"191.lite.js?ver=e7cc201b0fd38612fca5","mappings":"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","sources":["webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons-svg/es/asn/LeftOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons/es/icons/LeftOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons-svg/es/asn/RightOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons/es/icons/RightOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/card/Grid.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/card/index.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/card/Meta.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/grid/hooks/useBreakpoint.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/list/Item.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/list/index.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-pagination/es/Pager.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-pagination/es/Options.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-pagination/es/KeyCode.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-pagination/es/Pagination.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-pagination/es/locale/zh_CN.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons-svg/es/asn/DoubleLeftOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons/es/icons/DoubleLeftOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons-svg/es/asn/DoubleRightOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons/es/icons/DoubleRightOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/pagination/MiniSelect.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/pagination/index.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/pagination/Pagination.js"],"sourcesContent":["// This icon file is generated automatically.\nvar LeftOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\" } }] }, \"name\": \"left\", \"theme\": \"outlined\" };\nexport default LeftOutlined;\n","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport LeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/LeftOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar LeftOutlined = function LeftOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: LeftOutlinedSvg\n }));\n};\n\nLeftOutlined.displayName = 'LeftOutlined';\nexport default /*#__PURE__*/React.forwardRef(LeftOutlined);","// This icon file is generated automatically.\nvar RightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\" } }] }, \"name\": \"right\", \"theme\": \"outlined\" };\nexport default RightOutlined;\n","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport RightOutlinedSvg from \"@ant-design/icons-svg/es/asn/RightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar RightOutlined = function RightOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: RightOutlinedSvg\n }));\n};\n\nRightOutlined.displayName = 'RightOutlined';\nexport default /*#__PURE__*/React.forwardRef(RightOutlined);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ConfigConsumer } from '../config-provider';\n\nvar Grid = function Grid(_a) {\n var prefixCls = _a.prefixCls,\n className = _a.className,\n _a$hoverable = _a.hoverable,\n hoverable = _a$hoverable === void 0 ? true : _a$hoverable,\n props = __rest(_a, [\"prefixCls\", \"className\", \"hoverable\"]);\n\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, function (_ref) {\n var getPrefixCls = _ref.getPrefixCls;\n var prefix = getPrefixCls('card', prefixCls);\n var classString = classNames(\"\".concat(prefix, \"-grid\"), className, _defineProperty({}, \"\".concat(prefix, \"-grid-hoverable\"), hoverable));\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n className: classString\n }));\n });\n};\n\nexport default Grid;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport Grid from './Grid';\nimport Meta from './Meta';\nimport Tabs from '../tabs';\nimport Row from '../row';\nimport Col from '../col';\nimport { ConfigContext } from '../config-provider';\nimport SizeContext from '../config-provider/SizeContext';\n\nfunction getAction(actions) {\n var actionList = actions.map(function (action, index) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n style: {\n width: \"\".concat(100 / actions.length, \"%\")\n },\n key: \"action-\".concat(index)\n }, /*#__PURE__*/React.createElement(\"span\", null, action))\n );\n });\n return actionList;\n}\n\nvar Card = function Card(props) {\n var _extends2, _classNames;\n\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n\n var size = React.useContext(SizeContext);\n\n var onTabChange = function onTabChange(key) {\n var _a;\n\n (_a = props.onTabChange) === null || _a === void 0 ? void 0 : _a.call(props, key);\n };\n\n var isContainGrid = function isContainGrid() {\n var containGrid;\n React.Children.forEach(props.children, function (element) {\n if (element && element.type && element.type === Grid) {\n containGrid = true;\n }\n });\n return containGrid;\n };\n\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n extra = props.extra,\n _props$headStyle = props.headStyle,\n headStyle = _props$headStyle === void 0 ? {} : _props$headStyle,\n _props$bodyStyle = props.bodyStyle,\n bodyStyle = _props$bodyStyle === void 0 ? {} : _props$bodyStyle,\n title = props.title,\n loading = props.loading,\n _props$bordered = props.bordered,\n bordered = _props$bordered === void 0 ? true : _props$bordered,\n customizeSize = props.size,\n type = props.type,\n cover = props.cover,\n actions = props.actions,\n tabList = props.tabList,\n children = props.children,\n activeTabKey = props.activeTabKey,\n defaultActiveTabKey = props.defaultActiveTabKey,\n tabBarExtraContent = props.tabBarExtraContent,\n hoverable = props.hoverable,\n _props$tabProps = props.tabProps,\n tabProps = _props$tabProps === void 0 ? {} : _props$tabProps,\n others = __rest(props, [\"prefixCls\", \"className\", \"extra\", \"headStyle\", \"bodyStyle\", \"title\", \"loading\", \"bordered\", \"size\", \"type\", \"cover\", \"actions\", \"tabList\", \"children\", \"activeTabKey\", \"defaultActiveTabKey\", \"tabBarExtraContent\", \"hoverable\", \"tabProps\"]);\n\n var prefixCls = getPrefixCls('card', customizePrefixCls);\n var loadingBlockStyle = bodyStyle.padding === 0 || bodyStyle.padding === '0px' ? {\n padding: 24\n } : undefined;\n var block = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-loading-block\")\n });\n var loadingBlock = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-loading-content\"),\n style: loadingBlockStyle\n }, /*#__PURE__*/React.createElement(Row, {\n gutter: 8\n }, /*#__PURE__*/React.createElement(Col, {\n span: 22\n }, block)), /*#__PURE__*/React.createElement(Row, {\n gutter: 8\n }, /*#__PURE__*/React.createElement(Col, {\n span: 8\n }, block), /*#__PURE__*/React.createElement(Col, {\n span: 15\n }, block)), /*#__PURE__*/React.createElement(Row, {\n gutter: 8\n }, /*#__PURE__*/React.createElement(Col, {\n span: 6\n }, block), /*#__PURE__*/React.createElement(Col, {\n span: 18\n }, block)), /*#__PURE__*/React.createElement(Row, {\n gutter: 8\n }, /*#__PURE__*/React.createElement(Col, {\n span: 13\n }, block), /*#__PURE__*/React.createElement(Col, {\n span: 9\n }, block)), /*#__PURE__*/React.createElement(Row, {\n gutter: 8\n }, /*#__PURE__*/React.createElement(Col, {\n span: 4\n }, block), /*#__PURE__*/React.createElement(Col, {\n span: 3\n }, block), /*#__PURE__*/React.createElement(Col, {\n span: 16\n }, block)));\n var hasActiveTabKey = activeTabKey !== undefined;\n\n var extraProps = _extends(_extends({}, tabProps), (_extends2 = {}, _defineProperty(_extends2, hasActiveTabKey ? 'activeKey' : 'defaultActiveKey', hasActiveTabKey ? activeTabKey : defaultActiveTabKey), _defineProperty(_extends2, \"tabBarExtraContent\", tabBarExtraContent), _extends2));\n\n var head;\n var tabs = tabList && tabList.length ? /*#__PURE__*/React.createElement(Tabs, _extends({\n size: \"large\"\n }, extraProps, {\n className: \"\".concat(prefixCls, \"-head-tabs\"),\n onChange: onTabChange\n }), tabList.map(function (item) {\n return /*#__PURE__*/React.createElement(Tabs.TabPane, {\n tab: item.tab,\n disabled: item.disabled,\n key: item.key\n });\n })) : null;\n\n if (title || extra || tabs) {\n head = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-head\"),\n style: headStyle\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-head-wrapper\")\n }, title && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-head-title\")\n }, title), extra && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-extra\")\n }, extra)), tabs);\n }\n\n var coverDom = cover ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-cover\")\n }, cover) : null;\n var body = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-body\"),\n style: bodyStyle\n }, loading ? loadingBlock : children);\n var actionDom = actions && actions.length ? /*#__PURE__*/React.createElement(\"ul\", {\n className: \"\".concat(prefixCls, \"-actions\")\n }, getAction(actions)) : null;\n var divProps = omit(others, ['onTabChange']);\n var mergedSize = customizeSize || size;\n var classString = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-loading\"), loading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-bordered\"), bordered), _defineProperty(_classNames, \"\".concat(prefixCls, \"-hoverable\"), hoverable), _defineProperty(_classNames, \"\".concat(prefixCls, \"-contain-grid\"), isContainGrid()), _defineProperty(_classNames, \"\".concat(prefixCls, \"-contain-tabs\"), tabList && tabList.length), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(mergedSize), mergedSize), _defineProperty(_classNames, \"\".concat(prefixCls, \"-type-\").concat(type), !!type), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, divProps, {\n className: classString\n }), head, coverDom, body, actionDom);\n};\n\nCard.Grid = Grid;\nCard.Meta = Meta;\nexport default Card;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ConfigConsumer } from '../config-provider';\n\nvar Meta = function Meta(props) {\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, function (_ref) {\n var getPrefixCls = _ref.getPrefixCls;\n\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n avatar = props.avatar,\n title = props.title,\n description = props.description,\n others = __rest(props, [\"prefixCls\", \"className\", \"avatar\", \"title\", \"description\"]);\n\n var prefixCls = getPrefixCls('card', customizePrefixCls);\n var classString = classNames(\"\".concat(prefixCls, \"-meta\"), className);\n var avatarDom = avatar ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-meta-avatar\")\n }, avatar) : null;\n var titleDom = title ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-meta-title\")\n }, title) : null;\n var descriptionDom = description ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-meta-description\")\n }, description) : null;\n var MetaDetail = titleDom || descriptionDom ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-meta-detail\")\n }, titleDom, descriptionDom) : null;\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, others, {\n className: classString\n }), avatarDom, MetaDetail);\n });\n};\n\nexport default Meta;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEffect, useState } from 'react';\nimport ResponsiveObserve from '../../_util/responsiveObserve';\n\nfunction useBreakpoint() {\n var _useState = useState({}),\n _useState2 = _slicedToArray(_useState, 2),\n screens = _useState2[0],\n setScreens = _useState2[1];\n\n useEffect(function () {\n var token = ResponsiveObserve.subscribe(function (supportScreens) {\n setScreens(supportScreens);\n });\n return function () {\n return ResponsiveObserve.unsubscribe(token);\n };\n }, []);\n return screens;\n}\n\nexport default useBreakpoint;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ListContext } from './index';\nimport { Col } from '../grid';\nimport { ConfigContext } from '../config-provider';\nimport { cloneElement } from '../_util/reactNode';\nexport var Meta = function Meta(_a) {\n var customizePrefixCls = _a.prefixCls,\n className = _a.className,\n avatar = _a.avatar,\n title = _a.title,\n description = _a.description,\n others = __rest(_a, [\"prefixCls\", \"className\", \"avatar\", \"title\", \"description\"]);\n\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n\n var prefixCls = getPrefixCls('list', customizePrefixCls);\n var classString = classNames(\"\".concat(prefixCls, \"-item-meta\"), className);\n var content = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-meta-content\")\n }, title && /*#__PURE__*/React.createElement(\"h4\", {\n className: \"\".concat(prefixCls, \"-item-meta-title\")\n }, title), description && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-meta-description\")\n }, description));\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, others, {\n className: classString\n }), avatar && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-meta-avatar\")\n }, avatar), (title || description) && content);\n};\n\nvar Item = function Item(_a) {\n var customizePrefixCls = _a.prefixCls,\n children = _a.children,\n actions = _a.actions,\n extra = _a.extra,\n className = _a.className,\n colStyle = _a.colStyle,\n others = __rest(_a, [\"prefixCls\", \"children\", \"actions\", \"extra\", \"className\", \"colStyle\"]);\n\n var _React$useContext2 = React.useContext(ListContext),\n grid = _React$useContext2.grid,\n itemLayout = _React$useContext2.itemLayout;\n\n var _React$useContext3 = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext3.getPrefixCls;\n\n var isItemContainsTextNodeAndNotSingular = function isItemContainsTextNodeAndNotSingular() {\n var result;\n React.Children.forEach(children, function (element) {\n if (typeof element === 'string') {\n result = true;\n }\n });\n return result && React.Children.count(children) > 1;\n };\n\n var isFlexMode = function isFlexMode() {\n if (itemLayout === 'vertical') {\n return !!extra;\n }\n\n return !isItemContainsTextNodeAndNotSingular();\n };\n\n var prefixCls = getPrefixCls('list', customizePrefixCls);\n var actionsContent = actions && actions.length > 0 && /*#__PURE__*/React.createElement(\"ul\", {\n className: \"\".concat(prefixCls, \"-item-action\"),\n key: \"actions\"\n }, actions.map(function (action, i) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n key: \"\".concat(prefixCls, \"-item-action-\").concat(i)\n }, action, i !== actions.length - 1 && /*#__PURE__*/React.createElement(\"em\", {\n className: \"\".concat(prefixCls, \"-item-action-split\")\n }))\n );\n }));\n var Element = grid ? 'div' : 'li';\n var itemChildren = /*#__PURE__*/React.createElement(Element, _extends({}, others, {\n // `li` element `onCopy` prop args is not same as `div`\n className: classNames(\"\".concat(prefixCls, \"-item\"), _defineProperty({}, \"\".concat(prefixCls, \"-item-no-flex\"), !isFlexMode()), className)\n }), itemLayout === 'vertical' && extra ? [/*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-main\"),\n key: \"content\"\n }, children, actionsContent), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-extra\"),\n key: \"extra\"\n }, extra)] : [children, actionsContent, cloneElement(extra, {\n key: 'extra'\n })]);\n return grid ? /*#__PURE__*/React.createElement(Col, {\n flex: 1,\n style: colStyle\n }, itemChildren) : itemChildren;\n};\n\nItem.Meta = Meta;\nexport default Item;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Spin from '../spin';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\nimport { responsiveArray } from '../_util/responsiveObserve';\nimport { ConfigContext } from '../config-provider';\nimport Pagination from '../pagination';\nimport { Row } from '../grid';\nimport Item from './Item';\nexport var ListContext = /*#__PURE__*/React.createContext({});\nexport var ListConsumer = ListContext.Consumer;\n\nfunction List(_a) {\n var _classNames;\n\n var _a$pagination = _a.pagination,\n pagination = _a$pagination === void 0 ? false : _a$pagination,\n customizePrefixCls = _a.prefixCls,\n _a$bordered = _a.bordered,\n bordered = _a$bordered === void 0 ? false : _a$bordered,\n _a$split = _a.split,\n split = _a$split === void 0 ? true : _a$split,\n className = _a.className,\n children = _a.children,\n itemLayout = _a.itemLayout,\n loadMore = _a.loadMore,\n grid = _a.grid,\n _a$dataSource = _a.dataSource,\n dataSource = _a$dataSource === void 0 ? [] : _a$dataSource,\n size = _a.size,\n header = _a.header,\n footer = _a.footer,\n _a$loading = _a.loading,\n loading = _a$loading === void 0 ? false : _a$loading,\n rowKey = _a.rowKey,\n renderItem = _a.renderItem,\n locale = _a.locale,\n rest = __rest(_a, [\"pagination\", \"prefixCls\", \"bordered\", \"split\", \"className\", \"children\", \"itemLayout\", \"loadMore\", \"grid\", \"dataSource\", \"size\", \"header\", \"footer\", \"loading\", \"rowKey\", \"renderItem\", \"locale\"]);\n\n var paginationObj = pagination && _typeof(pagination) === 'object' ? pagination : {};\n\n var _React$useState = React.useState(paginationObj.defaultCurrent || 1),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n paginationCurrent = _React$useState2[0],\n setPaginationCurrent = _React$useState2[1];\n\n var _React$useState3 = React.useState(paginationObj.defaultPageSize || 10),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n paginationSize = _React$useState4[0],\n setPaginationSize = _React$useState4[1];\n\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n renderEmpty = _React$useContext.renderEmpty,\n direction = _React$useContext.direction;\n\n var defaultPaginationProps = {\n current: 1,\n total: 0\n };\n var keys = {};\n\n var triggerPaginationEvent = function triggerPaginationEvent(eventName) {\n return function (page, pageSize) {\n setPaginationCurrent(page);\n setPaginationSize(pageSize);\n\n if (pagination && pagination[eventName]) {\n pagination[eventName](page, pageSize);\n }\n };\n };\n\n var onPaginationChange = triggerPaginationEvent('onChange');\n var onPaginationShowSizeChange = triggerPaginationEvent('onShowSizeChange');\n\n var renderInnerItem = function renderInnerItem(item, index) {\n if (!renderItem) return null;\n var key;\n\n if (typeof rowKey === 'function') {\n key = rowKey(item);\n } else if (typeof rowKey === 'string') {\n key = item[rowKey];\n } else {\n key = item.key;\n }\n\n if (!key) {\n key = \"list-item-\".concat(index);\n }\n\n keys[index] = key;\n return renderItem(item, index);\n };\n\n var isSomethingAfterLastItem = function isSomethingAfterLastItem() {\n return !!(loadMore || pagination || footer);\n };\n\n var renderEmptyFunc = function renderEmptyFunc(prefixCls, renderEmptyHandler) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-empty-text\")\n }, locale && locale.emptyText || renderEmptyHandler('List'));\n };\n\n var prefixCls = getPrefixCls('list', customizePrefixCls);\n var loadingProp = loading;\n\n if (typeof loadingProp === 'boolean') {\n loadingProp = {\n spinning: loadingProp\n };\n }\n\n var isLoading = loadingProp && loadingProp.spinning; // large => lg\n // small => sm\n\n var sizeCls = '';\n\n switch (size) {\n case 'large':\n sizeCls = 'lg';\n break;\n\n case 'small':\n sizeCls = 'sm';\n break;\n\n default:\n break;\n }\n\n var classString = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-vertical\"), itemLayout === 'vertical'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(sizeCls), sizeCls), _defineProperty(_classNames, \"\".concat(prefixCls, \"-split\"), split), _defineProperty(_classNames, \"\".concat(prefixCls, \"-bordered\"), bordered), _defineProperty(_classNames, \"\".concat(prefixCls, \"-loading\"), isLoading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-grid\"), !!grid), _defineProperty(_classNames, \"\".concat(prefixCls, \"-something-after-last-item\"), isSomethingAfterLastItem()), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n\n var paginationProps = _extends(_extends(_extends({}, defaultPaginationProps), {\n total: dataSource.length,\n current: paginationCurrent,\n pageSize: paginationSize\n }), pagination || {});\n\n var largestPage = Math.ceil(paginationProps.total / paginationProps.pageSize);\n\n if (paginationProps.current > largestPage) {\n paginationProps.current = largestPage;\n }\n\n var paginationContent = pagination ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-pagination\")\n }, /*#__PURE__*/React.createElement(Pagination, _extends({}, paginationProps, {\n onChange: onPaginationChange,\n onShowSizeChange: onPaginationShowSizeChange\n }))) : null;\n\n var splitDataSource = _toConsumableArray(dataSource);\n\n if (pagination) {\n if (dataSource.length > (paginationProps.current - 1) * paginationProps.pageSize) {\n splitDataSource = _toConsumableArray(dataSource).splice((paginationProps.current - 1) * paginationProps.pageSize, paginationProps.pageSize);\n }\n }\n\n var screens = useBreakpoint();\n var currentBreakpoint = React.useMemo(function () {\n for (var i = 0; i < responsiveArray.length; i += 1) {\n var breakpoint = responsiveArray[i];\n\n if (screens[breakpoint]) {\n return breakpoint;\n }\n }\n\n return undefined;\n }, [screens]);\n var colStyle = React.useMemo(function () {\n if (!grid) {\n return undefined;\n }\n\n var columnCount = currentBreakpoint && grid[currentBreakpoint] ? grid[currentBreakpoint] : grid.column;\n\n if (columnCount) {\n return {\n width: \"\".concat(100 / columnCount, \"%\"),\n maxWidth: \"\".concat(100 / columnCount, \"%\")\n };\n }\n }, [grid === null || grid === void 0 ? void 0 : grid.column, currentBreakpoint]);\n var childrenContent = isLoading && /*#__PURE__*/React.createElement(\"div\", {\n style: {\n minHeight: 53\n }\n });\n\n if (splitDataSource.length > 0) {\n var items = splitDataSource.map(function (item, index) {\n return renderInnerItem(item, index);\n });\n var childrenList = React.Children.map(items, function (child, index) {\n return /*#__PURE__*/React.createElement(\"div\", {\n key: keys[index],\n style: colStyle\n }, child);\n });\n childrenContent = grid ? /*#__PURE__*/React.createElement(Row, {\n gutter: grid.gutter\n }, childrenList) : /*#__PURE__*/React.createElement(\"ul\", {\n className: \"\".concat(prefixCls, \"-items\")\n }, items);\n } else if (!children && !isLoading) {\n childrenContent = renderEmptyFunc(prefixCls, renderEmpty);\n }\n\n var paginationPosition = paginationProps.position || 'bottom';\n return /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: {\n grid: grid,\n itemLayout: itemLayout\n }\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classString\n }, rest), (paginationPosition === 'top' || paginationPosition === 'both') && paginationContent, header && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-header\")\n }, header), /*#__PURE__*/React.createElement(Spin, loadingProp, childrenContent, children), footer && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-footer\")\n }, footer), loadMore || (paginationPosition === 'bottom' || paginationPosition === 'both') && paginationContent));\n}\n\nList.Item = Item;\nexport default List;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\n/* eslint react/prop-types: 0 */\nimport React from 'react';\nimport classNames from 'classnames';\n\nvar Pager = function Pager(props) {\n var _classNames;\n\n var prefixCls = \"\".concat(props.rootPrefixCls, \"-item\");\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(props.page), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), props.active), _defineProperty(_classNames, props.className, !!props.className), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), !props.page), _classNames));\n\n var handleClick = function handleClick() {\n props.onClick(props.page);\n };\n\n var handleKeyPress = function handleKeyPress(e) {\n props.onKeyPress(e, props.onClick, props.page);\n };\n\n return /*#__PURE__*/React.createElement(\"li\", {\n title: props.showTitle ? props.page : null,\n className: cls,\n onClick: handleClick,\n onKeyPress: handleKeyPress,\n tabIndex: \"0\"\n }, props.itemRender(props.page, 'page', /*#__PURE__*/React.createElement(\"a\", {\n rel: \"nofollow\"\n }, props.page)));\n};\n\nexport default Pager;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint react/prop-types: 0 */\nimport React from 'react';\nimport KEYCODE from './KeyCode';\n\nvar Options = /*#__PURE__*/function (_React$Component) {\n _inherits(Options, _React$Component);\n\n var _super = _createSuper(Options);\n\n function Options() {\n var _this;\n\n _classCallCheck(this, Options);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n goInputText: ''\n };\n\n _this.buildOptionText = function (value) {\n return \"\".concat(value, \" \").concat(_this.props.locale.items_per_page);\n };\n\n _this.changeSize = function (value) {\n _this.props.changeSize(Number(value));\n };\n\n _this.handleChange = function (e) {\n _this.setState({\n goInputText: e.target.value\n });\n };\n\n _this.handleBlur = function (e) {\n var _this$props = _this.props,\n goButton = _this$props.goButton,\n quickGo = _this$props.quickGo,\n rootPrefixCls = _this$props.rootPrefixCls;\n var goInputText = _this.state.goInputText;\n\n if (goButton || goInputText === '') {\n return;\n }\n\n _this.setState({\n goInputText: ''\n });\n\n if (e.relatedTarget && (e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item-link\")) >= 0 || e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item\")) >= 0)) {\n return;\n }\n\n quickGo(_this.getValidValue());\n };\n\n _this.go = function (e) {\n var goInputText = _this.state.goInputText;\n\n if (goInputText === '') {\n return;\n }\n\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.setState({\n goInputText: ''\n });\n\n _this.props.quickGo(_this.getValidValue());\n }\n };\n\n return _this;\n }\n\n _createClass(Options, [{\n key: \"getValidValue\",\n value: function getValidValue() {\n var goInputText = this.state.goInputText; // eslint-disable-next-line no-restricted-globals\n\n return !goInputText || isNaN(goInputText) ? undefined : Number(goInputText);\n }\n }, {\n key: \"getPageSizeOptions\",\n value: function getPageSizeOptions() {\n var _this$props2 = this.props,\n pageSize = _this$props2.pageSize,\n pageSizeOptions = _this$props2.pageSizeOptions;\n\n if (pageSizeOptions.some(function (option) {\n return option.toString() === pageSize.toString();\n })) {\n return pageSizeOptions;\n }\n\n return pageSizeOptions.concat([pageSize.toString()]).sort(function (a, b) {\n // eslint-disable-next-line no-restricted-globals\n var numberA = isNaN(Number(a)) ? 0 : Number(a); // eslint-disable-next-line no-restricted-globals\n\n var numberB = isNaN(Number(b)) ? 0 : Number(b);\n return numberA - numberB;\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n pageSize = _this$props3.pageSize,\n locale = _this$props3.locale,\n rootPrefixCls = _this$props3.rootPrefixCls,\n changeSize = _this$props3.changeSize,\n quickGo = _this$props3.quickGo,\n goButton = _this$props3.goButton,\n selectComponentClass = _this$props3.selectComponentClass,\n buildOptionText = _this$props3.buildOptionText,\n selectPrefixCls = _this$props3.selectPrefixCls,\n disabled = _this$props3.disabled;\n var goInputText = this.state.goInputText;\n var prefixCls = \"\".concat(rootPrefixCls, \"-options\");\n var Select = selectComponentClass;\n var changeSelect = null;\n var goInput = null;\n var gotoButton = null;\n\n if (!changeSize && !quickGo) {\n return null;\n }\n\n var pageSizeOptions = this.getPageSizeOptions();\n\n if (changeSize && Select) {\n var options = pageSizeOptions.map(function (opt, i) {\n return /*#__PURE__*/React.createElement(Select.Option, {\n key: i,\n value: opt.toString()\n }, (buildOptionText || _this2.buildOptionText)(opt));\n });\n changeSelect = /*#__PURE__*/React.createElement(Select, {\n disabled: disabled,\n prefixCls: selectPrefixCls,\n showSearch: false,\n className: \"\".concat(prefixCls, \"-size-changer\"),\n optionLabelProp: \"children\",\n dropdownMatchSelectWidth: false,\n value: (pageSize || pageSizeOptions[0]).toString(),\n onChange: this.changeSize,\n getPopupContainer: function getPopupContainer(triggerNode) {\n return triggerNode.parentNode;\n }\n }, options);\n }\n\n if (quickGo) {\n if (goButton) {\n gotoButton = typeof goButton === 'boolean' ? /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.go,\n onKeyUp: this.go,\n disabled: disabled,\n className: \"\".concat(prefixCls, \"-quick-jumper-button\")\n }, locale.jump_to_confirm) : /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.go,\n onKeyUp: this.go\n }, goButton);\n }\n\n goInput = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-quick-jumper\")\n }, locale.jump_to, /*#__PURE__*/React.createElement(\"input\", {\n disabled: disabled,\n type: \"text\",\n value: goInputText,\n onChange: this.handleChange,\n onKeyUp: this.go,\n onBlur: this.handleBlur\n }), locale.page, gotoButton);\n }\n\n return /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls)\n }, changeSelect, goInput);\n }\n }]);\n\n return Options;\n}(React.Component);\n\nOptions.defaultProps = {\n pageSizeOptions: ['10', '20', '50', '100']\n};\nexport default Options;","export default {\n ZERO: 48,\n NINE: 57,\n NUMPAD_ZERO: 96,\n NUMPAD_NINE: 105,\n BACKSPACE: 8,\n DELETE: 46,\n ENTER: 13,\n ARROW_UP: 38,\n ARROW_DOWN: 40\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint react/prop-types: 0 */\nimport React, { cloneElement, isValidElement } from 'react';\nimport classNames from 'classnames';\nimport Pager from './Pager';\nimport Options from './Options';\nimport KEYCODE from './KeyCode';\nimport LOCALE from './locale/zh_CN';\n\nfunction noop() {}\n\nfunction isInteger(value) {\n return (// eslint-disable-next-line no-restricted-globals\n typeof value === 'number' && isFinite(value) && Math.floor(value) === value\n );\n}\n\nfunction defaultItemRender(page, type, element) {\n return element;\n}\n\nfunction calculatePage(p, state, props) {\n var pageSize = typeof p === 'undefined' ? state.pageSize : p;\n return Math.floor((props.total - 1) / pageSize) + 1;\n}\n\nvar Pagination = /*#__PURE__*/function (_React$Component) {\n _inherits(Pagination, _React$Component);\n\n var _super = _createSuper(Pagination);\n\n function Pagination(props) {\n var _this;\n\n _classCallCheck(this, Pagination);\n\n _this = _super.call(this, props);\n\n _this.getJumpPrevPage = function () {\n return Math.max(1, _this.state.current - (_this.props.showLessItems ? 3 : 5));\n };\n\n _this.getJumpNextPage = function () {\n return Math.min(calculatePage(undefined, _this.state, _this.props), _this.state.current + (_this.props.showLessItems ? 3 : 5));\n };\n\n _this.getItemIcon = function (icon, label) {\n var prefixCls = _this.props.prefixCls;\n var iconNode = icon || /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": label,\n className: \"\".concat(prefixCls, \"-item-link\")\n });\n\n if (typeof icon === 'function') {\n iconNode = /*#__PURE__*/React.createElement(icon, _objectSpread({}, _this.props));\n }\n\n return iconNode;\n };\n\n _this.savePaginationNode = function (node) {\n _this.paginationNode = node;\n };\n\n _this.isValid = function (page) {\n return isInteger(page) && page !== _this.state.current;\n };\n\n _this.shouldDisplayQuickJumper = function () {\n var _this$props = _this.props,\n showQuickJumper = _this$props.showQuickJumper,\n pageSize = _this$props.pageSize,\n total = _this$props.total;\n\n if (total <= pageSize) {\n return false;\n }\n\n return showQuickJumper;\n };\n\n _this.handleKeyDown = function (e) {\n if (e.keyCode === KEYCODE.ARROW_UP || e.keyCode === KEYCODE.ARROW_DOWN) {\n e.preventDefault();\n }\n };\n\n _this.handleKeyUp = function (e) {\n var value = _this.getValidValue(e);\n\n var currentInputValue = _this.state.currentInputValue;\n\n if (value !== currentInputValue) {\n _this.setState({\n currentInputValue: value\n });\n }\n\n if (e.keyCode === KEYCODE.ENTER) {\n _this.handleChange(value);\n } else if (e.keyCode === KEYCODE.ARROW_UP) {\n _this.handleChange(value - 1);\n } else if (e.keyCode === KEYCODE.ARROW_DOWN) {\n _this.handleChange(value + 1);\n }\n };\n\n _this.changePageSize = function (size) {\n var current = _this.state.current;\n var newCurrent = calculatePage(size, _this.state, _this.props);\n current = current > newCurrent ? newCurrent : current; // fix the issue:\n // Once 'total' is 0, 'current' in 'onShowSizeChange' is 0, which is not correct.\n\n if (newCurrent === 0) {\n // eslint-disable-next-line prefer-destructuring\n current = _this.state.current;\n }\n\n if (typeof size === 'number') {\n if (!('pageSize' in _this.props)) {\n _this.setState({\n pageSize: size\n });\n }\n\n if (!('current' in _this.props)) {\n _this.setState({\n current: current,\n currentInputValue: current\n });\n }\n }\n\n _this.props.onShowSizeChange(current, size);\n\n if ('onChange' in _this.props && _this.props.onChange) {\n _this.props.onChange(current, size);\n }\n };\n\n _this.handleChange = function (p) {\n var disabled = _this.props.disabled;\n var page = p;\n\n if (_this.isValid(page) && !disabled) {\n var currentPage = calculatePage(undefined, _this.state, _this.props);\n\n if (page > currentPage) {\n page = currentPage;\n } else if (page < 1) {\n page = 1;\n }\n\n if (!('current' in _this.props)) {\n _this.setState({\n current: page,\n currentInputValue: page\n });\n }\n\n var pageSize = _this.state.pageSize;\n\n _this.props.onChange(page, pageSize);\n\n return page;\n }\n\n return _this.state.current;\n };\n\n _this.prev = function () {\n if (_this.hasPrev()) {\n _this.handleChange(_this.state.current - 1);\n }\n };\n\n _this.next = function () {\n if (_this.hasNext()) {\n _this.handleChange(_this.state.current + 1);\n }\n };\n\n _this.jumpPrev = function () {\n _this.handleChange(_this.getJumpPrevPage());\n };\n\n _this.jumpNext = function () {\n _this.handleChange(_this.getJumpNextPage());\n };\n\n _this.hasPrev = function () {\n return _this.state.current > 1;\n };\n\n _this.hasNext = function () {\n return _this.state.current < calculatePage(undefined, _this.state, _this.props);\n };\n\n _this.runIfEnter = function (event, callback) {\n if (event.key === 'Enter' || event.charCode === 13) {\n for (var _len = arguments.length, restParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n restParams[_key - 2] = arguments[_key];\n }\n\n callback.apply(void 0, restParams);\n }\n };\n\n _this.runIfEnterPrev = function (e) {\n _this.runIfEnter(e, _this.prev);\n };\n\n _this.runIfEnterNext = function (e) {\n _this.runIfEnter(e, _this.next);\n };\n\n _this.runIfEnterJumpPrev = function (e) {\n _this.runIfEnter(e, _this.jumpPrev);\n };\n\n _this.runIfEnterJumpNext = function (e) {\n _this.runIfEnter(e, _this.jumpNext);\n };\n\n _this.handleGoTO = function (e) {\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.handleChange(_this.state.currentInputValue);\n }\n };\n\n var hasOnChange = props.onChange !== noop;\n var hasCurrent = ('current' in props);\n\n if (hasCurrent && !hasOnChange) {\n // eslint-disable-next-line no-console\n console.warn('Warning: You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.');\n }\n\n var _current = props.defaultCurrent;\n\n if ('current' in props) {\n // eslint-disable-next-line prefer-destructuring\n _current = props.current;\n }\n\n var _pageSize = props.defaultPageSize;\n\n if ('pageSize' in props) {\n // eslint-disable-next-line prefer-destructuring\n _pageSize = props.pageSize;\n }\n\n _current = Math.min(_current, calculatePage(_pageSize, undefined, props));\n _this.state = {\n current: _current,\n currentInputValue: _current,\n pageSize: _pageSize\n };\n return _this;\n }\n\n _createClass(Pagination, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n // When current page change, fix focused style of prev item\n // A hacky solution of https://github.com/ant-design/ant-design/issues/8948\n var prefixCls = this.props.prefixCls;\n\n if (prevState.current !== this.state.current && this.paginationNode) {\n var lastCurrentNode = this.paginationNode.querySelector(\".\".concat(prefixCls, \"-item-\").concat(prevState.current));\n\n if (lastCurrentNode && document.activeElement === lastCurrentNode) {\n lastCurrentNode.blur();\n }\n }\n }\n }, {\n key: \"getValidValue\",\n value: function getValidValue(e) {\n var inputValue = e.target.value;\n var allPages = calculatePage(undefined, this.state, this.props);\n var currentInputValue = this.state.currentInputValue;\n var value;\n\n if (inputValue === '') {\n value = inputValue; // eslint-disable-next-line no-restricted-globals\n } else if (isNaN(Number(inputValue))) {\n value = currentInputValue;\n } else if (inputValue >= allPages) {\n value = allPages;\n } else {\n value = Number(inputValue);\n }\n\n return value;\n }\n }, {\n key: \"getShowSizeChanger\",\n value: function getShowSizeChanger() {\n var _this$props2 = this.props,\n showSizeChanger = _this$props2.showSizeChanger,\n total = _this$props2.total,\n totalBoundaryShowSizeChanger = _this$props2.totalBoundaryShowSizeChanger;\n\n if (typeof showSizeChanger !== 'undefined') {\n return showSizeChanger;\n }\n\n return total > totalBoundaryShowSizeChanger;\n }\n }, {\n key: \"renderPrev\",\n value: function renderPrev(prevPage) {\n var _this$props3 = this.props,\n prevIcon = _this$props3.prevIcon,\n itemRender = _this$props3.itemRender;\n var prevButton = itemRender(prevPage, 'prev', this.getItemIcon(prevIcon, 'prev page'));\n var disabled = !this.hasPrev();\n return /*#__PURE__*/isValidElement(prevButton) ? /*#__PURE__*/cloneElement(prevButton, {\n disabled: disabled\n }) : prevButton;\n }\n }, {\n key: \"renderNext\",\n value: function renderNext(nextPage) {\n var _this$props4 = this.props,\n nextIcon = _this$props4.nextIcon,\n itemRender = _this$props4.itemRender;\n var nextButton = itemRender(nextPage, 'next', this.getItemIcon(nextIcon, 'next page'));\n var disabled = !this.hasNext();\n return /*#__PURE__*/isValidElement(nextButton) ? /*#__PURE__*/cloneElement(nextButton, {\n disabled: disabled\n }) : nextButton;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props5 = this.props,\n prefixCls = _this$props5.prefixCls,\n className = _this$props5.className,\n style = _this$props5.style,\n disabled = _this$props5.disabled,\n hideOnSinglePage = _this$props5.hideOnSinglePage,\n total = _this$props5.total,\n locale = _this$props5.locale,\n showQuickJumper = _this$props5.showQuickJumper,\n showLessItems = _this$props5.showLessItems,\n showTitle = _this$props5.showTitle,\n showTotal = _this$props5.showTotal,\n simple = _this$props5.simple,\n itemRender = _this$props5.itemRender,\n showPrevNextJumpers = _this$props5.showPrevNextJumpers,\n jumpPrevIcon = _this$props5.jumpPrevIcon,\n jumpNextIcon = _this$props5.jumpNextIcon,\n selectComponentClass = _this$props5.selectComponentClass,\n selectPrefixCls = _this$props5.selectPrefixCls,\n pageSizeOptions = _this$props5.pageSizeOptions;\n var _this$state = this.state,\n current = _this$state.current,\n pageSize = _this$state.pageSize,\n currentInputValue = _this$state.currentInputValue; // When hideOnSinglePage is true and there is only 1 page, hide the pager\n\n if (hideOnSinglePage === true && total <= pageSize) {\n return null;\n }\n\n var allPages = calculatePage(undefined, this.state, this.props);\n var pagerList = [];\n var jumpPrev = null;\n var jumpNext = null;\n var firstPager = null;\n var lastPager = null;\n var gotoButton = null;\n var goButton = showQuickJumper && showQuickJumper.goButton;\n var pageBufferSize = showLessItems ? 1 : 2;\n var prevPage = current - 1 > 0 ? current - 1 : 0;\n var nextPage = current + 1 < allPages ? current + 1 : allPages;\n var dataOrAriaAttributeProps = Object.keys(this.props).reduce(function (prev, key) {\n if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role') {\n // eslint-disable-next-line no-param-reassign\n prev[key] = _this2.props[key];\n }\n\n return prev;\n }, {});\n\n if (simple) {\n if (goButton) {\n if (typeof goButton === 'boolean') {\n gotoButton = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, locale.jump_to_confirm);\n } else {\n gotoButton = /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, goButton);\n }\n\n gotoButton = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(locale.jump_to).concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, gotoButton);\n }\n\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-simple\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), className),\n style: style,\n ref: this.savePaginationNode\n }, dataOrAriaAttributeProps), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasPrev())),\n \"aria-disabled\": !this.hasPrev()\n }, this.renderPrev(prevPage)), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, /*#__PURE__*/React.createElement(\"input\", {\n type: \"text\",\n value: currentInputValue,\n disabled: disabled,\n onKeyDown: this.handleKeyDown,\n onKeyUp: this.handleKeyUp,\n onChange: this.handleKeyUp,\n size: \"3\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-slash\")\n }, \"/\"), allPages), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasNext())),\n \"aria-disabled\": !this.hasNext()\n }, this.renderNext(nextPage)), gotoButton);\n }\n\n if (allPages <= 3 + pageBufferSize * 2) {\n var pagerProps = {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n showTitle: showTitle,\n itemRender: itemRender\n };\n\n if (!allPages) {\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: \"noPager\",\n page: allPages,\n className: \"\".concat(prefixCls, \"-disabled\")\n })));\n }\n\n for (var i = 1; i <= allPages; i += 1) {\n var active = current === i;\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: i,\n page: i,\n active: active\n })));\n }\n } else {\n var prevItemTitle = showLessItems ? locale.prev_3 : locale.prev_5;\n var nextItemTitle = showLessItems ? locale.next_3 : locale.next_5;\n\n if (showPrevNextJumpers) {\n jumpPrev = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? prevItemTitle : null,\n key: \"prev\",\n onClick: this.jumpPrev,\n tabIndex: \"0\",\n onKeyPress: this.runIfEnterJumpPrev,\n className: classNames(\"\".concat(prefixCls, \"-jump-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-prev-custom-icon\"), !!jumpPrevIcon))\n }, itemRender(this.getJumpPrevPage(), 'jump-prev', this.getItemIcon(jumpPrevIcon, 'prev page')));\n jumpNext = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? nextItemTitle : null,\n key: \"next\",\n tabIndex: \"0\",\n onClick: this.jumpNext,\n onKeyPress: this.runIfEnterJumpNext,\n className: classNames(\"\".concat(prefixCls, \"-jump-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-next-custom-icon\"), !!jumpNextIcon))\n }, itemRender(this.getJumpNextPage(), 'jump-next', this.getItemIcon(jumpNextIcon, 'next page')));\n }\n\n lastPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n last: true,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: allPages,\n page: allPages,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n firstPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: 1,\n page: 1,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n var left = Math.max(1, current - pageBufferSize);\n var right = Math.min(current + pageBufferSize, allPages);\n\n if (current - 1 <= pageBufferSize) {\n right = 1 + pageBufferSize * 2;\n }\n\n if (allPages - current <= pageBufferSize) {\n left = allPages - pageBufferSize * 2;\n }\n\n for (var _i = left; _i <= right; _i += 1) {\n var _active = current === _i;\n\n pagerList.push( /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: _i,\n page: _i,\n active: _active,\n showTitle: showTitle,\n itemRender: itemRender\n }));\n }\n\n if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {\n pagerList[0] = /*#__PURE__*/cloneElement(pagerList[0], {\n className: \"\".concat(prefixCls, \"-item-after-jump-prev\")\n });\n pagerList.unshift(jumpPrev);\n }\n\n if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {\n pagerList[pagerList.length - 1] = /*#__PURE__*/cloneElement(pagerList[pagerList.length - 1], {\n className: \"\".concat(prefixCls, \"-item-before-jump-next\")\n });\n pagerList.push(jumpNext);\n }\n\n if (left !== 1) {\n pagerList.unshift(firstPager);\n }\n\n if (right !== allPages) {\n pagerList.push(lastPager);\n }\n }\n\n var totalText = null;\n\n if (showTotal) {\n totalText = /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls, \"-total-text\")\n }, showTotal(total, [total === 0 ? 0 : (current - 1) * pageSize + 1, current * pageSize > total ? total : current * pageSize]));\n }\n\n var prevDisabled = !this.hasPrev() || !allPages;\n var nextDisabled = !this.hasNext() || !allPages;\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, className, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled)),\n style: style,\n unselectable: \"unselectable\",\n ref: this.savePaginationNode\n }, dataOrAriaAttributeProps), totalText, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: prevDisabled ? null : 0,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), prevDisabled)),\n \"aria-disabled\": prevDisabled\n }, this.renderPrev(prevPage)), pagerList, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: nextDisabled ? null : 0,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), nextDisabled)),\n \"aria-disabled\": nextDisabled\n }, this.renderNext(nextPage)), /*#__PURE__*/React.createElement(Options, {\n disabled: disabled,\n locale: locale,\n rootPrefixCls: prefixCls,\n selectComponentClass: selectComponentClass,\n selectPrefixCls: selectPrefixCls,\n changeSize: this.getShowSizeChanger() ? this.changePageSize : null,\n current: current,\n pageSize: pageSize,\n pageSizeOptions: pageSizeOptions,\n quickGo: this.shouldDisplayQuickJumper() ? this.handleChange : null,\n goButton: goButton\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, prevState) {\n var newState = {};\n\n if ('current' in props) {\n newState.current = props.current;\n\n if (props.current !== prevState.current) {\n newState.currentInputValue = newState.current;\n }\n }\n\n if ('pageSize' in props && props.pageSize !== prevState.pageSize) {\n var current = prevState.current;\n var newCurrent = calculatePage(props.pageSize, prevState, props);\n current = current > newCurrent ? newCurrent : current;\n\n if (!('current' in props)) {\n newState.current = current;\n newState.currentInputValue = current;\n }\n\n newState.pageSize = props.pageSize;\n }\n\n return newState;\n }\n }]);\n\n return Pagination;\n}(React.Component);\n\nPagination.defaultProps = {\n defaultCurrent: 1,\n total: 0,\n defaultPageSize: 10,\n onChange: noop,\n className: '',\n selectPrefixCls: 'rc-select',\n prefixCls: 'rc-pagination',\n selectComponentClass: null,\n hideOnSinglePage: false,\n showPrevNextJumpers: true,\n showQuickJumper: false,\n showLessItems: false,\n showTitle: true,\n onShowSizeChange: noop,\n locale: LOCALE,\n style: {},\n itemRender: defaultItemRender,\n totalBoundaryShowSizeChanger: 50\n};\nexport default Pagination;","export default {\n // Options.jsx\n items_per_page: '条/页',\n jump_to: '跳至',\n jump_to_confirm: '确定',\n page: '页',\n // Pagination.jsx\n prev_page: '上一页',\n next_page: '下一页',\n prev_5: '向前 5 页',\n next_5: '向后 5 页',\n prev_3: '向前 3 页',\n next_3: '向后 3 页'\n};","// This icon file is generated automatically.\nvar DoubleLeftOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z\" } }] }, \"name\": \"double-left\", \"theme\": \"outlined\" };\nexport default DoubleLeftOutlined;\n","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport DoubleLeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleLeftOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DoubleLeftOutlined = function DoubleLeftOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: DoubleLeftOutlinedSvg\n }));\n};\n\nDoubleLeftOutlined.displayName = 'DoubleLeftOutlined';\nexport default /*#__PURE__*/React.forwardRef(DoubleLeftOutlined);","// This icon file is generated automatically.\nvar DoubleRightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\" } }] }, \"name\": \"double-right\", \"theme\": \"outlined\" };\nexport default DoubleRightOutlined;\n","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport DoubleRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleRightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DoubleRightOutlined = function DoubleRightOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: DoubleRightOutlinedSvg\n }));\n};\n\nDoubleRightOutlined.displayName = 'DoubleRightOutlined';\nexport default /*#__PURE__*/React.forwardRef(DoubleRightOutlined);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Select from '../select';\n\nvar MiniSelect = function MiniSelect(props) {\n return /*#__PURE__*/React.createElement(Select, _extends({\n size: \"small\"\n }, props));\n};\n\nMiniSelect.Option = Select.Option;\nexport default MiniSelect;","import Pagination from './Pagination';\nexport default Pagination;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport RcPagination from 'rc-pagination';\nimport enUS from \"rc-pagination/es/locale/en_US\";\nimport classNames from 'classnames';\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport DoubleLeftOutlined from \"@ant-design/icons/es/icons/DoubleLeftOutlined\";\nimport DoubleRightOutlined from \"@ant-design/icons/es/icons/DoubleRightOutlined\";\nimport MiniSelect from './MiniSelect';\nimport Select from '../select';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport { ConfigContext } from '../config-provider';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\n\nvar Pagination = function Pagination(_a) {\n var customizePrefixCls = _a.prefixCls,\n customizeSelectPrefixCls = _a.selectPrefixCls,\n className = _a.className,\n size = _a.size,\n customLocale = _a.locale,\n restProps = __rest(_a, [\"prefixCls\", \"selectPrefixCls\", \"className\", \"size\", \"locale\"]);\n\n var _useBreakpoint = useBreakpoint(),\n xs = _useBreakpoint.xs;\n\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n\n var prefixCls = getPrefixCls('pagination', customizePrefixCls);\n\n var getIconsProps = function getIconsProps() {\n var ellipsis = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-item-ellipsis\")\n }, \"\\u2022\\u2022\\u2022\");\n var prevIcon = /*#__PURE__*/React.createElement(\"button\", {\n className: \"\".concat(prefixCls, \"-item-link\"),\n type: \"button\",\n tabIndex: -1\n }, /*#__PURE__*/React.createElement(LeftOutlined, null));\n var nextIcon = /*#__PURE__*/React.createElement(\"button\", {\n className: \"\".concat(prefixCls, \"-item-link\"),\n type: \"button\",\n tabIndex: -1\n }, /*#__PURE__*/React.createElement(RightOutlined, null));\n var jumpPrevIcon = /*#__PURE__*/React.createElement(\"a\", {\n className: \"\".concat(prefixCls, \"-item-link\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-container\")\n }, /*#__PURE__*/React.createElement(DoubleLeftOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }), ellipsis));\n var jumpNextIcon = /*#__PURE__*/React.createElement(\"a\", {\n className: \"\".concat(prefixCls, \"-item-link\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-container\")\n }, /*#__PURE__*/React.createElement(DoubleRightOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }), ellipsis)); // change arrows direction in right-to-left direction\n\n if (direction === 'rtl') {\n var _ref = [nextIcon, prevIcon];\n prevIcon = _ref[0];\n nextIcon = _ref[1];\n var _ref2 = [jumpNextIcon, jumpPrevIcon];\n jumpPrevIcon = _ref2[0];\n jumpNextIcon = _ref2[1];\n }\n\n return {\n prevIcon: prevIcon,\n nextIcon: nextIcon,\n jumpPrevIcon: jumpPrevIcon,\n jumpNextIcon: jumpNextIcon\n };\n };\n\n var renderPagination = function renderPagination(contextLocale) {\n var locale = _extends(_extends({}, contextLocale), customLocale);\n\n var isSmall = size === 'small' || !!(xs && !size && restProps.responsive);\n var selectPrefixCls = getPrefixCls('select', customizeSelectPrefixCls);\n var extendedClassName = classNames(_defineProperty({\n mini: isSmall\n }, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), className);\n return /*#__PURE__*/React.createElement(RcPagination, _extends({}, restProps, {\n prefixCls: prefixCls,\n selectPrefixCls: selectPrefixCls\n }, getIconsProps(), {\n className: extendedClassName,\n selectComponentClass: isSmall ? MiniSelect : Select,\n locale: locale\n }));\n };\n\n return /*#__PURE__*/React.createElement(LocaleReceiver, {\n componentName: \"Pagination\",\n defaultLocale: enUS\n }, renderPagination);\n};\n\nexport default Pagination;"],"names":["props","ref","AntdIcon","Object","assign","icon","displayName","_a","prefixCls","className","_a$hoverable","hoverable","s","e","t","p","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__rest","C","_ref","prefix","getPrefixCls","classString","concat","Card","_extends2","_classNames","head","_React$useContext","direction","size","SizeContext","customizePrefixCls","extra","_props$headStyle","headStyle","_props$bodyStyle","bodyStyle","title","loading","_props$bordered","bordered","customizeSize","type","cover","actions","tabList","children","activeTabKey","defaultActiveTabKey","tabBarExtraContent","_props$tabProps","tabProps","others","loadingBlockStyle","padding","undefined","block","loadingBlock","style","gutter","span","hasActiveTabKey","extraProps","tabs","onChange","key","onTabChange","map","item","tab","disabled","containGrid","coverDom","body","actionDom","action","index","width","getAction","divProps","omit","mergedSize","element","Grid","Meta","avatar","description","avatarDom","titleDom","descriptionDom","MetaDetail","_useState","useState","_useState2","screens","setScreens","useEffect","token","supportScreens","Item","result","colStyle","_React$useContext2","ListContext","grid","itemLayout","actionsContent","Element","itemChildren","flex","content","List","_a$pagination","pagination","_a$bordered","_a$split","split","loadMore","_a$dataSource","dataSource","header","footer","_a$loading","rowKey","renderItem","locale","rest","paginationObj","_React$useState","defaultCurrent","_React$useState2","paginationCurrent","setPaginationCurrent","_React$useState3","defaultPageSize","_React$useState4","paginationSize","setPaginationSize","renderEmpty","keys","triggerPaginationEvent","eventName","page","pageSize","onPaginationChange","onPaginationShowSizeChange","loadingProp","spinning","isLoading","sizeCls","paginationProps","current","total","largestPage","Math","ceil","paginationContent","onShowSizeChange","splitDataSource","splice","useBreakpoint","currentBreakpoint","breakpoint","columnCount","column","maxWidth","childrenContent","minHeight","items","renderInnerItem","childrenList","child","renderEmptyHandler","emptyText","renderEmptyFunc","paginationPosition","position","Provider","value","Consumer","rootPrefixCls","cls","active","showTitle","onClick","onKeyPress","tabIndex","itemRender","rel","Options","_React$Component","_super","_this","this","_len","arguments","args","Array","_key","apply","state","goInputText","buildOptionText","items_per_page","changeSize","Number","handleChange","setState","target","handleBlur","_this$props","goButton","quickGo","relatedTarget","getValidValue","go","keyCode","isNaN","_this$props2","pageSizeOptions","some","option","toString","sort","a","b","_this2","_this$props3","selectComponentClass","selectPrefixCls","Select","changeSelect","goInput","gotoButton","getPageSizeOptions","options","opt","Option","showSearch","optionLabelProp","dropdownMatchSelectWidth","getPopupContainer","triggerNode","parentNode","onKeyUp","jump_to_confirm","jump_to","onBlur","defaultProps","noop","calculatePage","floor","Pagination","getJumpPrevPage","max","showLessItems","getJumpNextPage","min","getItemIcon","label","iconNode","savePaginationNode","node","paginationNode","isValid","isFinite","shouldDisplayQuickJumper","showQuickJumper","handleKeyDown","preventDefault","handleKeyUp","currentInputValue","changePageSize","newCurrent","currentPage","prev","hasPrev","next","hasNext","jumpPrev","jumpNext","runIfEnter","event","callback","charCode","restParams","runIfEnterPrev","runIfEnterNext","runIfEnterJumpPrev","runIfEnterJumpNext","handleGoTO","hasOnChange","console","warn","_current","_pageSize","prevProps","prevState","lastCurrentNode","querySelector","document","activeElement","blur","inputValue","allPages","showSizeChanger","totalBoundaryShowSizeChanger","prevPage","prevIcon","prevButton","isValidElement","cloneElement","nextPage","_this$props4","nextIcon","nextButton","_this$props5","hideOnSinglePage","showTotal","simple","showPrevNextJumpers","jumpPrevIcon","jumpNextIcon","_this$state","pagerList","firstPager","lastPager","pageBufferSize","dataOrAriaAttributeProps","reduce","substr","prev_page","renderPrev","onKeyDown","next_page","renderNext","pagerProps","push","prevItemTitle","prev_3","prev_5","nextItemTitle","next_3","next_5","last","left","right","_i","_active","unshift","totalText","prevDisabled","nextDisabled","unselectable","getShowSizeChanger","newState","MiniSelect","customizeSelectPrefixCls","customLocale","restProps","xs","renderPagination","contextLocale","isSmall","responsive","extendedClassName","mini","ellipsis","LeftOutlined","RightOutlined","_ref2","getIconsProps","LocaleReceiver","componentName","defaultLocale"],"sourceRoot":""}
1
+ {"version":3,"file":"191.lite.js?ver=59d6c6957751262b22aa","mappings":"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","sources":["webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons-svg/es/asn/LeftOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons/es/icons/LeftOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons-svg/es/asn/RightOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons/es/icons/RightOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/card/Grid.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/card/index.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/card/Meta.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/grid/hooks/useBreakpoint.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/list/Item.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/list/index.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-pagination/es/Pager.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-pagination/es/Options.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-pagination/es/KeyCode.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-pagination/es/Pagination.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-pagination/es/locale/zh_CN.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons-svg/es/asn/DoubleLeftOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons/es/icons/DoubleLeftOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons-svg/es/asn/DoubleRightOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/@ant-design/icons/es/icons/DoubleRightOutlined.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/pagination/MiniSelect.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/pagination/index.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/pagination/Pagination.js"],"sourcesContent":["// This icon file is generated automatically.\nvar LeftOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\" } }] }, \"name\": \"left\", \"theme\": \"outlined\" };\nexport default LeftOutlined;\n","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport LeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/LeftOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar LeftOutlined = function LeftOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: LeftOutlinedSvg\n }));\n};\n\nLeftOutlined.displayName = 'LeftOutlined';\nexport default /*#__PURE__*/React.forwardRef(LeftOutlined);","// This icon file is generated automatically.\nvar RightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\" } }] }, \"name\": \"right\", \"theme\": \"outlined\" };\nexport default RightOutlined;\n","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport RightOutlinedSvg from \"@ant-design/icons-svg/es/asn/RightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar RightOutlined = function RightOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: RightOutlinedSvg\n }));\n};\n\nRightOutlined.displayName = 'RightOutlined';\nexport default /*#__PURE__*/React.forwardRef(RightOutlined);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ConfigConsumer } from '../config-provider';\n\nvar Grid = function Grid(_a) {\n var prefixCls = _a.prefixCls,\n className = _a.className,\n _a$hoverable = _a.hoverable,\n hoverable = _a$hoverable === void 0 ? true : _a$hoverable,\n props = __rest(_a, [\"prefixCls\", \"className\", \"hoverable\"]);\n\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, function (_ref) {\n var getPrefixCls = _ref.getPrefixCls;\n var prefix = getPrefixCls('card', prefixCls);\n var classString = classNames(\"\".concat(prefix, \"-grid\"), className, _defineProperty({}, \"\".concat(prefix, \"-grid-hoverable\"), hoverable));\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n className: classString\n }));\n });\n};\n\nexport default Grid;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport Grid from './Grid';\nimport Meta from './Meta';\nimport Tabs from '../tabs';\nimport Row from '../row';\nimport Col from '../col';\nimport { ConfigContext } from '../config-provider';\nimport SizeContext from '../config-provider/SizeContext';\n\nfunction getAction(actions) {\n var actionList = actions.map(function (action, index) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n style: {\n width: \"\".concat(100 / actions.length, \"%\")\n },\n key: \"action-\".concat(index)\n }, /*#__PURE__*/React.createElement(\"span\", null, action))\n );\n });\n return actionList;\n}\n\nvar Card = function Card(props) {\n var _extends2, _classNames;\n\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n\n var size = React.useContext(SizeContext);\n\n var onTabChange = function onTabChange(key) {\n var _a;\n\n (_a = props.onTabChange) === null || _a === void 0 ? void 0 : _a.call(props, key);\n };\n\n var isContainGrid = function isContainGrid() {\n var containGrid;\n React.Children.forEach(props.children, function (element) {\n if (element && element.type && element.type === Grid) {\n containGrid = true;\n }\n });\n return containGrid;\n };\n\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n extra = props.extra,\n _props$headStyle = props.headStyle,\n headStyle = _props$headStyle === void 0 ? {} : _props$headStyle,\n _props$bodyStyle = props.bodyStyle,\n bodyStyle = _props$bodyStyle === void 0 ? {} : _props$bodyStyle,\n title = props.title,\n loading = props.loading,\n _props$bordered = props.bordered,\n bordered = _props$bordered === void 0 ? true : _props$bordered,\n customizeSize = props.size,\n type = props.type,\n cover = props.cover,\n actions = props.actions,\n tabList = props.tabList,\n children = props.children,\n activeTabKey = props.activeTabKey,\n defaultActiveTabKey = props.defaultActiveTabKey,\n tabBarExtraContent = props.tabBarExtraContent,\n hoverable = props.hoverable,\n _props$tabProps = props.tabProps,\n tabProps = _props$tabProps === void 0 ? {} : _props$tabProps,\n others = __rest(props, [\"prefixCls\", \"className\", \"extra\", \"headStyle\", \"bodyStyle\", \"title\", \"loading\", \"bordered\", \"size\", \"type\", \"cover\", \"actions\", \"tabList\", \"children\", \"activeTabKey\", \"defaultActiveTabKey\", \"tabBarExtraContent\", \"hoverable\", \"tabProps\"]);\n\n var prefixCls = getPrefixCls('card', customizePrefixCls);\n var loadingBlockStyle = bodyStyle.padding === 0 || bodyStyle.padding === '0px' ? {\n padding: 24\n } : undefined;\n var block = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-loading-block\")\n });\n var loadingBlock = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-loading-content\"),\n style: loadingBlockStyle\n }, /*#__PURE__*/React.createElement(Row, {\n gutter: 8\n }, /*#__PURE__*/React.createElement(Col, {\n span: 22\n }, block)), /*#__PURE__*/React.createElement(Row, {\n gutter: 8\n }, /*#__PURE__*/React.createElement(Col, {\n span: 8\n }, block), /*#__PURE__*/React.createElement(Col, {\n span: 15\n }, block)), /*#__PURE__*/React.createElement(Row, {\n gutter: 8\n }, /*#__PURE__*/React.createElement(Col, {\n span: 6\n }, block), /*#__PURE__*/React.createElement(Col, {\n span: 18\n }, block)), /*#__PURE__*/React.createElement(Row, {\n gutter: 8\n }, /*#__PURE__*/React.createElement(Col, {\n span: 13\n }, block), /*#__PURE__*/React.createElement(Col, {\n span: 9\n }, block)), /*#__PURE__*/React.createElement(Row, {\n gutter: 8\n }, /*#__PURE__*/React.createElement(Col, {\n span: 4\n }, block), /*#__PURE__*/React.createElement(Col, {\n span: 3\n }, block), /*#__PURE__*/React.createElement(Col, {\n span: 16\n }, block)));\n var hasActiveTabKey = activeTabKey !== undefined;\n\n var extraProps = _extends(_extends({}, tabProps), (_extends2 = {}, _defineProperty(_extends2, hasActiveTabKey ? 'activeKey' : 'defaultActiveKey', hasActiveTabKey ? activeTabKey : defaultActiveTabKey), _defineProperty(_extends2, \"tabBarExtraContent\", tabBarExtraContent), _extends2));\n\n var head;\n var tabs = tabList && tabList.length ? /*#__PURE__*/React.createElement(Tabs, _extends({\n size: \"large\"\n }, extraProps, {\n className: \"\".concat(prefixCls, \"-head-tabs\"),\n onChange: onTabChange\n }), tabList.map(function (item) {\n return /*#__PURE__*/React.createElement(Tabs.TabPane, {\n tab: item.tab,\n disabled: item.disabled,\n key: item.key\n });\n })) : null;\n\n if (title || extra || tabs) {\n head = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-head\"),\n style: headStyle\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-head-wrapper\")\n }, title && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-head-title\")\n }, title), extra && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-extra\")\n }, extra)), tabs);\n }\n\n var coverDom = cover ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-cover\")\n }, cover) : null;\n var body = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-body\"),\n style: bodyStyle\n }, loading ? loadingBlock : children);\n var actionDom = actions && actions.length ? /*#__PURE__*/React.createElement(\"ul\", {\n className: \"\".concat(prefixCls, \"-actions\")\n }, getAction(actions)) : null;\n var divProps = omit(others, ['onTabChange']);\n var mergedSize = customizeSize || size;\n var classString = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-loading\"), loading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-bordered\"), bordered), _defineProperty(_classNames, \"\".concat(prefixCls, \"-hoverable\"), hoverable), _defineProperty(_classNames, \"\".concat(prefixCls, \"-contain-grid\"), isContainGrid()), _defineProperty(_classNames, \"\".concat(prefixCls, \"-contain-tabs\"), tabList && tabList.length), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(mergedSize), mergedSize), _defineProperty(_classNames, \"\".concat(prefixCls, \"-type-\").concat(type), !!type), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, divProps, {\n className: classString\n }), head, coverDom, body, actionDom);\n};\n\nCard.Grid = Grid;\nCard.Meta = Meta;\nexport default Card;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ConfigConsumer } from '../config-provider';\n\nvar Meta = function Meta(props) {\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, function (_ref) {\n var getPrefixCls = _ref.getPrefixCls;\n\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n avatar = props.avatar,\n title = props.title,\n description = props.description,\n others = __rest(props, [\"prefixCls\", \"className\", \"avatar\", \"title\", \"description\"]);\n\n var prefixCls = getPrefixCls('card', customizePrefixCls);\n var classString = classNames(\"\".concat(prefixCls, \"-meta\"), className);\n var avatarDom = avatar ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-meta-avatar\")\n }, avatar) : null;\n var titleDom = title ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-meta-title\")\n }, title) : null;\n var descriptionDom = description ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-meta-description\")\n }, description) : null;\n var MetaDetail = titleDom || descriptionDom ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-meta-detail\")\n }, titleDom, descriptionDom) : null;\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, others, {\n className: classString\n }), avatarDom, MetaDetail);\n });\n};\n\nexport default Meta;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEffect, useState } from 'react';\nimport ResponsiveObserve from '../../_util/responsiveObserve';\n\nfunction useBreakpoint() {\n var _useState = useState({}),\n _useState2 = _slicedToArray(_useState, 2),\n screens = _useState2[0],\n setScreens = _useState2[1];\n\n useEffect(function () {\n var token = ResponsiveObserve.subscribe(function (supportScreens) {\n setScreens(supportScreens);\n });\n return function () {\n return ResponsiveObserve.unsubscribe(token);\n };\n }, []);\n return screens;\n}\n\nexport default useBreakpoint;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ListContext } from './index';\nimport { Col } from '../grid';\nimport { ConfigContext } from '../config-provider';\nimport { cloneElement } from '../_util/reactNode';\nexport var Meta = function Meta(_a) {\n var customizePrefixCls = _a.prefixCls,\n className = _a.className,\n avatar = _a.avatar,\n title = _a.title,\n description = _a.description,\n others = __rest(_a, [\"prefixCls\", \"className\", \"avatar\", \"title\", \"description\"]);\n\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n\n var prefixCls = getPrefixCls('list', customizePrefixCls);\n var classString = classNames(\"\".concat(prefixCls, \"-item-meta\"), className);\n var content = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-meta-content\")\n }, title && /*#__PURE__*/React.createElement(\"h4\", {\n className: \"\".concat(prefixCls, \"-item-meta-title\")\n }, title), description && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-meta-description\")\n }, description));\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, others, {\n className: classString\n }), avatar && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-meta-avatar\")\n }, avatar), (title || description) && content);\n};\n\nvar Item = function Item(_a) {\n var customizePrefixCls = _a.prefixCls,\n children = _a.children,\n actions = _a.actions,\n extra = _a.extra,\n className = _a.className,\n colStyle = _a.colStyle,\n others = __rest(_a, [\"prefixCls\", \"children\", \"actions\", \"extra\", \"className\", \"colStyle\"]);\n\n var _React$useContext2 = React.useContext(ListContext),\n grid = _React$useContext2.grid,\n itemLayout = _React$useContext2.itemLayout;\n\n var _React$useContext3 = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext3.getPrefixCls;\n\n var isItemContainsTextNodeAndNotSingular = function isItemContainsTextNodeAndNotSingular() {\n var result;\n React.Children.forEach(children, function (element) {\n if (typeof element === 'string') {\n result = true;\n }\n });\n return result && React.Children.count(children) > 1;\n };\n\n var isFlexMode = function isFlexMode() {\n if (itemLayout === 'vertical') {\n return !!extra;\n }\n\n return !isItemContainsTextNodeAndNotSingular();\n };\n\n var prefixCls = getPrefixCls('list', customizePrefixCls);\n var actionsContent = actions && actions.length > 0 && /*#__PURE__*/React.createElement(\"ul\", {\n className: \"\".concat(prefixCls, \"-item-action\"),\n key: \"actions\"\n }, actions.map(function (action, i) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n key: \"\".concat(prefixCls, \"-item-action-\").concat(i)\n }, action, i !== actions.length - 1 && /*#__PURE__*/React.createElement(\"em\", {\n className: \"\".concat(prefixCls, \"-item-action-split\")\n }))\n );\n }));\n var Element = grid ? 'div' : 'li';\n var itemChildren = /*#__PURE__*/React.createElement(Element, _extends({}, others, {\n // `li` element `onCopy` prop args is not same as `div`\n className: classNames(\"\".concat(prefixCls, \"-item\"), _defineProperty({}, \"\".concat(prefixCls, \"-item-no-flex\"), !isFlexMode()), className)\n }), itemLayout === 'vertical' && extra ? [/*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-main\"),\n key: \"content\"\n }, children, actionsContent), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-extra\"),\n key: \"extra\"\n }, extra)] : [children, actionsContent, cloneElement(extra, {\n key: 'extra'\n })]);\n return grid ? /*#__PURE__*/React.createElement(Col, {\n flex: 1,\n style: colStyle\n }, itemChildren) : itemChildren;\n};\n\nItem.Meta = Meta;\nexport default Item;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Spin from '../spin';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\nimport { responsiveArray } from '../_util/responsiveObserve';\nimport { ConfigContext } from '../config-provider';\nimport Pagination from '../pagination';\nimport { Row } from '../grid';\nimport Item from './Item';\nexport var ListContext = /*#__PURE__*/React.createContext({});\nexport var ListConsumer = ListContext.Consumer;\n\nfunction List(_a) {\n var _classNames;\n\n var _a$pagination = _a.pagination,\n pagination = _a$pagination === void 0 ? false : _a$pagination,\n customizePrefixCls = _a.prefixCls,\n _a$bordered = _a.bordered,\n bordered = _a$bordered === void 0 ? false : _a$bordered,\n _a$split = _a.split,\n split = _a$split === void 0 ? true : _a$split,\n className = _a.className,\n children = _a.children,\n itemLayout = _a.itemLayout,\n loadMore = _a.loadMore,\n grid = _a.grid,\n _a$dataSource = _a.dataSource,\n dataSource = _a$dataSource === void 0 ? [] : _a$dataSource,\n size = _a.size,\n header = _a.header,\n footer = _a.footer,\n _a$loading = _a.loading,\n loading = _a$loading === void 0 ? false : _a$loading,\n rowKey = _a.rowKey,\n renderItem = _a.renderItem,\n locale = _a.locale,\n rest = __rest(_a, [\"pagination\", \"prefixCls\", \"bordered\", \"split\", \"className\", \"children\", \"itemLayout\", \"loadMore\", \"grid\", \"dataSource\", \"size\", \"header\", \"footer\", \"loading\", \"rowKey\", \"renderItem\", \"locale\"]);\n\n var paginationObj = pagination && _typeof(pagination) === 'object' ? pagination : {};\n\n var _React$useState = React.useState(paginationObj.defaultCurrent || 1),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n paginationCurrent = _React$useState2[0],\n setPaginationCurrent = _React$useState2[1];\n\n var _React$useState3 = React.useState(paginationObj.defaultPageSize || 10),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n paginationSize = _React$useState4[0],\n setPaginationSize = _React$useState4[1];\n\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n renderEmpty = _React$useContext.renderEmpty,\n direction = _React$useContext.direction;\n\n var defaultPaginationProps = {\n current: 1,\n total: 0\n };\n var keys = {};\n\n var triggerPaginationEvent = function triggerPaginationEvent(eventName) {\n return function (page, pageSize) {\n setPaginationCurrent(page);\n setPaginationSize(pageSize);\n\n if (pagination && pagination[eventName]) {\n pagination[eventName](page, pageSize);\n }\n };\n };\n\n var onPaginationChange = triggerPaginationEvent('onChange');\n var onPaginationShowSizeChange = triggerPaginationEvent('onShowSizeChange');\n\n var renderInnerItem = function renderInnerItem(item, index) {\n if (!renderItem) return null;\n var key;\n\n if (typeof rowKey === 'function') {\n key = rowKey(item);\n } else if (typeof rowKey === 'string') {\n key = item[rowKey];\n } else {\n key = item.key;\n }\n\n if (!key) {\n key = \"list-item-\".concat(index);\n }\n\n keys[index] = key;\n return renderItem(item, index);\n };\n\n var isSomethingAfterLastItem = function isSomethingAfterLastItem() {\n return !!(loadMore || pagination || footer);\n };\n\n var renderEmptyFunc = function renderEmptyFunc(prefixCls, renderEmptyHandler) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-empty-text\")\n }, locale && locale.emptyText || renderEmptyHandler('List'));\n };\n\n var prefixCls = getPrefixCls('list', customizePrefixCls);\n var loadingProp = loading;\n\n if (typeof loadingProp === 'boolean') {\n loadingProp = {\n spinning: loadingProp\n };\n }\n\n var isLoading = loadingProp && loadingProp.spinning; // large => lg\n // small => sm\n\n var sizeCls = '';\n\n switch (size) {\n case 'large':\n sizeCls = 'lg';\n break;\n\n case 'small':\n sizeCls = 'sm';\n break;\n\n default:\n break;\n }\n\n var classString = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-vertical\"), itemLayout === 'vertical'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(sizeCls), sizeCls), _defineProperty(_classNames, \"\".concat(prefixCls, \"-split\"), split), _defineProperty(_classNames, \"\".concat(prefixCls, \"-bordered\"), bordered), _defineProperty(_classNames, \"\".concat(prefixCls, \"-loading\"), isLoading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-grid\"), !!grid), _defineProperty(_classNames, \"\".concat(prefixCls, \"-something-after-last-item\"), isSomethingAfterLastItem()), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n\n var paginationProps = _extends(_extends(_extends({}, defaultPaginationProps), {\n total: dataSource.length,\n current: paginationCurrent,\n pageSize: paginationSize\n }), pagination || {});\n\n var largestPage = Math.ceil(paginationProps.total / paginationProps.pageSize);\n\n if (paginationProps.current > largestPage) {\n paginationProps.current = largestPage;\n }\n\n var paginationContent = pagination ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-pagination\")\n }, /*#__PURE__*/React.createElement(Pagination, _extends({}, paginationProps, {\n onChange: onPaginationChange,\n onShowSizeChange: onPaginationShowSizeChange\n }))) : null;\n\n var splitDataSource = _toConsumableArray(dataSource);\n\n if (pagination) {\n if (dataSource.length > (paginationProps.current - 1) * paginationProps.pageSize) {\n splitDataSource = _toConsumableArray(dataSource).splice((paginationProps.current - 1) * paginationProps.pageSize, paginationProps.pageSize);\n }\n }\n\n var screens = useBreakpoint();\n var currentBreakpoint = React.useMemo(function () {\n for (var i = 0; i < responsiveArray.length; i += 1) {\n var breakpoint = responsiveArray[i];\n\n if (screens[breakpoint]) {\n return breakpoint;\n }\n }\n\n return undefined;\n }, [screens]);\n var colStyle = React.useMemo(function () {\n if (!grid) {\n return undefined;\n }\n\n var columnCount = currentBreakpoint && grid[currentBreakpoint] ? grid[currentBreakpoint] : grid.column;\n\n if (columnCount) {\n return {\n width: \"\".concat(100 / columnCount, \"%\"),\n maxWidth: \"\".concat(100 / columnCount, \"%\")\n };\n }\n }, [grid === null || grid === void 0 ? void 0 : grid.column, currentBreakpoint]);\n var childrenContent = isLoading && /*#__PURE__*/React.createElement(\"div\", {\n style: {\n minHeight: 53\n }\n });\n\n if (splitDataSource.length > 0) {\n var items = splitDataSource.map(function (item, index) {\n return renderInnerItem(item, index);\n });\n var childrenList = React.Children.map(items, function (child, index) {\n return /*#__PURE__*/React.createElement(\"div\", {\n key: keys[index],\n style: colStyle\n }, child);\n });\n childrenContent = grid ? /*#__PURE__*/React.createElement(Row, {\n gutter: grid.gutter\n }, childrenList) : /*#__PURE__*/React.createElement(\"ul\", {\n className: \"\".concat(prefixCls, \"-items\")\n }, items);\n } else if (!children && !isLoading) {\n childrenContent = renderEmptyFunc(prefixCls, renderEmpty);\n }\n\n var paginationPosition = paginationProps.position || 'bottom';\n return /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: {\n grid: grid,\n itemLayout: itemLayout\n }\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classString\n }, rest), (paginationPosition === 'top' || paginationPosition === 'both') && paginationContent, header && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-header\")\n }, header), /*#__PURE__*/React.createElement(Spin, loadingProp, childrenContent, children), footer && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-footer\")\n }, footer), loadMore || (paginationPosition === 'bottom' || paginationPosition === 'both') && paginationContent));\n}\n\nList.Item = Item;\nexport default List;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\n/* eslint react/prop-types: 0 */\nimport React from 'react';\nimport classNames from 'classnames';\n\nvar Pager = function Pager(props) {\n var _classNames;\n\n var prefixCls = \"\".concat(props.rootPrefixCls, \"-item\");\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(props.page), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), props.active), _defineProperty(_classNames, props.className, !!props.className), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), !props.page), _classNames));\n\n var handleClick = function handleClick() {\n props.onClick(props.page);\n };\n\n var handleKeyPress = function handleKeyPress(e) {\n props.onKeyPress(e, props.onClick, props.page);\n };\n\n return /*#__PURE__*/React.createElement(\"li\", {\n title: props.showTitle ? props.page : null,\n className: cls,\n onClick: handleClick,\n onKeyPress: handleKeyPress,\n tabIndex: \"0\"\n }, props.itemRender(props.page, 'page', /*#__PURE__*/React.createElement(\"a\", {\n rel: \"nofollow\"\n }, props.page)));\n};\n\nexport default Pager;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint react/prop-types: 0 */\nimport React from 'react';\nimport KEYCODE from './KeyCode';\n\nvar Options = /*#__PURE__*/function (_React$Component) {\n _inherits(Options, _React$Component);\n\n var _super = _createSuper(Options);\n\n function Options() {\n var _this;\n\n _classCallCheck(this, Options);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n goInputText: ''\n };\n\n _this.buildOptionText = function (value) {\n return \"\".concat(value, \" \").concat(_this.props.locale.items_per_page);\n };\n\n _this.changeSize = function (value) {\n _this.props.changeSize(Number(value));\n };\n\n _this.handleChange = function (e) {\n _this.setState({\n goInputText: e.target.value\n });\n };\n\n _this.handleBlur = function (e) {\n var _this$props = _this.props,\n goButton = _this$props.goButton,\n quickGo = _this$props.quickGo,\n rootPrefixCls = _this$props.rootPrefixCls;\n var goInputText = _this.state.goInputText;\n\n if (goButton || goInputText === '') {\n return;\n }\n\n _this.setState({\n goInputText: ''\n });\n\n if (e.relatedTarget && (e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item-link\")) >= 0 || e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item\")) >= 0)) {\n return;\n }\n\n quickGo(_this.getValidValue());\n };\n\n _this.go = function (e) {\n var goInputText = _this.state.goInputText;\n\n if (goInputText === '') {\n return;\n }\n\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.setState({\n goInputText: ''\n });\n\n _this.props.quickGo(_this.getValidValue());\n }\n };\n\n return _this;\n }\n\n _createClass(Options, [{\n key: \"getValidValue\",\n value: function getValidValue() {\n var goInputText = this.state.goInputText; // eslint-disable-next-line no-restricted-globals\n\n return !goInputText || isNaN(goInputText) ? undefined : Number(goInputText);\n }\n }, {\n key: \"getPageSizeOptions\",\n value: function getPageSizeOptions() {\n var _this$props2 = this.props,\n pageSize = _this$props2.pageSize,\n pageSizeOptions = _this$props2.pageSizeOptions;\n\n if (pageSizeOptions.some(function (option) {\n return option.toString() === pageSize.toString();\n })) {\n return pageSizeOptions;\n }\n\n return pageSizeOptions.concat([pageSize.toString()]).sort(function (a, b) {\n // eslint-disable-next-line no-restricted-globals\n var numberA = isNaN(Number(a)) ? 0 : Number(a); // eslint-disable-next-line no-restricted-globals\n\n var numberB = isNaN(Number(b)) ? 0 : Number(b);\n return numberA - numberB;\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n pageSize = _this$props3.pageSize,\n locale = _this$props3.locale,\n rootPrefixCls = _this$props3.rootPrefixCls,\n changeSize = _this$props3.changeSize,\n quickGo = _this$props3.quickGo,\n goButton = _this$props3.goButton,\n selectComponentClass = _this$props3.selectComponentClass,\n buildOptionText = _this$props3.buildOptionText,\n selectPrefixCls = _this$props3.selectPrefixCls,\n disabled = _this$props3.disabled;\n var goInputText = this.state.goInputText;\n var prefixCls = \"\".concat(rootPrefixCls, \"-options\");\n var Select = selectComponentClass;\n var changeSelect = null;\n var goInput = null;\n var gotoButton = null;\n\n if (!changeSize && !quickGo) {\n return null;\n }\n\n var pageSizeOptions = this.getPageSizeOptions();\n\n if (changeSize && Select) {\n var options = pageSizeOptions.map(function (opt, i) {\n return /*#__PURE__*/React.createElement(Select.Option, {\n key: i,\n value: opt.toString()\n }, (buildOptionText || _this2.buildOptionText)(opt));\n });\n changeSelect = /*#__PURE__*/React.createElement(Select, {\n disabled: disabled,\n prefixCls: selectPrefixCls,\n showSearch: false,\n className: \"\".concat(prefixCls, \"-size-changer\"),\n optionLabelProp: \"children\",\n dropdownMatchSelectWidth: false,\n value: (pageSize || pageSizeOptions[0]).toString(),\n onChange: this.changeSize,\n getPopupContainer: function getPopupContainer(triggerNode) {\n return triggerNode.parentNode;\n }\n }, options);\n }\n\n if (quickGo) {\n if (goButton) {\n gotoButton = typeof goButton === 'boolean' ? /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.go,\n onKeyUp: this.go,\n disabled: disabled,\n className: \"\".concat(prefixCls, \"-quick-jumper-button\")\n }, locale.jump_to_confirm) : /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.go,\n onKeyUp: this.go\n }, goButton);\n }\n\n goInput = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-quick-jumper\")\n }, locale.jump_to, /*#__PURE__*/React.createElement(\"input\", {\n disabled: disabled,\n type: \"text\",\n value: goInputText,\n onChange: this.handleChange,\n onKeyUp: this.go,\n onBlur: this.handleBlur\n }), locale.page, gotoButton);\n }\n\n return /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls)\n }, changeSelect, goInput);\n }\n }]);\n\n return Options;\n}(React.Component);\n\nOptions.defaultProps = {\n pageSizeOptions: ['10', '20', '50', '100']\n};\nexport default Options;","export default {\n ZERO: 48,\n NINE: 57,\n NUMPAD_ZERO: 96,\n NUMPAD_NINE: 105,\n BACKSPACE: 8,\n DELETE: 46,\n ENTER: 13,\n ARROW_UP: 38,\n ARROW_DOWN: 40\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint react/prop-types: 0 */\nimport React, { cloneElement, isValidElement } from 'react';\nimport classNames from 'classnames';\nimport Pager from './Pager';\nimport Options from './Options';\nimport KEYCODE from './KeyCode';\nimport LOCALE from './locale/zh_CN';\n\nfunction noop() {}\n\nfunction isInteger(value) {\n return (// eslint-disable-next-line no-restricted-globals\n typeof value === 'number' && isFinite(value) && Math.floor(value) === value\n );\n}\n\nfunction defaultItemRender(page, type, element) {\n return element;\n}\n\nfunction calculatePage(p, state, props) {\n var pageSize = typeof p === 'undefined' ? state.pageSize : p;\n return Math.floor((props.total - 1) / pageSize) + 1;\n}\n\nvar Pagination = /*#__PURE__*/function (_React$Component) {\n _inherits(Pagination, _React$Component);\n\n var _super = _createSuper(Pagination);\n\n function Pagination(props) {\n var _this;\n\n _classCallCheck(this, Pagination);\n\n _this = _super.call(this, props);\n\n _this.getJumpPrevPage = function () {\n return Math.max(1, _this.state.current - (_this.props.showLessItems ? 3 : 5));\n };\n\n _this.getJumpNextPage = function () {\n return Math.min(calculatePage(undefined, _this.state, _this.props), _this.state.current + (_this.props.showLessItems ? 3 : 5));\n };\n\n _this.getItemIcon = function (icon, label) {\n var prefixCls = _this.props.prefixCls;\n var iconNode = icon || /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": label,\n className: \"\".concat(prefixCls, \"-item-link\")\n });\n\n if (typeof icon === 'function') {\n iconNode = /*#__PURE__*/React.createElement(icon, _objectSpread({}, _this.props));\n }\n\n return iconNode;\n };\n\n _this.savePaginationNode = function (node) {\n _this.paginationNode = node;\n };\n\n _this.isValid = function (page) {\n return isInteger(page) && page !== _this.state.current;\n };\n\n _this.shouldDisplayQuickJumper = function () {\n var _this$props = _this.props,\n showQuickJumper = _this$props.showQuickJumper,\n pageSize = _this$props.pageSize,\n total = _this$props.total;\n\n if (total <= pageSize) {\n return false;\n }\n\n return showQuickJumper;\n };\n\n _this.handleKeyDown = function (e) {\n if (e.keyCode === KEYCODE.ARROW_UP || e.keyCode === KEYCODE.ARROW_DOWN) {\n e.preventDefault();\n }\n };\n\n _this.handleKeyUp = function (e) {\n var value = _this.getValidValue(e);\n\n var currentInputValue = _this.state.currentInputValue;\n\n if (value !== currentInputValue) {\n _this.setState({\n currentInputValue: value\n });\n }\n\n if (e.keyCode === KEYCODE.ENTER) {\n _this.handleChange(value);\n } else if (e.keyCode === KEYCODE.ARROW_UP) {\n _this.handleChange(value - 1);\n } else if (e.keyCode === KEYCODE.ARROW_DOWN) {\n _this.handleChange(value + 1);\n }\n };\n\n _this.changePageSize = function (size) {\n var current = _this.state.current;\n var newCurrent = calculatePage(size, _this.state, _this.props);\n current = current > newCurrent ? newCurrent : current; // fix the issue:\n // Once 'total' is 0, 'current' in 'onShowSizeChange' is 0, which is not correct.\n\n if (newCurrent === 0) {\n // eslint-disable-next-line prefer-destructuring\n current = _this.state.current;\n }\n\n if (typeof size === 'number') {\n if (!('pageSize' in _this.props)) {\n _this.setState({\n pageSize: size\n });\n }\n\n if (!('current' in _this.props)) {\n _this.setState({\n current: current,\n currentInputValue: current\n });\n }\n }\n\n _this.props.onShowSizeChange(current, size);\n\n if ('onChange' in _this.props && _this.props.onChange) {\n _this.props.onChange(current, size);\n }\n };\n\n _this.handleChange = function (p) {\n var disabled = _this.props.disabled;\n var page = p;\n\n if (_this.isValid(page) && !disabled) {\n var currentPage = calculatePage(undefined, _this.state, _this.props);\n\n if (page > currentPage) {\n page = currentPage;\n } else if (page < 1) {\n page = 1;\n }\n\n if (!('current' in _this.props)) {\n _this.setState({\n current: page,\n currentInputValue: page\n });\n }\n\n var pageSize = _this.state.pageSize;\n\n _this.props.onChange(page, pageSize);\n\n return page;\n }\n\n return _this.state.current;\n };\n\n _this.prev = function () {\n if (_this.hasPrev()) {\n _this.handleChange(_this.state.current - 1);\n }\n };\n\n _this.next = function () {\n if (_this.hasNext()) {\n _this.handleChange(_this.state.current + 1);\n }\n };\n\n _this.jumpPrev = function () {\n _this.handleChange(_this.getJumpPrevPage());\n };\n\n _this.jumpNext = function () {\n _this.handleChange(_this.getJumpNextPage());\n };\n\n _this.hasPrev = function () {\n return _this.state.current > 1;\n };\n\n _this.hasNext = function () {\n return _this.state.current < calculatePage(undefined, _this.state, _this.props);\n };\n\n _this.runIfEnter = function (event, callback) {\n if (event.key === 'Enter' || event.charCode === 13) {\n for (var _len = arguments.length, restParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n restParams[_key - 2] = arguments[_key];\n }\n\n callback.apply(void 0, restParams);\n }\n };\n\n _this.runIfEnterPrev = function (e) {\n _this.runIfEnter(e, _this.prev);\n };\n\n _this.runIfEnterNext = function (e) {\n _this.runIfEnter(e, _this.next);\n };\n\n _this.runIfEnterJumpPrev = function (e) {\n _this.runIfEnter(e, _this.jumpPrev);\n };\n\n _this.runIfEnterJumpNext = function (e) {\n _this.runIfEnter(e, _this.jumpNext);\n };\n\n _this.handleGoTO = function (e) {\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.handleChange(_this.state.currentInputValue);\n }\n };\n\n var hasOnChange = props.onChange !== noop;\n var hasCurrent = ('current' in props);\n\n if (hasCurrent && !hasOnChange) {\n // eslint-disable-next-line no-console\n console.warn('Warning: You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.');\n }\n\n var _current = props.defaultCurrent;\n\n if ('current' in props) {\n // eslint-disable-next-line prefer-destructuring\n _current = props.current;\n }\n\n var _pageSize = props.defaultPageSize;\n\n if ('pageSize' in props) {\n // eslint-disable-next-line prefer-destructuring\n _pageSize = props.pageSize;\n }\n\n _current = Math.min(_current, calculatePage(_pageSize, undefined, props));\n _this.state = {\n current: _current,\n currentInputValue: _current,\n pageSize: _pageSize\n };\n return _this;\n }\n\n _createClass(Pagination, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n // When current page change, fix focused style of prev item\n // A hacky solution of https://github.com/ant-design/ant-design/issues/8948\n var prefixCls = this.props.prefixCls;\n\n if (prevState.current !== this.state.current && this.paginationNode) {\n var lastCurrentNode = this.paginationNode.querySelector(\".\".concat(prefixCls, \"-item-\").concat(prevState.current));\n\n if (lastCurrentNode && document.activeElement === lastCurrentNode) {\n lastCurrentNode.blur();\n }\n }\n }\n }, {\n key: \"getValidValue\",\n value: function getValidValue(e) {\n var inputValue = e.target.value;\n var allPages = calculatePage(undefined, this.state, this.props);\n var currentInputValue = this.state.currentInputValue;\n var value;\n\n if (inputValue === '') {\n value = inputValue; // eslint-disable-next-line no-restricted-globals\n } else if (isNaN(Number(inputValue))) {\n value = currentInputValue;\n } else if (inputValue >= allPages) {\n value = allPages;\n } else {\n value = Number(inputValue);\n }\n\n return value;\n }\n }, {\n key: \"getShowSizeChanger\",\n value: function getShowSizeChanger() {\n var _this$props2 = this.props,\n showSizeChanger = _this$props2.showSizeChanger,\n total = _this$props2.total,\n totalBoundaryShowSizeChanger = _this$props2.totalBoundaryShowSizeChanger;\n\n if (typeof showSizeChanger !== 'undefined') {\n return showSizeChanger;\n }\n\n return total > totalBoundaryShowSizeChanger;\n }\n }, {\n key: \"renderPrev\",\n value: function renderPrev(prevPage) {\n var _this$props3 = this.props,\n prevIcon = _this$props3.prevIcon,\n itemRender = _this$props3.itemRender;\n var prevButton = itemRender(prevPage, 'prev', this.getItemIcon(prevIcon, 'prev page'));\n var disabled = !this.hasPrev();\n return /*#__PURE__*/isValidElement(prevButton) ? /*#__PURE__*/cloneElement(prevButton, {\n disabled: disabled\n }) : prevButton;\n }\n }, {\n key: \"renderNext\",\n value: function renderNext(nextPage) {\n var _this$props4 = this.props,\n nextIcon = _this$props4.nextIcon,\n itemRender = _this$props4.itemRender;\n var nextButton = itemRender(nextPage, 'next', this.getItemIcon(nextIcon, 'next page'));\n var disabled = !this.hasNext();\n return /*#__PURE__*/isValidElement(nextButton) ? /*#__PURE__*/cloneElement(nextButton, {\n disabled: disabled\n }) : nextButton;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props5 = this.props,\n prefixCls = _this$props5.prefixCls,\n className = _this$props5.className,\n style = _this$props5.style,\n disabled = _this$props5.disabled,\n hideOnSinglePage = _this$props5.hideOnSinglePage,\n total = _this$props5.total,\n locale = _this$props5.locale,\n showQuickJumper = _this$props5.showQuickJumper,\n showLessItems = _this$props5.showLessItems,\n showTitle = _this$props5.showTitle,\n showTotal = _this$props5.showTotal,\n simple = _this$props5.simple,\n itemRender = _this$props5.itemRender,\n showPrevNextJumpers = _this$props5.showPrevNextJumpers,\n jumpPrevIcon = _this$props5.jumpPrevIcon,\n jumpNextIcon = _this$props5.jumpNextIcon,\n selectComponentClass = _this$props5.selectComponentClass,\n selectPrefixCls = _this$props5.selectPrefixCls,\n pageSizeOptions = _this$props5.pageSizeOptions;\n var _this$state = this.state,\n current = _this$state.current,\n pageSize = _this$state.pageSize,\n currentInputValue = _this$state.currentInputValue; // When hideOnSinglePage is true and there is only 1 page, hide the pager\n\n if (hideOnSinglePage === true && total <= pageSize) {\n return null;\n }\n\n var allPages = calculatePage(undefined, this.state, this.props);\n var pagerList = [];\n var jumpPrev = null;\n var jumpNext = null;\n var firstPager = null;\n var lastPager = null;\n var gotoButton = null;\n var goButton = showQuickJumper && showQuickJumper.goButton;\n var pageBufferSize = showLessItems ? 1 : 2;\n var prevPage = current - 1 > 0 ? current - 1 : 0;\n var nextPage = current + 1 < allPages ? current + 1 : allPages;\n var dataOrAriaAttributeProps = Object.keys(this.props).reduce(function (prev, key) {\n if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role') {\n // eslint-disable-next-line no-param-reassign\n prev[key] = _this2.props[key];\n }\n\n return prev;\n }, {});\n\n if (simple) {\n if (goButton) {\n if (typeof goButton === 'boolean') {\n gotoButton = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, locale.jump_to_confirm);\n } else {\n gotoButton = /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, goButton);\n }\n\n gotoButton = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(locale.jump_to).concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, gotoButton);\n }\n\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-simple\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), className),\n style: style,\n ref: this.savePaginationNode\n }, dataOrAriaAttributeProps), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasPrev())),\n \"aria-disabled\": !this.hasPrev()\n }, this.renderPrev(prevPage)), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, /*#__PURE__*/React.createElement(\"input\", {\n type: \"text\",\n value: currentInputValue,\n disabled: disabled,\n onKeyDown: this.handleKeyDown,\n onKeyUp: this.handleKeyUp,\n onChange: this.handleKeyUp,\n size: \"3\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-slash\")\n }, \"/\"), allPages), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasNext())),\n \"aria-disabled\": !this.hasNext()\n }, this.renderNext(nextPage)), gotoButton);\n }\n\n if (allPages <= 3 + pageBufferSize * 2) {\n var pagerProps = {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n showTitle: showTitle,\n itemRender: itemRender\n };\n\n if (!allPages) {\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: \"noPager\",\n page: allPages,\n className: \"\".concat(prefixCls, \"-disabled\")\n })));\n }\n\n for (var i = 1; i <= allPages; i += 1) {\n var active = current === i;\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: i,\n page: i,\n active: active\n })));\n }\n } else {\n var prevItemTitle = showLessItems ? locale.prev_3 : locale.prev_5;\n var nextItemTitle = showLessItems ? locale.next_3 : locale.next_5;\n\n if (showPrevNextJumpers) {\n jumpPrev = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? prevItemTitle : null,\n key: \"prev\",\n onClick: this.jumpPrev,\n tabIndex: \"0\",\n onKeyPress: this.runIfEnterJumpPrev,\n className: classNames(\"\".concat(prefixCls, \"-jump-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-prev-custom-icon\"), !!jumpPrevIcon))\n }, itemRender(this.getJumpPrevPage(), 'jump-prev', this.getItemIcon(jumpPrevIcon, 'prev page')));\n jumpNext = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? nextItemTitle : null,\n key: \"next\",\n tabIndex: \"0\",\n onClick: this.jumpNext,\n onKeyPress: this.runIfEnterJumpNext,\n className: classNames(\"\".concat(prefixCls, \"-jump-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-next-custom-icon\"), !!jumpNextIcon))\n }, itemRender(this.getJumpNextPage(), 'jump-next', this.getItemIcon(jumpNextIcon, 'next page')));\n }\n\n lastPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n last: true,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: allPages,\n page: allPages,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n firstPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: 1,\n page: 1,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n var left = Math.max(1, current - pageBufferSize);\n var right = Math.min(current + pageBufferSize, allPages);\n\n if (current - 1 <= pageBufferSize) {\n right = 1 + pageBufferSize * 2;\n }\n\n if (allPages - current <= pageBufferSize) {\n left = allPages - pageBufferSize * 2;\n }\n\n for (var _i = left; _i <= right; _i += 1) {\n var _active = current === _i;\n\n pagerList.push( /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: _i,\n page: _i,\n active: _active,\n showTitle: showTitle,\n itemRender: itemRender\n }));\n }\n\n if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {\n pagerList[0] = /*#__PURE__*/cloneElement(pagerList[0], {\n className: \"\".concat(prefixCls, \"-item-after-jump-prev\")\n });\n pagerList.unshift(jumpPrev);\n }\n\n if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {\n pagerList[pagerList.length - 1] = /*#__PURE__*/cloneElement(pagerList[pagerList.length - 1], {\n className: \"\".concat(prefixCls, \"-item-before-jump-next\")\n });\n pagerList.push(jumpNext);\n }\n\n if (left !== 1) {\n pagerList.unshift(firstPager);\n }\n\n if (right !== allPages) {\n pagerList.push(lastPager);\n }\n }\n\n var totalText = null;\n\n if (showTotal) {\n totalText = /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls, \"-total-text\")\n }, showTotal(total, [total === 0 ? 0 : (current - 1) * pageSize + 1, current * pageSize > total ? total : current * pageSize]));\n }\n\n var prevDisabled = !this.hasPrev() || !allPages;\n var nextDisabled = !this.hasNext() || !allPages;\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, className, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled)),\n style: style,\n unselectable: \"unselectable\",\n ref: this.savePaginationNode\n }, dataOrAriaAttributeProps), totalText, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: prevDisabled ? null : 0,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), prevDisabled)),\n \"aria-disabled\": prevDisabled\n }, this.renderPrev(prevPage)), pagerList, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: nextDisabled ? null : 0,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), nextDisabled)),\n \"aria-disabled\": nextDisabled\n }, this.renderNext(nextPage)), /*#__PURE__*/React.createElement(Options, {\n disabled: disabled,\n locale: locale,\n rootPrefixCls: prefixCls,\n selectComponentClass: selectComponentClass,\n selectPrefixCls: selectPrefixCls,\n changeSize: this.getShowSizeChanger() ? this.changePageSize : null,\n current: current,\n pageSize: pageSize,\n pageSizeOptions: pageSizeOptions,\n quickGo: this.shouldDisplayQuickJumper() ? this.handleChange : null,\n goButton: goButton\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, prevState) {\n var newState = {};\n\n if ('current' in props) {\n newState.current = props.current;\n\n if (props.current !== prevState.current) {\n newState.currentInputValue = newState.current;\n }\n }\n\n if ('pageSize' in props && props.pageSize !== prevState.pageSize) {\n var current = prevState.current;\n var newCurrent = calculatePage(props.pageSize, prevState, props);\n current = current > newCurrent ? newCurrent : current;\n\n if (!('current' in props)) {\n newState.current = current;\n newState.currentInputValue = current;\n }\n\n newState.pageSize = props.pageSize;\n }\n\n return newState;\n }\n }]);\n\n return Pagination;\n}(React.Component);\n\nPagination.defaultProps = {\n defaultCurrent: 1,\n total: 0,\n defaultPageSize: 10,\n onChange: noop,\n className: '',\n selectPrefixCls: 'rc-select',\n prefixCls: 'rc-pagination',\n selectComponentClass: null,\n hideOnSinglePage: false,\n showPrevNextJumpers: true,\n showQuickJumper: false,\n showLessItems: false,\n showTitle: true,\n onShowSizeChange: noop,\n locale: LOCALE,\n style: {},\n itemRender: defaultItemRender,\n totalBoundaryShowSizeChanger: 50\n};\nexport default Pagination;","export default {\n // Options.jsx\n items_per_page: '条/页',\n jump_to: '跳至',\n jump_to_confirm: '确定',\n page: '页',\n // Pagination.jsx\n prev_page: '上一页',\n next_page: '下一页',\n prev_5: '向前 5 页',\n next_5: '向后 5 页',\n prev_3: '向前 3 页',\n next_3: '向后 3 页'\n};","// This icon file is generated automatically.\nvar DoubleLeftOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z\" } }] }, \"name\": \"double-left\", \"theme\": \"outlined\" };\nexport default DoubleLeftOutlined;\n","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport DoubleLeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleLeftOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DoubleLeftOutlined = function DoubleLeftOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: DoubleLeftOutlinedSvg\n }));\n};\n\nDoubleLeftOutlined.displayName = 'DoubleLeftOutlined';\nexport default /*#__PURE__*/React.forwardRef(DoubleLeftOutlined);","// This icon file is generated automatically.\nvar DoubleRightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\" } }] }, \"name\": \"double-right\", \"theme\": \"outlined\" };\nexport default DoubleRightOutlined;\n","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport DoubleRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleRightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DoubleRightOutlined = function DoubleRightOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: DoubleRightOutlinedSvg\n }));\n};\n\nDoubleRightOutlined.displayName = 'DoubleRightOutlined';\nexport default /*#__PURE__*/React.forwardRef(DoubleRightOutlined);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Select from '../select';\n\nvar MiniSelect = function MiniSelect(props) {\n return /*#__PURE__*/React.createElement(Select, _extends({\n size: \"small\"\n }, props));\n};\n\nMiniSelect.Option = Select.Option;\nexport default MiniSelect;","import Pagination from './Pagination';\nexport default Pagination;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport RcPagination from 'rc-pagination';\nimport enUS from \"rc-pagination/es/locale/en_US\";\nimport classNames from 'classnames';\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport DoubleLeftOutlined from \"@ant-design/icons/es/icons/DoubleLeftOutlined\";\nimport DoubleRightOutlined from \"@ant-design/icons/es/icons/DoubleRightOutlined\";\nimport MiniSelect from './MiniSelect';\nimport Select from '../select';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport { ConfigContext } from '../config-provider';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\n\nvar Pagination = function Pagination(_a) {\n var customizePrefixCls = _a.prefixCls,\n customizeSelectPrefixCls = _a.selectPrefixCls,\n className = _a.className,\n size = _a.size,\n customLocale = _a.locale,\n restProps = __rest(_a, [\"prefixCls\", \"selectPrefixCls\", \"className\", \"size\", \"locale\"]);\n\n var _useBreakpoint = useBreakpoint(),\n xs = _useBreakpoint.xs;\n\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n\n var prefixCls = getPrefixCls('pagination', customizePrefixCls);\n\n var getIconsProps = function getIconsProps() {\n var ellipsis = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-item-ellipsis\")\n }, \"\\u2022\\u2022\\u2022\");\n var prevIcon = /*#__PURE__*/React.createElement(\"button\", {\n className: \"\".concat(prefixCls, \"-item-link\"),\n type: \"button\",\n tabIndex: -1\n }, /*#__PURE__*/React.createElement(LeftOutlined, null));\n var nextIcon = /*#__PURE__*/React.createElement(\"button\", {\n className: \"\".concat(prefixCls, \"-item-link\"),\n type: \"button\",\n tabIndex: -1\n }, /*#__PURE__*/React.createElement(RightOutlined, null));\n var jumpPrevIcon = /*#__PURE__*/React.createElement(\"a\", {\n className: \"\".concat(prefixCls, \"-item-link\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-container\")\n }, /*#__PURE__*/React.createElement(DoubleLeftOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }), ellipsis));\n var jumpNextIcon = /*#__PURE__*/React.createElement(\"a\", {\n className: \"\".concat(prefixCls, \"-item-link\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-container\")\n }, /*#__PURE__*/React.createElement(DoubleRightOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }), ellipsis)); // change arrows direction in right-to-left direction\n\n if (direction === 'rtl') {\n var _ref = [nextIcon, prevIcon];\n prevIcon = _ref[0];\n nextIcon = _ref[1];\n var _ref2 = [jumpNextIcon, jumpPrevIcon];\n jumpPrevIcon = _ref2[0];\n jumpNextIcon = _ref2[1];\n }\n\n return {\n prevIcon: prevIcon,\n nextIcon: nextIcon,\n jumpPrevIcon: jumpPrevIcon,\n jumpNextIcon: jumpNextIcon\n };\n };\n\n var renderPagination = function renderPagination(contextLocale) {\n var locale = _extends(_extends({}, contextLocale), customLocale);\n\n var isSmall = size === 'small' || !!(xs && !size && restProps.responsive);\n var selectPrefixCls = getPrefixCls('select', customizeSelectPrefixCls);\n var extendedClassName = classNames(_defineProperty({\n mini: isSmall\n }, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), className);\n return /*#__PURE__*/React.createElement(RcPagination, _extends({}, restProps, {\n prefixCls: prefixCls,\n selectPrefixCls: selectPrefixCls\n }, getIconsProps(), {\n className: extendedClassName,\n selectComponentClass: isSmall ? MiniSelect : Select,\n locale: locale\n }));\n };\n\n return /*#__PURE__*/React.createElement(LocaleReceiver, {\n componentName: \"Pagination\",\n defaultLocale: enUS\n }, renderPagination);\n};\n\nexport default Pagination;"],"names":["props","ref","AntdIcon","Object","assign","icon","displayName","_a","prefixCls","className","_a$hoverable","hoverable","s","e","t","p","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__rest","C","_ref","prefix","getPrefixCls","classString","concat","Card","_extends2","_classNames","head","_React$useContext","direction","size","SizeContext","customizePrefixCls","extra","_props$headStyle","headStyle","_props$bodyStyle","bodyStyle","title","loading","_props$bordered","bordered","customizeSize","type","cover","actions","tabList","children","activeTabKey","defaultActiveTabKey","tabBarExtraContent","_props$tabProps","tabProps","others","loadingBlockStyle","padding","undefined","block","loadingBlock","style","gutter","span","hasActiveTabKey","extraProps","tabs","onChange","key","onTabChange","map","item","tab","disabled","containGrid","coverDom","body","actionDom","action","index","width","getAction","divProps","omit","mergedSize","element","Grid","Meta","avatar","description","avatarDom","titleDom","descriptionDom","MetaDetail","_useState","useState","_useState2","screens","setScreens","useEffect","token","supportScreens","Item","result","colStyle","_React$useContext2","ListContext","grid","itemLayout","actionsContent","Element","itemChildren","flex","content","List","_a$pagination","pagination","_a$bordered","_a$split","split","loadMore","_a$dataSource","dataSource","header","footer","_a$loading","rowKey","renderItem","locale","rest","paginationObj","_React$useState","defaultCurrent","_React$useState2","paginationCurrent","setPaginationCurrent","_React$useState3","defaultPageSize","_React$useState4","paginationSize","setPaginationSize","renderEmpty","keys","triggerPaginationEvent","eventName","page","pageSize","onPaginationChange","onPaginationShowSizeChange","loadingProp","spinning","isLoading","sizeCls","paginationProps","current","total","largestPage","Math","ceil","paginationContent","onShowSizeChange","splitDataSource","splice","useBreakpoint","currentBreakpoint","breakpoint","columnCount","column","maxWidth","childrenContent","minHeight","items","renderInnerItem","childrenList","child","renderEmptyHandler","emptyText","renderEmptyFunc","paginationPosition","position","Provider","value","Consumer","rootPrefixCls","cls","active","showTitle","onClick","onKeyPress","tabIndex","itemRender","rel","Options","_React$Component","_super","_this","this","_len","arguments","args","Array","_key","apply","state","goInputText","buildOptionText","items_per_page","changeSize","Number","handleChange","setState","target","handleBlur","_this$props","goButton","quickGo","relatedTarget","getValidValue","go","keyCode","isNaN","_this$props2","pageSizeOptions","some","option","toString","sort","a","b","_this2","_this$props3","selectComponentClass","selectPrefixCls","Select","changeSelect","goInput","gotoButton","getPageSizeOptions","options","opt","Option","showSearch","optionLabelProp","dropdownMatchSelectWidth","getPopupContainer","triggerNode","parentNode","onKeyUp","jump_to_confirm","jump_to","onBlur","defaultProps","noop","calculatePage","floor","Pagination","getJumpPrevPage","max","showLessItems","getJumpNextPage","min","getItemIcon","label","iconNode","savePaginationNode","node","paginationNode","isValid","isFinite","shouldDisplayQuickJumper","showQuickJumper","handleKeyDown","preventDefault","handleKeyUp","currentInputValue","changePageSize","newCurrent","currentPage","prev","hasPrev","next","hasNext","jumpPrev","jumpNext","runIfEnter","event","callback","charCode","restParams","runIfEnterPrev","runIfEnterNext","runIfEnterJumpPrev","runIfEnterJumpNext","handleGoTO","hasOnChange","console","warn","_current","_pageSize","prevProps","prevState","lastCurrentNode","querySelector","document","activeElement","blur","inputValue","allPages","showSizeChanger","totalBoundaryShowSizeChanger","prevPage","prevIcon","prevButton","isValidElement","cloneElement","nextPage","_this$props4","nextIcon","nextButton","_this$props5","hideOnSinglePage","showTotal","simple","showPrevNextJumpers","jumpPrevIcon","jumpNextIcon","_this$state","pagerList","firstPager","lastPager","pageBufferSize","dataOrAriaAttributeProps","reduce","substr","prev_page","renderPrev","onKeyDown","next_page","renderNext","pagerProps","push","prevItemTitle","prev_3","prev_5","nextItemTitle","next_3","next_5","last","left","right","_i","_active","unshift","totalText","prevDisabled","nextDisabled","unselectable","getShowSizeChanger","newState","MiniSelect","customizeSelectPrefixCls","customLocale","restProps","xs","renderPagination","contextLocale","isSmall","responsive","extendedClassName","mini","ellipsis","LeftOutlined","RightOutlined","_ref2","getIconsProps","LocaleReceiver","componentName","defaultLocale"],"sourceRoot":""}
public/dist/276.lite.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ "use strict";(self.webpackChunkrealCookieBanner_name_=self.webpackChunkrealCookieBanner_name_||[]).push([[276],{8276:function(e,t,n){n.d(t,{Z:function(){return Xe}});var o=n(3429),r=n(63),i=n(4741),a=n(7228),s=n(7363),u=n.n(s),l=n(2711),c=n(6762),p=n(3340),f=n(3841),d=n(5952),v=n(1894),h=function(e){var t,n,o=e.className,i=e.included,a=e.vertical,s=e.style,c=e.length,p=e.offset,f=e.reverse;c<0&&(f=!f,c=Math.abs(c),p=100-p);var d=a?(t={},(0,r.Z)(t,f?"top":"bottom","".concat(p,"%")),(0,r.Z)(t,f?"bottom":"top","auto"),(0,r.Z)(t,"height","".concat(c,"%")),t):(n={},(0,r.Z)(n,f?"right":"left","".concat(p,"%")),(0,r.Z)(n,f?"left":"right","auto"),(0,r.Z)(n,"width","".concat(c,"%")),n),v=(0,l.Z)((0,l.Z)({},s),d);return i?u().createElement("div",{className:o,style:v}):null},m=n(4115),g=n(7870),y=n(3071),b=n(8067),k=n(5905),C=n(2286),Z=n.n(C),x=function(e){var t=e.prefixCls,n=e.vertical,o=e.reverse,i=e.marks,a=e.dots,s=e.step,c=e.included,p=e.lowerBound,f=e.upperBound,d=e.max,h=e.min,m=e.dotStyle,g=e.activeDotStyle,y=d-h,b=function(e,t,n,o,r,i){(0,v.ZP)(!n||o>0,"`Slider[step]` should be a positive number in order to make Slider[dots] work.");var a=Object.keys(t).map(parseFloat).sort((function(e,t){return e-t}));if(n&&o)for(var s=r;s<=i;s+=o)-1===a.indexOf(s)&&a.push(s);return a}(0,i,a,s,h,d).map((function(e){var i,a="".concat(Math.abs(e-h)/y*100,"%"),s=!c&&e===f||c&&e<=f&&e>=p,d=n?(0,l.Z)((0,l.Z)({},m),{},(0,r.Z)({},o?"top":"bottom",a)):(0,l.Z)((0,l.Z)({},m),{},(0,r.Z)({},o?"right":"left",a));s&&(d=(0,l.Z)((0,l.Z)({},d),g));var v=Z()((i={},(0,r.Z)(i,"".concat(t,"-dot"),!0),(0,r.Z)(i,"".concat(t,"-dot-active"),s),(0,r.Z)(i,"".concat(t,"-dot-reverse"),o),i));return u().createElement("span",{className:v,style:d,key:e})}));return u().createElement("div",{className:"".concat(t,"-step")},b)},M=function(e){var t=e.className,n=e.vertical,i=e.reverse,a=e.marks,s=e.included,c=e.upperBound,p=e.lowerBound,f=e.max,d=e.min,v=e.onClickLabel,h=Object.keys(a),m=f-d,g=h.map(parseFloat).sort((function(e,t){return e-t})).map((function(e){var f,h=a[e],g="object"===(0,o.Z)(h)&&!u().isValidElement(h),y=g?h.label:h;if(!y&&0!==y)return null;var b=!s&&e===c||s&&e<=c&&e>=p,k=Z()((f={},(0,r.Z)(f,"".concat(t,"-text"),!0),(0,r.Z)(f,"".concat(t,"-text-active"),b),f)),C=(0,r.Z)({marginBottom:"-50%"},i?"top":"bottom","".concat((e-d)/m*100,"%")),x=(0,r.Z)({transform:"translateX(".concat(i?"50%":"-50%",")"),msTransform:"translateX(".concat(i?"50%":"-50%",")")},i?"right":"left","".concat((e-d)/m*100,"%")),M=n?C:x,T=g?(0,l.Z)((0,l.Z)({},M),h.style):M;return u().createElement("span",{className:k,style:T,key:e,onMouseDown:function(t){return v(t,e)},onTouchStart:function(t){return v(t,e)}},y)}));return u().createElement("div",{className:t},g)},T=function(e){(0,f.Z)(n,e);var t=(0,d.Z)(n);function n(){var e;return(0,c.Z)(this,n),(e=t.apply(this,arguments)).state={clickFocused:!1},e.setHandleRef=function(t){e.handle=t},e.handleMouseUp=function(){document.activeElement===e.handle&&e.setClickFocus(!0)},e.handleMouseDown=function(t){t.preventDefault(),e.focus()},e.handleBlur=function(){e.setClickFocus(!1)},e.handleKeyDown=function(){e.setClickFocus(!1)},e}return(0,p.Z)(n,[{key:"componentDidMount",value:function(){this.onMouseUpListener=(0,k.Z)(document,"mouseup",this.handleMouseUp)}},{key:"componentWillUnmount",value:function(){this.onMouseUpListener&&this.onMouseUpListener.remove()}},{key:"setClickFocus",value:function(e){this.setState({clickFocused:e})}},{key:"clickFocus",value:function(){this.setClickFocus(!0),this.focus()}},{key:"focus",value:function(){this.handle.focus()}},{key:"blur",value:function(){this.handle.blur()}},{key:"render",value:function(){var e,t,n,o=this.props,a=o.prefixCls,s=o.vertical,c=o.reverse,p=o.offset,f=o.style,d=o.disabled,v=o.min,h=o.max,g=o.value,y=o.tabIndex,b=o.ariaLabel,k=o.ariaLabelledBy,C=o.ariaValueTextFormatter,x=(0,m.Z)(o,["prefixCls","vertical","reverse","offset","style","disabled","min","max","value","tabIndex","ariaLabel","ariaLabelledBy","ariaValueTextFormatter"]),M=Z()(this.props.className,(0,r.Z)({},"".concat(a,"-handle-click-focused"),this.state.clickFocused)),T=s?(e={},(0,r.Z)(e,c?"top":"bottom","".concat(p,"%")),(0,r.Z)(e,c?"bottom":"top","auto"),(0,r.Z)(e,"transform",c?null:"translateY(+50%)"),e):(t={},(0,r.Z)(t,c?"right":"left","".concat(p,"%")),(0,r.Z)(t,c?"left":"right","auto"),(0,r.Z)(t,"transform","translateX(".concat(c?"+":"-","50%)")),t),w=(0,l.Z)((0,l.Z)({},f),T),P=y||0;return(d||null===y)&&(P=null),C&&(n=C(g)),u().createElement("div",(0,i.Z)({ref:this.setHandleRef,tabIndex:P},x,{className:M,style:w,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,onMouseDown:this.handleMouseDown,role:"slider","aria-valuemin":v,"aria-valuemax":h,"aria-valuenow":g,"aria-disabled":!!d,"aria-label":b,"aria-labelledby":k,"aria-valuetext":n}))}}]),n}(u().Component),w=n(1533),P=n.n(w),E=n(5065);function D(e,t){try{return Object.keys(t).some((function(n){return e.target===(0,w.findDOMNode)(t[n])}))}catch(e){return!1}}function S(e,t){var n=t.min,o=t.max;return e<n||e>o}function O(e){return e.touches.length>1||"touchend"===e.type.toLowerCase()&&e.touches.length>0}function N(e,t){var n=t.marks,o=t.step,r=t.min,i=t.max,a=Object.keys(n).map(parseFloat);if(null!==o){var s=Math.pow(10,V(o)),u=Math.floor((i*s-r*s)/(o*s)),l=Math.min((e-r)/o,u),c=Math.round(l)*o+r;a.push(c)}var p=a.map((function(t){return Math.abs(e-t)}));return a[p.indexOf(Math.min.apply(Math,(0,g.Z)(p)))]}function V(e){var t=e.toString(),n=0;return t.indexOf(".")>=0&&(n=t.length-t.indexOf(".")-1),n}function R(e,t){return e?t.clientY:t.pageX}function H(e,t){return e?t.touches[0].clientY:t.touches[0].pageX}function L(e,t){var n=t.getBoundingClientRect();return e?n.top+.5*n.height:window.pageXOffset+n.left+.5*n.width}function B(e,t){var n=t.max,o=t.min;return e<=o?o:e>=n?n:e}function A(e,t){var n=t.step,o=isFinite(N(e,t))?N(e,t):0;return null===n?o:parseFloat(o.toFixed(V(n)))}function F(e){e.stopPropagation(),e.preventDefault()}function I(e,t,n){var o="increase",r="decrease",i=o;switch(e.keyCode){case E.Z.UP:i=t&&n?r:o;break;case E.Z.RIGHT:i=!t&&n?r:o;break;case E.Z.DOWN:i=t&&n?o:r;break;case E.Z.LEFT:i=!t&&n?o:r;break;case E.Z.END:return function(e,t){return t.max};case E.Z.HOME:return function(e,t){return t.min};case E.Z.PAGE_UP:return function(e,t){return e+2*t.step};case E.Z.PAGE_DOWN:return function(e,t){return e-2*t.step};default:return}return function(e,t){return function(e,t,n){var o={increase:function(e,t){return e+t},decrease:function(e,t){return e-t}},r=o[e](Object.keys(n.marks).indexOf(JSON.stringify(t)),1),i=Object.keys(n.marks)[r];return n.step?o[e](t,n.step):Object.keys(n.marks).length&&n.marks[i]?n.marks[i]:t}(i,e,t)}}function U(){}function j(e){var t;return t=function(e){(0,f.Z)(n,e);var t=(0,d.Z)(n);function n(e){var o;(0,c.Z)(this,n),(o=t.call(this,e)).onDown=function(e,t){var n=t,r=o.props,i=r.draggableTrack,a=r.vertical,s=o.state.bounds,u=i&&o.positionGetValue&&o.positionGetValue(n)||[],l=D(e,o.handlesRefs);if(o.dragTrack=i&&s.length>=2&&!l&&!u.map((function(e,t){var n=!!t||e>=s[t];return t===u.length-1?e<=s[t]:n})).some((function(e){return!e})),o.dragTrack)o.dragOffset=n,o.startBounds=(0,g.Z)(s);else{if(l){var c=L(a,e.target);o.dragOffset=n-c,n=c}else o.dragOffset=0;o.onStart(n)}},o.onMouseDown=function(e){if(0===e.button){o.removeDocumentEvents();var t=R(o.props.vertical,e);o.onDown(e,t),o.addDocumentMouseEvents()}},o.onTouchStart=function(e){if(!O(e)){var t=H(o.props.vertical,e);o.onDown(e,t),o.addDocumentTouchEvents(),F(e)}},o.onFocus=function(e){var t=o.props,n=t.onFocus,r=t.vertical;if(D(e,o.handlesRefs)&&!o.dragTrack){var i=L(r,e.target);o.dragOffset=0,o.onStart(i),F(e),n&&n(e)}},o.onBlur=function(e){var t=o.props.onBlur;o.dragTrack||o.onEnd(),t&&t(e)},o.onMouseUp=function(){o.handlesRefs[o.prevMovedHandleIndex]&&o.handlesRefs[o.prevMovedHandleIndex].clickFocus()},o.onMouseMove=function(e){if(o.sliderRef){var t=R(o.props.vertical,e);o.onMove(e,t-o.dragOffset,o.dragTrack,o.startBounds)}else o.onEnd()},o.onTouchMove=function(e){if(!O(e)&&o.sliderRef){var t=H(o.props.vertical,e);o.onMove(e,t-o.dragOffset,o.dragTrack,o.startBounds)}else o.onEnd()},o.onKeyDown=function(e){o.sliderRef&&D(e,o.handlesRefs)&&o.onKeyboard(e)},o.onClickMarkLabel=function(e,t){e.stopPropagation(),o.onChange({value:t}),o.setState({value:t},(function(){return o.onEnd(!0)}))},o.saveSlider=function(e){o.sliderRef=e};var r=e.step,i=e.max,a=e.min,s=!isFinite(i-a)||(i-a)%r==0;return(0,v.ZP)(!r||Math.floor(r)!==r||s,"Slider[max] - Slider[min] (".concat(i-a,") should be a multiple of Slider[step] (").concat(r,")")),o.handlesRefs={},o}return(0,p.Z)(n,[{key:"componentDidMount",value:function(){this.document=this.sliderRef&&this.sliderRef.ownerDocument;var e=this.props,t=e.autoFocus,n=e.disabled;t&&!n&&this.focus()}},{key:"componentWillUnmount",value:function(){(0,y.Z)((0,b.Z)(n.prototype),"componentWillUnmount",this)&&(0,y.Z)((0,b.Z)(n.prototype),"componentWillUnmount",this).call(this),this.removeDocumentEvents()}},{key:"getSliderStart",value:function(){var e=this.sliderRef,t=this.props,n=t.vertical,o=t.reverse,r=e.getBoundingClientRect();return n?o?r.bottom:r.top:window.pageXOffset+(o?r.right:r.left)}},{key:"getSliderLength",value:function(){var e=this.sliderRef;if(!e)return 0;var t=e.getBoundingClientRect();return this.props.vertical?t.height:t.width}},{key:"addDocumentTouchEvents",value:function(){this.onTouchMoveListener=(0,k.Z)(this.document,"touchmove",this.onTouchMove),this.onTouchUpListener=(0,k.Z)(this.document,"touchend",this.onEnd)}},{key:"addDocumentMouseEvents",value:function(){this.onMouseMoveListener=(0,k.Z)(this.document,"mousemove",this.onMouseMove),this.onMouseUpListener=(0,k.Z)(this.document,"mouseup",this.onEnd)}},{key:"removeDocumentEvents",value:function(){this.onTouchMoveListener&&this.onTouchMoveListener.remove(),this.onTouchUpListener&&this.onTouchUpListener.remove(),this.onMouseMoveListener&&this.onMouseMoveListener.remove(),this.onMouseUpListener&&this.onMouseUpListener.remove()}},{key:"focus",value:function(){var e;this.props.disabled||null===(e=this.handlesRefs[0])||void 0===e||e.focus()}},{key:"blur",value:function(){var e=this;this.props.disabled||Object.keys(this.handlesRefs).forEach((function(t){var n,o;null===(n=e.handlesRefs[t])||void 0===n||null===(o=n.blur)||void 0===o||o.call(n)}))}},{key:"calcValue",value:function(e){var t=this.props,n=t.vertical,o=t.min,r=t.max,i=Math.abs(Math.max(e,0)/this.getSliderLength());return n?(1-i)*(r-o)+o:i*(r-o)+o}},{key:"calcValueByPos",value:function(e){var t=(this.props.reverse?-1:1)*(e-this.getSliderStart());return this.trimAlignValue(this.calcValue(t))}},{key:"calcOffset",value:function(e){var t=this.props,n=t.min,o=(e-n)/(t.max-n);return Math.max(0,100*o)}},{key:"saveHandle",value:function(e,t){this.handlesRefs[e]=t}},{key:"render",value:function(){var e,t=this.props,o=t.prefixCls,i=t.className,a=t.marks,s=t.dots,c=t.step,p=t.included,f=t.disabled,d=t.vertical,v=t.reverse,h=t.min,m=t.max,g=t.children,k=t.maximumTrackStyle,C=t.style,T=t.railStyle,w=t.dotStyle,P=t.activeDotStyle,E=(0,y.Z)((0,b.Z)(n.prototype),"render",this).call(this),D=E.tracks,S=E.handles,O=Z()(o,(e={},(0,r.Z)(e,"".concat(o,"-with-marks"),Object.keys(a).length),(0,r.Z)(e,"".concat(o,"-disabled"),f),(0,r.Z)(e,"".concat(o,"-vertical"),d),(0,r.Z)(e,i,i),e));return u().createElement("div",{ref:this.saveSlider,className:O,onTouchStart:f?U:this.onTouchStart,onMouseDown:f?U:this.onMouseDown,onMouseUp:f?U:this.onMouseUp,onKeyDown:f?U:this.onKeyDown,onFocus:f?U:this.onFocus,onBlur:f?U:this.onBlur,style:C},u().createElement("div",{className:"".concat(o,"-rail"),style:(0,l.Z)((0,l.Z)({},k),T)}),D,u().createElement(x,{prefixCls:o,vertical:d,reverse:v,marks:a,dots:s,step:c,included:p,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:m,min:h,dotStyle:w,activeDotStyle:P}),S,u().createElement(M,{className:"".concat(o,"-mark"),onClickLabel:f?U:this.onClickMarkLabel,vertical:d,marks:a,included:p,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:m,min:h,reverse:v}),g)}}]),n}(e),t.displayName="ComponentEnhancer(".concat(e.displayName,")"),t.defaultProps=(0,l.Z)((0,l.Z)({},e.defaultProps),{},{prefixCls:"rc-slider",className:"",min:0,max:100,step:1,marks:{},handle:function(e){var t=e.index,n=(0,m.Z)(e,["index"]);return delete n.dragging,null===n.value?null:u().createElement(T,(0,i.Z)({},n,{key:t}))},onBeforeChange:U,onChange:U,onAfterChange:U,included:!0,disabled:!1,dots:!1,vertical:!1,reverse:!1,trackStyle:[{}],handleStyle:[{}],railStyle:{},dotStyle:{},activeDotStyle:{}}),t}var X=function(e){(0,f.Z)(n,e);var t=(0,d.Z)(n);function n(e){var o;(0,c.Z)(this,n),(o=t.call(this,e)).positionGetValue=function(e){return[]},o.onEnd=function(e){var t=o.state.dragging;o.removeDocumentEvents(),(t||e)&&o.props.onAfterChange(o.getValue()),o.setState({dragging:!1})};var r=void 0!==e.defaultValue?e.defaultValue:e.min,i=void 0!==e.value?e.value:r;return o.state={value:o.trimAlignValue(i),dragging:!1},(0,v.ZP)(!("minimumTrackStyle"in e),"minimumTrackStyle will be deprecated, please use trackStyle instead."),(0,v.ZP)(!("maximumTrackStyle"in e),"maximumTrackStyle will be deprecated, please use railStyle instead."),o}return(0,p.Z)(n,[{key:"calcValueByPos",value:function(e){return 0}},{key:"calcOffset",value:function(e){return 0}},{key:"saveHandle",value:function(e,t){}},{key:"removeDocumentEvents",value:function(){}},{key:"componentDidUpdate",value:function(e,t){var n=this.props,o=n.min,r=n.max,i=n.value,a=n.onChange;if("min"in this.props||"max"in this.props){var s=void 0!==i?i:t.value,u=this.trimAlignValue(s,this.props);u!==t.value&&(this.setState({value:u}),o===e.min&&r===e.max||!S(s,this.props)||a(u))}}},{key:"onChange",value:function(e){var t=this.props,n=!("value"in t),o=e.value>this.props.max?(0,l.Z)((0,l.Z)({},e),{},{value:this.props.max}):e;n&&this.setState(o);var r=o.value;t.onChange(r)}},{key:"onStart",value:function(e){this.setState({dragging:!0});var t=this.props,n=this.getValue();t.onBeforeChange(n);var o=this.calcValueByPos(e);this.startValue=o,this.startPosition=e,o!==n&&(this.prevMovedHandleIndex=0,this.onChange({value:o}))}},{key:"onMove",value:function(e,t){F(e);var n=this.state.value,o=this.calcValueByPos(t);o!==n&&this.onChange({value:o})}},{key:"onKeyboard",value:function(e){var t=this.props,n=t.reverse,o=I(e,t.vertical,n);if(o){F(e);var r=this.state.value,i=o(r,this.props),a=this.trimAlignValue(i);if(a===r)return;this.onChange({value:a}),this.props.onAfterChange(a),this.onEnd()}}},{key:"getValue",value:function(){return this.state.value}},{key:"getLowerBound",value:function(){var e=this.props.startPoint||this.props.min;return this.state.value>e?e:this.state.value}},{key:"getUpperBound",value:function(){return this.state.value<this.props.startPoint?this.props.startPoint:this.state.value}},{key:"trimAlignValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null===e)return null;var n=(0,l.Z)((0,l.Z)({},this.props),t),o=B(e,n);return A(o,n)}},{key:"render",value:function(){var e=this,t=this.props,n=t.prefixCls,o=t.vertical,r=t.included,i=t.disabled,a=t.minimumTrackStyle,s=t.trackStyle,c=t.handleStyle,p=t.tabIndex,f=t.ariaLabelForHandle,d=t.ariaLabelledByForHandle,v=t.ariaValueTextFormatterForHandle,m=t.min,g=t.max,y=t.startPoint,b=t.reverse,k=t.handle,C=this.state,Z=C.value,x=C.dragging,M=this.calcOffset(Z),T=k({className:"".concat(n,"-handle"),prefixCls:n,vertical:o,offset:M,value:Z,dragging:x,disabled:i,min:m,max:g,reverse:b,index:0,tabIndex:p,ariaLabel:f,ariaLabelledBy:d,ariaValueTextFormatter:v,style:c[0]||c,ref:function(t){return e.saveHandle(0,t)}}),w=void 0!==y?this.calcOffset(y):0,P=s[0]||s;return{tracks:u().createElement(h,{className:"".concat(n,"-track"),vertical:o,included:r,offset:w,reverse:b,length:M-w,style:(0,l.Z)((0,l.Z)({},a),P)}),handles:T}}}]),n}(u().Component),W=j(X),Y=function(e){var t=e.value,n=e.handle,o=e.bounds,r=e.props,i=r.allowCross,a=r.pushable,s=Number(a),u=B(t,r),l=u;return i||null==n||void 0===o||(n>0&&u<=o[n-1]+s&&(l=o[n-1]+s),n<o.length-1&&u>=o[n+1]-s&&(l=o[n+1]-s)),A(l,r)},z=function(e){(0,f.Z)(n,e);var t=(0,d.Z)(n);function n(e){var o;(0,c.Z)(this,n),(o=t.call(this,e)).positionGetValue=function(e){var t=o.getValue(),n=o.calcValueByPos(e),r=o.getClosestBound(n),i=o.getBoundNeedMoving(n,r);if(n===t[i])return null;var a=(0,g.Z)(t);return a[i]=n,a},o.onEnd=function(e){var t=o.state.handle;o.removeDocumentEvents(),t||(o.dragTrack=!1),(null!==t||e)&&o.props.onAfterChange(o.getValue()),o.setState({handle:null})};var r=e.count,i=e.min,a=e.max,s=Array.apply(void 0,(0,g.Z)(Array(r+1))).map((function(){return i})),u="defaultValue"in e?e.defaultValue:s,l=(void 0!==e.value?e.value:u).map((function(t,n){return Y({value:t,handle:n,props:e})})),p=l[0]===a?0:l.length-1;return o.state={handle:null,recent:p,bounds:l},o}return(0,p.Z)(n,[{key:"calcValueByPos",value:function(e){return 0}},{key:"getSliderLength",value:function(){return 0}},{key:"calcOffset",value:function(e){return 0}},{key:"saveHandle",value:function(e,t){}},{key:"removeDocumentEvents",value:function(){}},{key:"componentDidUpdate",value:function(e,t){var n=this,o=this.props,r=o.onChange,i=o.value,a=o.min,s=o.max;if(("min"in this.props||"max"in this.props)&&(a!==e.min||s!==e.max)){var u=i||t.bounds;u.some((function(e){return S(e,n.props)}))&&r(u.map((function(e){return B(e,n.props)})))}}},{key:"onChange",value:function(e){var t=this.props;if("value"in t){var n={};["handle","recent"].forEach((function(t){void 0!==e[t]&&(n[t]=e[t])})),Object.keys(n).length&&this.setState(n)}else this.setState(e);var o=(0,l.Z)((0,l.Z)({},this.state),e).bounds;t.onChange(o)}},{key:"onStart",value:function(e){var t=this.props,n=this.state,o=this.getValue();t.onBeforeChange(o);var r=this.calcValueByPos(e);this.startValue=r,this.startPosition=e;var i=this.getClosestBound(r);if(this.prevMovedHandleIndex=this.getBoundNeedMoving(r,i),this.setState({handle:this.prevMovedHandleIndex,recent:this.prevMovedHandleIndex}),r!==o[this.prevMovedHandleIndex]){var a=(0,g.Z)(n.bounds);a[this.prevMovedHandleIndex]=r,this.onChange({bounds:a})}}},{key:"onMove",value:function(e,t,n,o){F(e);var r=this.state,i=this.props,a=i.max||100,s=i.min||0;if(n){var u=i.vertical?-t:t;u=i.reverse?-u:u;var l=a-Math.max.apply(Math,(0,g.Z)(o)),c=s-Math.min.apply(Math,(0,g.Z)(o)),p=Math.min(Math.max(u/(this.getSliderLength()/100),c),l),f=o.map((function(e){return Math.floor(Math.max(Math.min(e+p,a),s))}));r.bounds.map((function(e,t){return e===f[t]})).some((function(e){return!e}))&&this.onChange({bounds:f})}else{var d=this.calcValueByPos(t);d!==r.bounds[r.handle]&&this.moveTo(d)}}},{key:"onKeyboard",value:function(e){var t=this.props,n=t.reverse,o=I(e,t.vertical,n);if(o){F(e);var r=this.state,i=this.props,a=r.bounds,s=r.handle,u=a[null===s?r.recent:s],l=o(u,i),c=Y({value:l,handle:s,bounds:r.bounds,props:i});if(c===u)return;this.moveTo(c,!0)}}},{key:"getValue",value:function(){return this.state.bounds}},{key:"getClosestBound",value:function(e){for(var t=this.state.bounds,n=0,o=1;o<t.length-1;o+=1)e>=t[o]&&(n=o);return Math.abs(t[n+1]-e)<Math.abs(t[n]-e)&&(n+=1),n}},{key:"getBoundNeedMoving",value:function(e,t){var n=this.state,o=n.bounds,r=n.recent,i=t,a=o[t+1]===o[t];return a&&o[r]===o[t]&&(i=r),a&&e!==o[t+1]&&(i=e<o[t+1]?t:t+1),i}},{key:"getLowerBound",value:function(){return this.state.bounds[0]}},{key:"getUpperBound",value:function(){var e=this.state.bounds;return e[e.length-1]}},{key:"getPoints",value:function(){var e=this.props,t=e.marks,n=e.step,o=e.min,r=e.max,i=this.internalPointsCache;if(!i||i.marks!==t||i.step!==n){var a=(0,l.Z)({},t);if(null!==n)for(var s=o;s<=r;s+=n)a[s]=s;var u=Object.keys(a).map(parseFloat);u.sort((function(e,t){return e-t})),this.internalPointsCache={marks:t,step:n,points:u}}return this.internalPointsCache.points}},{key:"moveTo",value:function(e,t){var n=this,o=this.state,r=this.props,i=(0,g.Z)(o.bounds),a=null===o.handle?o.recent:o.handle;i[a]=e;var s=a;!1!==r.pushable?this.pushSurroundingHandles(i,s):r.allowCross&&(i.sort((function(e,t){return e-t})),s=i.indexOf(e)),this.onChange({recent:s,handle:s,bounds:i}),t&&(this.props.onAfterChange(i),this.setState({},(function(){n.handlesRefs[s].focus()})),this.onEnd())}},{key:"pushSurroundingHandles",value:function(e,t){var n=e[t],o=this.props.pushable,r=Number(o),i=0;if(e[t+1]-n<r&&(i=1),n-e[t-1]<r&&(i=-1),0!==i){var a=t+i,s=i*(e[a]-n);this.pushHandle(e,a,i,r-s)||(e[t]=e[a]-i*r)}}},{key:"pushHandle",value:function(e,t,n,o){for(var r=e[t],i=e[t];n*(i-r)<o;){if(!this.pushHandleOnePoint(e,t,n))return e[t]=r,!1;i=e[t]}return!0}},{key:"pushHandleOnePoint",value:function(e,t,n){var o=this.getPoints(),r=o.indexOf(e[t])+n;if(r>=o.length||r<0)return!1;var i=t+n,a=o[r],s=this.props.pushable,u=Number(s),l=n*(e[i]-a);return!!this.pushHandle(e,i,n,u-l)&&(e[t]=a,!0)}},{key:"trimAlignValue",value:function(e){var t=this.state,n=t.handle,o=t.bounds;return Y({value:e,handle:n,bounds:o,props:this.props})}},{key:"render",value:function(){var e=this,t=this.state,n=t.handle,o=t.bounds,i=this.props,a=i.prefixCls,s=i.vertical,l=i.included,c=i.disabled,p=i.min,f=i.max,d=i.reverse,v=i.handle,m=i.trackStyle,g=i.handleStyle,y=i.tabIndex,b=i.ariaLabelGroupForHandles,k=i.ariaLabelledByGroupForHandles,C=i.ariaValueTextFormatterGroupForHandles,x=o.map((function(t){return e.calcOffset(t)})),M="".concat(a,"-handle"),T=o.map((function(t,o){var i,u=y[o]||0;(c||null===y[o])&&(u=null);var l=n===o;return v({className:Z()((i={},(0,r.Z)(i,M,!0),(0,r.Z)(i,"".concat(M,"-").concat(o+1),!0),(0,r.Z)(i,"".concat(M,"-dragging"),l),i)),prefixCls:a,vertical:s,dragging:l,offset:x[o],value:t,index:o,tabIndex:u,min:p,max:f,reverse:d,disabled:c,style:g[o],ref:function(t){return e.saveHandle(o,t)},ariaLabel:b[o],ariaLabelledBy:k[o],ariaValueTextFormatter:C[o]})}));return{tracks:o.slice(0,-1).map((function(e,t){var n,o=t+1,i=Z()((n={},(0,r.Z)(n,"".concat(a,"-track"),!0),(0,r.Z)(n,"".concat(a,"-track-").concat(o),!0),n));return u().createElement(h,{className:i,vertical:s,reverse:d,included:l,offset:x[o-1],length:x[o]-x[o-1],style:m[t],key:o})})),handles:T}}}],[{key:"getDerivedStateFromProps",value:function(e,t){if(!("value"in e||"min"in e||"max"in e))return null;var n=e.value||t.bounds,o=n.map((function(n,o){return Y({value:n,handle:o,bounds:t.bounds,props:e})}));if(t.bounds.length===o.length){if(o.every((function(e,n){return e===t.bounds[n]})))return null}else o=n.map((function(t,n){return Y({value:t,handle:n,props:e})}));return(0,l.Z)((0,l.Z)({},t),{},{bounds:o})}}]),n}(u().Component);z.displayName="Range",z.defaultProps={count:1,allowCross:!0,pushable:!1,draggableTrack:!1,tabIndex:[],ariaLabelGroupForHandles:[],ariaLabelledByGroupForHandles:[],ariaValueTextFormatterGroupForHandles:[]};var G=j(z),K=n(5558),_=n(6871),Q=n(7384),J=n(8369),q=n(5643),$=n(505);function ee(e,t,n){return n?e[0]===t[0]:e[0]===t[0]&&e[1]===t[1]}var te=n(4511),ne=n(9064);function oe(e){var t=e.prefixCls,n=e.motion,o=e.animation,r=e.transitionName;return n||(o?{motionName:"".concat(t,"-").concat(o)}:r?{motionName:r}:null)}function re(e){var t=e.prefixCls,n=e.visible,o=e.zIndex,r=e.mask,a=e.maskMotion,u=e.maskAnimation,c=e.maskTransitionName;if(!r)return null;var p={};return(a||c||u)&&(p=(0,l.Z)({motionAppear:!0},oe({motion:a,prefixCls:t,transitionName:c,animation:u}))),s.createElement(ne.Z,(0,i.Z)({},p,{visible:n,removeOnLeave:!0}),(function(e){var n=e.className;return s.createElement("div",{style:{zIndex:o},className:Z()("".concat(t,"-mask"),n)})}))}var ie=n(4001),ae=n(3493),se=n(7410);function ue(e,t){var n=null,o=null,r=new se.Z((function(e){var r=(0,a.Z)(e,1)[0].target;if(document.documentElement.contains(r)){var i=r.getBoundingClientRect(),s=i.width,u=i.height,l=Math.floor(s),c=Math.floor(u);n===l&&o===c||Promise.resolve().then((function(){t({width:l,height:c})})),n=l,o=c}}));return e&&r.observe(e),function(){r.disconnect()}}function le(e){return"function"!=typeof e?null:e()}function ce(e){return"object"===(0,o.Z)(e)&&e?e:null}var pe=u().forwardRef((function(e,t){var n=e.children,o=e.disabled,r=e.target,i=e.align,s=e.onAlign,l=e.monitorWindowResize,c=e.monitorBufferTime,p=void 0===c?0:c,f=u().useRef({}),d=u().useRef(),v=u().Children.only(n),h=u().useRef({});h.current.disabled=o,h.current.target=r,h.current.onAlign=s;var m=function(e,t){var n=u().useRef(!1),o=u().useRef(null);function r(){window.clearTimeout(o.current)}return[function e(a){if(n.current&&!0!==a)r(),o.current=window.setTimeout((function(){n.current=!1,e()}),t);else{if(!1===function(){var e=h.current,t=e.disabled,n=e.target,o=e.onAlign;if(!t&&n){var r,a=d.current,s=le(n),u=ce(n);f.current.element=s,f.current.point=u;var l=document.activeElement;return s&&(0,ie.Z)(s)?r=(0,ae.E3)(a,s,i):u&&(r=(0,ae.zy)(a,u,i)),function(e,t){e!==document.activeElement&&(0,Q.Z)(t,e)&&"function"==typeof e.focus&&e.focus()}(l,a),o&&r&&o(a,r),!0}return!1}())return;n.current=!0,r(),o.current=window.setTimeout((function(){n.current=!1}),t)}},function(){n.current=!1,r()}]}(0,p),g=(0,a.Z)(m,2),y=g[0],b=g[1],C=u().useRef({cancel:function(){}}),Z=u().useRef({cancel:function(){}});u().useEffect((function(){var e,t,n=le(r),o=ce(r);d.current!==Z.current.element&&(Z.current.cancel(),Z.current.element=d.current,Z.current.cancel=ue(d.current,y)),f.current.element===n&&((e=f.current.point)===(t=o)||e&&t&&("pageX"in t&&"pageY"in t?e.pageX===t.pageX&&e.pageY===t.pageY:"clientX"in t&&"clientY"in t&&e.clientX===t.clientX&&e.clientY===t.clientY))||(y(),C.current.element!==n&&(C.current.cancel(),C.current.element=n,C.current.cancel=ue(n,y)))})),u().useEffect((function(){o?b():y()}),[o]);var x=u().useRef(null);return u().useEffect((function(){l?x.current||(x.current=(0,k.Z)(window,"resize",y)):x.current&&(x.current.remove(),x.current=null)}),[l]),u().useEffect((function(){return function(){C.current.cancel(),Z.current.cancel(),x.current&&x.current.remove(),b()}}),[]),u().useImperativeHandle(t,(function(){return{forceAlign:function(){return y(!0)}}})),u().isValidElement(v)&&(v=u().cloneElement(v,{ref:(0,q.sQ)(v.ref,d)})),v}));pe.displayName="Align";var fe=pe,de=n(5450),ve=n.n(de),he=n(7938),me=["measure","align",null,"motion"],ge=s.forwardRef((function(e,t){var n=e.visible,o=e.prefixCls,r=e.className,u=e.style,c=e.children,p=e.zIndex,f=e.stretch,d=e.destroyPopupOnHide,v=e.forceRender,h=e.align,m=e.point,g=e.getRootDomNode,y=e.getClassNameFromAlign,b=e.onAlign,k=e.onMouseEnter,C=e.onMouseLeave,x=e.onMouseDown,M=e.onTouchStart,T=(0,s.useRef)(),w=(0,s.useRef)(),P=(0,s.useState)(),E=(0,a.Z)(P,2),D=E[0],S=E[1],O=function(e){var t=s.useState({width:0,height:0}),n=(0,a.Z)(t,2),o=n[0],r=n[1];return[s.useMemo((function(){var t={};if(e){var n=o.width,r=o.height;-1!==e.indexOf("height")&&r?t.height=r:-1!==e.indexOf("minHeight")&&r&&(t.minHeight=r),-1!==e.indexOf("width")&&n?t.width=n:-1!==e.indexOf("minWidth")&&n&&(t.minWidth=n)}return t}),[e,o]),function(e){r({width:e.offsetWidth,height:e.offsetHeight})}]}(f),N=(0,a.Z)(O,2),V=N[0],R=N[1],H=function(e,t){var n=(0,s.useState)(null),o=(0,a.Z)(n,2),r=o[0],i=o[1],u=(0,s.useRef)(),l=(0,s.useRef)(!1);function c(e){l.current||i(e)}function p(){_.Z.cancel(u.current)}return(0,s.useEffect)((function(){c("measure")}),[e]),(0,s.useEffect)((function(){"measure"===r&&(f&&R(g())),r&&(u.current=(0,_.Z)((0,he.Z)(ve().mark((function e(){var t,n;return ve().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=me.indexOf(r),(n=me[t+1])&&-1!==t&&c(n);case 3:case"end":return e.stop()}}),e)})))))}),[r]),(0,s.useEffect)((function(){return function(){l.current=!0,p()}}),[]),[r,function(e){p(),u.current=(0,_.Z)((function(){c((function(e){switch(r){case"align":return"motion";case"motion":return"stable"}return e})),null==e||e()}))}]}(n),L=(0,a.Z)(H,2),B=L[0],A=L[1],F=(0,s.useRef)();function I(){var e;null===(e=T.current)||void 0===e||e.forceAlign()}function U(e,t){if("align"===B){var n=y(t);S(n),D!==n?Promise.resolve().then((function(){I()})):A((function(){var e;null===(e=F.current)||void 0===e||e.call(F)})),null==b||b(e,t)}}var j=(0,l.Z)({},oe(e));function X(){return new Promise((function(e){F.current=e}))}["onAppearEnd","onEnterEnd","onLeaveEnd"].forEach((function(e){var t=j[e];j[e]=function(e,n){return A(),null==t?void 0:t(e,n)}})),s.useEffect((function(){j.motionName||"motion"!==B||A()}),[j.motionName,B]),s.useImperativeHandle(t,(function(){return{forceAlign:I,getElement:function(){return w.current}}}));var W=(0,l.Z)((0,l.Z)((0,l.Z)({},V),{},{zIndex:p},u),{},{opacity:"motion"!==B&&"stable"!==B&&n?0:void 0,pointerEvents:"stable"===B?void 0:"none"}),Y=!0;!(null==h?void 0:h.points)||"align"!==B&&"stable"!==B||(Y=!1);var z=c;return s.Children.count(c)>1&&(z=s.createElement("div",{className:"".concat(o,"-content")},c)),s.createElement(ne.Z,(0,i.Z)({visible:n,ref:w,leavedClassName:"".concat(o,"-hidden")},j,{onAppearPrepare:X,onEnterPrepare:X,removeOnLeave:d,forceRender:v}),(function(e,t){var n=e.className,i=e.style,a=Z()(o,r,D,n);return s.createElement(fe,{target:m||g,key:"popup",ref:T,monitorWindowResize:!0,disabled:Y,align:h,onAlign:U},s.createElement("div",{ref:t,className:a,onMouseEnter:k,onMouseLeave:C,onMouseDownCapture:x,onTouchStartCapture:M,style:(0,l.Z)((0,l.Z)({},i),W)},z))}))}));ge.displayName="PopupInner";var ye=ge,be=s.forwardRef((function(e,t){var n=e.prefixCls,o=e.visible,r=e.zIndex,a=e.children,u=e.mobile,c=(u=void 0===u?{}:u).popupClassName,p=u.popupStyle,f=u.popupMotion,d=void 0===f?{}:f,v=u.popupRender,h=s.useRef();s.useImperativeHandle(t,(function(){return{forceAlign:function(){},getElement:function(){return h.current}}}));var m=(0,l.Z)({zIndex:r},p),g=a;return s.Children.count(a)>1&&(g=s.createElement("div",{className:"".concat(n,"-content")},a)),v&&(g=v(g)),s.createElement(ne.Z,(0,i.Z)({visible:o,ref:h,removeOnLeave:!0},d),(function(e,t){var o=e.className,r=e.style,i=Z()(n,c,o);return s.createElement("div",{ref:t,className:i,style:(0,l.Z)((0,l.Z)({},r),m)},g)}))}));be.displayName="MobilePopupInner";var ke=be,Ce=s.forwardRef((function(e,t){var n=e.visible,o=e.mobile,r=(0,m.Z)(e,["visible","mobile"]),u=(0,s.useState)(n),c=(0,a.Z)(u,2),p=c[0],f=c[1],d=(0,s.useState)(!1),v=(0,a.Z)(d,2),h=v[0],g=v[1],y=(0,l.Z)((0,l.Z)({},r),{},{visible:p});(0,s.useEffect)((function(){f(n),n&&o&&g((0,te.Z)())}),[n,o]);var b=h?s.createElement(ke,(0,i.Z)({},y,{mobile:o,ref:t})):s.createElement(ye,(0,i.Z)({},y,{ref:t}));return s.createElement("div",null,s.createElement(re,y),b)}));Ce.displayName="Popup";var Ze=Ce,xe=s.createContext(null);function Me(){}var Te,we,Pe=["onClick","onMouseDown","onTouchStart","onMouseEnter","onMouseLeave","onFocus","onBlur","onContextMenu"],Ee=(Te=$.Z,we=function(e){(0,f.Z)(n,e);var t=(0,d.Z)(n);function n(e){var o,r;return(0,c.Z)(this,n),(o=t.call(this,e)).popupRef=s.createRef(),o.triggerRef=s.createRef(),o.onMouseEnter=function(e){var t=o.props.mouseEnterDelay;o.fireEvents("onMouseEnter",e),o.delaySetPopupVisible(!0,t,t?null:e)},o.onMouseMove=function(e){o.fireEvents("onMouseMove",e),o.setPoint(e)},o.onMouseLeave=function(e){o.fireEvents("onMouseLeave",e),o.delaySetPopupVisible(!1,o.props.mouseLeaveDelay)},o.onPopupMouseEnter=function(){o.clearDelayTimer()},o.onPopupMouseLeave=function(e){var t;e.relatedTarget&&!e.relatedTarget.setTimeout&&(0,Q.Z)(null===(t=o.popupRef.current)||void 0===t?void 0:t.getElement(),e.relatedTarget)||o.delaySetPopupVisible(!1,o.props.mouseLeaveDelay)},o.onFocus=function(e){o.fireEvents("onFocus",e),o.clearDelayTimer(),o.isFocusToShow()&&(o.focusTime=Date.now(),o.delaySetPopupVisible(!0,o.props.focusDelay))},o.onMouseDown=function(e){o.fireEvents("onMouseDown",e),o.preClickTime=Date.now()},o.onTouchStart=function(e){o.fireEvents("onTouchStart",e),o.preTouchTime=Date.now()},o.onBlur=function(e){o.fireEvents("onBlur",e),o.clearDelayTimer(),o.isBlurToHide()&&o.delaySetPopupVisible(!1,o.props.blurDelay)},o.onContextMenu=function(e){e.preventDefault(),o.fireEvents("onContextMenu",e),o.setPopupVisible(!0,e)},o.onContextMenuClose=function(){o.isContextMenuToShow()&&o.close()},o.onClick=function(e){if(o.fireEvents("onClick",e),o.focusTime){var t;if(o.preClickTime&&o.preTouchTime?t=Math.min(o.preClickTime,o.preTouchTime):o.preClickTime?t=o.preClickTime:o.preTouchTime&&(t=o.preTouchTime),Math.abs(t-o.focusTime)<20)return;o.focusTime=0}o.preClickTime=0,o.preTouchTime=0,o.isClickToShow()&&(o.isClickToHide()||o.isBlurToHide())&&e&&e.preventDefault&&e.preventDefault();var n=!o.state.popupVisible;(o.isClickToHide()&&!n||n&&o.isClickToShow())&&o.setPopupVisible(!o.state.popupVisible,e)},o.onPopupMouseDown=function(){var e;o.hasPopupMouseDown=!0,clearTimeout(o.mouseDownTimeout),o.mouseDownTimeout=window.setTimeout((function(){o.hasPopupMouseDown=!1}),0),o.context&&(e=o.context).onPopupMouseDown.apply(e,arguments)},o.onDocumentClick=function(e){if(!o.props.mask||o.props.maskClosable){var t=e.target,n=o.getRootDomNode(),r=o.getPopupDomNode();(0,Q.Z)(n,t)&&!o.isContextMenuOnly()||(0,Q.Z)(r,t)||o.hasPopupMouseDown||o.close()}},o.getRootDomNode=function(){var e=o.props.getTriggerDOMNode;if(e)return e(o.triggerRef.current);try{var t=(0,J.Z)(o.triggerRef.current);if(t)return t}catch(e){}return P().findDOMNode((0,K.Z)(o))},o.getPopupClassNameFromAlign=function(e){var t=[],n=o.props,r=n.popupPlacement,i=n.builtinPlacements,a=n.prefixCls,s=n.alignPoint,u=n.getPopupClassNameFromAlign;return r&&i&&t.push(function(e,t,n,o){for(var r=n.points,i=Object.keys(e),a=0;a<i.length;a+=1){var s=i[a];if(ee(e[s].points,r,o))return"".concat(t,"-placement-").concat(s)}return""}(i,a,e,s)),u&&t.push(u(e)),t.join(" ")},o.getComponent=function(){var e=o.props,t=e.prefixCls,n=e.destroyPopupOnHide,r=e.popupClassName,a=e.onPopupAlign,u=e.popupMotion,l=e.popupAnimation,c=e.popupTransitionName,p=e.popupStyle,f=e.mask,d=e.maskAnimation,v=e.maskTransitionName,h=e.maskMotion,m=e.zIndex,g=e.popup,y=e.stretch,b=e.alignPoint,k=e.mobile,C=e.forceRender,Z=o.state,x=Z.popupVisible,M=Z.point,T=o.getPopupAlign(),w={};return o.isMouseEnterToShow()&&(w.onMouseEnter=o.onPopupMouseEnter),o.isMouseLeaveToHide()&&(w.onMouseLeave=o.onPopupMouseLeave),w.onMouseDown=o.onPopupMouseDown,w.onTouchStart=o.onPopupMouseDown,s.createElement(Ze,(0,i.Z)({prefixCls:t,destroyPopupOnHide:n,visible:x,point:b&&M,className:r,align:T,onAlign:a,animation:l,getClassNameFromAlign:o.getPopupClassNameFromAlign},w,{stretch:y,getRootDomNode:o.getRootDomNode,style:p,mask:f,zIndex:m,transitionName:c,maskAnimation:d,maskTransitionName:v,maskMotion:h,ref:o.popupRef,motion:u,mobile:k,forceRender:C}),"function"==typeof g?g():g)},o.attachParent=function(e){_.Z.cancel(o.attachId);var t,n=o.props,r=n.getPopupContainer,i=n.getDocument,a=o.getRootDomNode();r?(a||0===r.length)&&(t=r(a)):t=i(o.getRootDomNode()).body,t?t.appendChild(e):o.attachId=(0,_.Z)((function(){o.attachParent(e)}))},o.getContainer=function(){var e=(0,o.props.getDocument)(o.getRootDomNode()).createElement("div");return e.style.position="absolute",e.style.top="0",e.style.left="0",e.style.width="100%",o.attachParent(e),e},o.setPoint=function(e){o.props.alignPoint&&e&&o.setState({point:{pageX:e.pageX,pageY:e.pageY}})},o.handlePortalUpdate=function(){o.state.prevPopupVisible!==o.state.popupVisible&&o.props.afterPopupVisibleChange(o.state.popupVisible)},r="popupVisible"in e?!!e.popupVisible:!!e.defaultPopupVisible,o.state={prevPopupVisible:r,popupVisible:r},Pe.forEach((function(e){o["fire".concat(e)]=function(t){o.fireEvents(e,t)}})),o}return(0,p.Z)(n,[{key:"componentDidMount",value:function(){this.componentDidUpdate()}},{key:"componentDidUpdate",value:function(){var e,t=this.props;if(this.state.popupVisible)return this.clickOutsideHandler||!this.isClickToHide()&&!this.isContextMenuToShow()||(e=t.getDocument(this.getRootDomNode()),this.clickOutsideHandler=(0,k.Z)(e,"mousedown",this.onDocumentClick)),this.touchOutsideHandler||(e=e||t.getDocument(this.getRootDomNode()),this.touchOutsideHandler=(0,k.Z)(e,"touchstart",this.onDocumentClick)),!this.contextMenuOutsideHandler1&&this.isContextMenuToShow()&&(e=e||t.getDocument(this.getRootDomNode()),this.contextMenuOutsideHandler1=(0,k.Z)(e,"scroll",this.onContextMenuClose)),void(!this.contextMenuOutsideHandler2&&this.isContextMenuToShow()&&(this.contextMenuOutsideHandler2=(0,k.Z)(window,"blur",this.onContextMenuClose)));this.clearOutsideHandler()}},{key:"componentWillUnmount",value:function(){this.clearDelayTimer(),this.clearOutsideHandler(),clearTimeout(this.mouseDownTimeout),_.Z.cancel(this.attachId)}},{key:"getPopupDomNode",value:function(){var e;return(null===(e=this.popupRef.current)||void 0===e?void 0:e.getElement())||null}},{key:"getPopupAlign",value:function(){var e=this.props,t=e.popupPlacement,n=e.popupAlign,o=e.builtinPlacements;return t&&o?function(e,t,n){var o=e[t]||{};return(0,l.Z)((0,l.Z)({},o),n)}(o,t,n):n}},{key:"setPopupVisible",value:function(e,t){var n=this.props.alignPoint,o=this.state.popupVisible;this.clearDelayTimer(),o!==e&&("popupVisible"in this.props||this.setState({popupVisible:e,prevPopupVisible:o}),this.props.onPopupVisibleChange(e)),n&&t&&e&&this.setPoint(t)}},{key:"delaySetPopupVisible",value:function(e,t,n){var o=this,r=1e3*t;if(this.clearDelayTimer(),r){var i=n?{pageX:n.pageX,pageY:n.pageY}:null;this.delayTimer=window.setTimeout((function(){o.setPopupVisible(e,i),o.clearDelayTimer()}),r)}else this.setPopupVisible(e,n)}},{key:"clearDelayTimer",value:function(){this.delayTimer&&(clearTimeout(this.delayTimer),this.delayTimer=null)}},{key:"clearOutsideHandler",value:function(){this.clickOutsideHandler&&(this.clickOutsideHandler.remove(),this.clickOutsideHandler=null),this.contextMenuOutsideHandler1&&(this.contextMenuOutsideHandler1.remove(),this.contextMenuOutsideHandler1=null),this.contextMenuOutsideHandler2&&(this.contextMenuOutsideHandler2.remove(),this.contextMenuOutsideHandler2=null),this.touchOutsideHandler&&(this.touchOutsideHandler.remove(),this.touchOutsideHandler=null)}},{key:"createTwoChains",value:function(e){var t=this.props.children.props,n=this.props;return t[e]&&n[e]?this["fire".concat(e)]:t[e]||n[e]}},{key:"isClickToShow",value:function(){var e=this.props,t=e.action,n=e.showAction;return-1!==t.indexOf("click")||-1!==n.indexOf("click")}},{key:"isContextMenuOnly",value:function(){var e=this.props.action;return"contextMenu"===e||1===e.length&&"contextMenu"===e[0]}},{key:"isContextMenuToShow",value:function(){var e=this.props,t=e.action,n=e.showAction;return-1!==t.indexOf("contextMenu")||-1!==n.indexOf("contextMenu")}},{key:"isClickToHide",value:function(){var e=this.props,t=e.action,n=e.hideAction;return-1!==t.indexOf("click")||-1!==n.indexOf("click")}},{key:"isMouseEnterToShow",value:function(){var e=this.props,t=e.action,n=e.showAction;return-1!==t.indexOf("hover")||-1!==n.indexOf("mouseEnter")}},{key:"isMouseLeaveToHide",value:function(){var e=this.props,t=e.action,n=e.hideAction;return-1!==t.indexOf("hover")||-1!==n.indexOf("mouseLeave")}},{key:"isFocusToShow",value:function(){var e=this.props,t=e.action,n=e.showAction;return-1!==t.indexOf("focus")||-1!==n.indexOf("focus")}},{key:"isBlurToHide",value:function(){var e=this.props,t=e.action,n=e.hideAction;return-1!==t.indexOf("focus")||-1!==n.indexOf("blur")}},{key:"forcePopupAlign",value:function(){var e;this.state.popupVisible&&(null===(e=this.popupRef.current)||void 0===e||e.forceAlign())}},{key:"fireEvents",value:function(e,t){var n=this.props.children.props[e];n&&n(t);var o=this.props[e];o&&o(t)}},{key:"close",value:function(){this.setPopupVisible(!1)}},{key:"render",value:function(){var e=this.state.popupVisible,t=this.props,n=t.children,o=t.forceRender,r=t.alignPoint,i=t.className,a=t.autoDestroy,u=s.Children.only(n),c={key:"trigger"};this.isContextMenuToShow()?c.onContextMenu=this.onContextMenu:c.onContextMenu=this.createTwoChains("onContextMenu"),this.isClickToHide()||this.isClickToShow()?(c.onClick=this.onClick,c.onMouseDown=this.onMouseDown,c.onTouchStart=this.onTouchStart):(c.onClick=this.createTwoChains("onClick"),c.onMouseDown=this.createTwoChains("onMouseDown"),c.onTouchStart=this.createTwoChains("onTouchStart")),this.isMouseEnterToShow()?(c.onMouseEnter=this.onMouseEnter,r&&(c.onMouseMove=this.onMouseMove)):c.onMouseEnter=this.createTwoChains("onMouseEnter"),this.isMouseLeaveToHide()?c.onMouseLeave=this.onMouseLeave:c.onMouseLeave=this.createTwoChains("onMouseLeave"),this.isFocusToShow()||this.isBlurToHide()?(c.onFocus=this.onFocus,c.onBlur=this.onBlur):(c.onFocus=this.createTwoChains("onFocus"),c.onBlur=this.createTwoChains("onBlur"));var p=Z()(u&&u.props&&u.props.className,i);p&&(c.className=p);var f=(0,l.Z)({},c);(0,q.Yr)(u)&&(f.ref=(0,q.sQ)(this.triggerRef,u.ref));var d,v=s.cloneElement(u,f);return(e||this.popupRef.current||o)&&(d=s.createElement(Te,{key:"portal",getContainer:this.getContainer,didUpdate:this.handlePortalUpdate},this.getComponent())),!e&&a&&(d=null),s.createElement(xe.Provider,{value:{onPopupMouseDown:this.onPopupMouseDown}},v,d)}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n=e.popupVisible,o={};return void 0!==n&&t.popupVisible!==n&&(o.popupVisible=n,o.prevPopupVisible=t.popupVisible),o}}]),n}(s.Component),we.contextType=xe,we.defaultProps={prefixCls:"rc-trigger-popup",getPopupClassNameFromAlign:function(){return""},getDocument:function(e){return e?e.ownerDocument:window.document},onPopupVisibleChange:Me,afterPopupVisibleChange:Me,onPopupAlign:Me,popupClassName:"",mouseEnterDelay:0,mouseLeaveDelay:.1,focusDelay:0,blurDelay:.15,popupStyle:{},destroyPopupOnHide:!1,popupAlign:{},defaultPopupVisible:!1,mask:!1,maskClosable:!0,action:[],showAction:[],hideAction:[],autoDestroy:!1},we),De={adjustX:1,adjustY:1},Se=[0,0],Oe={left:{points:["cr","cl"],overflow:De,offset:[-4,0],targetOffset:Se},right:{points:["cl","cr"],overflow:De,offset:[4,0],targetOffset:Se},top:{points:["bc","tc"],overflow:De,offset:[0,-4],targetOffset:Se},bottom:{points:["tc","bc"],overflow:De,offset:[0,4],targetOffset:Se},topLeft:{points:["bl","tl"],overflow:De,offset:[0,-4],targetOffset:Se},leftTop:{points:["tr","tl"],overflow:De,offset:[-4,0],targetOffset:Se},topRight:{points:["br","tr"],overflow:De,offset:[0,-4],targetOffset:Se},rightTop:{points:["tl","tr"],overflow:De,offset:[4,0],targetOffset:Se},bottomRight:{points:["tr","br"],overflow:De,offset:[0,4],targetOffset:Se},rightBottom:{points:["bl","br"],overflow:De,offset:[4,0],targetOffset:Se},bottomLeft:{points:["tl","bl"],overflow:De,offset:[0,4],targetOffset:Se},leftBottom:{points:["br","bl"],overflow:De,offset:[-4,0],targetOffset:Se}},Ne=function(e){var t=e.overlay,n=e.prefixCls,o=e.id,r=e.overlayInnerStyle;return s.createElement("div",{className:"".concat(n,"-inner"),id:o,role:"tooltip",style:r},"function"==typeof t?t():t)},Ve=function(e,t){var n=e.overlayClassName,r=e.trigger,a=void 0===r?["hover"]:r,u=e.mouseEnterDelay,c=void 0===u?0:u,p=e.mouseLeaveDelay,f=void 0===p?.1:p,d=e.overlayStyle,v=e.prefixCls,h=void 0===v?"rc-tooltip":v,g=e.children,y=e.onVisibleChange,b=e.afterVisibleChange,k=e.transitionName,C=e.animation,Z=e.motion,x=e.placement,M=void 0===x?"right":x,T=e.align,w=void 0===T?{}:T,P=e.destroyTooltipOnHide,E=void 0!==P&&P,D=e.defaultVisible,S=e.getTooltipContainer,O=e.overlayInnerStyle,N=(0,m.Z)(e,["overlayClassName","trigger","mouseEnterDelay","mouseLeaveDelay","overlayStyle","prefixCls","children","onVisibleChange","afterVisibleChange","transitionName","animation","motion","placement","align","destroyTooltipOnHide","defaultVisible","getTooltipContainer","overlayInnerStyle"]),V=(0,s.useRef)(null);(0,s.useImperativeHandle)(t,(function(){return V.current}));var R=(0,l.Z)({},N);"visible"in e&&(R.popupVisible=e.visible);var H=!1,L=!1;if("boolean"==typeof E)H=E;else if(E&&"object"===(0,o.Z)(E)){var B=E.keepParent;H=!0===B,L=!1===B}return s.createElement(Ee,(0,i.Z)({popupClassName:n,prefixCls:h,popup:function(){var t=e.arrowContent,n=void 0===t?null:t,o=e.overlay,r=e.id;return[s.createElement("div",{className:"".concat(h,"-arrow"),key:"arrow"},n),s.createElement(Ne,{key:"content",prefixCls:h,id:r,overlay:o,overlayInnerStyle:O})]},action:a,builtinPlacements:Oe,popupPlacement:M,ref:V,popupAlign:w,getPopupContainer:S,onPopupVisibleChange:y,afterPopupVisibleChange:b,popupTransitionName:k,popupAnimation:C,popupMotion:Z,defaultPopupVisible:D,destroyPopupOnHide:H,autoDestroy:L,mouseLeaveDelay:f,popupStyle:d,mouseEnterDelay:c},R),g)},Re=(0,s.forwardRef)(Ve),He=s.forwardRef((function(e,t){var n=e.visible,o=e.overlay,r=s.useRef(null),a=(0,q.sQ)(t,r),u=s.useRef(null);function l(){_.Z.cancel(u.current)}return s.useEffect((function(){return n?u.current=(0,_.Z)((function(){var e;null===(e=r.current)||void 0===e||e.forcePopupAlign()})):l(),l}),[n,o]),s.createElement(Re,(0,i.Z)({ref:a},e))})),Le=W;Le.Range=G,Le.Handle=T,Le.createSliderWithTooltip=function(e){var t;return t=function(t){(0,f.Z)(o,t);var n=(0,d.Z)(o);function o(){var e;return(0,c.Z)(this,o),(e=n.apply(this,arguments)).state={visibles:{}},e.handleTooltipVisibleChange=function(t,n){e.setState((function(e){return{visibles:(0,l.Z)((0,l.Z)({},e.visibles),{},(0,r.Z)({},t,n))}}))},e.handleWithTooltip=function(t){var n,o=t.value,r=t.dragging,a=t.index,s=t.disabled,c=(0,m.Z)(t,["value","dragging","index","disabled"]),p=e.props,f=p.tipFormatter,d=p.tipProps,v=p.handleStyle,h=p.getTooltipContainer,g=d.prefixCls,y=void 0===g?"rc-slider-tooltip":g,b=d.overlay,k=void 0===b?f(o):b,C=d.placement,Z=void 0===C?"top":C,x=d.visible,M=void 0!==x&&x,w=(0,m.Z)(d,["prefixCls","overlay","placement","visible"]);return n=Array.isArray(v)?v[a]||v[0]:v,u().createElement(He,(0,i.Z)({},w,{getTooltipContainer:h,prefixCls:y,overlay:k,placement:Z,visible:!s&&(e.state.visibles[a]||r)||M,key:a}),u().createElement(T,(0,i.Z)({},c,{style:(0,l.Z)({},n),value:o,onMouseEnter:function(){return e.handleTooltipVisibleChange(a,!0)},onMouseLeave:function(){return e.handleTooltipVisibleChange(a,!1)}})))},e}return(0,p.Z)(o,[{key:"render",value:function(){return u().createElement(e,(0,i.Z)({},this.props,{handle:this.handleWithTooltip}))}}]),o}(u().Component),t.defaultProps={tipFormatter:function(e){return e},handleStyle:[{}],tipProps:{},getTooltipContainer:function(e){return e.parentNode}},t};var Be=Le,Ae=n(1857),Fe=s.forwardRef((function(e,t){var n=e.visible,o=(0,s.useRef)(null),r=(0,s.useRef)(null);function a(){_.Z.cancel(r.current),r.current=null}return s.useEffect((function(){return n?r.current=(0,_.Z)((function(){var e;null===(e=o.current)||void 0===e||e.forcePopupAlign(),r.current=null})):a(),a}),[n,e.title]),s.createElement(Ae.Z,(0,i.Z)({ref:(0,q.sQ)(o,t)},e))})),Ie=n(4178),Ue=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},je=s.forwardRef((function(e,t){var n,u=s.useContext(Ie.E_),l=u.getPrefixCls,c=u.direction,p=u.getPopupContainer,f=s.useState({}),d=(0,a.Z)(f,2),v=d[0],h=d[1],m=function(e,t){h((function(n){return(0,i.Z)((0,i.Z)({},n),(0,r.Z)({},e,t))}))},g=function(e,t){return e||(t?"rtl"===c?"left":"right":"top")},y=function(t){var n=t.tooltipPrefixCls,o=t.prefixCls,r=t.info,a=r.value,u=r.dragging,c=r.index,f=Ue(r,["value","dragging","index"]),d=e.tipFormatter,h=e.tooltipVisible,y=e.tooltipPlacement,b=e.getTooltipPopupContainer,k=e.vertical,C=!!d&&(v[c]||u),Z=h||void 0===h&&C,x=l();return s.createElement(Fe,{prefixCls:n,title:d?d(a):"",visible:Z,placement:g(y,k),transitionName:"".concat(x,"-zoom-down"),key:c,overlayClassName:"".concat(o,"-tooltip"),getPopupContainer:b||p},s.createElement(T,(0,i.Z)({},f,{value:a,onMouseEnter:function(){return m(c,!0)},onMouseLeave:function(){return m(c,!1)}})))},b=e.prefixCls,k=e.tooltipPrefixCls,C=e.range,x=e.className,M=Ue(e,["prefixCls","tooltipPrefixCls","range","className"]),w=l("slider",b),P=l("tooltip",k),E=Z()(x,(0,r.Z)({},"".concat(w,"-rtl"),"rtl"===c));return"rtl"!==c||M.vertical||(M.reverse=!M.reverse),"object"===(0,o.Z)(C)&&(n=C.draggableTrack),C?s.createElement(G,(0,i.Z)({},M,{step:M.step,draggableTrack:n,className:E,ref:t,handle:function(e){return y({tooltipPrefixCls:P,prefixCls:w,info:e})},prefixCls:w})):s.createElement(Be,(0,i.Z)({},M,{step:M.step,className:E,ref:t,handle:function(e){return y({tooltipPrefixCls:P,prefixCls:w,info:e})},prefixCls:w}))}));je.displayName="Slider",je.defaultProps={tipFormatter:function(e){return"number"==typeof e?e.toString():""}};var Xe=je}}]);
2
+ //# sourceMappingURL=276.lite.js.map?ver=af4e20fa8568e0fd55dd
public/dist/276.lite.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"file":"276.lite.js?ver=af4e20fa8568e0fd55dd","mappings":"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","sources":["webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/es/common/Track.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/es/common/Steps.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/es/common/Marks.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/es/Handle.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/es/utils.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/es/common/createSlider.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/es/Slider.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/es/Range.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-trigger/es/utils/alignUtil.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-trigger/es/utils/legacyUtil.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-trigger/es/Popup/Mask.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-align/es/util.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-align/es/Align.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-align/es/hooks/useBuffer.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-align/es/index.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-trigger/es/Popup/useVisibleStatus.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-trigger/es/Popup/PopupInner.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-trigger/es/Popup/useStretchStyle.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-trigger/es/Popup/MobilePopupInner.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-trigger/es/Popup/index.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-trigger/es/context.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-trigger/es/index.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-tooltip/es/placements.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-tooltip/es/Content.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-tooltip/es/Tooltip.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/node_modules/rc-tooltip/es/index.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/es/common/SliderTooltip.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/es/index.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/rc-slider/es/createSliderWithTooltip.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/slider/SliderTooltip.js","webpack:///../../../../../tmp/builds/devowlio/devowl-wp/node_modules/antd/es/slider/index.js"],"sourcesContent":["import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React from 'react';\n\nvar Track = function Track(props) {\n var _ref, _ref2;\n\n var className = props.className,\n included = props.included,\n vertical = props.vertical,\n style = props.style;\n var length = props.length,\n offset = props.offset,\n reverse = props.reverse;\n\n if (length < 0) {\n reverse = !reverse;\n length = Math.abs(length);\n offset = 100 - offset;\n }\n\n var positonStyle = vertical ? (_ref = {}, _defineProperty(_ref, reverse ? 'top' : 'bottom', \"\".concat(offset, \"%\")), _defineProperty(_ref, reverse ? 'bottom' : 'top', 'auto'), _defineProperty(_ref, \"height\", \"\".concat(length, \"%\")), _ref) : (_ref2 = {}, _defineProperty(_ref2, reverse ? 'right' : 'left', \"\".concat(offset, \"%\")), _defineProperty(_ref2, reverse ? 'left' : 'right', 'auto'), _defineProperty(_ref2, \"width\", \"\".concat(length, \"%\")), _ref2);\n\n var elStyle = _objectSpread(_objectSpread({}, style), positonStyle);\n\n return included ? /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: elStyle\n }) : null;\n};\n\nexport default Track;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport React from 'react';\nimport classNames from 'classnames';\nimport warning from \"rc-util/es/warning\";\n\nvar calcPoints = function calcPoints(vertical, marks, dots, step, min, max) {\n warning(dots ? step > 0 : true, '`Slider[step]` should be a positive number in order to make Slider[dots] work.');\n var points = Object.keys(marks).map(parseFloat).sort(function (a, b) {\n return a - b;\n });\n\n if (dots && step) {\n for (var i = min; i <= max; i += step) {\n if (points.indexOf(i) === -1) {\n points.push(i);\n }\n }\n }\n\n return points;\n};\n\nvar Steps = function Steps(_ref) {\n var prefixCls = _ref.prefixCls,\n vertical = _ref.vertical,\n reverse = _ref.reverse,\n marks = _ref.marks,\n dots = _ref.dots,\n step = _ref.step,\n included = _ref.included,\n lowerBound = _ref.lowerBound,\n upperBound = _ref.upperBound,\n max = _ref.max,\n min = _ref.min,\n dotStyle = _ref.dotStyle,\n activeDotStyle = _ref.activeDotStyle;\n var range = max - min;\n var elements = calcPoints(vertical, marks, dots, step, min, max).map(function (point) {\n var _classNames;\n\n var offset = \"\".concat(Math.abs(point - min) / range * 100, \"%\");\n var isActived = !included && point === upperBound || included && point <= upperBound && point >= lowerBound;\n var style = vertical ? _objectSpread(_objectSpread({}, dotStyle), {}, _defineProperty({}, reverse ? 'top' : 'bottom', offset)) : _objectSpread(_objectSpread({}, dotStyle), {}, _defineProperty({}, reverse ? 'right' : 'left', offset));\n\n if (isActived) {\n style = _objectSpread(_objectSpread({}, style), activeDotStyle);\n }\n\n var pointClassName = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-dot\"), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-dot-active\"), isActived), _defineProperty(_classNames, \"\".concat(prefixCls, \"-dot-reverse\"), reverse), _classNames));\n return /*#__PURE__*/React.createElement(\"span\", {\n className: pointClassName,\n style: style,\n key: point\n });\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-step\")\n }, elements);\n};\n\nexport default Steps;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport React from 'react';\nimport classNames from 'classnames';\n\nvar Marks = function Marks(_ref) {\n var className = _ref.className,\n vertical = _ref.vertical,\n reverse = _ref.reverse,\n marks = _ref.marks,\n included = _ref.included,\n upperBound = _ref.upperBound,\n lowerBound = _ref.lowerBound,\n max = _ref.max,\n min = _ref.min,\n onClickLabel = _ref.onClickLabel;\n var marksKeys = Object.keys(marks);\n var range = max - min;\n var elements = marksKeys.map(parseFloat).sort(function (a, b) {\n return a - b;\n }).map(function (point) {\n var _classNames;\n\n var markPoint = marks[point];\n var markPointIsObject = _typeof(markPoint) === 'object' && ! /*#__PURE__*/React.isValidElement(markPoint);\n var markLabel = markPointIsObject ? markPoint.label : markPoint;\n\n if (!markLabel && markLabel !== 0) {\n return null;\n }\n\n var isActive = !included && point === upperBound || included && point <= upperBound && point >= lowerBound;\n var markClassName = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(className, \"-text\"), true), _defineProperty(_classNames, \"\".concat(className, \"-text-active\"), isActive), _classNames));\n\n var bottomStyle = _defineProperty({\n marginBottom: '-50%'\n }, reverse ? 'top' : 'bottom', \"\".concat((point - min) / range * 100, \"%\"));\n\n var leftStyle = _defineProperty({\n transform: \"translateX(\".concat(reverse ? \"50%\" : \"-50%\", \")\"),\n msTransform: \"translateX(\".concat(reverse ? \"50%\" : \"-50%\", \")\")\n }, reverse ? 'right' : 'left', \"\".concat((point - min) / range * 100, \"%\"));\n\n var style = vertical ? bottomStyle : leftStyle;\n var markStyle = markPointIsObject ? _objectSpread(_objectSpread({}, style), markPoint.style) : style;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: markClassName,\n style: markStyle,\n key: point,\n onMouseDown: function onMouseDown(e) {\n return onClickLabel(e, point);\n },\n onTouchStart: function onTouchStart(e) {\n return onClickLabel(e, point);\n }\n }, markLabel);\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, elements);\n};\n\nexport default Marks;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport React from 'react';\nimport classNames from 'classnames';\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\n\nvar Handle = /*#__PURE__*/function (_React$Component) {\n _inherits(Handle, _React$Component);\n\n var _super = _createSuper(Handle);\n\n function Handle() {\n var _this;\n\n _classCallCheck(this, Handle);\n\n _this = _super.apply(this, arguments);\n _this.state = {\n clickFocused: false\n };\n\n _this.setHandleRef = function (node) {\n _this.handle = node;\n };\n\n _this.handleMouseUp = function () {\n if (document.activeElement === _this.handle) {\n _this.setClickFocus(true);\n }\n };\n\n _this.handleMouseDown = function (e) {\n // avoid selecting text during drag\n // https://github.com/ant-design/ant-design/issues/25010\n e.preventDefault(); // fix https://github.com/ant-design/ant-design/issues/15324\n\n _this.focus();\n };\n\n _this.handleBlur = function () {\n _this.setClickFocus(false);\n };\n\n _this.handleKeyDown = function () {\n _this.setClickFocus(false);\n };\n\n return _this;\n }\n\n _createClass(Handle, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // mouseup won't trigger if mouse moved out of handle,\n // so we listen on document here.\n this.onMouseUpListener = addEventListener(document, 'mouseup', this.handleMouseUp);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.onMouseUpListener) {\n this.onMouseUpListener.remove();\n }\n }\n }, {\n key: \"setClickFocus\",\n value: function setClickFocus(focused) {\n this.setState({\n clickFocused: focused\n });\n }\n }, {\n key: \"clickFocus\",\n value: function clickFocus() {\n this.setClickFocus(true);\n this.focus();\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this.handle.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.handle.blur();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _ref, _ref2;\n\n var _this$props = this.props,\n prefixCls = _this$props.prefixCls,\n vertical = _this$props.vertical,\n reverse = _this$props.reverse,\n offset = _this$props.offset,\n style = _this$props.style,\n disabled = _this$props.disabled,\n min = _this$props.min,\n max = _this$props.max,\n value = _this$props.value,\n tabIndex = _this$props.tabIndex,\n ariaLabel = _this$props.ariaLabel,\n ariaLabelledBy = _this$props.ariaLabelledBy,\n ariaValueTextFormatter = _this$props.ariaValueTextFormatter,\n restProps = _objectWithoutProperties(_this$props, [\"prefixCls\", \"vertical\", \"reverse\", \"offset\", \"style\", \"disabled\", \"min\", \"max\", \"value\", \"tabIndex\", \"ariaLabel\", \"ariaLabelledBy\", \"ariaValueTextFormatter\"]);\n\n var className = classNames(this.props.className, _defineProperty({}, \"\".concat(prefixCls, \"-handle-click-focused\"), this.state.clickFocused));\n var positionStyle = vertical ? (_ref = {}, _defineProperty(_ref, reverse ? 'top' : 'bottom', \"\".concat(offset, \"%\")), _defineProperty(_ref, reverse ? 'bottom' : 'top', 'auto'), _defineProperty(_ref, \"transform\", reverse ? null : \"translateY(+50%)\"), _ref) : (_ref2 = {}, _defineProperty(_ref2, reverse ? 'right' : 'left', \"\".concat(offset, \"%\")), _defineProperty(_ref2, reverse ? 'left' : 'right', 'auto'), _defineProperty(_ref2, \"transform\", \"translateX(\".concat(reverse ? '+' : '-', \"50%)\")), _ref2);\n\n var elStyle = _objectSpread(_objectSpread({}, style), positionStyle);\n\n var mergedTabIndex = tabIndex || 0;\n\n if (disabled || tabIndex === null) {\n mergedTabIndex = null;\n }\n\n var ariaValueText;\n\n if (ariaValueTextFormatter) {\n ariaValueText = ariaValueTextFormatter(value);\n }\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: this.setHandleRef,\n tabIndex: mergedTabIndex\n }, restProps, {\n className: className,\n style: elStyle,\n onBlur: this.handleBlur,\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleMouseDown // aria attribute\n ,\n role: \"slider\",\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n \"aria-valuenow\": value,\n \"aria-disabled\": !!disabled,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-valuetext\": ariaValueText\n }));\n }\n }]);\n\n return Handle;\n}(React.Component);\n\nexport { Handle as default };","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { findDOMNode } from 'react-dom';\nimport keyCode from \"rc-util/es/KeyCode\";\nexport function isEventFromHandle(e, handles) {\n try {\n return Object.keys(handles).some(function (key) {\n return e.target === findDOMNode(handles[key]);\n });\n } catch (error) {\n return false;\n }\n}\nexport function isValueOutOfRange(value, _ref) {\n var min = _ref.min,\n max = _ref.max;\n return value < min || value > max;\n}\nexport function isNotTouchEvent(e) {\n return e.touches.length > 1 || e.type.toLowerCase() === 'touchend' && e.touches.length > 0;\n}\nexport function getClosestPoint(val, _ref2) {\n var marks = _ref2.marks,\n step = _ref2.step,\n min = _ref2.min,\n max = _ref2.max;\n var points = Object.keys(marks).map(parseFloat);\n\n if (step !== null) {\n var baseNum = Math.pow(10, getPrecision(step));\n var maxSteps = Math.floor((max * baseNum - min * baseNum) / (step * baseNum));\n var steps = Math.min((val - min) / step, maxSteps);\n var closestStep = Math.round(steps) * step + min;\n points.push(closestStep);\n }\n\n var diffs = points.map(function (point) {\n return Math.abs(val - point);\n });\n return points[diffs.indexOf(Math.min.apply(Math, _toConsumableArray(diffs)))];\n}\nexport function getPrecision(step) {\n var stepString = step.toString();\n var precision = 0;\n\n if (stepString.indexOf('.') >= 0) {\n precision = stepString.length - stepString.indexOf('.') - 1;\n }\n\n return precision;\n}\nexport function getMousePosition(vertical, e) {\n return vertical ? e.clientY : e.pageX;\n}\nexport function getTouchPosition(vertical, e) {\n return vertical ? e.touches[0].clientY : e.touches[0].pageX;\n}\nexport function getHandleCenterPosition(vertical, handle) {\n var coords = handle.getBoundingClientRect();\n return vertical ? coords.top + coords.height * 0.5 : window.pageXOffset + coords.left + coords.width * 0.5;\n}\nexport function ensureValueInRange(val, _ref3) {\n var max = _ref3.max,\n min = _ref3.min;\n\n if (val <= min) {\n return min;\n }\n\n if (val >= max) {\n return max;\n }\n\n return val;\n}\nexport function ensureValuePrecision(val, props) {\n var step = props.step;\n var closestPoint = isFinite(getClosestPoint(val, props)) ? getClosestPoint(val, props) : 0; // eslint-disable-line\n\n return step === null ? closestPoint : parseFloat(closestPoint.toFixed(getPrecision(step)));\n}\nexport function pauseEvent(e) {\n e.stopPropagation();\n e.preventDefault();\n}\nexport function calculateNextValue(func, value, props) {\n var operations = {\n increase: function increase(a, b) {\n return a + b;\n },\n decrease: function decrease(a, b) {\n return a - b;\n }\n };\n var indexToGet = operations[func](Object.keys(props.marks).indexOf(JSON.stringify(value)), 1);\n var keyToGet = Object.keys(props.marks)[indexToGet];\n\n if (props.step) {\n return operations[func](value, props.step);\n }\n\n if (!!Object.keys(props.marks).length && !!props.marks[keyToGet]) {\n return props.marks[keyToGet];\n }\n\n return value;\n}\nexport function getKeyboardValueMutator(e, vertical, reverse) {\n var increase = 'increase';\n var decrease = 'decrease';\n var method = increase;\n\n switch (e.keyCode) {\n case keyCode.UP:\n method = vertical && reverse ? decrease : increase;\n break;\n\n case keyCode.RIGHT:\n method = !vertical && reverse ? decrease : increase;\n break;\n\n case keyCode.DOWN:\n method = vertical && reverse ? increase : decrease;\n break;\n\n case keyCode.LEFT:\n method = !vertical && reverse ? increase : decrease;\n break;\n\n case keyCode.END:\n return function (value, props) {\n return props.max;\n };\n\n case keyCode.HOME:\n return function (value, props) {\n return props.min;\n };\n\n case keyCode.PAGE_UP:\n return function (value, props) {\n return value + props.step * 2;\n };\n\n case keyCode.PAGE_DOWN:\n return function (value, props) {\n return value - props.step * 2;\n };\n\n default:\n return undefined;\n }\n\n return function (value, props) {\n return calculateNextValue(method, value, props);\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _get from \"@babel/runtime/helpers/esm/get\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport React from 'react';\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport classNames from 'classnames';\nimport warning from \"rc-util/es/warning\";\nimport Steps from './Steps';\nimport Marks from './Marks';\nimport Handle from '../Handle';\nimport * as utils from '../utils';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nfunction noop() {}\n\nexport default function createSlider(Component) {\n var _a; // eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n\n return _a = /*#__PURE__*/function (_Component) {\n _inherits(ComponentEnhancer, _Component);\n\n var _super = _createSuper(ComponentEnhancer);\n\n function ComponentEnhancer(props) {\n var _this;\n\n _classCallCheck(this, ComponentEnhancer);\n\n _this = _super.call(this, props);\n\n _this.onDown = function (e, position) {\n var p = position;\n var _this$props = _this.props,\n draggableTrack = _this$props.draggableTrack,\n isVertical = _this$props.vertical;\n var bounds = _this.state.bounds;\n var value = draggableTrack && _this.positionGetValue ? _this.positionGetValue(p) || [] : [];\n var inPoint = utils.isEventFromHandle(e, _this.handlesRefs);\n _this.dragTrack = draggableTrack && bounds.length >= 2 && !inPoint && !value.map(function (n, i) {\n var v = !i ? n >= bounds[i] : true;\n return i === value.length - 1 ? n <= bounds[i] : v;\n }).some(function (c) {\n return !c;\n });\n\n if (_this.dragTrack) {\n _this.dragOffset = p;\n _this.startBounds = _toConsumableArray(bounds);\n } else {\n if (!inPoint) {\n _this.dragOffset = 0;\n } else {\n var handlePosition = utils.getHandleCenterPosition(isVertical, e.target);\n _this.dragOffset = p - handlePosition;\n p = handlePosition;\n }\n\n _this.onStart(p);\n }\n };\n\n _this.onMouseDown = function (e) {\n if (e.button !== 0) {\n return;\n }\n\n _this.removeDocumentEvents();\n\n var isVertical = _this.props.vertical;\n var position = utils.getMousePosition(isVertical, e);\n\n _this.onDown(e, position);\n\n _this.addDocumentMouseEvents();\n };\n\n _this.onTouchStart = function (e) {\n if (utils.isNotTouchEvent(e)) return;\n var isVertical = _this.props.vertical;\n var position = utils.getTouchPosition(isVertical, e);\n\n _this.onDown(e, position);\n\n _this.addDocumentTouchEvents();\n\n utils.pauseEvent(e);\n };\n\n _this.onFocus = function (e) {\n var _this$props2 = _this.props,\n onFocus = _this$props2.onFocus,\n vertical = _this$props2.vertical;\n\n if (utils.isEventFromHandle(e, _this.handlesRefs) && !_this.dragTrack) {\n var handlePosition = utils.getHandleCenterPosition(vertical, e.target);\n _this.dragOffset = 0;\n\n _this.onStart(handlePosition);\n\n utils.pauseEvent(e);\n\n if (onFocus) {\n onFocus(e);\n }\n }\n };\n\n _this.onBlur = function (e) {\n var onBlur = _this.props.onBlur;\n\n if (!_this.dragTrack) {\n _this.onEnd();\n }\n\n if (onBlur) {\n onBlur(e);\n }\n };\n\n _this.onMouseUp = function () {\n if (_this.handlesRefs[_this.prevMovedHandleIndex]) {\n _this.handlesRefs[_this.prevMovedHandleIndex].clickFocus();\n }\n };\n\n _this.onMouseMove = function (e) {\n if (!_this.sliderRef) {\n _this.onEnd();\n\n return;\n }\n\n var position = utils.getMousePosition(_this.props.vertical, e);\n\n _this.onMove(e, position - _this.dragOffset, _this.dragTrack, _this.startBounds);\n };\n\n _this.onTouchMove = function (e) {\n if (utils.isNotTouchEvent(e) || !_this.sliderRef) {\n _this.onEnd();\n\n return;\n }\n\n var position = utils.getTouchPosition(_this.props.vertical, e);\n\n _this.onMove(e, position - _this.dragOffset, _this.dragTrack, _this.startBounds);\n };\n\n _this.onKeyDown = function (e) {\n if (_this.sliderRef && utils.isEventFromHandle(e, _this.handlesRefs)) {\n _this.onKeyboard(e);\n }\n };\n\n _this.onClickMarkLabel = function (e, value) {\n e.stopPropagation();\n\n _this.onChange({\n value: value\n }); // eslint-disable-next-line react/no-unused-state\n\n\n _this.setState({\n value: value\n }, function () {\n return _this.onEnd(true);\n });\n };\n\n _this.saveSlider = function (slider) {\n _this.sliderRef = slider;\n };\n\n var step = props.step,\n max = props.max,\n min = props.min;\n var isPointDiffEven = isFinite(max - min) ? (max - min) % step === 0 : true; // eslint-disable-line\n\n warning(step && Math.floor(step) === step ? isPointDiffEven : true, \"Slider[max] - Slider[min] (\".concat(max - min, \") should be a multiple of Slider[step] (\").concat(step, \")\"));\n _this.handlesRefs = {};\n return _this;\n }\n\n _createClass(ComponentEnhancer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // Snapshot testing cannot handle refs, so be sure to null-check this.\n this.document = this.sliderRef && this.sliderRef.ownerDocument;\n var _this$props3 = this.props,\n autoFocus = _this$props3.autoFocus,\n disabled = _this$props3.disabled;\n\n if (autoFocus && !disabled) {\n this.focus();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (_get(_getPrototypeOf(ComponentEnhancer.prototype), \"componentWillUnmount\", this)) _get(_getPrototypeOf(ComponentEnhancer.prototype), \"componentWillUnmount\", this).call(this);\n this.removeDocumentEvents();\n }\n }, {\n key: \"getSliderStart\",\n value: function getSliderStart() {\n var slider = this.sliderRef;\n var _this$props4 = this.props,\n vertical = _this$props4.vertical,\n reverse = _this$props4.reverse;\n var rect = slider.getBoundingClientRect();\n\n if (vertical) {\n return reverse ? rect.bottom : rect.top;\n }\n\n return window.pageXOffset + (reverse ? rect.right : rect.left);\n }\n }, {\n key: \"getSliderLength\",\n value: function getSliderLength() {\n var slider = this.sliderRef;\n\n if (!slider) {\n return 0;\n }\n\n var coords = slider.getBoundingClientRect();\n return this.props.vertical ? coords.height : coords.width;\n }\n }, {\n key: \"addDocumentTouchEvents\",\n value: function addDocumentTouchEvents() {\n // just work for Chrome iOS Safari and Android Browser\n this.onTouchMoveListener = addEventListener(this.document, 'touchmove', this.onTouchMove);\n this.onTouchUpListener = addEventListener(this.document, 'touchend', this.onEnd);\n }\n }, {\n key: \"addDocumentMouseEvents\",\n value: function addDocumentMouseEvents() {\n this.onMouseMoveListener = addEventListener(this.document, 'mousemove', this.onMouseMove);\n this.onMouseUpListener = addEventListener(this.document, 'mouseup', this.onEnd);\n }\n }, {\n key: \"removeDocumentEvents\",\n value: function removeDocumentEvents() {\n /* eslint-disable @typescript-eslint/no-unused-expressions */\n this.onTouchMoveListener && this.onTouchMoveListener.remove();\n this.onTouchUpListener && this.onTouchUpListener.remove();\n this.onMouseMoveListener && this.onMouseMoveListener.remove();\n this.onMouseUpListener && this.onMouseUpListener.remove();\n /* eslint-enable no-unused-expressions */\n }\n }, {\n key: \"focus\",\n value: function focus() {\n var _this$handlesRefs$;\n\n if (this.props.disabled) {\n return;\n }\n\n (_this$handlesRefs$ = this.handlesRefs[0]) === null || _this$handlesRefs$ === void 0 ? void 0 : _this$handlesRefs$.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n var _this2 = this;\n\n if (this.props.disabled) {\n return;\n }\n\n Object.keys(this.handlesRefs).forEach(function (key) {\n var _this2$handlesRefs$ke, _this2$handlesRefs$ke2;\n\n (_this2$handlesRefs$ke = _this2.handlesRefs[key]) === null || _this2$handlesRefs$ke === void 0 ? void 0 : (_this2$handlesRefs$ke2 = _this2$handlesRefs$ke.blur) === null || _this2$handlesRefs$ke2 === void 0 ? void 0 : _this2$handlesRefs$ke2.call(_this2$handlesRefs$ke);\n });\n }\n }, {\n key: \"calcValue\",\n value: function calcValue(offset) {\n var _this$props5 = this.props,\n vertical = _this$props5.vertical,\n min = _this$props5.min,\n max = _this$props5.max;\n var ratio = Math.abs(Math.max(offset, 0) / this.getSliderLength());\n var value = vertical ? (1 - ratio) * (max - min) + min : ratio * (max - min) + min;\n return value;\n }\n }, {\n key: \"calcValueByPos\",\n value: function calcValueByPos(position) {\n var sign = this.props.reverse ? -1 : +1;\n var pixelOffset = sign * (position - this.getSliderStart());\n var nextValue = this.trimAlignValue(this.calcValue(pixelOffset));\n return nextValue;\n }\n }, {\n key: \"calcOffset\",\n value: function calcOffset(value) {\n var _this$props6 = this.props,\n min = _this$props6.min,\n max = _this$props6.max;\n var ratio = (value - min) / (max - min);\n return Math.max(0, ratio * 100);\n }\n }, {\n key: \"saveHandle\",\n value: function saveHandle(index, handle) {\n this.handlesRefs[index] = handle;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames;\n\n var _this$props7 = this.props,\n prefixCls = _this$props7.prefixCls,\n className = _this$props7.className,\n marks = _this$props7.marks,\n dots = _this$props7.dots,\n step = _this$props7.step,\n included = _this$props7.included,\n disabled = _this$props7.disabled,\n vertical = _this$props7.vertical,\n reverse = _this$props7.reverse,\n min = _this$props7.min,\n max = _this$props7.max,\n children = _this$props7.children,\n maximumTrackStyle = _this$props7.maximumTrackStyle,\n style = _this$props7.style,\n railStyle = _this$props7.railStyle,\n dotStyle = _this$props7.dotStyle,\n activeDotStyle = _this$props7.activeDotStyle;\n\n var _get$call = _get(_getPrototypeOf(ComponentEnhancer.prototype), \"render\", this).call(this),\n tracks = _get$call.tracks,\n handles = _get$call.handles;\n\n var sliderClassName = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-with-marks\"), Object.keys(marks).length), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, \"\".concat(prefixCls, \"-vertical\"), vertical), _defineProperty(_classNames, className, className), _classNames));\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: this.saveSlider,\n className: sliderClassName,\n onTouchStart: disabled ? noop : this.onTouchStart,\n onMouseDown: disabled ? noop : this.onMouseDown,\n onMouseUp: disabled ? noop : this.onMouseUp,\n onKeyDown: disabled ? noop : this.onKeyDown,\n onFocus: disabled ? noop : this.onFocus,\n onBlur: disabled ? noop : this.onBlur,\n style: style\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-rail\"),\n style: _objectSpread(_objectSpread({}, maximumTrackStyle), railStyle)\n }), tracks, /*#__PURE__*/React.createElement(Steps, {\n prefixCls: prefixCls,\n vertical: vertical,\n reverse: reverse,\n marks: marks,\n dots: dots,\n step: step,\n included: included,\n lowerBound: this.getLowerBound(),\n upperBound: this.getUpperBound(),\n max: max,\n min: min,\n dotStyle: dotStyle,\n activeDotStyle: activeDotStyle\n }), handles, /*#__PURE__*/React.createElement(Marks, {\n className: \"\".concat(prefixCls, \"-mark\"),\n onClickLabel: disabled ? noop : this.onClickMarkLabel,\n vertical: vertical,\n marks: marks,\n included: included,\n lowerBound: this.getLowerBound(),\n upperBound: this.getUpperBound(),\n max: max,\n min: min,\n reverse: reverse\n }), children);\n }\n }]);\n\n return ComponentEnhancer;\n }(Component), _a.displayName = \"ComponentEnhancer(\".concat(Component.displayName, \")\"), _a.defaultProps = _objectSpread(_objectSpread({}, Component.defaultProps), {}, {\n prefixCls: 'rc-slider',\n className: '',\n min: 0,\n max: 100,\n step: 1,\n marks: {},\n handle: function handle(props) {\n var index = props.index,\n restProps = _objectWithoutProperties(props, [\"index\"]);\n\n delete restProps.dragging;\n\n if (restProps.value === null) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(Handle, _extends({}, restProps, {\n key: index\n }));\n },\n onBeforeChange: noop,\n onChange: noop,\n onAfterChange: noop,\n included: true,\n disabled: false,\n dots: false,\n vertical: false,\n reverse: false,\n trackStyle: [{}],\n handleStyle: [{}],\n railStyle: {},\n dotStyle: {},\n activeDotStyle: {}\n }), _a;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport Track from './common/Track';\nimport createSlider from './common/createSlider';\nimport * as utils from './utils';\n\nvar Slider = /*#__PURE__*/function (_React$Component) {\n _inherits(Slider, _React$Component);\n\n var _super = _createSuper(Slider);\n\n /* eslint-enable */\n function Slider(props) {\n var _this;\n\n _classCallCheck(this, Slider);\n\n _this = _super.call(this, props);\n\n _this.positionGetValue = function (position) {\n return [];\n };\n\n _this.onEnd = function (force) {\n var dragging = _this.state.dragging;\n\n _this.removeDocumentEvents();\n\n if (dragging || force) {\n _this.props.onAfterChange(_this.getValue());\n }\n\n _this.setState({\n dragging: false\n });\n };\n\n var defaultValue = props.defaultValue !== undefined ? props.defaultValue : props.min;\n var value = props.value !== undefined ? props.value : defaultValue;\n _this.state = {\n value: _this.trimAlignValue(value),\n dragging: false\n };\n warning(!('minimumTrackStyle' in props), 'minimumTrackStyle will be deprecated, please use trackStyle instead.');\n warning(!('maximumTrackStyle' in props), 'maximumTrackStyle will be deprecated, please use railStyle instead.');\n return _this;\n }\n /**\n * [Legacy] Used for inherit other component.\n * It's a bad code style which should be refactor.\n */\n\n /* eslint-disable @typescript-eslint/no-unused-vars, class-methods-use-this */\n\n\n _createClass(Slider, [{\n key: \"calcValueByPos\",\n value: function calcValueByPos(value) {\n return 0;\n }\n }, {\n key: \"calcOffset\",\n value: function calcOffset(value) {\n return 0;\n }\n }, {\n key: \"saveHandle\",\n value: function saveHandle(index, h) {}\n }, {\n key: \"removeDocumentEvents\",\n value: function removeDocumentEvents() {}\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this$props = this.props,\n min = _this$props.min,\n max = _this$props.max,\n value = _this$props.value,\n onChange = _this$props.onChange;\n\n if (!('min' in this.props || 'max' in this.props)) {\n return;\n }\n\n var theValue = value !== undefined ? value : prevState.value;\n var nextValue = this.trimAlignValue(theValue, this.props);\n\n if (nextValue === prevState.value) {\n return;\n } // eslint-disable-next-line\n\n\n this.setState({\n value: nextValue\n });\n\n if (!(min === prevProps.min && max === prevProps.max) && utils.isValueOutOfRange(theValue, this.props)) {\n onChange(nextValue);\n }\n }\n }, {\n key: \"onChange\",\n value: function onChange(state) {\n var props = this.props;\n var isNotControlled = !('value' in props);\n var nextState = state.value > this.props.max ? _objectSpread(_objectSpread({}, state), {}, {\n value: this.props.max\n }) : state;\n\n if (isNotControlled) {\n this.setState(nextState);\n }\n\n var changedValue = nextState.value;\n props.onChange(changedValue);\n }\n }, {\n key: \"onStart\",\n value: function onStart(position) {\n this.setState({\n dragging: true\n });\n var props = this.props;\n var prevValue = this.getValue();\n props.onBeforeChange(prevValue);\n var value = this.calcValueByPos(position);\n this.startValue = value;\n this.startPosition = position;\n if (value === prevValue) return;\n this.prevMovedHandleIndex = 0;\n this.onChange({\n value: value\n });\n }\n }, {\n key: \"onMove\",\n value: function onMove(e, position) {\n utils.pauseEvent(e);\n var oldValue = this.state.value;\n var value = this.calcValueByPos(position);\n if (value === oldValue) return;\n this.onChange({\n value: value\n });\n }\n }, {\n key: \"onKeyboard\",\n value: function onKeyboard(e) {\n var _this$props2 = this.props,\n reverse = _this$props2.reverse,\n vertical = _this$props2.vertical;\n var valueMutator = utils.getKeyboardValueMutator(e, vertical, reverse);\n\n if (valueMutator) {\n utils.pauseEvent(e);\n var state = this.state;\n var oldValue = state.value;\n var mutatedValue = valueMutator(oldValue, this.props);\n var value = this.trimAlignValue(mutatedValue);\n if (value === oldValue) return;\n this.onChange({\n value: value\n });\n this.props.onAfterChange(value);\n this.onEnd();\n }\n }\n }, {\n key: \"getValue\",\n value: function getValue() {\n return this.state.value;\n }\n }, {\n key: \"getLowerBound\",\n value: function getLowerBound() {\n var minPoint = this.props.startPoint || this.props.min;\n return this.state.value > minPoint ? minPoint : this.state.value;\n }\n }, {\n key: \"getUpperBound\",\n value: function getUpperBound() {\n if (this.state.value < this.props.startPoint) {\n return this.props.startPoint;\n }\n\n return this.state.value;\n }\n }, {\n key: \"trimAlignValue\",\n value: function trimAlignValue(v) {\n var nextProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (v === null) {\n return null;\n }\n\n var mergedProps = _objectSpread(_objectSpread({}, this.props), nextProps);\n\n var val = utils.ensureValueInRange(v, mergedProps);\n return utils.ensureValuePrecision(val, mergedProps);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n prefixCls = _this$props3.prefixCls,\n vertical = _this$props3.vertical,\n included = _this$props3.included,\n disabled = _this$props3.disabled,\n minimumTrackStyle = _this$props3.minimumTrackStyle,\n trackStyle = _this$props3.trackStyle,\n handleStyle = _this$props3.handleStyle,\n tabIndex = _this$props3.tabIndex,\n ariaLabelForHandle = _this$props3.ariaLabelForHandle,\n ariaLabelledByForHandle = _this$props3.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = _this$props3.ariaValueTextFormatterForHandle,\n min = _this$props3.min,\n max = _this$props3.max,\n startPoint = _this$props3.startPoint,\n reverse = _this$props3.reverse,\n handleGenerator = _this$props3.handle;\n var _this$state = this.state,\n value = _this$state.value,\n dragging = _this$state.dragging;\n var offset = this.calcOffset(value);\n var handle = handleGenerator({\n className: \"\".concat(prefixCls, \"-handle\"),\n prefixCls: prefixCls,\n vertical: vertical,\n offset: offset,\n value: value,\n dragging: dragging,\n disabled: disabled,\n min: min,\n max: max,\n reverse: reverse,\n index: 0,\n tabIndex: tabIndex,\n ariaLabel: ariaLabelForHandle,\n ariaLabelledBy: ariaLabelledByForHandle,\n ariaValueTextFormatter: ariaValueTextFormatterForHandle,\n style: handleStyle[0] || handleStyle,\n ref: function ref(h) {\n return _this2.saveHandle(0, h);\n }\n });\n var trackOffset = startPoint !== undefined ? this.calcOffset(startPoint) : 0;\n var mergedTrackStyle = trackStyle[0] || trackStyle;\n var track = /*#__PURE__*/React.createElement(Track, {\n className: \"\".concat(prefixCls, \"-track\"),\n vertical: vertical,\n included: included,\n offset: trackOffset,\n reverse: reverse,\n length: offset - trackOffset,\n style: _objectSpread(_objectSpread({}, minimumTrackStyle), mergedTrackStyle)\n });\n return {\n tracks: track,\n handles: handle\n };\n }\n }]);\n\n return Slider;\n}(React.Component);\n\nexport default createSlider(Slider);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport React from 'react';\nimport classNames from 'classnames';\nimport Track from './common/Track';\nimport createSlider from './common/createSlider';\nimport * as utils from './utils';\n\nvar _trimAlignValue = function trimAlignValue(_ref) {\n var value = _ref.value,\n handle = _ref.handle,\n bounds = _ref.bounds,\n props = _ref.props;\n var allowCross = props.allowCross,\n pushable = props.pushable;\n var thershold = Number(pushable);\n var valInRange = utils.ensureValueInRange(value, props);\n var valNotConflict = valInRange;\n\n if (!allowCross && handle != null && bounds !== undefined) {\n if (handle > 0 && valInRange <= bounds[handle - 1] + thershold) {\n valNotConflict = bounds[handle - 1] + thershold;\n }\n\n if (handle < bounds.length - 1 && valInRange >= bounds[handle + 1] - thershold) {\n valNotConflict = bounds[handle + 1] - thershold;\n }\n }\n\n return utils.ensureValuePrecision(valNotConflict, props);\n};\n\nvar Range = /*#__PURE__*/function (_React$Component) {\n _inherits(Range, _React$Component);\n\n var _super = _createSuper(Range);\n\n function Range(props) {\n var _this;\n\n _classCallCheck(this, Range);\n\n _this = _super.call(this, props);\n\n _this.positionGetValue = function (position) {\n var bounds = _this.getValue();\n\n var value = _this.calcValueByPos(position);\n\n var closestBound = _this.getClosestBound(value);\n\n var index = _this.getBoundNeedMoving(value, closestBound);\n\n var prevValue = bounds[index];\n if (value === prevValue) return null;\n\n var nextBounds = _toConsumableArray(bounds);\n\n nextBounds[index] = value;\n return nextBounds;\n };\n\n _this.onEnd = function (force) {\n var handle = _this.state.handle;\n\n _this.removeDocumentEvents();\n\n if (!handle) {\n _this.dragTrack = false;\n }\n\n if (handle !== null || force) {\n _this.props.onAfterChange(_this.getValue());\n }\n\n _this.setState({\n handle: null\n });\n };\n\n var count = props.count,\n min = props.min,\n max = props.max;\n var initialValue = Array.apply(void 0, _toConsumableArray(Array(count + 1))).map(function () {\n return min;\n });\n var defaultValue = 'defaultValue' in props ? props.defaultValue : initialValue;\n var value = props.value !== undefined ? props.value : defaultValue;\n var bounds = value.map(function (v, i) {\n return _trimAlignValue({\n value: v,\n handle: i,\n props: props\n });\n });\n var recent = bounds[0] === max ? 0 : bounds.length - 1;\n _this.state = {\n handle: null,\n recent: recent,\n bounds: bounds\n };\n return _this;\n }\n /**\n * [Legacy] Used for inherit other component.\n * It's a bad code style which should be refactor.\n */\n\n /* eslint-disable @typescript-eslint/no-unused-vars, class-methods-use-this */\n\n\n _createClass(Range, [{\n key: \"calcValueByPos\",\n value: function calcValueByPos(value) {\n return 0;\n }\n }, {\n key: \"getSliderLength\",\n value: function getSliderLength() {\n return 0;\n }\n }, {\n key: \"calcOffset\",\n value: function calcOffset(value) {\n return 0;\n }\n }, {\n key: \"saveHandle\",\n value: function saveHandle(index, h) {}\n }, {\n key: \"removeDocumentEvents\",\n value: function removeDocumentEvents() {}\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this2 = this;\n\n var _this$props = this.props,\n onChange = _this$props.onChange,\n value = _this$props.value,\n min = _this$props.min,\n max = _this$props.max;\n\n if (!('min' in this.props || 'max' in this.props)) {\n return;\n }\n\n if (min === prevProps.min && max === prevProps.max) {\n return;\n }\n\n var currentValue = value || prevState.bounds;\n\n if (currentValue.some(function (v) {\n return utils.isValueOutOfRange(v, _this2.props);\n })) {\n var newValues = currentValue.map(function (v) {\n return utils.ensureValueInRange(v, _this2.props);\n });\n onChange(newValues);\n }\n }\n }, {\n key: \"onChange\",\n value: function onChange(state) {\n var props = this.props;\n var isNotControlled = !('value' in props);\n\n if (isNotControlled) {\n this.setState(state);\n } else {\n var controlledState = {};\n ['handle', 'recent'].forEach(function (item) {\n if (state[item] !== undefined) {\n controlledState[item] = state[item];\n }\n });\n\n if (Object.keys(controlledState).length) {\n this.setState(controlledState);\n }\n }\n\n var data = _objectSpread(_objectSpread({}, this.state), state);\n\n var changedValue = data.bounds;\n props.onChange(changedValue);\n }\n }, {\n key: \"onStart\",\n value: function onStart(position) {\n var props = this.props,\n state = this.state;\n var bounds = this.getValue();\n props.onBeforeChange(bounds);\n var value = this.calcValueByPos(position);\n this.startValue = value;\n this.startPosition = position;\n var closestBound = this.getClosestBound(value);\n this.prevMovedHandleIndex = this.getBoundNeedMoving(value, closestBound);\n this.setState({\n handle: this.prevMovedHandleIndex,\n recent: this.prevMovedHandleIndex\n });\n var prevValue = bounds[this.prevMovedHandleIndex];\n if (value === prevValue) return;\n\n var nextBounds = _toConsumableArray(state.bounds);\n\n nextBounds[this.prevMovedHandleIndex] = value;\n this.onChange({\n bounds: nextBounds\n });\n }\n }, {\n key: \"onMove\",\n value: function onMove(e, position, dragTrack, startBounds) {\n utils.pauseEvent(e);\n var state = this.state,\n props = this.props;\n var maxValue = props.max || 100;\n var minValue = props.min || 0;\n\n if (dragTrack) {\n var pos = props.vertical ? -position : position;\n pos = props.reverse ? -pos : pos;\n var max = maxValue - Math.max.apply(Math, _toConsumableArray(startBounds));\n var min = minValue - Math.min.apply(Math, _toConsumableArray(startBounds));\n var ratio = Math.min(Math.max(pos / (this.getSliderLength() / 100), min), max);\n var nextBounds = startBounds.map(function (v) {\n return Math.floor(Math.max(Math.min(v + ratio, maxValue), minValue));\n });\n\n if (state.bounds.map(function (c, i) {\n return c === nextBounds[i];\n }).some(function (c) {\n return !c;\n })) {\n this.onChange({\n bounds: nextBounds\n });\n }\n\n return;\n }\n\n var value = this.calcValueByPos(position);\n var oldValue = state.bounds[state.handle];\n if (value === oldValue) return;\n this.moveTo(value);\n }\n }, {\n key: \"onKeyboard\",\n value: function onKeyboard(e) {\n var _this$props2 = this.props,\n reverse = _this$props2.reverse,\n vertical = _this$props2.vertical;\n var valueMutator = utils.getKeyboardValueMutator(e, vertical, reverse);\n\n if (valueMutator) {\n utils.pauseEvent(e);\n var state = this.state,\n props = this.props;\n var bounds = state.bounds,\n handle = state.handle;\n var oldValue = bounds[handle === null ? state.recent : handle];\n var mutatedValue = valueMutator(oldValue, props);\n\n var value = _trimAlignValue({\n value: mutatedValue,\n handle: handle,\n bounds: state.bounds,\n props: props\n });\n\n if (value === oldValue) return;\n var isFromKeyboardEvent = true;\n this.moveTo(value, isFromKeyboardEvent);\n }\n }\n }, {\n key: \"getValue\",\n value: function getValue() {\n return this.state.bounds;\n }\n }, {\n key: \"getClosestBound\",\n value: function getClosestBound(value) {\n var bounds = this.state.bounds;\n var closestBound = 0;\n\n for (var i = 1; i < bounds.length - 1; i += 1) {\n if (value >= bounds[i]) {\n closestBound = i;\n }\n }\n\n if (Math.abs(bounds[closestBound + 1] - value) < Math.abs(bounds[closestBound] - value)) {\n closestBound += 1;\n }\n\n return closestBound;\n }\n }, {\n key: \"getBoundNeedMoving\",\n value: function getBoundNeedMoving(value, closestBound) {\n var _this$state = this.state,\n bounds = _this$state.bounds,\n recent = _this$state.recent;\n var boundNeedMoving = closestBound;\n var isAtTheSamePoint = bounds[closestBound + 1] === bounds[closestBound];\n\n if (isAtTheSamePoint && bounds[recent] === bounds[closestBound]) {\n boundNeedMoving = recent;\n }\n\n if (isAtTheSamePoint && value !== bounds[closestBound + 1]) {\n boundNeedMoving = value < bounds[closestBound + 1] ? closestBound : closestBound + 1;\n }\n\n return boundNeedMoving;\n }\n }, {\n key: \"getLowerBound\",\n value: function getLowerBound() {\n return this.state.bounds[0];\n }\n }, {\n key: \"getUpperBound\",\n value: function getUpperBound() {\n var bounds = this.state.bounds;\n return bounds[bounds.length - 1];\n }\n /**\n * Returns an array of possible slider points, taking into account both\n * `marks` and `step`. The result is cached.\n */\n\n }, {\n key: \"getPoints\",\n value: function getPoints() {\n var _this$props3 = this.props,\n marks = _this$props3.marks,\n step = _this$props3.step,\n min = _this$props3.min,\n max = _this$props3.max;\n var cache = this.internalPointsCache;\n\n if (!cache || cache.marks !== marks || cache.step !== step) {\n var pointsObject = _objectSpread({}, marks);\n\n if (step !== null) {\n for (var point = min; point <= max; point += step) {\n pointsObject[point] = point;\n }\n }\n\n var points = Object.keys(pointsObject).map(parseFloat);\n points.sort(function (a, b) {\n return a - b;\n });\n this.internalPointsCache = {\n marks: marks,\n step: step,\n points: points\n };\n }\n\n return this.internalPointsCache.points;\n }\n }, {\n key: \"moveTo\",\n value: function moveTo(value, isFromKeyboardEvent) {\n var _this3 = this;\n\n var state = this.state,\n props = this.props;\n\n var nextBounds = _toConsumableArray(state.bounds);\n\n var handle = state.handle === null ? state.recent : state.handle;\n nextBounds[handle] = value;\n var nextHandle = handle;\n\n if (props.pushable !== false) {\n this.pushSurroundingHandles(nextBounds, nextHandle);\n } else if (props.allowCross) {\n nextBounds.sort(function (a, b) {\n return a - b;\n });\n nextHandle = nextBounds.indexOf(value);\n }\n\n this.onChange({\n recent: nextHandle,\n handle: nextHandle,\n bounds: nextBounds\n });\n\n if (isFromKeyboardEvent) {\n // known problem: because setState is async,\n // so trigger focus will invoke handler's onEnd and another handler's onStart too early,\n // cause onBeforeChange and onAfterChange receive wrong value.\n // here use setState callback to hack,but not elegant\n this.props.onAfterChange(nextBounds);\n this.setState({}, function () {\n _this3.handlesRefs[nextHandle].focus();\n });\n this.onEnd();\n }\n }\n }, {\n key: \"pushSurroundingHandles\",\n value: function pushSurroundingHandles(bounds, handle) {\n var value = bounds[handle];\n var pushable = this.props.pushable;\n var threshold = Number(pushable);\n var direction = 0;\n\n if (bounds[handle + 1] - value < threshold) {\n direction = +1; // push to right\n }\n\n if (value - bounds[handle - 1] < threshold) {\n direction = -1; // push to left\n }\n\n if (direction === 0) {\n return;\n }\n\n var nextHandle = handle + direction;\n var diffToNext = direction * (bounds[nextHandle] - value);\n\n if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) {\n // revert to original value if pushing is impossible\n // eslint-disable-next-line no-param-reassign\n bounds[handle] = bounds[nextHandle] - direction * threshold;\n }\n }\n }, {\n key: \"pushHandle\",\n value: function pushHandle(bounds, handle, direction, amount) {\n var originalValue = bounds[handle];\n var currentValue = bounds[handle];\n\n while (direction * (currentValue - originalValue) < amount) {\n if (!this.pushHandleOnePoint(bounds, handle, direction)) {\n // can't push handle enough to create the needed `amount` gap, so we\n // revert its position to the original value\n // eslint-disable-next-line no-param-reassign\n bounds[handle] = originalValue;\n return false;\n }\n\n currentValue = bounds[handle];\n } // the handle was pushed enough to create the needed `amount` gap\n\n\n return true;\n }\n }, {\n key: \"pushHandleOnePoint\",\n value: function pushHandleOnePoint(bounds, handle, direction) {\n var points = this.getPoints();\n var pointIndex = points.indexOf(bounds[handle]);\n var nextPointIndex = pointIndex + direction;\n\n if (nextPointIndex >= points.length || nextPointIndex < 0) {\n // reached the minimum or maximum available point, can't push anymore\n return false;\n }\n\n var nextHandle = handle + direction;\n var nextValue = points[nextPointIndex];\n var pushable = this.props.pushable;\n var threshold = Number(pushable);\n var diffToNext = direction * (bounds[nextHandle] - nextValue);\n\n if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) {\n // couldn't push next handle, so we won't push this one either\n return false;\n } // push the handle\n // eslint-disable-next-line no-param-reassign\n\n\n bounds[handle] = nextValue;\n return true;\n }\n }, {\n key: \"trimAlignValue\",\n value: function trimAlignValue(value) {\n var _this$state2 = this.state,\n handle = _this$state2.handle,\n bounds = _this$state2.bounds;\n return _trimAlignValue({\n value: value,\n handle: handle,\n bounds: bounds,\n props: this.props\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var _this$state3 = this.state,\n handle = _this$state3.handle,\n bounds = _this$state3.bounds;\n var _this$props4 = this.props,\n prefixCls = _this$props4.prefixCls,\n vertical = _this$props4.vertical,\n included = _this$props4.included,\n disabled = _this$props4.disabled,\n min = _this$props4.min,\n max = _this$props4.max,\n reverse = _this$props4.reverse,\n handleGenerator = _this$props4.handle,\n trackStyle = _this$props4.trackStyle,\n handleStyle = _this$props4.handleStyle,\n tabIndex = _this$props4.tabIndex,\n ariaLabelGroupForHandles = _this$props4.ariaLabelGroupForHandles,\n ariaLabelledByGroupForHandles = _this$props4.ariaLabelledByGroupForHandles,\n ariaValueTextFormatterGroupForHandles = _this$props4.ariaValueTextFormatterGroupForHandles;\n var offsets = bounds.map(function (v) {\n return _this4.calcOffset(v);\n });\n var handleClassName = \"\".concat(prefixCls, \"-handle\");\n var handles = bounds.map(function (v, i) {\n var _classNames;\n\n var mergedTabIndex = tabIndex[i] || 0;\n\n if (disabled || tabIndex[i] === null) {\n mergedTabIndex = null;\n }\n\n var dragging = handle === i;\n return handleGenerator({\n className: classNames((_classNames = {}, _defineProperty(_classNames, handleClassName, true), _defineProperty(_classNames, \"\".concat(handleClassName, \"-\").concat(i + 1), true), _defineProperty(_classNames, \"\".concat(handleClassName, \"-dragging\"), dragging), _classNames)),\n prefixCls: prefixCls,\n vertical: vertical,\n dragging: dragging,\n offset: offsets[i],\n value: v,\n index: i,\n tabIndex: mergedTabIndex,\n min: min,\n max: max,\n reverse: reverse,\n disabled: disabled,\n style: handleStyle[i],\n ref: function ref(h) {\n return _this4.saveHandle(i, h);\n },\n ariaLabel: ariaLabelGroupForHandles[i],\n ariaLabelledBy: ariaLabelledByGroupForHandles[i],\n ariaValueTextFormatter: ariaValueTextFormatterGroupForHandles[i]\n });\n });\n var tracks = bounds.slice(0, -1).map(function (_, index) {\n var _classNames2;\n\n var i = index + 1;\n var trackClassName = classNames((_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-track\"), true), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-track-\").concat(i), true), _classNames2));\n return /*#__PURE__*/React.createElement(Track, {\n className: trackClassName,\n vertical: vertical,\n reverse: reverse,\n included: included,\n offset: offsets[i - 1],\n length: offsets[i] - offsets[i - 1],\n style: trackStyle[index],\n key: i\n });\n });\n return {\n tracks: tracks,\n handles: handles\n };\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n if (!('value' in props || 'min' in props || 'max' in props)) {\n return null;\n }\n\n var value = props.value || state.bounds;\n var nextBounds = value.map(function (v, i) {\n return _trimAlignValue({\n value: v,\n handle: i,\n bounds: state.bounds,\n props: props\n });\n });\n\n if (state.bounds.length === nextBounds.length) {\n if (nextBounds.every(function (v, i) {\n return v === state.bounds[i];\n })) {\n return null;\n }\n } else {\n nextBounds = value.map(function (v, i) {\n return _trimAlignValue({\n value: v,\n handle: i,\n props: props\n });\n });\n }\n\n return _objectSpread(_objectSpread({}, state), {}, {\n bounds: nextBounds\n });\n }\n }]);\n\n return Range;\n}(React.Component);\n/* eslint-enable */\n\n\nRange.displayName = 'Range';\nRange.defaultProps = {\n count: 1,\n allowCross: true,\n pushable: false,\n draggableTrack: false,\n tabIndex: [],\n ariaLabelGroupForHandles: [],\n ariaLabelledByGroupForHandles: [],\n ariaValueTextFormatterGroupForHandles: []\n};\nexport default createSlider(Range);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n\nfunction isPointsEq(a1, a2, isAlignPoint) {\n if (isAlignPoint) {\n return a1[0] === a2[0];\n }\n\n return a1[0] === a2[0] && a1[1] === a2[1];\n}\n\nexport function getAlignFromPlacement(builtinPlacements, placementStr, align) {\n var baseAlign = builtinPlacements[placementStr] || {};\n return _objectSpread(_objectSpread({}, baseAlign), align);\n}\nexport function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {\n var points = align.points;\n var placements = Object.keys(builtinPlacements);\n\n for (var i = 0; i < placements.length; i += 1) {\n var placement = placements[i];\n\n if (isPointsEq(builtinPlacements[placement].points, points, isAlignPoint)) {\n return \"\".concat(prefixCls, \"-placement-\").concat(placement);\n }\n }\n\n return '';\n}","export function getMotion(_ref) {\n var prefixCls = _ref.prefixCls,\n motion = _ref.motion,\n animation = _ref.animation,\n transitionName = _ref.transitionName;\n\n if (motion) {\n return motion;\n }\n\n if (animation) {\n return {\n motionName: \"\".concat(prefixCls, \"-\").concat(animation)\n };\n }\n\n if (transitionName) {\n return {\n motionName: transitionName\n };\n }\n\n return null;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport { getMotion } from '../utils/legacyUtil';\nexport default function Mask(props) {\n var prefixCls = props.prefixCls,\n visible = props.visible,\n zIndex = props.zIndex,\n mask = props.mask,\n maskMotion = props.maskMotion,\n maskAnimation = props.maskAnimation,\n maskTransitionName = props.maskTransitionName;\n\n if (!mask) {\n return null;\n }\n\n var motion = {};\n\n if (maskMotion || maskTransitionName || maskAnimation) {\n motion = _objectSpread({\n motionAppear: true\n }, getMotion({\n motion: maskMotion,\n prefixCls: prefixCls,\n transitionName: maskTransitionName,\n animation: maskAnimation\n }));\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motion, {\n visible: visible,\n removeOnLeave: true\n }), function (_ref) {\n var className = _ref.className;\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n zIndex: zIndex\n },\n className: classNames(\"\".concat(prefixCls, \"-mask\"), className)\n });\n });\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport ResizeObserver from 'resize-observer-polyfill';\nimport contains from \"rc-util/es/Dom/contains\";\nexport function isSamePoint(prev, next) {\n if (prev === next) return true;\n if (!prev || !next) return false;\n\n if ('pageX' in next && 'pageY' in next) {\n return prev.pageX === next.pageX && prev.pageY === next.pageY;\n }\n\n if ('clientX' in next && 'clientY' in next) {\n return prev.clientX === next.clientX && prev.clientY === next.clientY;\n }\n\n return false;\n}\nexport function restoreFocus(activeElement, container) {\n // Focus back if is in the container\n if (activeElement !== document.activeElement && contains(container, activeElement) && typeof activeElement.focus === 'function') {\n activeElement.focus();\n }\n}\nexport function monitorResize(element, callback) {\n var prevWidth = null;\n var prevHeight = null;\n\n function onResize(_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n target = _ref2[0].target;\n\n if (!document.documentElement.contains(target)) return;\n\n var _target$getBoundingCl = target.getBoundingClientRect(),\n width = _target$getBoundingCl.width,\n height = _target$getBoundingCl.height;\n\n var fixedWidth = Math.floor(width);\n var fixedHeight = Math.floor(height);\n\n if (prevWidth !== fixedWidth || prevHeight !== fixedHeight) {\n // https://webkit.org/blog/9997/resizeobserver-in-webkit/\n Promise.resolve().then(function () {\n callback({\n width: fixedWidth,\n height: fixedHeight\n });\n });\n }\n\n prevWidth = fixedWidth;\n prevHeight = fixedHeight;\n }\n\n var resizeObserver = new ResizeObserver(onResize);\n\n if (element) {\n resizeObserver.observe(element);\n }\n\n return function () {\n resizeObserver.disconnect();\n };\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\n/**\n * Removed props:\n * - childrenProps\n */\nimport React from 'react';\nimport { composeRef } from \"rc-util/es/ref\";\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport { alignElement, alignPoint } from 'dom-align';\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport { isSamePoint, restoreFocus, monitorResize } from './util';\nimport useBuffer from './hooks/useBuffer';\n\nfunction getElement(func) {\n if (typeof func !== 'function') return null;\n return func();\n}\n\nfunction getPoint(point) {\n if (_typeof(point) !== 'object' || !point) return null;\n return point;\n}\n\nvar Align = function Align(_ref, ref) {\n var children = _ref.children,\n disabled = _ref.disabled,\n target = _ref.target,\n align = _ref.align,\n onAlign = _ref.onAlign,\n monitorWindowResize = _ref.monitorWindowResize,\n _ref$monitorBufferTim = _ref.monitorBufferTime,\n monitorBufferTime = _ref$monitorBufferTim === void 0 ? 0 : _ref$monitorBufferTim;\n var cacheRef = React.useRef({});\n var nodeRef = React.useRef();\n var childNode = React.Children.only(children); // ===================== Align ======================\n // We save the props here to avoid closure makes props ood\n\n var forceAlignPropsRef = React.useRef({});\n forceAlignPropsRef.current.disabled = disabled;\n forceAlignPropsRef.current.target = target;\n forceAlignPropsRef.current.onAlign = onAlign;\n\n var _useBuffer = useBuffer(function () {\n var _forceAlignPropsRef$c = forceAlignPropsRef.current,\n latestDisabled = _forceAlignPropsRef$c.disabled,\n latestTarget = _forceAlignPropsRef$c.target,\n latestOnAlign = _forceAlignPropsRef$c.onAlign;\n\n if (!latestDisabled && latestTarget) {\n var source = nodeRef.current;\n var result;\n var element = getElement(latestTarget);\n var point = getPoint(latestTarget);\n cacheRef.current.element = element;\n cacheRef.current.point = point; // IE lose focus after element realign\n // We should record activeElement and restore later\n\n var _document = document,\n activeElement = _document.activeElement; // We only align when element is visible\n\n if (element && isVisible(element)) {\n result = alignElement(source, element, align);\n } else if (point) {\n result = alignPoint(source, point, align);\n }\n\n restoreFocus(activeElement, source);\n\n if (latestOnAlign && result) {\n latestOnAlign(source, result);\n }\n\n return true;\n }\n\n return false;\n }, monitorBufferTime),\n _useBuffer2 = _slicedToArray(_useBuffer, 2),\n _forceAlign = _useBuffer2[0],\n cancelForceAlign = _useBuffer2[1]; // ===================== Effect =====================\n // Listen for target updated\n\n\n var resizeMonitor = React.useRef({\n cancel: function cancel() {}\n }); // Listen for source updated\n\n var sourceResizeMonitor = React.useRef({\n cancel: function cancel() {}\n });\n React.useEffect(function () {\n var element = getElement(target);\n var point = getPoint(target);\n\n if (nodeRef.current !== sourceResizeMonitor.current.element) {\n sourceResizeMonitor.current.cancel();\n sourceResizeMonitor.current.element = nodeRef.current;\n sourceResizeMonitor.current.cancel = monitorResize(nodeRef.current, _forceAlign);\n }\n\n if (cacheRef.current.element !== element || !isSamePoint(cacheRef.current.point, point)) {\n _forceAlign(); // Add resize observer\n\n\n if (resizeMonitor.current.element !== element) {\n resizeMonitor.current.cancel();\n resizeMonitor.current.element = element;\n resizeMonitor.current.cancel = monitorResize(element, _forceAlign);\n }\n }\n }); // Listen for disabled change\n\n React.useEffect(function () {\n if (!disabled) {\n _forceAlign();\n } else {\n cancelForceAlign();\n }\n }, [disabled]); // Listen for window resize\n\n var winResizeRef = React.useRef(null);\n React.useEffect(function () {\n if (monitorWindowResize) {\n if (!winResizeRef.current) {\n winResizeRef.current = addEventListener(window, 'resize', _forceAlign);\n }\n } else if (winResizeRef.current) {\n winResizeRef.current.remove();\n winResizeRef.current = null;\n }\n }, [monitorWindowResize]); // Clear all if unmount\n\n React.useEffect(function () {\n return function () {\n resizeMonitor.current.cancel();\n sourceResizeMonitor.current.cancel();\n if (winResizeRef.current) winResizeRef.current.remove();\n cancelForceAlign();\n };\n }, []); // ====================== Ref =======================\n\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: function forceAlign() {\n return _forceAlign(true);\n }\n };\n }); // ===================== Render =====================\n\n if (React.isValidElement(childNode)) {\n childNode = React.cloneElement(childNode, {\n ref: composeRef(childNode.ref, nodeRef)\n });\n }\n\n return childNode;\n};\n\nvar RefAlign = React.forwardRef(Align);\nRefAlign.displayName = 'Align';\nexport default RefAlign;","import React from 'react';\nexport default (function (callback, buffer) {\n var calledRef = React.useRef(false);\n var timeoutRef = React.useRef(null);\n\n function cancelTrigger() {\n window.clearTimeout(timeoutRef.current);\n }\n\n function trigger(force) {\n if (!calledRef.current || force === true) {\n if (callback() === false) {\n // Not delay since callback cancelled self\n return;\n }\n\n calledRef.current = true;\n cancelTrigger();\n timeoutRef.current = window.setTimeout(function () {\n calledRef.current = false;\n }, buffer);\n } else {\n cancelTrigger();\n timeoutRef.current = window.setTimeout(function () {\n calledRef.current = false;\n trigger();\n }, buffer);\n }\n }\n\n return [trigger, function () {\n calledRef.current = false;\n cancelTrigger();\n }];\n});","// export this package's api\nimport Align from './Align';\nexport default Align;","import _regeneratorRuntime from \"@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useState, useEffect, useRef } from 'react';\nimport raf from \"rc-util/es/raf\";\nvar StatusQueue = ['measure', 'align', null, 'motion'];\nexport default (function (visible, doMeasure) {\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n status = _useState2[0],\n setInternalStatus = _useState2[1];\n\n var rafRef = useRef();\n var destroyRef = useRef(false);\n\n function setStatus(nextStatus) {\n if (!destroyRef.current) {\n setInternalStatus(nextStatus);\n }\n }\n\n function cancelRaf() {\n raf.cancel(rafRef.current);\n }\n\n function goNextStatus(callback) {\n cancelRaf();\n rafRef.current = raf(function () {\n // Only align should be manually trigger\n setStatus(function (prev) {\n switch (status) {\n case 'align':\n return 'motion';\n\n case 'motion':\n return 'stable';\n\n default:\n }\n\n return prev;\n });\n callback === null || callback === void 0 ? void 0 : callback();\n });\n } // Init status\n\n\n useEffect(function () {\n setStatus('measure');\n }, [visible]); // Go next status\n\n useEffect(function () {\n switch (status) {\n case 'measure':\n doMeasure();\n break;\n\n default:\n }\n\n if (status) {\n rafRef.current = raf( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var index, nextStatus;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n index = StatusQueue.indexOf(status);\n nextStatus = StatusQueue[index + 1];\n\n if (nextStatus && index !== -1) {\n setStatus(nextStatus);\n }\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n })));\n }\n }, [status]);\n useEffect(function () {\n return function () {\n destroyRef.current = true;\n cancelRaf();\n };\n }, []);\n return [status, goNextStatus];\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport Align from 'rc-align';\nimport CSSMotion from 'rc-motion';\nimport classNames from 'classnames';\nimport useVisibleStatus from './useVisibleStatus';\nimport { getMotion } from '../utils/legacyUtil';\nimport useStretchStyle from './useStretchStyle';\nvar PopupInner = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var visible = props.visible,\n prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n children = props.children,\n zIndex = props.zIndex,\n stretch = props.stretch,\n destroyPopupOnHide = props.destroyPopupOnHide,\n forceRender = props.forceRender,\n align = props.align,\n point = props.point,\n getRootDomNode = props.getRootDomNode,\n getClassNameFromAlign = props.getClassNameFromAlign,\n onAlign = props.onAlign,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onMouseDown = props.onMouseDown,\n onTouchStart = props.onTouchStart;\n var alignRef = useRef();\n var elementRef = useRef();\n\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n alignedClassName = _useState2[0],\n setAlignedClassName = _useState2[1]; // ======================= Measure ========================\n\n\n var _useStretchStyle = useStretchStyle(stretch),\n _useStretchStyle2 = _slicedToArray(_useStretchStyle, 2),\n stretchStyle = _useStretchStyle2[0],\n measureStretchStyle = _useStretchStyle2[1];\n\n function doMeasure() {\n if (stretch) {\n measureStretchStyle(getRootDomNode());\n }\n } // ======================== Status ========================\n\n\n var _useVisibleStatus = useVisibleStatus(visible, doMeasure),\n _useVisibleStatus2 = _slicedToArray(_useVisibleStatus, 2),\n status = _useVisibleStatus2[0],\n goNextStatus = _useVisibleStatus2[1]; // ======================== Aligns ========================\n\n\n var prepareResolveRef = useRef(); // `target` on `rc-align` can accept as a function to get the bind element or a point.\n // ref: https://www.npmjs.com/package/rc-align\n\n function getAlignTarget() {\n if (point) {\n return point;\n }\n\n return getRootDomNode;\n }\n\n function forceAlign() {\n var _alignRef$current;\n\n (_alignRef$current = alignRef.current) === null || _alignRef$current === void 0 ? void 0 : _alignRef$current.forceAlign();\n }\n\n function onInternalAlign(popupDomNode, matchAlign) {\n if (status === 'align') {\n var nextAlignedClassName = getClassNameFromAlign(matchAlign);\n setAlignedClassName(nextAlignedClassName); // Repeat until not more align needed\n\n if (alignedClassName !== nextAlignedClassName) {\n Promise.resolve().then(function () {\n forceAlign();\n });\n } else {\n goNextStatus(function () {\n var _prepareResolveRef$cu;\n\n (_prepareResolveRef$cu = prepareResolveRef.current) === null || _prepareResolveRef$cu === void 0 ? void 0 : _prepareResolveRef$cu.call(prepareResolveRef);\n });\n }\n\n onAlign === null || onAlign === void 0 ? void 0 : onAlign(popupDomNode, matchAlign);\n }\n } // ======================== Motion ========================\n\n\n var motion = _objectSpread({}, getMotion(props));\n\n ['onAppearEnd', 'onEnterEnd', 'onLeaveEnd'].forEach(function (eventName) {\n var originHandler = motion[eventName];\n\n motion[eventName] = function (element, event) {\n goNextStatus();\n return originHandler === null || originHandler === void 0 ? void 0 : originHandler(element, event);\n };\n });\n\n function onShowPrepare() {\n return new Promise(function (resolve) {\n prepareResolveRef.current = resolve;\n });\n } // Go to stable directly when motion not provided\n\n\n React.useEffect(function () {\n if (!motion.motionName && status === 'motion') {\n goNextStatus();\n }\n }, [motion.motionName, status]); // ========================= Refs =========================\n\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: forceAlign,\n getElement: function getElement() {\n return elementRef.current;\n }\n };\n }); // ======================== Render ========================\n\n var mergedStyle = _objectSpread(_objectSpread(_objectSpread({}, stretchStyle), {}, {\n zIndex: zIndex\n }, style), {}, {\n opacity: status === 'motion' || status === 'stable' || !visible ? undefined : 0,\n pointerEvents: status === 'stable' ? undefined : 'none'\n }); // Align status\n\n\n var alignDisabled = true;\n\n if ((align === null || align === void 0 ? void 0 : align.points) && (status === 'align' || status === 'stable')) {\n alignDisabled = false;\n }\n\n var childNode = children; // Wrapper when multiple children\n\n if (React.Children.count(children) > 1) {\n childNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: visible,\n ref: elementRef,\n leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n }, motion, {\n onAppearPrepare: onShowPrepare,\n onEnterPrepare: onShowPrepare,\n removeOnLeave: destroyPopupOnHide,\n forceRender: forceRender\n }), function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n var mergedClassName = classNames(prefixCls, className, alignedClassName, motionClassName);\n return /*#__PURE__*/React.createElement(Align, {\n target: getAlignTarget(),\n key: \"popup\",\n ref: alignRef,\n monitorWindowResize: true,\n disabled: alignDisabled,\n align: align,\n onAlign: onInternalAlign\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: motionRef,\n className: mergedClassName,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseDownCapture: onMouseDown,\n onTouchStartCapture: onTouchStart,\n style: _objectSpread(_objectSpread({}, motionStyle), mergedStyle)\n }, childNode));\n });\n});\nPopupInner.displayName = 'PopupInner';\nexport default PopupInner;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default (function (stretch) {\n var _React$useState = React.useState({\n width: 0,\n height: 0\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n targetSize = _React$useState2[0],\n setTargetSize = _React$useState2[1];\n\n function measureStretch(element) {\n setTargetSize({\n width: element.offsetWidth,\n height: element.offsetHeight\n });\n } // Merge stretch style\n\n\n var style = React.useMemo(function () {\n var sizeStyle = {};\n\n if (stretch) {\n var width = targetSize.width,\n height = targetSize.height; // Stretch with target\n\n if (stretch.indexOf('height') !== -1 && height) {\n sizeStyle.height = height;\n } else if (stretch.indexOf('minHeight') !== -1 && height) {\n sizeStyle.minHeight = height;\n }\n\n if (stretch.indexOf('width') !== -1 && width) {\n sizeStyle.width = width;\n } else if (stretch.indexOf('minWidth') !== -1 && width) {\n sizeStyle.minWidth = width;\n }\n }\n\n return sizeStyle;\n }, [stretch, targetSize]);\n return [style, measureStretch];\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport CSSMotion from 'rc-motion';\nimport classNames from 'classnames';\nvar MobilePopupInner = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n visible = props.visible,\n zIndex = props.zIndex,\n children = props.children,\n _props$mobile = props.mobile;\n _props$mobile = _props$mobile === void 0 ? {} : _props$mobile;\n var popupClassName = _props$mobile.popupClassName,\n popupStyle = _props$mobile.popupStyle,\n _props$mobile$popupMo = _props$mobile.popupMotion,\n popupMotion = _props$mobile$popupMo === void 0 ? {} : _props$mobile$popupMo,\n popupRender = _props$mobile.popupRender;\n var elementRef = React.useRef(); // ========================= Refs =========================\n\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: function forceAlign() {},\n getElement: function getElement() {\n return elementRef.current;\n }\n };\n }); // ======================== Render ========================\n\n var mergedStyle = _objectSpread({\n zIndex: zIndex\n }, popupStyle);\n\n var childNode = children; // Wrapper when multiple children\n\n if (React.Children.count(children) > 1) {\n childNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, children);\n } // Mobile support additional render\n\n\n if (popupRender) {\n childNode = popupRender(childNode);\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: visible,\n ref: elementRef,\n removeOnLeave: true\n }, popupMotion), function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n var mergedClassName = classNames(prefixCls, popupClassName, motionClassName);\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: motionRef,\n className: mergedClassName,\n style: _objectSpread(_objectSpread({}, motionStyle), mergedStyle)\n }, childNode);\n });\n});\nMobilePopupInner.displayName = 'MobilePopupInner';\nexport default MobilePopupInner;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { useState, useEffect } from 'react';\nimport isMobile from \"rc-util/es/isMobile\";\nimport Mask from './Mask';\nimport PopupInner from './PopupInner';\nimport MobilePopupInner from './MobilePopupInner';\nvar Popup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var visible = _ref.visible,\n mobile = _ref.mobile,\n props = _objectWithoutProperties(_ref, [\"visible\", \"mobile\"]);\n\n var _useState = useState(visible),\n _useState2 = _slicedToArray(_useState, 2),\n innerVisible = _useState2[0],\n serInnerVisible = _useState2[1];\n\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n inMobile = _useState4[0],\n setInMobile = _useState4[1];\n\n var cloneProps = _objectSpread(_objectSpread({}, props), {}, {\n visible: innerVisible\n }); // We check mobile in visible changed here.\n // And this also delay set `innerVisible` to avoid popup component render flash\n\n\n useEffect(function () {\n serInnerVisible(visible);\n\n if (visible && mobile) {\n setInMobile(isMobile());\n }\n }, [visible, mobile]);\n var popupNode = inMobile ? /*#__PURE__*/React.createElement(MobilePopupInner, _extends({}, cloneProps, {\n mobile: mobile,\n ref: ref\n })) : /*#__PURE__*/React.createElement(PopupInner, _extends({}, cloneProps, {\n ref: ref\n })); // We can use fragment directly but this may failed some selector usage. Keep as origin logic\n\n return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(Mask, cloneProps), popupNode);\n});\nPopup.displayName = 'Popup';\nexport default Popup;","import * as React from 'react';\nvar TriggerContext = /*#__PURE__*/React.createContext(null);\nexport default TriggerContext;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport raf from \"rc-util/es/raf\";\nimport contains from \"rc-util/es/Dom/contains\";\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport Portal from \"rc-util/es/Portal\";\nimport classNames from 'classnames';\nimport { getAlignFromPlacement, getAlignPopupClassName } from './utils/alignUtil';\nimport Popup from './Popup';\nimport TriggerContext from './context';\n\nfunction noop() {}\n\nfunction returnEmptyString() {\n return '';\n}\n\nfunction returnDocument(element) {\n if (element) {\n return element.ownerDocument;\n }\n\n return window.document;\n}\n\nvar ALL_HANDLERS = ['onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur', 'onContextMenu'];\n/**\n * Internal usage. Do not use in your code since this will be removed.\n */\n\nexport function generateTrigger(PortalComponent) {\n var Trigger = /*#__PURE__*/function (_React$Component) {\n _inherits(Trigger, _React$Component);\n\n var _super = _createSuper(Trigger);\n\n function Trigger(props) {\n var _this;\n\n _classCallCheck(this, Trigger);\n\n _this = _super.call(this, props);\n _this.popupRef = /*#__PURE__*/React.createRef();\n _this.triggerRef = /*#__PURE__*/React.createRef();\n\n _this.onMouseEnter = function (e) {\n var mouseEnterDelay = _this.props.mouseEnterDelay;\n\n _this.fireEvents('onMouseEnter', e);\n\n _this.delaySetPopupVisible(true, mouseEnterDelay, mouseEnterDelay ? null : e);\n };\n\n _this.onMouseMove = function (e) {\n _this.fireEvents('onMouseMove', e);\n\n _this.setPoint(e);\n };\n\n _this.onMouseLeave = function (e) {\n _this.fireEvents('onMouseLeave', e);\n\n _this.delaySetPopupVisible(false, _this.props.mouseLeaveDelay);\n };\n\n _this.onPopupMouseEnter = function () {\n _this.clearDelayTimer();\n };\n\n _this.onPopupMouseLeave = function (e) {\n var _this$popupRef$curren;\n\n // https://github.com/react-component/trigger/pull/13\n // react bug?\n if (e.relatedTarget && !e.relatedTarget.setTimeout && contains((_this$popupRef$curren = _this.popupRef.current) === null || _this$popupRef$curren === void 0 ? void 0 : _this$popupRef$curren.getElement(), e.relatedTarget)) {\n return;\n }\n\n _this.delaySetPopupVisible(false, _this.props.mouseLeaveDelay);\n };\n\n _this.onFocus = function (e) {\n _this.fireEvents('onFocus', e); // incase focusin and focusout\n\n\n _this.clearDelayTimer();\n\n if (_this.isFocusToShow()) {\n _this.focusTime = Date.now();\n\n _this.delaySetPopupVisible(true, _this.props.focusDelay);\n }\n };\n\n _this.onMouseDown = function (e) {\n _this.fireEvents('onMouseDown', e);\n\n _this.preClickTime = Date.now();\n };\n\n _this.onTouchStart = function (e) {\n _this.fireEvents('onTouchStart', e);\n\n _this.preTouchTime = Date.now();\n };\n\n _this.onBlur = function (e) {\n _this.fireEvents('onBlur', e);\n\n _this.clearDelayTimer();\n\n if (_this.isBlurToHide()) {\n _this.delaySetPopupVisible(false, _this.props.blurDelay);\n }\n };\n\n _this.onContextMenu = function (e) {\n e.preventDefault();\n\n _this.fireEvents('onContextMenu', e);\n\n _this.setPopupVisible(true, e);\n };\n\n _this.onContextMenuClose = function () {\n if (_this.isContextMenuToShow()) {\n _this.close();\n }\n };\n\n _this.onClick = function (event) {\n _this.fireEvents('onClick', event); // focus will trigger click\n\n\n if (_this.focusTime) {\n var preTime;\n\n if (_this.preClickTime && _this.preTouchTime) {\n preTime = Math.min(_this.preClickTime, _this.preTouchTime);\n } else if (_this.preClickTime) {\n preTime = _this.preClickTime;\n } else if (_this.preTouchTime) {\n preTime = _this.preTouchTime;\n }\n\n if (Math.abs(preTime - _this.focusTime) < 20) {\n return;\n }\n\n _this.focusTime = 0;\n }\n\n _this.preClickTime = 0;\n _this.preTouchTime = 0; // Only prevent default when all the action is click.\n // https://github.com/ant-design/ant-design/issues/17043\n // https://github.com/ant-design/ant-design/issues/17291\n\n if (_this.isClickToShow() && (_this.isClickToHide() || _this.isBlurToHide()) && event && event.preventDefault) {\n event.preventDefault();\n }\n\n var nextVisible = !_this.state.popupVisible;\n\n if (_this.isClickToHide() && !nextVisible || nextVisible && _this.isClickToShow()) {\n _this.setPopupVisible(!_this.state.popupVisible, event);\n }\n };\n\n _this.onPopupMouseDown = function () {\n _this.hasPopupMouseDown = true;\n clearTimeout(_this.mouseDownTimeout);\n _this.mouseDownTimeout = window.setTimeout(function () {\n _this.hasPopupMouseDown = false;\n }, 0);\n\n if (_this.context) {\n var _this$context;\n\n (_this$context = _this.context).onPopupMouseDown.apply(_this$context, arguments);\n }\n };\n\n _this.onDocumentClick = function (event) {\n if (_this.props.mask && !_this.props.maskClosable) {\n return;\n }\n\n var target = event.target;\n\n var root = _this.getRootDomNode();\n\n var popupNode = _this.getPopupDomNode();\n\n if ( // mousedown on the target should also close popup when action is contextMenu.\n // https://github.com/ant-design/ant-design/issues/29853\n (!contains(root, target) || _this.isContextMenuOnly()) && !contains(popupNode, target) && !_this.hasPopupMouseDown) {\n _this.close();\n }\n };\n\n _this.getRootDomNode = function () {\n var getTriggerDOMNode = _this.props.getTriggerDOMNode;\n\n if (getTriggerDOMNode) {\n return getTriggerDOMNode(_this.triggerRef.current);\n }\n\n try {\n var domNode = findDOMNode(_this.triggerRef.current);\n\n if (domNode) {\n return domNode;\n }\n } catch (err) {// Do nothing\n }\n\n return ReactDOM.findDOMNode(_assertThisInitialized(_this));\n };\n\n _this.getPopupClassNameFromAlign = function (align) {\n var className = [];\n var _this$props = _this.props,\n popupPlacement = _this$props.popupPlacement,\n builtinPlacements = _this$props.builtinPlacements,\n prefixCls = _this$props.prefixCls,\n alignPoint = _this$props.alignPoint,\n getPopupClassNameFromAlign = _this$props.getPopupClassNameFromAlign;\n\n if (popupPlacement && builtinPlacements) {\n className.push(getAlignPopupClassName(builtinPlacements, prefixCls, align, alignPoint));\n }\n\n if (getPopupClassNameFromAlign) {\n className.push(getPopupClassNameFromAlign(align));\n }\n\n return className.join(' ');\n };\n\n _this.getComponent = function () {\n var _this$props2 = _this.props,\n prefixCls = _this$props2.prefixCls,\n destroyPopupOnHide = _this$props2.destroyPopupOnHide,\n popupClassName = _this$props2.popupClassName,\n onPopupAlign = _this$props2.onPopupAlign,\n popupMotion = _this$props2.popupMotion,\n popupAnimation = _this$props2.popupAnimation,\n popupTransitionName = _this$props2.popupTransitionName,\n popupStyle = _this$props2.popupStyle,\n mask = _this$props2.mask,\n maskAnimation = _this$props2.maskAnimation,\n maskTransitionName = _this$props2.maskTransitionName,\n maskMotion = _this$props2.maskMotion,\n zIndex = _this$props2.zIndex,\n popup = _this$props2.popup,\n stretch = _this$props2.stretch,\n alignPoint = _this$props2.alignPoint,\n mobile = _this$props2.mobile,\n forceRender = _this$props2.forceRender;\n var _this$state = _this.state,\n popupVisible = _this$state.popupVisible,\n point = _this$state.point;\n\n var align = _this.getPopupAlign();\n\n var mouseProps = {};\n\n if (_this.isMouseEnterToShow()) {\n mouseProps.onMouseEnter = _this.onPopupMouseEnter;\n }\n\n if (_this.isMouseLeaveToHide()) {\n mouseProps.onMouseLeave = _this.onPopupMouseLeave;\n }\n\n mouseProps.onMouseDown = _this.onPopupMouseDown;\n mouseProps.onTouchStart = _this.onPopupMouseDown;\n return /*#__PURE__*/React.createElement(Popup, _extends({\n prefixCls: prefixCls,\n destroyPopupOnHide: destroyPopupOnHide,\n visible: popupVisible,\n point: alignPoint && point,\n className: popupClassName,\n align: align,\n onAlign: onPopupAlign,\n animation: popupAnimation,\n getClassNameFromAlign: _this.getPopupClassNameFromAlign\n }, mouseProps, {\n stretch: stretch,\n getRootDomNode: _this.getRootDomNode,\n style: popupStyle,\n mask: mask,\n zIndex: zIndex,\n transitionName: popupTransitionName,\n maskAnimation: maskAnimation,\n maskTransitionName: maskTransitionName,\n maskMotion: maskMotion,\n ref: _this.popupRef,\n motion: popupMotion,\n mobile: mobile,\n forceRender: forceRender\n }), typeof popup === 'function' ? popup() : popup);\n };\n\n _this.attachParent = function (popupContainer) {\n raf.cancel(_this.attachId);\n var _this$props3 = _this.props,\n getPopupContainer = _this$props3.getPopupContainer,\n getDocument = _this$props3.getDocument;\n\n var domNode = _this.getRootDomNode();\n\n var mountNode;\n\n if (!getPopupContainer) {\n mountNode = getDocument(_this.getRootDomNode()).body;\n } else if (domNode || getPopupContainer.length === 0) {\n // Compatible for legacy getPopupContainer with domNode argument.\n // If no need `domNode` argument, will call directly.\n // https://codesandbox.io/s/eloquent-mclean-ss93m?file=/src/App.js\n mountNode = getPopupContainer(domNode);\n }\n\n if (mountNode) {\n mountNode.appendChild(popupContainer);\n } else {\n // Retry after frame render in case parent not ready\n _this.attachId = raf(function () {\n _this.attachParent(popupContainer);\n });\n }\n };\n\n _this.getContainer = function () {\n var getDocument = _this.props.getDocument;\n var popupContainer = getDocument(_this.getRootDomNode()).createElement('div'); // Make sure default popup container will never cause scrollbar appearing\n // https://github.com/react-component/trigger/issues/41\n\n popupContainer.style.position = 'absolute';\n popupContainer.style.top = '0';\n popupContainer.style.left = '0';\n popupContainer.style.width = '100%';\n\n _this.attachParent(popupContainer);\n\n return popupContainer;\n };\n\n _this.setPoint = function (point) {\n var alignPoint = _this.props.alignPoint;\n if (!alignPoint || !point) return;\n\n _this.setState({\n point: {\n pageX: point.pageX,\n pageY: point.pageY\n }\n });\n };\n\n _this.handlePortalUpdate = function () {\n if (_this.state.prevPopupVisible !== _this.state.popupVisible) {\n _this.props.afterPopupVisibleChange(_this.state.popupVisible);\n }\n };\n\n var popupVisible;\n\n if ('popupVisible' in props) {\n popupVisible = !!props.popupVisible;\n } else {\n popupVisible = !!props.defaultPopupVisible;\n }\n\n _this.state = {\n prevPopupVisible: popupVisible,\n popupVisible: popupVisible\n };\n ALL_HANDLERS.forEach(function (h) {\n _this[\"fire\".concat(h)] = function (e) {\n _this.fireEvents(h, e);\n };\n });\n return _this;\n }\n\n _createClass(Trigger, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.componentDidUpdate();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var props = this.props;\n var state = this.state; // We must listen to `mousedown` or `touchstart`, edge case:\n // https://github.com/ant-design/ant-design/issues/5804\n // https://github.com/react-component/calendar/issues/250\n // https://github.com/react-component/trigger/issues/50\n\n if (state.popupVisible) {\n var currentDocument;\n\n if (!this.clickOutsideHandler && (this.isClickToHide() || this.isContextMenuToShow())) {\n currentDocument = props.getDocument(this.getRootDomNode());\n this.clickOutsideHandler = addEventListener(currentDocument, 'mousedown', this.onDocumentClick);\n } // always hide on mobile\n\n\n if (!this.touchOutsideHandler) {\n currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n this.touchOutsideHandler = addEventListener(currentDocument, 'touchstart', this.onDocumentClick);\n } // close popup when trigger type contains 'onContextMenu' and document is scrolling.\n\n\n if (!this.contextMenuOutsideHandler1 && this.isContextMenuToShow()) {\n currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n this.contextMenuOutsideHandler1 = addEventListener(currentDocument, 'scroll', this.onContextMenuClose);\n } // close popup when trigger type contains 'onContextMenu' and window is blur.\n\n\n if (!this.contextMenuOutsideHandler2 && this.isContextMenuToShow()) {\n this.contextMenuOutsideHandler2 = addEventListener(window, 'blur', this.onContextMenuClose);\n }\n\n return;\n }\n\n this.clearOutsideHandler();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearDelayTimer();\n this.clearOutsideHandler();\n clearTimeout(this.mouseDownTimeout);\n raf.cancel(this.attachId);\n }\n }, {\n key: \"getPopupDomNode\",\n value: function getPopupDomNode() {\n var _this$popupRef$curren2;\n\n // for test\n return ((_this$popupRef$curren2 = this.popupRef.current) === null || _this$popupRef$curren2 === void 0 ? void 0 : _this$popupRef$curren2.getElement()) || null;\n }\n }, {\n key: \"getPopupAlign\",\n value: function getPopupAlign() {\n var props = this.props;\n var popupPlacement = props.popupPlacement,\n popupAlign = props.popupAlign,\n builtinPlacements = props.builtinPlacements;\n\n if (popupPlacement && builtinPlacements) {\n return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign);\n }\n\n return popupAlign;\n }\n /**\n * @param popupVisible Show or not the popup element\n * @param event SyntheticEvent, used for `pointAlign`\n */\n\n }, {\n key: \"setPopupVisible\",\n value: function setPopupVisible(popupVisible, event) {\n var alignPoint = this.props.alignPoint;\n var prevPopupVisible = this.state.popupVisible;\n this.clearDelayTimer();\n\n if (prevPopupVisible !== popupVisible) {\n if (!('popupVisible' in this.props)) {\n this.setState({\n popupVisible: popupVisible,\n prevPopupVisible: prevPopupVisible\n });\n }\n\n this.props.onPopupVisibleChange(popupVisible);\n } // Always record the point position since mouseEnterDelay will delay the show\n\n\n if (alignPoint && event && popupVisible) {\n this.setPoint(event);\n }\n }\n }, {\n key: \"delaySetPopupVisible\",\n value: function delaySetPopupVisible(visible, delayS, event) {\n var _this2 = this;\n\n var delay = delayS * 1000;\n this.clearDelayTimer();\n\n if (delay) {\n var point = event ? {\n pageX: event.pageX,\n pageY: event.pageY\n } : null;\n this.delayTimer = window.setTimeout(function () {\n _this2.setPopupVisible(visible, point);\n\n _this2.clearDelayTimer();\n }, delay);\n } else {\n this.setPopupVisible(visible, event);\n }\n }\n }, {\n key: \"clearDelayTimer\",\n value: function clearDelayTimer() {\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n }\n }\n }, {\n key: \"clearOutsideHandler\",\n value: function clearOutsideHandler() {\n if (this.clickOutsideHandler) {\n this.clickOutsideHandler.remove();\n this.clickOutsideHandler = null;\n }\n\n if (this.contextMenuOutsideHandler1) {\n this.contextMenuOutsideHandler1.remove();\n this.contextMenuOutsideHandler1 = null;\n }\n\n if (this.contextMenuOutsideHandler2) {\n this.contextMenuOutsideHandler2.remove();\n this.contextMenuOutsideHandler2 = null;\n }\n\n if (this.touchOutsideHandler) {\n this.touchOutsideHandler.remove();\n this.touchOutsideHandler = null;\n }\n }\n }, {\n key: \"createTwoChains\",\n value: function createTwoChains(event) {\n var childPros = this.props.children.props;\n var props = this.props;\n\n if (childPros[event] && props[event]) {\n return this[\"fire\".concat(event)];\n }\n\n return childPros[event] || props[event];\n }\n }, {\n key: \"isClickToShow\",\n value: function isClickToShow() {\n var _this$props4 = this.props,\n action = _this$props4.action,\n showAction = _this$props4.showAction;\n return action.indexOf('click') !== -1 || showAction.indexOf('click') !== -1;\n }\n }, {\n key: \"isContextMenuOnly\",\n value: function isContextMenuOnly() {\n var action = this.props.action;\n return action === 'contextMenu' || action.length === 1 && action[0] === 'contextMenu';\n }\n }, {\n key: \"isContextMenuToShow\",\n value: function isContextMenuToShow() {\n var _this$props5 = this.props,\n action = _this$props5.action,\n showAction = _this$props5.showAction;\n return action.indexOf('contextMenu') !== -1 || showAction.indexOf('contextMenu') !== -1;\n }\n }, {\n key: \"isClickToHide\",\n value: function isClickToHide() {\n var _this$props6 = this.props,\n action = _this$props6.action,\n hideAction = _this$props6.hideAction;\n return action.indexOf('click') !== -1 || hideAction.indexOf('click') !== -1;\n }\n }, {\n key: \"isMouseEnterToShow\",\n value: function isMouseEnterToShow() {\n var _this$props7 = this.props,\n action = _this$props7.action,\n showAction = _this$props7.showAction;\n return action.indexOf('hover') !== -1 || showAction.indexOf('mouseEnter') !== -1;\n }\n }, {\n key: \"isMouseLeaveToHide\",\n value: function isMouseLeaveToHide() {\n var _this$props8 = this.props,\n action = _this$props8.action,\n hideAction = _this$props8.hideAction;\n return action.indexOf('hover') !== -1 || hideAction.indexOf('mouseLeave') !== -1;\n }\n }, {\n key: \"isFocusToShow\",\n value: function isFocusToShow() {\n var _this$props9 = this.props,\n action = _this$props9.action,\n showAction = _this$props9.showAction;\n return action.indexOf('focus') !== -1 || showAction.indexOf('focus') !== -1;\n }\n }, {\n key: \"isBlurToHide\",\n value: function isBlurToHide() {\n var _this$props10 = this.props,\n action = _this$props10.action,\n hideAction = _this$props10.hideAction;\n return action.indexOf('focus') !== -1 || hideAction.indexOf('blur') !== -1;\n }\n }, {\n key: \"forcePopupAlign\",\n value: function forcePopupAlign() {\n if (this.state.popupVisible) {\n var _this$popupRef$curren3;\n\n (_this$popupRef$curren3 = this.popupRef.current) === null || _this$popupRef$curren3 === void 0 ? void 0 : _this$popupRef$curren3.forceAlign();\n }\n }\n }, {\n key: \"fireEvents\",\n value: function fireEvents(type, e) {\n var childCallback = this.props.children.props[type];\n\n if (childCallback) {\n childCallback(e);\n }\n\n var callback = this.props[type];\n\n if (callback) {\n callback(e);\n }\n }\n }, {\n key: \"close\",\n value: function close() {\n this.setPopupVisible(false);\n }\n }, {\n key: \"render\",\n value: function render() {\n var popupVisible = this.state.popupVisible;\n var _this$props11 = this.props,\n children = _this$props11.children,\n forceRender = _this$props11.forceRender,\n alignPoint = _this$props11.alignPoint,\n className = _this$props11.className,\n autoDestroy = _this$props11.autoDestroy;\n var child = React.Children.only(children);\n var newChildProps = {\n key: 'trigger'\n }; // ============================== Visible Handlers ==============================\n // >>> ContextMenu\n\n if (this.isContextMenuToShow()) {\n newChildProps.onContextMenu = this.onContextMenu;\n } else {\n newChildProps.onContextMenu = this.createTwoChains('onContextMenu');\n } // >>> Click\n\n\n if (this.isClickToHide() || this.isClickToShow()) {\n newChildProps.onClick = this.onClick;\n newChildProps.onMouseDown = this.onMouseDown;\n newChildProps.onTouchStart = this.onTouchStart;\n } else {\n newChildProps.onClick = this.createTwoChains('onClick');\n newChildProps.onMouseDown = this.createTwoChains('onMouseDown');\n newChildProps.onTouchStart = this.createTwoChains('onTouchStart');\n } // >>> Hover(enter)\n\n\n if (this.isMouseEnterToShow()) {\n newChildProps.onMouseEnter = this.onMouseEnter; // Point align\n\n if (alignPoint) {\n newChildProps.onMouseMove = this.onMouseMove;\n }\n } else {\n newChildProps.onMouseEnter = this.createTwoChains('onMouseEnter');\n } // >>> Hover(leave)\n\n\n if (this.isMouseLeaveToHide()) {\n newChildProps.onMouseLeave = this.onMouseLeave;\n } else {\n newChildProps.onMouseLeave = this.createTwoChains('onMouseLeave');\n } // >>> Focus\n\n\n if (this.isFocusToShow() || this.isBlurToHide()) {\n newChildProps.onFocus = this.onFocus;\n newChildProps.onBlur = this.onBlur;\n } else {\n newChildProps.onFocus = this.createTwoChains('onFocus');\n newChildProps.onBlur = this.createTwoChains('onBlur');\n } // =================================== Render ===================================\n\n\n var childrenClassName = classNames(child && child.props && child.props.className, className);\n\n if (childrenClassName) {\n newChildProps.className = childrenClassName;\n }\n\n var cloneProps = _objectSpread({}, newChildProps);\n\n if (supportRef(child)) {\n cloneProps.ref = composeRef(this.triggerRef, child.ref);\n }\n\n var trigger = /*#__PURE__*/React.cloneElement(child, cloneProps);\n var portal; // prevent unmounting after it's rendered\n\n if (popupVisible || this.popupRef.current || forceRender) {\n portal = /*#__PURE__*/React.createElement(PortalComponent, {\n key: \"portal\",\n getContainer: this.getContainer,\n didUpdate: this.handlePortalUpdate\n }, this.getComponent());\n }\n\n if (!popupVisible && autoDestroy) {\n portal = null;\n }\n\n return /*#__PURE__*/React.createElement(TriggerContext.Provider, {\n value: {\n onPopupMouseDown: this.onPopupMouseDown\n }\n }, trigger, portal);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, prevState) {\n var popupVisible = _ref.popupVisible;\n var newState = {};\n\n if (popupVisible !== undefined && prevState.popupVisible !== popupVisible) {\n newState.popupVisible = popupVisible;\n newState.prevPopupVisible = prevState.popupVisible;\n }\n\n return newState;\n }\n }]);\n\n return Trigger;\n }(React.Component);\n\n Trigger.contextType = TriggerContext;\n Trigger.defaultProps = {\n prefixCls: 'rc-trigger-popup',\n getPopupClassNameFromAlign: returnEmptyString,\n getDocument: returnDocument,\n onPopupVisibleChange: noop,\n afterPopupVisibleChange: noop,\n onPopupAlign: noop,\n popupClassName: '',\n mouseEnterDelay: 0,\n mouseLeaveDelay: 0.1,\n focusDelay: 0,\n blurDelay: 0.15,\n popupStyle: {},\n destroyPopupOnHide: false,\n popupAlign: {},\n defaultPopupVisible: false,\n mask: false,\n maskClosable: true,\n action: [],\n showAction: [],\n hideAction: [],\n autoDestroy: false\n };\n return Trigger;\n}\nexport default generateTrigger(Portal);","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nvar targetOffset = [0, 0];\nexport var placements = {\n left: {\n points: ['cr', 'cl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset: targetOffset\n },\n right: {\n points: ['cl', 'cr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n top: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n bottom: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n rightBottom: {\n points: ['bl', 'br'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n leftBottom: {\n points: ['br', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset: targetOffset\n }\n};\nexport default placements;","import * as React from 'react';\n\nvar Content = function Content(props) {\n var overlay = props.overlay,\n prefixCls = props.prefixCls,\n id = props.id,\n overlayInnerStyle = props.overlayInnerStyle;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-inner\"),\n id: id,\n role: \"tooltip\",\n style: overlayInnerStyle\n }, typeof overlay === 'function' ? overlay() : overlay);\n};\n\nexport default Content;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { useRef, useImperativeHandle, forwardRef } from 'react';\nimport Trigger from 'rc-trigger';\nimport { placements } from './placements';\nimport Content from './Content';\n\nvar Tooltip = function Tooltip(props, ref) {\n var overlayClassName = props.overlayClassName,\n _props$trigger = props.trigger,\n trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger,\n _props$mouseEnterDela = props.mouseEnterDelay,\n mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0 : _props$mouseEnterDela,\n _props$mouseLeaveDela = props.mouseLeaveDelay,\n mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n overlayStyle = props.overlayStyle,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-tooltip' : _props$prefixCls,\n children = props.children,\n onVisibleChange = props.onVisibleChange,\n afterVisibleChange = props.afterVisibleChange,\n transitionName = props.transitionName,\n animation = props.animation,\n motion = props.motion,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'right' : _props$placement,\n _props$align = props.align,\n align = _props$align === void 0 ? {} : _props$align,\n _props$destroyTooltip = props.destroyTooltipOnHide,\n destroyTooltipOnHide = _props$destroyTooltip === void 0 ? false : _props$destroyTooltip,\n defaultVisible = props.defaultVisible,\n getTooltipContainer = props.getTooltipContainer,\n overlayInnerStyle = props.overlayInnerStyle,\n restProps = _objectWithoutProperties(props, [\"overlayClassName\", \"trigger\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"overlayStyle\", \"prefixCls\", \"children\", \"onVisibleChange\", \"afterVisibleChange\", \"transitionName\", \"animation\", \"motion\", \"placement\", \"align\", \"destroyTooltipOnHide\", \"defaultVisible\", \"getTooltipContainer\", \"overlayInnerStyle\"]);\n\n var domRef = useRef(null);\n useImperativeHandle(ref, function () {\n return domRef.current;\n });\n\n var extraProps = _objectSpread({}, restProps);\n\n if ('visible' in props) {\n extraProps.popupVisible = props.visible;\n }\n\n var getPopupElement = function getPopupElement() {\n var _props$arrowContent = props.arrowContent,\n arrowContent = _props$arrowContent === void 0 ? null : _props$arrowContent,\n overlay = props.overlay,\n id = props.id;\n return [/*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-arrow\"),\n key: \"arrow\"\n }, arrowContent), /*#__PURE__*/React.createElement(Content, {\n key: \"content\",\n prefixCls: prefixCls,\n id: id,\n overlay: overlay,\n overlayInnerStyle: overlayInnerStyle\n })];\n };\n\n var destroyTooltip = false;\n var autoDestroy = false;\n\n if (typeof destroyTooltipOnHide === 'boolean') {\n destroyTooltip = destroyTooltipOnHide;\n } else if (destroyTooltipOnHide && _typeof(destroyTooltipOnHide) === 'object') {\n var keepParent = destroyTooltipOnHide.keepParent;\n destroyTooltip = keepParent === true;\n autoDestroy = keepParent === false;\n }\n\n return /*#__PURE__*/React.createElement(Trigger, _extends({\n popupClassName: overlayClassName,\n prefixCls: prefixCls,\n popup: getPopupElement,\n action: trigger,\n builtinPlacements: placements,\n popupPlacement: placement,\n ref: domRef,\n popupAlign: align,\n getPopupContainer: getTooltipContainer,\n onPopupVisibleChange: onVisibleChange,\n afterPopupVisibleChange: afterVisibleChange,\n popupTransitionName: transitionName,\n popupAnimation: animation,\n popupMotion: motion,\n defaultPopupVisible: defaultVisible,\n destroyPopupOnHide: destroyTooltip,\n autoDestroy: autoDestroy,\n mouseLeaveDelay: mouseLeaveDelay,\n popupStyle: overlayStyle,\n mouseEnterDelay: mouseEnterDelay\n }, extraProps), children);\n};\n\nexport default /*#__PURE__*/forwardRef(Tooltip);","import Tooltip from './Tooltip';\nexport default Tooltip;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Tooltip from 'rc-tooltip';\nimport { composeRef } from \"rc-util/es/ref\";\nimport raf from \"rc-util/es/raf\";\nvar SliderTooltip = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var visible = props.visible,\n overlay = props.overlay;\n var innerRef = React.useRef(null);\n var tooltipRef = composeRef(ref, innerRef);\n var rafRef = React.useRef(null);\n\n function cancelKeepAlign() {\n raf.cancel(rafRef.current);\n }\n\n function keepAlign() {\n rafRef.current = raf(function () {\n var _innerRef$current;\n\n (_innerRef$current = innerRef.current) === null || _innerRef$current === void 0 ? void 0 : _innerRef$current.forcePopupAlign();\n });\n }\n\n React.useEffect(function () {\n if (visible) {\n keepAlign();\n } else {\n cancelKeepAlign();\n }\n\n return cancelKeepAlign;\n }, [visible, overlay]);\n return /*#__PURE__*/React.createElement(Tooltip, _extends({\n ref: tooltipRef\n }, props));\n});\nexport default SliderTooltip;","import Slider from './Slider';\nimport Range from './Range';\nimport Handle from './Handle';\nimport createSliderWithTooltip from './createSliderWithTooltip';\nimport SliderTooltip from './common/SliderTooltip';\nvar InternalSlider = Slider;\nInternalSlider.Range = Range;\nInternalSlider.Handle = Handle;\nInternalSlider.createSliderWithTooltip = createSliderWithTooltip;\nexport default InternalSlider;\nexport { Range, Handle, createSliderWithTooltip, SliderTooltip };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport React from 'react';\nimport Tooltip from './common/SliderTooltip';\nimport Handle from './Handle';\nexport default function createSliderWithTooltip(Component) {\n var _a; // eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n\n return _a = /*#__PURE__*/function (_React$Component) {\n _inherits(ComponentWrapper, _React$Component);\n\n var _super = _createSuper(ComponentWrapper);\n\n function ComponentWrapper() {\n var _this;\n\n _classCallCheck(this, ComponentWrapper);\n\n _this = _super.apply(this, arguments);\n _this.state = {\n visibles: {}\n };\n\n _this.handleTooltipVisibleChange = function (index, visible) {\n _this.setState(function (prevState) {\n return {\n visibles: _objectSpread(_objectSpread({}, prevState.visibles), {}, _defineProperty({}, index, visible))\n };\n });\n };\n\n _this.handleWithTooltip = function (_ref) {\n var value = _ref.value,\n dragging = _ref.dragging,\n index = _ref.index,\n disabled = _ref.disabled,\n restProps = _objectWithoutProperties(_ref, [\"value\", \"dragging\", \"index\", \"disabled\"]);\n\n var _this$props = _this.props,\n tipFormatter = _this$props.tipFormatter,\n tipProps = _this$props.tipProps,\n handleStyle = _this$props.handleStyle,\n getTooltipContainer = _this$props.getTooltipContainer;\n\n var _tipProps$prefixCls = tipProps.prefixCls,\n prefixCls = _tipProps$prefixCls === void 0 ? 'rc-slider-tooltip' : _tipProps$prefixCls,\n _tipProps$overlay = tipProps.overlay,\n overlay = _tipProps$overlay === void 0 ? tipFormatter(value) : _tipProps$overlay,\n _tipProps$placement = tipProps.placement,\n placement = _tipProps$placement === void 0 ? 'top' : _tipProps$placement,\n _tipProps$visible = tipProps.visible,\n visible = _tipProps$visible === void 0 ? false : _tipProps$visible,\n restTooltipProps = _objectWithoutProperties(tipProps, [\"prefixCls\", \"overlay\", \"placement\", \"visible\"]);\n\n var handleStyleWithIndex;\n\n if (Array.isArray(handleStyle)) {\n handleStyleWithIndex = handleStyle[index] || handleStyle[0];\n } else {\n handleStyleWithIndex = handleStyle;\n }\n\n return /*#__PURE__*/React.createElement(Tooltip, _extends({}, restTooltipProps, {\n getTooltipContainer: getTooltipContainer,\n prefixCls: prefixCls,\n overlay: overlay,\n placement: placement,\n visible: !disabled && (_this.state.visibles[index] || dragging) || visible,\n key: index\n }), /*#__PURE__*/React.createElement(Handle, _extends({}, restProps, {\n style: _objectSpread({}, handleStyleWithIndex),\n value: value,\n onMouseEnter: function onMouseEnter() {\n return _this.handleTooltipVisibleChange(index, true);\n },\n onMouseLeave: function onMouseLeave() {\n return _this.handleTooltipVisibleChange(index, false);\n }\n })));\n };\n\n return _this;\n }\n\n _createClass(ComponentWrapper, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(Component, _extends({}, this.props, {\n handle: this.handleWithTooltip\n }));\n }\n }]);\n\n return ComponentWrapper;\n }(React.Component), _a.defaultProps = {\n tipFormatter: function tipFormatter(value) {\n return value;\n },\n handleStyle: [{}],\n tipProps: {},\n getTooltipContainer: function getTooltipContainer(node) {\n return node.parentNode;\n }\n }, _a;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport { composeRef } from \"rc-util/es/ref\";\nimport raf from \"rc-util/es/raf\";\nimport Tooltip from '../tooltip';\nvar SliderTooltip = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var visible = props.visible;\n var innerRef = useRef(null);\n var rafRef = useRef(null);\n\n function cancelKeepAlign() {\n raf.cancel(rafRef.current);\n rafRef.current = null;\n }\n\n function keepAlign() {\n rafRef.current = raf(function () {\n var _a;\n\n (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.forcePopupAlign();\n rafRef.current = null;\n });\n }\n\n React.useEffect(function () {\n if (visible) {\n keepAlign();\n } else {\n cancelKeepAlign();\n }\n\n return cancelKeepAlign;\n }, [visible, props.title]);\n return /*#__PURE__*/React.createElement(Tooltip, _extends({\n ref: composeRef(innerRef, ref)\n }, props));\n});\nexport default SliderTooltip;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport RcSlider, { Range as RcRange, Handle as RcHandle } from 'rc-slider';\nimport classNames from 'classnames';\nimport SliderTooltip from './SliderTooltip';\nimport { ConfigContext } from '../config-provider';\nvar Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n getPopupContainer = _React$useContext.getPopupContainer;\n\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n visibles = _React$useState2[0],\n setVisibles = _React$useState2[1];\n\n var toggleTooltipVisible = function toggleTooltipVisible(index, visible) {\n setVisibles(function (prev) {\n return _extends(_extends({}, prev), _defineProperty({}, index, visible));\n });\n };\n\n var getTooltipPlacement = function getTooltipPlacement(tooltipPlacement, vertical) {\n if (tooltipPlacement) {\n return tooltipPlacement;\n }\n\n if (!vertical) {\n return 'top';\n }\n\n return direction === 'rtl' ? 'left' : 'right';\n };\n\n var handleWithTooltip = function handleWithTooltip(_a) {\n var tooltipPrefixCls = _a.tooltipPrefixCls,\n prefixCls = _a.prefixCls,\n _b = _a.info,\n value = _b.value,\n dragging = _b.dragging,\n index = _b.index,\n restProps = __rest(_b, [\"value\", \"dragging\", \"index\"]);\n\n var tipFormatter = props.tipFormatter,\n tooltipVisible = props.tooltipVisible,\n tooltipPlacement = props.tooltipPlacement,\n getTooltipPopupContainer = props.getTooltipPopupContainer,\n vertical = props.vertical;\n var isTipFormatter = tipFormatter ? visibles[index] || dragging : false;\n var visible = tooltipVisible || tooltipVisible === undefined && isTipFormatter;\n var rootPrefixCls = getPrefixCls();\n return /*#__PURE__*/React.createElement(SliderTooltip, {\n prefixCls: tooltipPrefixCls,\n title: tipFormatter ? tipFormatter(value) : '',\n visible: visible,\n placement: getTooltipPlacement(tooltipPlacement, vertical),\n transitionName: \"\".concat(rootPrefixCls, \"-zoom-down\"),\n key: index,\n overlayClassName: \"\".concat(prefixCls, \"-tooltip\"),\n getPopupContainer: getTooltipPopupContainer || getPopupContainer\n }, /*#__PURE__*/React.createElement(RcHandle, _extends({}, restProps, {\n value: value,\n onMouseEnter: function onMouseEnter() {\n return toggleTooltipVisible(index, true);\n },\n onMouseLeave: function onMouseLeave() {\n return toggleTooltipVisible(index, false);\n }\n })));\n };\n\n var customizePrefixCls = props.prefixCls,\n customizeTooltipPrefixCls = props.tooltipPrefixCls,\n range = props.range,\n className = props.className,\n restProps = __rest(props, [\"prefixCls\", \"tooltipPrefixCls\", \"range\", \"className\"]);\n\n var prefixCls = getPrefixCls('slider', customizePrefixCls);\n var tooltipPrefixCls = getPrefixCls('tooltip', customizeTooltipPrefixCls);\n var cls = classNames(className, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl')); // make reverse default on rtl direction\n\n if (direction === 'rtl' && !restProps.vertical) {\n restProps.reverse = !restProps.reverse;\n } // extrack draggableTrack from range={{ ... }}\n\n\n var draggableTrack;\n\n if (_typeof(range) === 'object') {\n draggableTrack = range.draggableTrack;\n }\n\n if (range) {\n return /*#__PURE__*/React.createElement(RcRange, _extends({}, restProps, {\n step: restProps.step,\n draggableTrack: draggableTrack,\n className: cls,\n ref: ref,\n handle: function handle(info) {\n return handleWithTooltip({\n tooltipPrefixCls: tooltipPrefixCls,\n prefixCls: prefixCls,\n info: info\n });\n },\n prefixCls: prefixCls\n }));\n }\n\n return /*#__PURE__*/React.createElement(RcSlider, _extends({}, restProps, {\n step: restProps.step,\n className: cls,\n ref: ref,\n handle: function handle(info) {\n return handleWithTooltip({\n tooltipPrefixCls: tooltipPrefixCls,\n prefixCls: prefixCls,\n info: info\n });\n },\n prefixCls: prefixCls\n }));\n});\nSlider.displayName = 'Slider';\nSlider.defaultProps = {\n tipFormatter: function tipFormatter(value) {\n return typeof value === 'number' ? value.toString() : '';\n }\n};\nexport default Slider;"],"names":["props","_ref","_ref2","className","included","vertical","style","length","offset","reverse","Math","abs","positonStyle","concat","elStyle","prefixCls","marks","dots","step","lowerBound","upperBound","max","min","dotStyle","activeDotStyle","range","elements","warning","points","Object","keys","map","parseFloat","sort","a","b","i","indexOf","push","calcPoints","point","_classNames","isActived","pointClassName","key","onClickLabel","marksKeys","markPoint","markPointIsObject","markLabel","label","isActive","markClassName","bottomStyle","marginBottom","leftStyle","transform","msTransform","markStyle","onMouseDown","e","onTouchStart","Handle","_React$Component","_super","_this","this","apply","arguments","state","clickFocused","setHandleRef","node","handle","handleMouseUp","document","activeElement","setClickFocus","handleMouseDown","preventDefault","focus","handleBlur","handleKeyDown","value","onMouseUpListener","addEventListener","remove","focused","setState","blur","ariaValueText","_this$props","disabled","tabIndex","ariaLabel","ariaLabelledBy","ariaValueTextFormatter","restProps","positionStyle","mergedTabIndex","ref","onBlur","onKeyDown","role","isEventFromHandle","handles","some","target","findDOMNode","error","isValueOutOfRange","isNotTouchEvent","touches","type","toLowerCase","getClosestPoint","val","baseNum","pow","getPrecision","maxSteps","floor","steps","closestStep","round","diffs","stepString","toString","precision","getMousePosition","clientY","pageX","getTouchPosition","getHandleCenterPosition","coords","getBoundingClientRect","top","height","window","pageXOffset","left","width","ensureValueInRange","_ref3","ensureValuePrecision","closestPoint","isFinite","toFixed","pauseEvent","stopPropagation","getKeyboardValueMutator","increase","decrease","method","keyCode","func","operations","indexToGet","JSON","stringify","keyToGet","calculateNextValue","noop","createSlider","Component","_a","_Component","ComponentEnhancer","call","onDown","position","p","draggableTrack","isVertical","bounds","positionGetValue","inPoint","handlesRefs","dragTrack","n","v","c","dragOffset","startBounds","handlePosition","onStart","button","removeDocumentEvents","addDocumentMouseEvents","addDocumentTouchEvents","onFocus","_this$props2","onEnd","onMouseUp","prevMovedHandleIndex","clickFocus","onMouseMove","sliderRef","onMove","onTouchMove","onKeyboard","onClickMarkLabel","onChange","saveSlider","slider","isPointDiffEven","ownerDocument","_this$props3","autoFocus","prototype","_this$props4","rect","bottom","right","onTouchMoveListener","onTouchUpListener","onMouseMoveListener","_this$handlesRefs$","_this2","forEach","_this2$handlesRefs$ke","_this2$handlesRefs$ke2","_this$props5","ratio","getSliderLength","pixelOffset","getSliderStart","trimAlignValue","calcValue","_this$props6","index","_this$props7","children","maximumTrackStyle","railStyle","_get$call","tracks","sliderClassName","getLowerBound","getUpperBound","displayName","defaultProps","dragging","onBeforeChange","onAfterChange","trackStyle","handleStyle","Slider","force","getValue","defaultValue","undefined","h","prevProps","prevState","theValue","nextValue","isNotControlled","nextState","changedValue","prevValue","calcValueByPos","startValue","startPosition","oldValue","valueMutator","mutatedValue","minPoint","startPoint","nextProps","mergedProps","minimumTrackStyle","ariaLabelForHandle","ariaLabelledByForHandle","ariaValueTextFormatterForHandle","handleGenerator","_this$state","calcOffset","saveHandle","trackOffset","mergedTrackStyle","_trimAlignValue","allowCross","pushable","thershold","Number","valInRange","valNotConflict","Range","closestBound","getClosestBound","getBoundNeedMoving","nextBounds","count","initialValue","Array","recent","currentValue","controlledState","item","maxValue","minValue","pos","moveTo","boundNeedMoving","isAtTheSamePoint","cache","internalPointsCache","pointsObject","isFromKeyboardEvent","_this3","nextHandle","pushSurroundingHandles","threshold","direction","diffToNext","pushHandle","amount","originalValue","pushHandleOnePoint","getPoints","nextPointIndex","_this$state2","_this4","_this$state3","ariaLabelGroupForHandles","ariaLabelledByGroupForHandles","ariaValueTextFormatterGroupForHandles","offsets","handleClassName","slice","_","_classNames2","trackClassName","every","isPointsEq","a1","a2","isAlignPoint","getMotion","motion","animation","transitionName","motionName","Mask","visible","zIndex","mask","maskMotion","maskAnimation","maskTransitionName","motionAppear","removeOnLeave","monitorResize","element","callback","prevWidth","prevHeight","resizeObserver","documentElement","contains","_target$getBoundingCl","fixedWidth","fixedHeight","Promise","resolve","then","observe","disconnect","getElement","getPoint","RefAlign","align","onAlign","monitorWindowResize","_ref$monitorBufferTim","monitorBufferTime","cacheRef","nodeRef","childNode","forceAlignPropsRef","current","_useBuffer","buffer","calledRef","timeoutRef","cancelTrigger","clearTimeout","trigger","setTimeout","_forceAlignPropsRef$c","latestDisabled","latestTarget","latestOnAlign","result","source","isVisible","container","restoreFocus","useBuffer","_useBuffer2","_forceAlign","cancelForceAlign","resizeMonitor","cancel","sourceResizeMonitor","prev","next","pageY","clientX","winResizeRef","forceAlign","StatusQueue","PopupInner","stretch","destroyPopupOnHide","forceRender","getRootDomNode","getClassNameFromAlign","onMouseEnter","onMouseLeave","alignRef","useRef","elementRef","_useState","useState","_useState2","alignedClassName","setAlignedClassName","_useStretchStyle","_React$useState","_React$useState2","targetSize","setTargetSize","sizeStyle","minHeight","minWidth","offsetWidth","offsetHeight","useStretchStyle","_useStretchStyle2","stretchStyle","measureStretchStyle","_useVisibleStatus","doMeasure","status","setInternalStatus","rafRef","destroyRef","setStatus","nextStatus","cancelRaf","raf","useEffect","_callee","_context","stop","useVisibleStatus","_useVisibleStatus2","goNextStatus","prepareResolveRef","_alignRef$current","onInternalAlign","popupDomNode","matchAlign","nextAlignedClassName","_prepareResolveRef$cu","onShowPrepare","eventName","originHandler","event","mergedStyle","opacity","pointerEvents","alignDisabled","leavedClassName","onAppearPrepare","onEnterPrepare","motionRef","motionClassName","motionStyle","mergedClassName","onMouseDownCapture","onTouchStartCapture","MobilePopupInner","_props$mobile","mobile","popupClassName","popupStyle","_props$mobile$popupMo","popupMotion","popupRender","Popup","innerVisible","serInnerVisible","_useState3","_useState4","inMobile","setInMobile","cloneProps","isMobile","popupNode","PortalComponent","Trigger","ALL_HANDLERS","Portal","popupVisible","popupRef","triggerRef","mouseEnterDelay","fireEvents","delaySetPopupVisible","setPoint","mouseLeaveDelay","onPopupMouseEnter","clearDelayTimer","onPopupMouseLeave","_this$popupRef$curren","relatedTarget","isFocusToShow","focusTime","Date","now","focusDelay","preClickTime","preTouchTime","isBlurToHide","blurDelay","onContextMenu","setPopupVisible","onContextMenuClose","isContextMenuToShow","close","onClick","preTime","isClickToShow","isClickToHide","nextVisible","onPopupMouseDown","_this$co