Compare commits

...

106 Commits

Author SHA1 Message Date
Tony Air f95cffdceb FIX: Turnstile Captcha 2024-05-10 00:21:53 +02:00
Tony Air 00469c0b1e Debugbar 2024-05-07 19:18:34 +02:00
Tony Air bce9a07e8b IMPR: Add From email conf 2024-05-06 14:03:21 +02:00
Tony Air 17d1037233 IMPR: Add From email env var 2024-05-06 14:01:48 +02:00
Tony Air e72a46d759 UPD: Frontend 2024-04-29 23:14:24 +02:00
Tony Air fc442dbc46 Merge branch 'v5' 2024-04-26 15:30:21 +02:00
Tony Air 594a2c4faa Merge branch 'v5' of github.com:a2nt/silverstripe-webpack into v5 2024-04-26 15:29:40 +02:00
Tony Air 50d3ef9ba5 IMPR: Better captcha settings 2024-04-26 15:29:29 +02:00
Tony Air be335742fc
Merge pull request #10 from a2nt/v5
V5
2024-04-25 17:08:07 +02:00
Tony Air e2c5390d89
Merge branch 'master' into v5 2024-04-25 17:07:58 +02:00
Tony Air a37673f6d5
Update README.md 2024-04-25 17:07:17 +02:00
Tony Air e62118f173
Update README.md 2024-04-25 17:06:15 +02:00
Tony Air 6959a77507 RM: outdated elements 2024-04-24 14:41:02 +02:00
Tony Air 4be4dafdd6 IMPR: Minor edits 2024-04-23 20:10:06 +02:00
Tony Air 73a227fafd
Merge pull request #9 from a2nt/v5
SilverStripe v5.*
2024-04-22 17:31:01 +02:00
Tony Air c9a4f40725 UPG: Frontend 2024-04-22 17:00:46 +02:00
Tony Air c36b321d91 FIX: ElementalArea 2024-04-22 16:25:52 +02:00
Tony Air 0cbc125872 UPD: Starting slider support 2024-04-22 16:08:21 +02:00
Tony Air 990cf8ffbe UPD: Starting slider support 2024-04-22 16:06:45 +02:00
Tony Air 488cd66be0 FIX: SS5 outdated elements 2024-04-22 15:42:44 +02:00
Tony Air 1953c9ff56 UPD: Minor edits 2024-04-22 15:04:32 +02:00
Tony Air 630672e87e UPD: Minor edits 2024-04-22 15:02:31 +02:00
Tony Air 473b406f8a UPD: Minor edits 2024-04-22 14:43:32 +02:00
Tony Air 22fa556fc3 UPD: composer.json 2024-04-22 14:14:31 +02:00
Tony Air 9a9f6bc79e UPD: gitignore 2024-04-22 13:48:19 +02:00
Tony Air f161cd9c7f UPD: composer 2024-04-22 13:47:30 +02:00
Tony Air ddcdb1218c UPD: composer 2024-04-22 13:30:37 +02:00
Tony Air ba000bcb4e IMPR: Minor fixtures and left-overs 2024-03-29 21:11:50 +02:00
Tony Air a7a6cd08ab IMPR: Minor fixtures and left-overs 2024-03-29 21:11:38 +02:00
Tony Air ef13e48857 IMPR: minor changes 2024-03-25 05:34:24 +02:00
Tony Air f6fabfe367 IMPR: Minor fixtures 2024-03-07 13:48:28 +02:00
Tony Air 414d5c7cbb IMPR: Add turnstile captcha requirement 2024-02-07 22:37:31 +02:00
Tony Air 2d7359b650 IMPR: AJAX processing 2024-02-02 18:21:05 +02:00
Tony Air f806dfdabf IMPR: Some AJAX responses 2024-01-25 15:09:11 +02:00
Tony Air 38090f14c1 FIX: Blog profile template 2024-01-22 22:57:08 +02:00
Tony Air 273c4e805c FIX: minor updates 2023-12-10 22:39:52 +02:00
Tony Air e0410c5667 IMPR: Frontend update 2023-11-27 17:22:06 +02:00
Tony Air e82650327b IMPR: Legacy pages fallback 2023-11-27 17:19:45 +02:00
Tony Air 3fd711afd3 IMPR: Frontend upgrade + Caching 2023-11-22 03:37:28 +02:00
Tony Air de2bd98792 IMPR: Add AJAX Forms 2023-11-20 19:31:44 +02:00
Tony Air 4be4002e02 UPD: Frontend 2023-11-18 04:05:26 +02:00
Tony Air 83952d4c83 IMPR: Show scrolls to prevent jumping 2023-11-08 19:42:00 +02:00
Tony Air c710fb02ff PNPM update 2023-10-31 21:41:48 +02:00
Tony Air 46fa25a04d IMPR: Some things sorting 2023-10-31 21:37:48 +02:00
Tony Air a4e2f12b71 IMPR: Add default cache 2023-10-31 02:05:32 +02:00
Tony Air 051a126624 IMPR: GraphQL and modules 2023-10-26 05:26:24 +02:00
Tony Air 3e5c6af1fb IMPR: GraphQL Live tests fixtures 2023-10-25 00:23:16 +02:00
Tony Air 306bc5e7dd IMPR: Move GraphQL to cms-niceties repo 2023-10-24 22:20:50 +02:00
Tony Air 2a07cf6763 IMPR: GraphQL support 2023-10-23 18:57:41 +02:00
Tony Air 5f10b0ae92 IMPR: Some prestyling 2023-10-13 17:27:19 +02:00
Tony Air d2fb354b10 IMPR: Some prestyling 2023-10-13 15:49:31 +02:00
Tony Air 6a73a98464 IMPR: Minor edits 2023-10-10 22:14:11 +02:00
Tony Air 2ebbfba1ce IMPR: frontend rebuild 2023-09-16 18:28:26 +02:00
Tony Air 485545093b FIX: X logo for Twitter 2023-09-13 18:20:30 +02:00
Tony Air fd91380d89 packages update 2023-08-04 00:28:22 +02:00
Tony Air 101ef17c90 [IMPR] Archived elements report 2023-06-02 16:32:23 +02:00
Tony Air 05c741fdfe [IMPR] Minor improvements 2023-05-13 04:11:25 +02:00
Tony Air c4c49c15be [IMPR] Minor improvements 2023-05-13 04:11:05 +02:00
Tony Air 8e5d69f35f [IMPR] Minor search improvements 2023-04-28 20:53:40 +02:00
Tony Air 0e70a5c690 [IMPR] Minor search improvements 2023-04-28 19:49:03 +02:00
Tony Air 56a58e3d6c Better Env check interface 2023-03-25 01:27:15 +02:00
Tony Air e41d1a5b45 Better Env check interface 2023-03-25 01:25:23 +02:00
Tony Air 00d7c12dfb Remove Data integrity tests 2023-03-24 23:24:50 +02:00
Tony Air e2120d5753 Add Data integrity tests 2023-03-24 23:11:46 +02:00
Tony Air 16dc06832b Minor fixtures 2023-03-24 20:35:40 +02:00
Tony Air f2a51a8993 Minor fixtures 2023-03-24 20:35:01 +02:00
Tony Air 36d72210f7 IMPR: CMS lightbox 2023-02-20 16:55:17 +02:00
Tony Air 4c3fb3cf73 IMPR: minor 2023-01-10 21:59:09 +02:00
Tony Air cc43b7dca6 IMPR: VideoFile 2022-11-01 22:16:18 +02:00
Tony Air c72e1f3bb2 UI: password show/hide + captcha 2022-09-12 23:25:43 +02:00
Tony Air 5d0862f92a UI: password show/hide + captcha 2022-09-12 23:07:03 +02:00
Tony Air d7783504f1 IMPR: Remove unnecessary divs 2022-07-03 15:19:00 +02:00
Tony Air 9d7c555af0 IMPR: Minor updates 2022-06-27 17:03:29 +02:00
Tony Air 12b2ff19d5 Minor improvements 2022-06-24 00:08:30 +02:00
Tony Air aa698660ec IMPR: minor prestyling 2022-06-13 22:13:19 +02:00
Tony Air b7c0418cff IMPR: minor prestyling 2022-06-13 13:34:15 +02:00
Tony Air ca56eb441f IMPR: minor prestyling 2022-06-13 13:15:28 +02:00
Tony Air 0fc3d88a20 IMPR: minor prestyling 2022-06-13 13:13:18 +02:00
Tony Air b1a4dfd6ee IMPR: Add build notification 2022-05-27 18:08:09 +02:00
Tony Air 2796ec97aa IMPR: Idea annotator 2022-05-10 12:36:40 +02:00
Tony Air 7ddaafe26c IMPR: standard linting 2022-05-03 22:00:53 +02:00
Tony Air 4b111ef30e IMPR: add linter 2022-05-03 20:36:39 +02:00
Tony Air fc0b5f74d1 IMPR: minor updates 2022-05-03 20:31:25 +02:00
Tony Air c1ff57a410 IMPR: minor updates 2022-05-03 20:30:05 +02:00
Tony Air 14362e0f99 IMPR: minify with fetch 2022-04-12 14:33:53 +02:00
Tony Air 7fd9645b44 Minor updates 2022-04-11 11:49:15 +02:00
Tony Air f9afd356bd UPD: NPM packages 2022-03-29 13:46:26 +02:00
Tony Air 6db6cf0583 IMPR: Minor updates 2022-03-15 20:48:57 +02:00
Tony Air 9684f37a98 IMPR: Add optional configuration values 2022-01-31 14:01:42 +02:00
Tony Air 2e36f2f048 UPD: packages 2022-01-15 15:43:00 +02:00
Tony Air f249be4f4a UPD: minicssextract plugin 2022-01-15 15:12:12 +02:00
Tony Air ea81d42bd4 UPD: minicssextract plugin 2022-01-15 14:49:49 +02:00
Tony Air 86a71bbb4e IMPR: code linting 2022-01-13 11:54:33 +02:00
Tony Air 6dae2f685d IMPR: remove some garbage, fix npm colors module issue 2022-01-10 00:59:45 +02:00
Tony Air a1bfc6f947 UPD: packages, FIX: auto-linter 2021-12-17 05:02:04 +02:00
Tony Air f5e5e2cc10 FIX: .npmrc 2021-12-14 19:12:35 +02:00
Tony Air f9fa8024ed FIX: .npmrc + Debug templates in dev mode 2021-12-14 18:54:48 +02:00
Tony Air f07bd6ea76 UPD: package.json 2021-12-02 00:22:10 +02:00
Tony Air e8dd41bb80 FIX: Default COntainer for data-less PageController 2021-12-01 23:28:04 +02:00
Tony Air e7c4b036b1 UPD: composer requirements 2021-11-23 15:21:49 +02:00
Tony Air 7ebf9a41f6 IMPR: NPM updates 2021-11-16 14:18:41 +02:00
Tony Air a9b29257ac FIX: add Google Maps Cluster requirements 2021-10-28 07:09:41 +02:00
Tony Air dc82ef55de UPD: editorconfig 2021-10-15 05:25:47 +02:00
Tony Air f7daf87039 UPD: editorconfig 2021-10-15 05:09:27 +02:00
Tony Air 6ab0448fbb UPD: webpack 2021-10-10 17:00:45 +02:00
Tony Air ef55b711fc UPD: Rebuild 2021-09-13 02:46:20 +02:00
162 changed files with 1849 additions and 1498 deletions

View File

@ -19,6 +19,15 @@ trim_trailing_whitespace = false
indent_size = 2
indent_style = space
[*.php]
indent_size = 4
indent_style = tab
[*.ss]
indent_size = 4
indent_style = tab
[{.travis.yml,package.json}]
# The indent size used in the `package.json` file cannot be changed
# https://github.com/npm/npm/pull/3180#issuecomment-16336516

View File

@ -6,4 +6,18 @@ SS_DATABASE_NAME=''
SS_DEFAULT_ADMIN_USERNAME=''
SS_DEFAULT_ADMIN_PASSWORD=''
SS_ENVIRONMENT_TYPE='dev'
SS_ENVIRONMENT_TYPE='dev'
SS_SEND_ALL_EMAILS_FROM=''
NOCAPTCHA_SITE_KEY=''
NOCAPTCHA_SECRET_KEY=''
SS_TURNSTILE_SITE_KEY=''
SS_TURNSTILE_SECRET_KEY=''
GOOGLEMAPS_API_KEY=''
MAPBOX_API_KEY=''
APP_SMTP_USERNAME=''
APP_SMTP_PASSWORD=''

6
.gitignore vendored
View File

@ -6,8 +6,10 @@
/vendor
/public/assets
/public/resources
/site/client/dist
/silverstripe-cache
yarn-error\.log
package-lock.json
pnpm-lock.yaml
pnpm-lock.yaml
public/_resources
.graphql-generated
public/_graphql

4
.npmrc
View File

@ -1,2 +1,2 @@
registry=https://npm.pkg.github.com/a2nt
registry=https://registry.npmjs.org/
//npmjs.org=true
@a2nt:registry=https://npm.pkg.github.com

View File

@ -1,6 +1,7 @@
# tony
## Simple WebPack boiler plate for SilverStripe
[![Silverstripe Version](https://img.shields.io/badge/Silverstripe-5.1-005ae1.svg?labelColor=white&logoColor=ffffff&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDEuMDkxIDU4LjU1NSIgZmlsbD0iIzAwNWFlMSIgeG1sbnM6dj0iaHR0cHM6Ly92ZWN0YS5pby9uYW5vIj48cGF0aCBkPSJNNTAuMDE1IDUuODU4bC0yMS4yODMgMTQuOWE2LjUgNi41IDAgMCAwIDcuNDQ4IDEwLjY1NGwyMS4yODMtMTQuOWM4LjgxMy02LjE3IDIwLjk2LTQuMDI4IDI3LjEzIDQuNzg2czQuMDI4IDIwLjk2LTQuNzg1IDI3LjEzbC02LjY5MSA0LjY3NmM1LjU0MiA5LjQxOCAxOC4wNzggNS40NTUgMjMuNzczLTQuNjU0QTMyLjQ3IDMyLjQ3IDAgMCAwIDUwLjAxNSA1Ljg2MnptMS4wNTggNDYuODI3bDIxLjI4NC0xNC45YTYuNSA2LjUgMCAxIDAtNy40NDktMTAuNjUzTDQzLjYyMyA0Mi4wMjhjLTguODEzIDYuMTctMjAuOTU5IDQuMDI5LTI3LjEyOS00Ljc4NHMtNC4wMjktMjAuOTU5IDQuNzg0LTI3LjEyOWw2LjY5MS00LjY3NkMyMi40My0zLjk3NiA5Ljg5NC0uMDEzIDQuMTk4IDEwLjA5NmEzMi40NyAzMi40NyAwIDAgMCA0Ni44NzUgNDIuNTkyeiIvPjwvc3ZnPg==)](https://packagist.org/packages/goldfinch/google-maps)
Checkout files at /app/ folder for details
Take a look to https://github.com/a2nt/webpack-bootstrap-ui-kit.git for UI Kit details

View File

@ -1,5 +1,10 @@
<?php
use SilverStripe\Core\EnvironmentLoader;
$env = BASE_PATH . '/app/.env';
$loader = new EnvironmentLoader();
$loader->loadFile($env);
/*\SilverStripe\Core\Config\Config::modify()->set(
\SilverStripe\Control\Email\Email::class,
'bcc_all_emails_to',//'cc_all_emails_to',

View File

@ -1,12 +1,15 @@
---
Name: app-api-captcha
After:
- a2nt-cms-niceties-base-config
---
SilverStripe\SpamProtection\Extension\FormSpamProtectionExtension:
default_spam_protector: UndefinedOffset\NoCaptcha\Forms\NocaptchaProtector
A2nt\CMSNiceties\Extensions\SiteMemberLoginForm:
enable_captcha: false
UndefinedOffset\NoCaptcha\Forms\NocaptchaField:
site_key: '6LfKgywaAAAAAH2VuHILbaNoUs0p0YZBNbNGyIsh' #Your site key (required)
secret_key: '6LfKgywaAAAAAJ0mxLSg1pZQIqui1gXSp2GGRKbY' #Your secret key (required)
site_key: '`NOCAPTCHA_SITE_KEY`' #Your site key (required)
secret_key: '`NOCAPTCHA_SECRET_KEY`' #Your secret key (required)
verify_ssl: true #Allows you to disable php-curl's SSL peer verification by setting this to false (optional, defaults to true)
default_theme: 'light' #Default theme color (optional, light or dark, defaults to light)
default_type: 'image' #Default captcha type (optional, image or audio, defaults to image)
@ -14,3 +17,18 @@ UndefinedOffset\NoCaptcha\Forms\NocaptchaField:
default_badge: 'bottomright' #Default badge position (bottomright, bottomleft or inline, defaults to bottomright)
proxy_server: '' #Your proxy server address (optional)
proxy_auth: '' #Your proxy server authentication information (optional)
SilverStripe\SpamProtection\Extension\FormSpamProtectionExtension:
default_spam_protector: WebbuildersGroup\Turnstile\Forms\TurnstileProtector
#default_spam_protector: UndefinedOffset\NoCaptcha\Forms\NocaptchaProtector
WebbuildersGroup\Turnstile\Forms\TurnstileField:
site_key: '`SS_TURNSTILE_SITE_KEY`' #Your site key (required)
secret_key: '`SS_TURNSTILE_SECRET_KEY`' #Your secret key (required)
verify_ssl: true #Allows you to disable php-curl's SSL peer verification by setting this to false (optional, defaults to true)
default_theme: "light" #Default theme color (optional, light, dark or auto, defaults to light)
js_onload_callback: null #Onload callback to be called when the JS for Turnstile is loaded
disable_js: true
proxy_server: "`SS_OUTBOUND_PROXY_SERVER`" #Your proxy server address (optional)
proxy_port: "`SS_OUTBOUND_PROXY_PORT`" #Your proxy server address port (optional)
proxy_auth: "`SS_OUTBOUND_PROXY_AUTH`" #Your proxy server authentication information (optional)

View File

@ -19,7 +19,11 @@ A2nt\ElementalBasics\Elements\MapElement:
BetterBrief\GoogleMapField:
default_options:
api_key: ''
api_key: '`GOOGLEMAPS_API_KEY`'
Symbiote\Addressable\MapboxGeocodeService:
mapbox_api_key: ''
mapbox_api_key: '`MAPBOX_API_KEY`'
SilverStripe\SiteConfig\SiteConfig:
map_type: "google-maps"

31
app/_config/app.yml Normal file
View File

@ -0,0 +1,31 @@
---
Name: app-basics
After:
- elemental
- elemental-list
- elementalvirtual
- elemental-basics
- a2nt-cms-niceties-options-elements
- a2nt-cms-niceties-base-config
- webapp-base-extensions
- webapp-locale-fluent
- silvershop-config
---
SilverStripe\CMS\Model\SiteTree:
allowed_elements: null
DNADesign\ElementalList\Model\ElementList:
allowed_elements: null
DNADesign\ElementalUserForms\Model\ElementForm:
block_default_userforms_css: true
block_default_userforms_js: true
SilverLeague\IDEAnnotator\DataObjectAnnotator:
enabled: true
SilverStripe\UserForms\Form\UserForm:
no_placeholders: false
show_labels: true

12
app/_config/cache.yml Normal file
View File

@ -0,0 +1,12 @@
---
Name: app-cache
After:
- app-basics
---
SilverStripe\Core\Injector\Injector:
Psr\SimpleCache\CacheInterface.appCache:
factory: SilverStripe\Core\Cache\CacheFactory
constructor:
namespace: "appCache"
defaultLifetime: 3600

24
app/_config/email.yml Normal file
View File

@ -0,0 +1,24 @@
---
Name: app-emailconfig
After:
- '#emailconfig'
---
SilverStripe\Core\Injector\Injector:
Swift_Transport:
class: Swift_SendmailTransport
#SilverStripe\Control\Email\Email:
# admin_email:
# support@example.com: 'Support team'
#SilverStripe\Core\Injector\Injector:
# Swift_Transport:
# class: Swift_SmtpTransport
# properties:
# Host: smtp.host.com
# Port: <port>
# Encryption: tls
# calls:
# Username: [ setUsername, ['`APP_SMTP_USERNAME`'] ]
# Password: [ setPassword, ['`APP_SMTP_PASSWORD`'] ]
# AuthMode: [ setAuthMode, ['login'] ]

View File

@ -1,6 +1,7 @@
---
Name: webapp-locale-fluent
After:
- '#versionedfiles'
- webapp-extensions
- webapp-elemental
- webapp-locale
@ -35,9 +36,14 @@ Page:
DNADesign\Elemental\Models\ElementalArea:
extensions:
- DNADesign\Elemental\TopPage\FluentExtension
- A2nt\CMSNiceties\Extensions\ElementalArea
- A2nt\ElementalBasics\Extensions\ElementalArea
DNADesign\Elemental\Models\BaseElement:
extensions:
- DNADesign\Elemental\TopPage\FluentExtension
- A2nt\CMSNiceties\Extensions\ElementRows
- A2nt\ElementalBasics\Extensions\ElementRows
SilverStripe\SiteConfig\SiteConfig:
extensions:
- TractorCow\Fluent\Extension\FluentExtension

View File

@ -6,4 +6,7 @@ After:
Symbiote\Addressable\Addressable:
allowed_countries:
'us': 'United States'
'us': 'United States'
SilverStripe\ORM\FieldType\DBCurrency:
currency_symbol: '$'

View File

@ -1,12 +1,7 @@
---
Name: webapp-options-elements
After:
- elemental
- elemental-list
- elementalvirtual
- elemental-basics
- a2nt-cms-niceties-options-elements
- webapp-base-extensions
- app-basics
---
Page:
searchable_elements:
@ -19,18 +14,19 @@ SilverStripe\CMS\Model\SiteTree:
- DNADesign\ElementalList\Model\ElementList
- DNADesign\Elemental\Models\ElementContent
- DNADesign\ElementalUserForms\Model\ElementForm
- Dynamic\Elements\Image\Elements\ElementImage
- Dynamic\Elements\Blog\Elements\ElementBlogPosts
- Dynamic\Elements\Oembed\Elements\ElementOembed
- Dynamic\Elements\Elements\ElementTestimonials
#- Dynamic\Elements\Image\Elements\ElementImage
#- Dynamic\Elements\Blog\Elements\ElementBlogPosts
#- Dynamic\Elements\Oembed\Elements\ElementOembed
#- Dynamic\Elements\Elements\ElementTestimonials
#- A2nt\ElementalBasics\Elements\TeamMembersElement
- A2nt\ElementalBasics\Elements\SliderElement
- A2nt\ElementalBasics\Elements\MapElement
#- A2nt\ElementalBasics\Elements\AccordionElement
#- A2nt\ElementalBasics\Elements\MapElement
- A2nt\ElementalBasics\Elements\AccordionElement
- DNADesign\ElementalVirtual\Model\ElementVirtual
- A2nt\ElementalBasics\Elements\AccordionElement
- A2nt\ElementalBasics\Elements\CustomSnippetElement
- A2nt\ElementalBasics\Elements\InstagramElement
#- A2nt\ElementalBasics\Elements\InstagramElement
- A2nt\ElementalBasics\Elements\SidebarElement
DNADesign\ElementalList\Model\ElementList:
inline_editable: false
@ -39,16 +35,33 @@ DNADesign\ElementalList\Model\ElementList:
- DNADesign\ElementalList\Model\ElementList
- DNADesign\Elemental\Models\ElementContent
- DNADesign\ElementalUserForms\Model\ElementForm
- Dynamic\Elements\Image\Elements\ElementImage
- Dynamic\Elements\Blog\Elements\ElementBlogPosts
- Dynamic\Elements\Oembed\Elements\ElementOembed
- Dynamic\Elements\Elements\ElementTestimonials
#- Dynamic\Elements\Image\Elements\ElementImage
#- Dynamic\Elements\Blog\Elements\ElementBlogPosts
#- Dynamic\Elements\Oembed\Elements\ElementOembed
#- Dynamic\Elements\Elements\ElementTestimonials
#- A2nt\ElementalBasics\Elements\TeamMembersElement
- A2nt\ElementalBasics\Elements\SliderElement
- A2nt\ElementalBasics\Elements\MapElement
#- A2nt\ElementalBasics\Elements\MapElement
- A2nt\ElementalBasics\Elements\AccordionElement
- A2nt\ElementalBasics\Elements\CustomSnippetElement
- A2nt\ElementalBasics\Elements\InstagramElement
#- A2nt\ElementalBasics\Elements\InstagramElement
styles:
whiteframe: 'White Frame'
noframe: 'No Frame'
A2nt\ElementalBasics\Extensions\ElementImageWidget:
available_heights:
'300': 'Small (300px)'
'400': 'Medium (400px)'
'600': 'Big (600px)'
available_widths:
'300': 'Small (300px)'
'400': 'Medium (400px)'
'600': 'Big (600px)'
available_ratios:
'1:1': '1:1'
'3:2': '3:2'
'2:3': '2:3'
'16:9': '16:9'

View File

@ -1,6 +1,7 @@
---
Name: webapp-shop
After:
- app-basics
- a2nt-cms-niceties-shop
---
SilverStripe\Core\Injector\Injector:

View File

@ -2,18 +2,8 @@
Name: webapp-templates-requirements
After:
- a2nt-cms-niceties-templates-requirements
- a2nt-cms-niceties-templates-themes
---
A2nt\CMSNiceties\Templates\DeferredRequirements:
nofontawesome: false
version: false
static_domain: false
deferred: true
noreact: true
nojquery: true
jquery_version: '3.4.1'
SilverStripe\FontAwesome\FontAwesomeField:
version: '5.12.0'
SilverStripe\View\Requirements:
disable_flush_combined: true

View File

@ -2,10 +2,25 @@
Name: webapp-templates-themes
After:
- webapp-options-elements
- a2nt-cms-niceties-templates-requirements
- a2nt-cms-niceties-templates-themes
---
A2nt\CMSNiceties\Templates\DeferredRequirements:
nofontawesome: false
version: false
static_domain: false
deferred: true
noreact: true
nojquery: true
jquery_version: '3.7.1'
fontawesome_svg: false
SilverStripe\FontAwesome\FontAwesomeField:
version: '6.5.1'
SilverStripe\View\SSViewer:
source_file_comments: true
source_file_comments: false
themes:
- '$public'
- '$default'
@ -18,3 +33,12 @@ A2nt\ElementalBasics\Elements\SliderElement:
A2nt\ElementalBasics\Extensions\ElementRows:
container_max_width: 2280
column_class: 'col-block col-md'
---
Name: webapp-templates-themes-debug
Only:
environment: dev
---
SilverStripe\View\SSViewer:
source_file_comments: false

View File

@ -18,4 +18,7 @@ A2nt\CMSNiceties\Templates\WebpackTemplateProvider:
injectClient: true
GRAPHQL_URL: '/graphql'
GRAPHQL_API_KEY: 'LgPaRkVPYa8IY7x3AjbLC8wx6oPPSlO01yPflFXecvQ'
PROCESS_CSS: true # Deep CSS minification
absolute_path: false
JQUERY: false # We don't use jQuery, otherwise it's aliassed and being loaded externaly
#STATIC_URL: 'http://127.0.0.1'

View File

@ -25,8 +25,6 @@
"jquery"
],
"parser": "babel-eslint",
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
@ -38,7 +36,6 @@
"rules": {
////////// Possible Errors //////////
"no-comma-dangle": 0, // disallow trailing commas in object literals
"no-cond-assign": 0, // disallow assignment in conditional expressions
"no-console": 0, // disallow use of console (off by default in the node environment)
@ -252,5 +249,14 @@
"react/sort-comp": "error",
"import/no-mutable-exports": "error",
"import/imports-first": "warn"
},
"settings": {
"react": {
"createClass": "createReactClass",
"pragma": "React",
"fragment": "Fragment",
"version": "detect",
"flowVersion": "0.53"
}
}
}
}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
#Menu-Dynamic-Elements-Admin-TestimonialsAdmin,#Menu-Dynamic-Elements-Promos-Admin-PromosAdmin,#Menu-Dynamic-Elements-Sponsors-Admin-SponsorsAdmin,#Menu-SilverStripe-CampaignAdmin-CampaignAdmin{display:none}#Form_ItemEditForm_MajorActions_Holder{border:0;margin-bottom:0;min-width:30%;padding-bottom:0}#Form_EditForm_MajorActions_Holder{border:0;margin-bottom:0;min-width:70%;padding-bottom:0}#Form_ItemEditForm_RightGroup_Holder{border:0;margin-bottom:0;min-width:20%;padding-bottom:0}.grid-field__icon-action.edit-link{opacity:1}.toolbar--south .btn-primary{color:#fff}.toolbar--south .btn-outline-primary{color:#999}#ActionMenus_MoreOptions .btn-primary{color:#5589a7}body.cms{flex-direction:column;overflow-x:hidden}.fields-compact .form-group{margin-bottom:.25rem;padding-bottom:.5rem}.fields-compact .form-group .form__field-label{font-weight:700}.fields-compact .form-group:after{margin-bottom:.25rem}.fields-compact .form-group:after,.fields-compact .form__divider:after{display:none}.fields-row{margin:0!important;padding:0 0 2em!important;width:100%}.fields-row .form__fieldgroup{display:flex;flex:0 0 100%!important;flex-wrap:wrap;margin:0!important;max-width:100%!important;padding:0!important;width:100%!important}.fields-row .form__fieldgroup>.form-group{flex:1 1 50%;margin:0!important;max-width:50%;padding:0 1rem}.notifications-list .alert .btn-close{display:none}
#Menu-Dynamic-Elements-Admin-TestimonialsAdmin,#Menu-Dynamic-Elements-Promos-Admin-PromosAdmin,#Menu-Dynamic-Elements-Sponsors-Admin-SponsorsAdmin,#Menu-SilverStripe-CampaignAdmin-CampaignAdmin{display:none}#Form_EditForm_MajorActions_Holder,#Form_ItemEditForm_MajorActions_Holder{border:0;flex:1 1;margin-bottom:0;padding-bottom:0}#Form_EditForm_MajorActions_Holder .btn,#Form_ItemEditForm_MajorActions_Holder .btn{white-space:nowrap}#Form_ItemEditForm_RightGroup,#Form_ItemEditForm_RightGroup_Holder{margin-bottom:0;padding-bottom:0}#Form_ItemEditForm_RightGroup{align-items:center;border:0;display:flex;justify-content:center}.grid-field__icon-action.edit-link{opacity:1}.grid-field__table .form-check-input.editable-column-field{margin:0!important}.toolbar--south .btn-primary{color:#fff}.toolbar--south .btn-outline-primary{color:#999}#ActionMenus_MoreOptions .btn-primary{color:#5589a7}body.cms{flex-direction:column;overflow-x:hidden}.fields-compact .form-group{margin-bottom:.25rem;padding-bottom:.5rem}.fields-compact .form-group .form__field-label{font-weight:700}.fields-compact .form-group:after{margin-bottom:.25rem}.fields-compact .form-group:after,.fields-compact .form__divider:after{display:none}.fields-row{margin:0!important;padding:0 0 2em!important;width:100%}.fields-row .form__fieldgroup{display:flex;flex:0 0 100%!important;flex-wrap:wrap;margin:0!important;max-width:100%!important;padding:0!important;width:100%!important}.fields-row .form__fieldgroup>.form-group{flex:1 1 50%;margin:0!important;max-width:50%;padding:0 1rem}.cms table.grid-field__table tbody .col-bulkSelect{position:relative}.notifications-list .alert .btn-close{display:none}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}#MetaLightboxApp{position:relative;z-index:99}.sticky-buttons~table.table.grid-field__table{margin-top:1rem}@keyframes fade{0%{filter:grayscale(0);opacity:1}50%{filter:grayscale(1);opacity:.5}to{filter:grayscale(0);opacity:1}}.meta-MetaWindow{position:fixed}.meta-MetaWindow .meta-error,.meta-MetaWindow .meta-spinner,.meta-MetaWindow .meta-spinner--embed{align-items:center;display:none;justify-content:center;text-align:center;z-index:2}.meta-MetaWindow .meta-spinner,.meta-MetaWindow .meta-spinner--embed{bottom:0;color:#fff;font-size:2rem;font-weight:700;left:0;position:absolute;right:0;text-transform:uppercase;top:0}.meta-MetaWindow .meta-error{color:#f44336;font-size:1.5em;font-weight:700}.meta-MetaWindow .meta-spinner--embed{display:flex}.meta-MetaWindow-overlay{align-items:center;background:rgba(0,0,0,.8);bottom:0;display:none;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:98}.meta-MetaWindow-overlay--open{display:flex}.meta-MetaWindow-overlay--loading{animation-duration:5s;animation-iteration-count:infinite;animation-name:fade}.meta-MetaWindow-overlay--loading .meta-spinner{display:flex}.meta-MetaWindow-overlay--error .meta-content{justify-content:center}.meta-MetaWindow-overlay--error .meta-error{display:flex}.meta-MetaWindow .meta-nav{background:none;border:0;color:#fff;font-size:2rem;text-shadow:#000 0 0 .25em;z-index:2}.meta-MetaWindow .meta-nav:focus,.meta-MetaWindow .meta-nav:hover{color:#fff}.meta-MetaWindow .meta-nav:hover{background:none;color:#eceff1;text-decoration:none;text-shadow:none}.meta-MetaWindow .meta-nav-arrow{align-items:center;bottom:0;display:flex;font-size:2.5rem;justify-content:center;padding:.25rem .5rem;position:absolute;top:auto;z-index:2}.meta-MetaWindow .meta-nav-arrow:focus .fa,.meta-MetaWindow .meta-nav-arrow:focus .fab,.meta-MetaWindow .meta-nav-arrow:focus .far,.meta-MetaWindow .meta-nav-arrow:focus .fas,.meta-MetaWindow .meta-nav-arrow:hover .fa,.meta-MetaWindow .meta-nav-arrow:hover .fab,.meta-MetaWindow .meta-nav-arrow:hover .far,.meta-MetaWindow .meta-nav-arrow:hover .fas{transform:scale(1.5)}@media(min-width:992px){.meta-MetaWindow .meta-nav-arrow{bottom:0;top:0}}.meta-MetaWindow .meta-nav-arrow__next{right:0}.meta-MetaWindow .meta-nav-arrow__prev{left:0}@media(min-width:992px){.meta-MetaWindow .meta-nav-arrow__next{right:-3rem}.meta-MetaWindow .meta-nav-arrow__prev{left:-3rem}}.meta-MetaWindow .meta-close{position:absolute;right:0;top:-3rem;width:1.25em}.meta-MetaWindow .meta-close:hover{transform:rotate(-180deg)}@media(min-width:992px){.meta-MetaWindow .meta-close{right:-3rem;top:-3rem}}.meta-MetaWindow .meta-content{display:flex;flex-direction:column;position:relative;width:100%;z-index:1}@media(min-width:768px){.meta-MetaWindow .meta-content{height:80%}}@media(min-width:992px){.meta-MetaWindow .meta-content{height:90%;height:calc(90% - 3rem);width:90%;width:calc(90% - 3rem)}}.meta-MetaWindow .meta-wrap{display:flex;height:100%;margin:0 auto;max-height:100%;max-width:100%;overflow:auto;width:100%;word-break:break-word}.meta-MetaWindow .meta-wrap img{max-height:100%;max-width:100%;object-fit:cover}.meta-MetaWindow--text .meta-content{background:#fff;color:#212529;padding:1rem 0 1rem .75rem}.meta-MetaWindow--text .meta-wrap{padding-right:.75rem}.meta-MetaWindow--image .meta-wrap,.meta-MetaWindow--image .typography,.meta-MetaWindow--video .meta-wrap,.meta-MetaWindow--video .typography{align-items:center;justify-content:center;min-height:100%;overflow:hidden}.meta-MetaWindow--image .meta-wrap img,.meta-MetaWindow--image .typography img,.meta-MetaWindow--video .meta-wrap img,.meta-MetaWindow--video .typography img{margin:0}.meta-MetaWindow--embed:before,.meta-MetaWindow--video:before{content:"";display:block;padding-top:56.25%;position:relative;width:100%}.meta-MetaWindow--embed a[rel="nofollow noreferrer noopener"],.meta-MetaWindow--video a[rel="nofollow noreferrer noopener"]{color:#fff;font-size:1.2rem;font-weight:700}.meta-MetaWindow--embed a[rel="nofollow noreferrer noopener"]:before,.meta-MetaWindow--video a[rel="nofollow noreferrer noopener"]:before{content:"Unable to load. Please follow the provided link: ";display:block}.meta-MetaWindow--embed iframe,.meta-MetaWindow--video iframe{height:100%;left:0;position:absolute;top:0;width:100%}

View File

@ -1 +1 @@
.table,table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0,0,0,0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0,0,0,0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0,0,0,0.075);border-color:#dee2e6;color:#212529;margin-bottom:1rem;vertical-align:top;width:100%}.table>:not(caption)>*>*,table>:not(caption)>*>*{background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg);padding:.5rem}.table>tbody,table>tbody{vertical-align:inherit}.table>thead,table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*,table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*,table>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*,table>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*,table.table-none>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd),table>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;border-color:#bacbe6;color:#000}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;border-color:#cbccce;color:#000}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;border-color:#bcd0c7;color:#000}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;border-color:#badce3;color:#000}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;border-color:#e6dbb9;color:#000}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;border-color:#dfc2c4;color:#000}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;border-color:#dfe0e1;color:#000}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;border-color:#373b3e;color:#fff}.table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}@media(max-width:575.98px){.table-responsive-sm{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media(max-width:767.98px){.table-responsive-md{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media(max-width:991.98px){.table-responsive-lg{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media(max-width:1167.98px){.table-responsive-xl{-webkit-overflow-scrolling:touch;overflow-x:auto}}body,html{background:#fff;color:#212529}.captionImage,.image,.ss-htmleditorfield-file,img{display:block;margin-bottom:.5rem;margin-top:.5rem;max-width:100%}@media(min-width:576px){.captionImage,.image,.ss-htmleditorfield-file,img{margin-left:.5rem;margin-right:.5rem}}.captionImage.center,.image.center,.ss-htmleditorfield-file.center,img.center{margin-left:auto;margin-right:auto;text-align:center}.captionImage.w-100,.image.w-100,.ss-htmleditorfield-file.w-100,img.w-100{margin-left:0;margin-right:0;text-align:center}.captionImage.left,.captionImage.leftAlone,.captionImage.start,.image.left,.image.leftAlone,.image.start,.ss-htmleditorfield-file.left,.ss-htmleditorfield-file.leftAlone,.ss-htmleditorfield-file.start,img.left,img.leftAlone,img.start{clear:left;float:left}@media(min-width:576px){.captionImage.left,.captionImage.leftAlone,.captionImage.start,.image.left,.image.leftAlone,.image.start,.ss-htmleditorfield-file.left,.ss-htmleditorfield-file.leftAlone,.ss-htmleditorfield-file.start,img.left,img.leftAlone,img.start{margin:0 .5rem .5rem 0}}.captionImage.end,.captionImage.right,.captionImage.rightAlone,.image.end,.image.right,.image.rightAlone,.ss-htmleditorfield-file.end,.ss-htmleditorfield-file.right,.ss-htmleditorfield-file.rightAlone,img.end,img.right,img.rightAlone{clear:right;float:right}@media(min-width:576px){.captionImage.end,.captionImage.right,.captionImage.rightAlone,.image.end,.image.right,.image.rightAlone,.ss-htmleditorfield-file.end,.ss-htmleditorfield-file.right,.ss-htmleditorfield-file.rightAlone,img.end,img.right,img.rightAlone{margin:.5rem 0 0 .5rem}}.captionImage iframe,.image iframe,.ss-htmleditorfield-file iframe,img iframe{height:100%!important;width:100%!important}.captionImage img{margin-bottom:.5rem!important}.captionImage .caption{font-size:.8rem}.left,.text-left,.text-start{text-align:left}.center,.text-center{text-align:center}.right,.text-end,.text-right{text-align:right}.text-justify{text-align:justify}table{border-collapse:collapse;max-width:100%;width:100%}table.table-none{border:0}table.table-none td,table.table-none th,table.table-none tr{background:none!important;border:0;box-shadow:none!important}ol,ul{padding-left:1rem}ol li,ul li{margin:.5em 0;padding-left:.5em;position:relative}ul,ul li{list-style:none}ul li{padding-left:0}ul li:before{content:"•";display:inline-block;font-size:1em;left:-.75em;margin-right:.5em;opacity:.5;position:absolute;top:-.1em}iframe,img,p,table,td,th,tr{max-width:100%!important}@media(max-width:575px){iframe,img,p,table,td,th,tr{border:0!important;display:block;padding-left:0!important;padding-right:0!important;width:100%!important}img,p,table,td,th,tr{height:auto!important}.d-typography-breakpoint-none{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}thead{display:block;text-align:center}thead>tr{display:flex}tbody{display:block}td{display:flex;flex-direction:column}td:before{content:attr(data-label);display:block;font-weight:700;min-width:50%;padding:0 .5rem;width:50%}}img{border:1px dashed}.ss-htmleditorfield-file.embed{position:relative}.ss-htmleditorfield-file.embed:before{content:"";display:block;padding-top:75%;position:relative;width:100%}.ss-htmleditorfield-file.embed iframe{bottom:0;left:0;position:absolute;right:0;top:0}a{color:#0d6efd}img{border:1px dashed #dedede}
.table,table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb),0.05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb),0.1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb),0.075);border-color:var(--bs-table-border-color);margin-bottom:1rem;vertical-align:top;width:100%}.table>:not(caption)>*>*,table>:not(caption)>*>*{background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)));color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));padding:.5rem}.table>tbody,table>tbody{vertical-align:inherit}.table>thead,table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width)*2) solid}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*,table>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*,table>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*,table.table-none>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child),table.table-none>:not(:first-child){border-top-width:0}.table-striped-columns>:not(caption)>tr>:nth-child(2n),.table-striped>tbody>tr:nth-of-type(odd)>*,table>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#a6b5cc;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000}.table-primary,.table-secondary{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b5b6b7;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#a7b9b1;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000}.table-info,.table-success{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#a6c3ca;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#ccc2a4;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000}.table-danger,.table-warning{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#c6c7c8;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000}.table-dark,.table-light{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:1167.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}body,html{background:#fff;color:#212529}p{margin-bottom:1em}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:inherit}.captionImage,.image,.ss-htmleditorfield-file,img{display:block;margin-bottom:1em;margin-top:1em;max-width:100%}@media(min-width:576px){.captionImage,.image,.ss-htmleditorfield-file,img{margin-left:1em;margin-right:1em}}.captionImage.center,.image.center,.ss-htmleditorfield-file.center,img.center{margin-left:auto;margin-right:auto;text-align:center}.captionImage.w-100,.image.w-100,.ss-htmleditorfield-file.w-100,img.w-100{margin-left:0;margin-right:0;text-align:center}.captionImage.left,.captionImage.start,.image.left,.image.start,.ss-htmleditorfield-file.left,.ss-htmleditorfield-file.start,img.left,img.start{clear:left;float:left}@media(min-width:576px){.captionImage.left,.captionImage.start,.image.left,.image.start,.ss-htmleditorfield-file.left,.ss-htmleditorfield-file.start,img.left,img.start{margin:0 1em 1em 0}}.captionImage.leftAlone,.image.leftAlone,.ss-htmleditorfield-file.leftAlone,img.leftAlone{clear:both;float:none;margin-left:0;margin-right:auto}.captionImage.end,.captionImage.right,.image.end,.image.right,.ss-htmleditorfield-file.end,.ss-htmleditorfield-file.right,img.end,img.right{clear:right;float:right}@media(min-width:576px){.captionImage.end,.captionImage.right,.image.end,.image.right,.ss-htmleditorfield-file.end,.ss-htmleditorfield-file.right,img.end,img.right{margin:1em 0 0 1em}}.captionImage.rightAlone,.image.rightAlone,.ss-htmleditorfield-file.rightAlone,img.rightAlone{clear:both;float:none;margin-left:auto;margin-right:0}.captionImage iframe,.image iframe,.ss-htmleditorfield-file iframe,img iframe{max-height:100%!important;width:100%!important}.captionImage img{margin-bottom:1em!important}.captionImage .caption{font-size:.8em}.left,.text-left,.text-start{text-align:left}.center,.text-center{text-align:center}.right,.text-end,.text-right{text-align:right}.text-justify{text-align:justify}table{border-collapse:collapse;max-width:100%;width:100%}table.table-none{border:0;margin-left:-.5em;margin-right:-.5em}table.table-none td,table.table-none th,table.table-none tr{background:none!important;border:0;box-shadow:none!important}ol,ul{padding-left:2em}ol li,ul li{margin:.5em 0;position:relative}ol{padding-left:2em}iframe,img,p,table,td,th,tr{max-width:100%!important}@media(max-width:575px){iframe,img,p,table,td,th,tr{border:0!important;display:block;padding-left:0!important;padding-right:0!important;width:100%!important}img,p,table,td,th,tr{height:auto!important}.d-typography-breakpoint-none{overflow:hidden;position:absolute;clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;padding:0;white-space:nowrap;width:1px}thead{display:block;text-align:center}thead>tr{display:flex}tbody{display:block}td{display:flex;flex-direction:column}td[data-label]:before{content:attr(data-label);display:block;font-weight:700;min-width:50%;padding:0 .5em;width:50%}}img{border:1px dashed}.ss-htmleditorfield-file.embed{position:relative}.ss-htmleditorfield-file.embed:before{content:"";display:block;padding-top:75%;position:relative;width:100%}.ss-htmleditorfield-file.embed iframe{bottom:0;left:0;position:absolute;right:0;top:0}img:last-child{margin-bottom:0!important}.table-none tr:last-child>td{padding-bottom:0}a{color:#0d6efd}img{border:1px dashed #dedede}

View File

@ -1 +1 @@
h1.title{border-bottom:1px solid #dee2e6;display:block;line-height:1.5em;text-align:right;text-transform:uppercase}.warningMessage{background-color:#fff3cd;border:1px solid #ffeeba;border-radius:.25rem;color:#856404;margin-bottom:1rem;padding:1rem;position:relative}#Content{margin:auto;padding-left:20px;text-align:left}#Content .emailTitle{font-size:2.5rem;font-weight:400}#Content .emailTitle,#Content .PageTitle{font-family:Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}#Content .PageTitle{color:#212529;font-size:14px;padding:5px}#Content .footer td{padding:10px}#Content .footer td.right{text-align:right}#Content .typography{padding:0 10px}#Content .typography a{font-size:1em;text-decoration:underline}#Content .typography a:hover{text-decoration:none}#Content .typography ul{padding:2px 15px}#Content .typography ul li{padding:2px 5px}#Content .typography p{color:#212529;margin:.75em 0}table#SenderTable .meta,table#SenderTable .sender{width:50%}table#MetaTable{margin-left:auto}table#MetaTable .label{font-weight:700}#ShippingTable td,#ShippingTable th{width:50%}table.infotable{background:#fff;border:1px solid #dee2e6;border-collapse:collapse;margin-top:10px;width:100%}table.infotable td.product.title{color:#0d6efd;font-family:Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1.75rem;font-weight:400}table.infotable tr td,table.infotable tr th{border:1px solid #dee2e6;color:#212529;padding:5px}table.infotable td{vertical-align:middle}table.infotable tr.summary{font-weight:700}table.infotable td.ordersummary{border-bottom:1px solid #dee2e6;font-size:1em}table.infotable tr th{font-weight:700}table.infotable tr td a{color:#0d6efd;text-decoration:underline}table.infotable tr td a:hover{text-decoration:none}table.infotable .modifierRow,table.infotable .right,table.infotable .threeColHeader{text-align:right}table.infotable .center{text-align:center}table.infotable .left,table.infotable th{text-align:left}
h1.title{border-bottom:1px solid #dee2e6;display:block;line-height:1.5em;text-align:right;text-transform:uppercase}.warningMessage{background-color:#fff3cd;border-color:transparent;border:var(--bs-border-width) solid #ffeeba;border-radius:var(--bs-border-radius);color:#856404;margin-bottom:1rem;padding:1rem;position:relative}#Content{margin:auto;padding-left:20px;text-align:left}#Content .emailTitle{font-size:2.5rem;font-weight:400}#Content .PageTitle,#Content .emailTitle{font-family:Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}#Content .PageTitle{color:#212529;font-size:14px;padding:5px}#Content .footer td{padding:10px}#Content .footer td.right{text-align:right}#Content .typography{padding:0 10px}#Content .typography a{font-size:1em;text-decoration:underline}#Content .typography a:hover{text-decoration:none}#Content .typography ul{padding:2px 15px}#Content .typography ul li{padding:2px 5px}#Content .typography p{color:#212529;margin:.75em 0}table#SenderTable .meta,table#SenderTable .sender{width:50%}table#MetaTable{margin-left:auto}table#MetaTable .label{font-weight:700}#ShippingTable td,#ShippingTable th{width:50%}table.infotable{background:#fff;border:1px solid #dee2e6;border-collapse:collapse;margin-top:10px;width:100%}table.infotable td.product.title{color:#0d6efd;font-family:Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1.75rem;font-weight:400}table.infotable tr td,table.infotable tr th{border:1px solid #dee2e6;color:#212529;padding:5px}table.infotable td{vertical-align:middle}table.infotable tr.summary{font-weight:700}table.infotable td.ordersummary{border-bottom:1px solid #dee2e6;font-size:1em}table.infotable tr th{font-weight:700}table.infotable tr td a{color:#0d6efd;text-decoration:underline}table.infotable tr td a:hover{text-decoration:none}table.infotable .modifierRow,table.infotable .right,table.infotable .threeColHeader{text-align:right}table.infotable .center{text-align:center}table.infotable .left,table.infotable th{text-align:left}

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 KiB

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 KiB

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 KiB

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 KiB

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 KiB

After

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 KiB

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 KiB

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 81 KiB

View File

@ -1,15 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="mstile-70x70.png"/>
<square150x150logo src="mstile-150x150.png"/>
<wide310x150logo src="mstile-310x150.png"/>
<square310x310logo src="mstile-310x310.png"/>
<TileColor>#fff</TileColor>
</tile>
</msapplication>
</browserconfig>
<msapplication>
<tile>
<square70x70logo src="mstile-70x70.png"/>
<square150x150logo src="mstile-150x150.png"/>
<wide310x150logo src="mstile-310x150.png"/>
<square310x310logo src="mstile-310x310.png"/>
<TileColor>#fff</TileColor>
</tile>
</msapplication>
</browserconfig>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 B

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 751 B

After

Width:  |  Height:  |  Size: 954 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -1,14 +0,0 @@
{
"version": "2.0.2",
"name": "ss-webpack-boilerplate",
"description": "Lets you create SilverStripe faster",
"icons": {
"60": "firefox_app_60x60.png",
"128": "firefox_app_128x128.png",
"512": "firefox_app_512x512.png"
},
"developer": {
"name": "Tony Air",
"url": null
}
}

View File

@ -13,47 +13,56 @@
{
"src": "android-chrome-36x36.png",
"sizes": "36x36",
"type": "image/png"
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-48x48.png",
"sizes": "48x48",
"type": "image/png"
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-72x72.png",
"sizes": "72x72",
"type": "image/png"
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-96x96.png",
"sizes": "96x96",
"type": "image/png"
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-144x144.png",
"sizes": "144x144",
"type": "image/png"
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-256x256.png",
"sizes": "256x256",
"type": "image/png"
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-384x384.png",
"sizes": "384x384",
"type": "image/png"
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
"type": "image/png",
"purpose": "any"
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -1,5 +1,5 @@
{
"version": "2.0.2",
"version": "5.0.0",
"api_version": 1,
"layout": {
"logo": "yandex-browser-50x50.png",

File diff suppressed because one or more lines are too long

15
app/client/dist/js/app.js.LICENSE.txt vendored Normal file
View File

@ -0,0 +1,15 @@
/*!
* Get all of an element's parent elements up the DOM tree
* (c) 2019 Chris Ferdinandi, MIT License, https://gomakethings.com
* @param {Node} elem The element
* @param {String} selector Selector to match against [optional]
* @return {Array} The parent elements
*/
/*!
* Glide.js v3.6.0
* (c) 2013-2022 Jędrzej Chałubek (https://github.com/jedrzejchalubek/)
* Released under the MIT License.
*/
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */

View File

@ -1 +1,2 @@
!function(){"use strict";var e="ajax-load",t="load-ready",r="map-loaded",o="map-api-loaded",s="map-marker-click",n="map-popup-close",i=function extendStatics(e,t){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)};function __extends(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function __(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)}var a=function __assign(){return(a=Object.assign||function __assign(e){for(var t,r=1,o=arguments.length;r<o;r++)for(var s in t=arguments[r])Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e}).apply(this,arguments)};var l=function OverlayViewSafe(){!function extend(e,t){for(var r in t.prototype)e.prototype[r]=t.prototype[r]}(OverlayViewSafe,google.maps.OverlayView)};function toCssText(e){return Object.keys(e).reduce((function(t,r){return e[r]&&t.push(r+":"+e[r]),t}),[]).join(";")}function coercePixels(e){return e?e+"px":void 0}var u=function(e){function ClusterIcon(t,r){var o=e.call(this)||this;return o.cluster_=t,o.styles_=r,o.center_=null,o.div_=null,o.sums_=null,o.visible_=!1,o.style=null,o.setMap(t.getMap()),o}return __extends(ClusterIcon,e),ClusterIcon.prototype.onAdd=function(){var e,t,r=this,o=this.cluster_.getMarkerClusterer(),s=google.maps.version.split("."),n=s[0],i=s[1],a=100*parseInt(n,10)+parseInt(i,10);this.div_=document.createElement("div"),this.visible_&&this.show(),this.getPanes().overlayMouseTarget.appendChild(this.div_),this.boundsChangedListener_=google.maps.event.addListener(this.getMap(),"bounds_changed",(function(){t=e})),google.maps.event.addDomListener(this.div_,"mousedown",(function(){e=!0,t=!1})),google.maps.event.addDomListener(this.div_,"contextmenu",(function(){google.maps.event.trigger(o,"contextmenu",r.cluster_)})),a>=332&&google.maps.event.addDomListener(this.div_,"touchstart",(function(e){e.stopPropagation()})),google.maps.event.addDomListener(this.div_,"click",(function(s){if(e=!1,!t){if(google.maps.event.trigger(o,"click",r.cluster_),google.maps.event.trigger(o,"clusterclick",r.cluster_),o.getZoomOnClick()){var n=o.getMaxZoom(),i=r.cluster_.getBounds();o.getMap().fitBounds(i),setTimeout((function(){o.getMap().fitBounds(i),null!==n&&o.getMap().getZoom()>n&&o.getMap().setZoom(n+1)}),100)}s.cancelBubble=!0,s.stopPropagation&&s.stopPropagation()}})),google.maps.event.addDomListener(this.div_,"mouseover",(function(){google.maps.event.trigger(o,"mouseover",r.cluster_)})),google.maps.event.addDomListener(this.div_,"mouseout",(function(){google.maps.event.trigger(o,"mouseout",r.cluster_)}))},ClusterIcon.prototype.onRemove=function(){this.div_&&this.div_.parentNode&&(this.hide(),google.maps.event.removeListener(this.boundsChangedListener_),google.maps.event.clearInstanceListeners(this.div_),this.div_.parentNode.removeChild(this.div_),this.div_=null)},ClusterIcon.prototype.draw=function(){if(this.visible_){var e=this.getPosFromLatLng_(this.center_);this.div_.style.top=e.y+"px",this.div_.style.left=e.x+"px"}},ClusterIcon.prototype.hide=function(){this.div_&&(this.div_.style.display="none"),this.visible_=!1},ClusterIcon.prototype.show=function(){this.div_&&(this.div_.className=this.className_,this.div_.style.cssText=this.createCss_(this.getPosFromLatLng_(this.center_)),this.div_.innerHTML=(this.style.url?this.getImageElementHtml():"")+this.getLabelDivHtml(),"undefined"===typeof this.sums_.title||""===this.sums_.title?this.div_.title=this.cluster_.getMarkerClusterer().getTitle():this.div_.title=this.sums_.title,this.div_.style.display=""),this.visible_=!0},ClusterIcon.prototype.getLabelDivHtml=function(){return'\n<div aria-label="'+this.cluster_.getMarkerClusterer().ariaLabelFn(this.sums_.text)+'" style="'+toCssText({position:"absolute",top:coercePixels(this.anchorText_[0]),left:coercePixels(this.anchorText_[1]),color:this.style.textColor,"font-size":coercePixels(this.style.textSize),"font-family":this.style.fontFamily,"font-weight":this.style.fontWeight,"font-style":this.style.fontStyle,"text-decoration":this.style.textDecoration,"text-align":"center",width:coercePixels(this.style.width),"line-height":coercePixels(this.style.textLineHeight)})+'" tabindex="0">\n <span aria-hidden="true">'+this.sums_.text+"</span>\n</div>\n"},ClusterIcon.prototype.getImageElementHtml=function(){var e=(this.style.backgroundPosition||"0 0").split(" "),t=parseInt(e[0].replace(/^\s+|\s+$/g,""),10),r=parseInt(e[1].replace(/^\s+|\s+$/g,""),10),o={};if(this.cluster_.getMarkerClusterer().getEnableRetinaIcons())o={width:coercePixels(this.style.width),height:coercePixels(this.style.height)};else{var s=[-1*r,-1*t+this.style.width,-1*r+this.style.height,-1*t];o={clip:"rect("+s[0]+"px, "+s[1]+"px, "+s[2]+"px, "+s[3]+"px)"}}var n=this.sums_.url?{width:"100%",height:"100%"}:{},i=toCssText(a(a({position:"absolute",top:coercePixels(r),left:coercePixels(t)},o),n));return'<img alt="'+this.sums_.text+'" aria-hidden="true" src="'+this.style.url+'" style="'+i+'"/>'},ClusterIcon.prototype.useStyle=function(e){this.sums_=e;var t=Math.max(0,e.index-1);t=Math.min(this.styles_.length-1,t),this.style=this.sums_.url?a(a({},this.styles_[t]),{url:this.sums_.url}):this.styles_[t],this.anchorText_=this.style.anchorText||[0,0],this.anchorIcon_=this.style.anchorIcon||[Math.floor(this.style.height/2),Math.floor(this.style.width/2)],this.className_=this.cluster_.getMarkerClusterer().getClusterClass()+" "+(this.style.className||"cluster-"+t)},ClusterIcon.prototype.setCenter=function(e){this.center_=e},ClusterIcon.prototype.createCss_=function(e){return toCssText({"z-index":""+this.cluster_.getMarkerClusterer().getZIndex(),top:coercePixels(e.y),left:coercePixels(e.x),width:coercePixels(this.style.width),height:coercePixels(this.style.height),cursor:"pointer",position:"absolute","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-o-user-select":"none","user-select":"none"})},ClusterIcon.prototype.getPosFromLatLng_=function(e){var t=this.getProjection().fromLatLngToDivPixel(e);return t.x=Math.floor(t.x-this.anchorIcon_[1]),t.y=Math.floor(t.y-this.anchorIcon_[0]),t},ClusterIcon}(l),c=function(){function Cluster(e){this.markerClusterer_=e,this.map_=this.markerClusterer_.getMap(),this.minClusterSize_=this.markerClusterer_.getMinimumClusterSize(),this.averageCenter_=this.markerClusterer_.getAverageCenter(),this.markers_=[],this.center_=null,this.bounds_=null,this.clusterIcon_=new u(this,this.markerClusterer_.getStyles())}return Cluster.prototype.getSize=function(){return this.markers_.length},Cluster.prototype.getMarkers=function(){return this.markers_},Cluster.prototype.getCenter=function(){return this.center_},Cluster.prototype.getMap=function(){return this.map_},Cluster.prototype.getMarkerClusterer=function(){return this.markerClusterer_},Cluster.prototype.getBounds=function(){for(var e=new google.maps.LatLngBounds(this.center_,this.center_),t=this.getMarkers(),r=0;r<t.length;r++)e.extend(t[r].getPosition());return e},Cluster.prototype.remove=function(){this.clusterIcon_.setMap(null),this.markers_=[],delete this.markers_},Cluster.prototype.addMarker=function(e){if(this.isMarkerAlreadyAdded_(e))return!1;if(this.center_){if(this.averageCenter_){var t=this.markers_.length+1,r=(this.center_.lat()*(t-1)+e.getPosition().lat())/t,o=(this.center_.lng()*(t-1)+e.getPosition().lng())/t;this.center_=new google.maps.LatLng(r,o),this.calculateBounds_()}}else this.center_=e.getPosition(),this.calculateBounds_();e.isAdded=!0,this.markers_.push(e);var s=this.markers_.length,n=this.markerClusterer_.getMaxZoom();if(null!==n&&this.map_.getZoom()>n)e.getMap()!==this.map_&&e.setMap(this.map_);else if(s<this.minClusterSize_)e.getMap()!==this.map_&&e.setMap(this.map_);else if(s===this.minClusterSize_)for(var i=0;i<s;i++)this.markers_[i].setMap(null);else e.setMap(null);return!0},Cluster.prototype.isMarkerInClusterBounds=function(e){return this.bounds_.contains(e.getPosition())},Cluster.prototype.calculateBounds_=function(){var e=new google.maps.LatLngBounds(this.center_,this.center_);this.bounds_=this.markerClusterer_.getExtendedBounds(e)},Cluster.prototype.updateIcon=function(){var e=this.markers_.length,t=this.markerClusterer_.getMaxZoom();if(null!==t&&this.map_.getZoom()>t)this.clusterIcon_.hide();else if(e<this.minClusterSize_)this.clusterIcon_.hide();else{var r=this.markerClusterer_.getStyles().length,o=this.markerClusterer_.getCalculator()(this.markers_,r);this.clusterIcon_.setCenter(this.center_),this.clusterIcon_.useStyle(o),this.clusterIcon_.show()}},Cluster.prototype.isMarkerAlreadyAdded_=function(e){if(this.markers_.indexOf)return-1!==this.markers_.indexOf(e);for(var t=0;t<this.markers_.length;t++)if(e===this.markers_[t])return!0;return!1},Cluster}(),p=function getOption(e,t,r){return void 0!==e[t]?e[t]:r},h=function(e){function MarkerClusterer(t,r,o){void 0===r&&(r=[]),void 0===o&&(o={});var s=e.call(this)||this;return s.options=o,s.markers_=[],s.clusters_=[],s.listeners_=[],s.activeMap_=null,s.ready_=!1,s.ariaLabelFn=s.options.ariaLabelFn||function(){return""},s.zIndex_=s.options.zIndex||Number(google.maps.Marker.MAX_ZINDEX)+1,s.gridSize_=s.options.gridSize||60,s.minClusterSize_=s.options.minimumClusterSize||2,s.maxZoom_=s.options.maxZoom||null,s.styles_=s.options.styles||[],s.title_=s.options.title||"",s.zoomOnClick_=p(s.options,"zoomOnClick",!0),s.averageCenter_=p(s.options,"averageCenter",!1),s.ignoreHidden_=p(s.options,"ignoreHidden",!1),s.enableRetinaIcons_=p(s.options,"enableRetinaIcons",!1),s.imagePath_=s.options.imagePath||MarkerClusterer.IMAGE_PATH,s.imageExtension_=s.options.imageExtension||MarkerClusterer.IMAGE_EXTENSION,s.imageSizes_=s.options.imageSizes||MarkerClusterer.IMAGE_SIZES,s.calculator_=s.options.calculator||MarkerClusterer.CALCULATOR,s.batchSize_=s.options.batchSize||MarkerClusterer.BATCH_SIZE,s.batchSizeIE_=s.options.batchSizeIE||MarkerClusterer.BATCH_SIZE_IE,s.clusterClass_=s.options.clusterClass||"cluster",-1!==navigator.userAgent.toLowerCase().indexOf("msie")&&(s.batchSize_=s.batchSizeIE_),s.setupStyles_(),s.addMarkers(r,!0),s.setMap(t),s}return __extends(MarkerClusterer,e),MarkerClusterer.prototype.onAdd=function(){var e=this;this.activeMap_=this.getMap(),this.ready_=!0,this.repaint(),this.prevZoom_=this.getMap().getZoom(),this.listeners_=[google.maps.event.addListener(this.getMap(),"zoom_changed",(function(){var t=e.getMap(),r=t.minZoom||0,o=Math.min(t.maxZoom||100,t.mapTypes[t.getMapTypeId()].maxZoom),s=Math.min(Math.max(e.getMap().getZoom(),r),o);e.prevZoom_!=s&&(e.prevZoom_=s,e.resetViewport_(!1))})),google.maps.event.addListener(this.getMap(),"idle",(function(){e.redraw_()}))]},MarkerClusterer.prototype.onRemove=function(){for(var e=0;e<this.markers_.length;e++)this.markers_[e].getMap()!==this.activeMap_&&this.markers_[e].setMap(this.activeMap_);for(e=0;e<this.clusters_.length;e++)this.clusters_[e].remove();this.clusters_=[];for(e=0;e<this.listeners_.length;e++)google.maps.event.removeListener(this.listeners_[e]);this.listeners_=[],this.activeMap_=null,this.ready_=!1},MarkerClusterer.prototype.draw=function(){},MarkerClusterer.prototype.setupStyles_=function(){if(!(this.styles_.length>0))for(var e=0;e<this.imageSizes_.length;e++){var t=this.imageSizes_[e];this.styles_.push(MarkerClusterer.withDefaultStyle({url:this.imagePath_+(e+1)+"."+this.imageExtension_,height:t,width:t}))}},MarkerClusterer.prototype.fitMapToMarkers=function(e){for(var t=this.getMarkers(),r=new google.maps.LatLngBounds,o=0;o<t.length;o++)!t[o].getVisible()&&this.getIgnoreHidden()||r.extend(t[o].getPosition());this.getMap().fitBounds(r,e)},MarkerClusterer.prototype.getGridSize=function(){return this.gridSize_},MarkerClusterer.prototype.setGridSize=function(e){this.gridSize_=e},MarkerClusterer.prototype.getMinimumClusterSize=function(){return this.minClusterSize_},MarkerClusterer.prototype.setMinimumClusterSize=function(e){this.minClusterSize_=e},MarkerClusterer.prototype.getMaxZoom=function(){return this.maxZoom_},MarkerClusterer.prototype.setMaxZoom=function(e){this.maxZoom_=e},MarkerClusterer.prototype.getZIndex=function(){return this.zIndex_},MarkerClusterer.prototype.setZIndex=function(e){this.zIndex_=e},MarkerClusterer.prototype.getStyles=function(){return this.styles_},MarkerClusterer.prototype.setStyles=function(e){this.styles_=e},MarkerClusterer.prototype.getTitle=function(){return this.title_},MarkerClusterer.prototype.setTitle=function(e){this.title_=e},MarkerClusterer.prototype.getZoomOnClick=function(){return this.zoomOnClick_},MarkerClusterer.prototype.setZoomOnClick=function(e){this.zoomOnClick_=e},MarkerClusterer.prototype.getAverageCenter=function(){return this.averageCenter_},MarkerClusterer.prototype.setAverageCenter=function(e){this.averageCenter_=e},MarkerClusterer.prototype.getIgnoreHidden=function(){return this.ignoreHidden_},MarkerClusterer.prototype.setIgnoreHidden=function(e){this.ignoreHidden_=e},MarkerClusterer.prototype.getEnableRetinaIcons=function(){return this.enableRetinaIcons_},MarkerClusterer.prototype.setEnableRetinaIcons=function(e){this.enableRetinaIcons_=e},MarkerClusterer.prototype.getImageExtension=function(){return this.imageExtension_},MarkerClusterer.prototype.setImageExtension=function(e){this.imageExtension_=e},MarkerClusterer.prototype.getImagePath=function(){return this.imagePath_},MarkerClusterer.prototype.setImagePath=function(e){this.imagePath_=e},MarkerClusterer.prototype.getImageSizes=function(){return this.imageSizes_},MarkerClusterer.prototype.setImageSizes=function(e){this.imageSizes_=e},MarkerClusterer.prototype.getCalculator=function(){return this.calculator_},MarkerClusterer.prototype.setCalculator=function(e){this.calculator_=e},MarkerClusterer.prototype.getBatchSizeIE=function(){return this.batchSizeIE_},MarkerClusterer.prototype.setBatchSizeIE=function(e){this.batchSizeIE_=e},MarkerClusterer.prototype.getClusterClass=function(){return this.clusterClass_},MarkerClusterer.prototype.setClusterClass=function(e){this.clusterClass_=e},MarkerClusterer.prototype.getMarkers=function(){return this.markers_},MarkerClusterer.prototype.getTotalMarkers=function(){return this.markers_.length},MarkerClusterer.prototype.getClusters=function(){return this.clusters_},MarkerClusterer.prototype.getTotalClusters=function(){return this.clusters_.length},MarkerClusterer.prototype.addMarker=function(e,t){this.pushMarkerTo_(e),t||this.redraw_()},MarkerClusterer.prototype.addMarkers=function(e,t){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&this.pushMarkerTo_(e[r]);t||this.redraw_()},MarkerClusterer.prototype.pushMarkerTo_=function(e){var t=this;e.getDraggable()&&google.maps.event.addListener(e,"dragend",(function(){t.ready_&&(e.isAdded=!1,t.repaint())})),e.isAdded=!1,this.markers_.push(e)},MarkerClusterer.prototype.removeMarker=function(e,t){var r=this.removeMarker_(e);return!t&&r&&this.repaint(),r},MarkerClusterer.prototype.removeMarkers=function(e,t){for(var r=!1,o=0;o<e.length;o++){var s=this.removeMarker_(e[o]);r=r||s}return!t&&r&&this.repaint(),r},MarkerClusterer.prototype.removeMarker_=function(e){var t=-1;if(this.markers_.indexOf)t=this.markers_.indexOf(e);else for(var r=0;r<this.markers_.length;r++)if(e===this.markers_[r]){t=r;break}return-1!==t&&(e.setMap(null),this.markers_.splice(t,1),!0)},MarkerClusterer.prototype.clearMarkers=function(){this.resetViewport_(!0),this.markers_=[]},MarkerClusterer.prototype.repaint=function(){var e=this.clusters_.slice();this.clusters_=[],this.resetViewport_(!1),this.redraw_(),setTimeout((function(){for(var t=0;t<e.length;t++)e[t].remove()}),0)},MarkerClusterer.prototype.getExtendedBounds=function(e){var t=this.getProjection(),r=new google.maps.LatLng(e.getNorthEast().lat(),e.getNorthEast().lng()),o=new google.maps.LatLng(e.getSouthWest().lat(),e.getSouthWest().lng()),s=t.fromLatLngToDivPixel(r);s.x+=this.gridSize_,s.y-=this.gridSize_;var n=t.fromLatLngToDivPixel(o);n.x-=this.gridSize_,n.y+=this.gridSize_;var i=t.fromDivPixelToLatLng(s),a=t.fromDivPixelToLatLng(n);return e.extend(i),e.extend(a),e},MarkerClusterer.prototype.redraw_=function(){this.createClusters_(0)},MarkerClusterer.prototype.resetViewport_=function(e){for(var t=0;t<this.clusters_.length;t++)this.clusters_[t].remove();this.clusters_=[];for(t=0;t<this.markers_.length;t++){var r=this.markers_[t];r.isAdded=!1,e&&r.setMap(null)}},MarkerClusterer.prototype.distanceBetweenPoints_=function(e,t){var r=(t.lat()-e.lat())*Math.PI/180,o=(t.lng()-e.lng())*Math.PI/180,s=Math.sin(r/2)*Math.sin(r/2)+Math.cos(e.lat()*Math.PI/180)*Math.cos(t.lat()*Math.PI/180)*Math.sin(o/2)*Math.sin(o/2);return 6371*(2*Math.atan2(Math.sqrt(s),Math.sqrt(1-s)))},MarkerClusterer.prototype.isMarkerInBounds_=function(e,t){return t.contains(e.getPosition())},MarkerClusterer.prototype.addToClosestCluster_=function(e){for(var t=4e4,r=null,o=0;o<this.clusters_.length;o++){var s,n=(s=this.clusters_[o]).getCenter();if(n){var i=this.distanceBetweenPoints_(n,e.getPosition());i<t&&(t=i,r=s)}}r&&r.isMarkerInClusterBounds(e)?r.addMarker(e):((s=new c(this)).addMarker(e),this.clusters_.push(s))},MarkerClusterer.prototype.createClusters_=function(e){var t=this;if(this.ready_){var r;0===e&&(google.maps.event.trigger(this,"clusteringbegin",this),"undefined"!==typeof this.timerRefStatic&&(clearTimeout(this.timerRefStatic),delete this.timerRefStatic)),r=this.getMap().getZoom()>3?new google.maps.LatLngBounds(this.getMap().getBounds().getSouthWest(),this.getMap().getBounds().getNorthEast()):new google.maps.LatLngBounds(new google.maps.LatLng(85.02070771743472,-178.48388434375),new google.maps.LatLng(-85.08136444384544,178.00048865625));for(var o=this.getExtendedBounds(r),s=Math.min(e+this.batchSize_,this.markers_.length),n=e;n<s;n++){var i=this.markers_[n];!i.isAdded&&this.isMarkerInBounds_(i,o)&&(!this.ignoreHidden_||this.ignoreHidden_&&i.getVisible())&&this.addToClosestCluster_(i)}if(s<this.markers_.length)this.timerRefStatic=window.setTimeout((function(){t.createClusters_(s)}),0);else{delete this.timerRefStatic,google.maps.event.trigger(this,"clusteringend",this);for(n=0;n<this.clusters_.length;n++)this.clusters_[n].updateIcon()}}},MarkerClusterer.CALCULATOR=function(e,t){for(var r=0,o=e.length,s=o;0!==s;)s=Math.floor(s/10),r++;return r=Math.min(r,t),{text:o.toString(),index:r,title:""}},MarkerClusterer.withDefaultStyle=function(e){return a({textColor:"black",textSize:11,textDecoration:"none",textLineHeight:e.height,fontWeight:"bold",fontStyle:"normal",fontFamily:"Arial,sans-serif",backgroundPosition:"0 0"},e)},MarkerClusterer.BATCH_SIZE=2e3,MarkerClusterer.BATCH_SIZE_IE=500,MarkerClusterer.IMAGE_PATH="../images/m",MarkerClusterer.IMAGE_EXTENSION="png",MarkerClusterer.IMAGE_SIZES=[53,56,66,78,90],MarkerClusterer}(l);function _typeof(e){return(_typeof="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function _typeof(e){return typeof e}:function _typeof(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(e,t){return e.__proto__=t,e})(e,t)}function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,o=_getPrototypeOf(e);if(t){var s=_getPrototypeOf(this).constructor;r=Reflect.construct(o,arguments,s)}else r=o.apply(this,arguments);return _possibleConstructorReturn(this,r)}}function _possibleConstructorReturn(e,t){if(t&&("object"===_typeof(t)||"function"===typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(e)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var g={init:function init(){return function(e){!function _inherits(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(GoogleMapsHtmlOverlay,google.maps.OverlayView);var t=_createSuper(GoogleMapsHtmlOverlay);function GoogleMapsHtmlOverlay(e){var r;!function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,GoogleMapsHtmlOverlay);var o=_assertThisInitialized(r=t.call(this));return o.ownerMap=e.map,o.position=e.position,o.html=e.html?e.html:'<div class="mapboxgl-marker"><i class="marker-icon fas fa-map-marker-alt"></i></div>',o.divClass=e.divClass,o.align=e.align,o.isDebugMode=e.debug,o.onClick=e.onClick,o.onMouseOver=e.onMouseOver,o.isBoolean=function(e){return"boolean"===typeof e},o.isNotUndefined=function(e){return"undefined"!==typeof e},o.hasContent=function(e){return e.length>0},o.isString=function(e){return"string"===typeof e},o.isFunction=function(e){return"function"===typeof e},r}return function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),e}(GoogleMapsHtmlOverlay,[{key:"onAdd",value:function onAdd(){var e=this;e.div=document.createElement("div"),e.div.style.position="absolute",e.isNotUndefined(e.divClass)&&e.hasContent(e.divClass)&&(e.div.className=e.divClass),e.isNotUndefined(e.html)&&e.hasContent(e.html)&&e.isString(e.html)&&(e.div.innerHTML=e.html),e.isBoolean(e.isDebugMode)&&e.isDebugMode&&(e.div.className="debug-mode",e.div.innerHTML='<div style="height: 10px; width: 10px; background: red; border-radius: 100%;"></div><div style="position: absolute; top: 5px; padding: 5px; width: 130px; text-align: center; font-size: 18px; text-transform: uppercase; font-weight: bolder; background: red; color: white; font-family: Arial;">Debug mode</div>',e.div.setAttribute("style","position: absolute;border: 5px dashed red;height: 150px;width: 150px;display: flex;justify-content: center;align-items: center;")),e.getPanes().overlayMouseTarget.appendChild(e.div),google.maps.event.addDomListener(e.div,"click",(function(t){google.maps.event.trigger(e,"click"),e.isFunction(e.onClick)&&e.onClick(),t.stopPropagation()})),google.maps.event.addDomListener(e.div,"mouseover",(function(t){google.maps.event.trigger(e,"mouseover"),e.isFunction(e.onMouseOver)&&e.onMouseOver(),t.stopPropagation()}))}},{key:"draw",value:function draw(){var e=this,t=document.querySelector(".popup");t.length||(t=e.div);var r=e.getProjection();if(!r)return console.log("GoogleMapsHtmlOverlay: current map is missing"),null;var o=r.fromLatLngToDivPixel(e.getPosition()),s={y:void 0,x:void 0},n=t.offsetWidth,i=t.offsetHeight;switch(Array.isArray(e.align)?e.align.join(" "):""){case"left top":s.y=i,s.x=n;break;case"left center":s.y=i/2,s.x=n;break;case"left bottom":s.y=0,s.x=n;break;case"center top":s.y=i,s.x=n/2;break;case"center center":s.y=i/2,s.x=n/2;break;case"center bottom":s.y=0,s.x=n/2;break;case"right top":s.y=i,s.x=0;break;case"right center":s.y=i/2,s.x=0;break;case"right bottom":s.y=0,s.x=0;break;default:s.y=i/2,s.x=n/2}e.div.style.top="".concat(o.y-s.y,"px"),e.div.style.left="".concat(o.x-s.x,"px")}},{key:"getPosition",value:function getPosition(){return new google.maps.LatLng(this.position)}},{key:"getDiv",value:function getDiv(){return this.div}},{key:"setPosition",value:function setPosition(e,t){var r=this;r.position=e,r.align=t,r.draw()}},{key:"remove",value:function remove(){this.setMap(null),this.div.remove()}},{key:"getDraggable",value:function getDraggable(){return!1}}]),GoogleMapsHtmlOverlay}()}};function map_google_defineProperties(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var d={ENVS:["xs","sm","md","lg","xl","xxl","xxxl"],MAP_DRIVER:function(e){return function(){function GoogleMapsDriver(){!function map_google_classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,GoogleMapsDriver)}return function map_google_createClass(e,t,r){return t&&map_google_defineProperties(e.prototype,t),r&&map_google_defineProperties(e,r),e}(GoogleMapsDriver,[{key:"getName",value:function getName(){return"GoogleMapsDriver"}},{key:"init",value:function init(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=this;o.el=t,o.config=r,o.markers=[],e["init".concat(o.getName())]=function(){o.googleApiLoaded()};var s=document.createElement("script");s.src="https://maps.googleapis.com/maps/api/js?key=".concat(r.key,"&callback=init").concat(o.getName()),s.async=!0,s.defer=!0,document.head.appendChild(s)}},{key:"googleApiLoaded",value:function googleApiLoaded(){var e=this,t=e.el,r=e.config,s=t.querySelector(".mapAPI-map"),n=r.mapZoom&&"0"!==r.mapZoom?parseInt(r.mapZoom):10,i=r.center&&","!==r.center?{lat:r.center[1],lng:r.center[0]}:{lat:0,lng:0},a=r.style?r.style:null;console.log("".concat(e.getName(),": API is loaded")),e.MarkerUI=g.init(),e.map=new google.maps.Map(s,{zoom:n,center:i,fullscreenControl:!0,styles:a}),e.default_zoom=n,s.classList.add("mapboxgl-map"),e.popup=new e.MarkerUI({map:e.map,align:["center","top"],divClass:"mapboxgl-popup popup mapboxgl-popup-anchor-bottom d-none",html:'<div class="mapboxgl-popup-tip"></div><div class="mapboxgl-popup-content"><div class="mapboxgl-popup-close-button" type="button" aria-label="Close popup">\xd7</div><div class="html"></div></div>'}),e.popup.setMap(e.map),e.geocoder=new google.maps.Geocoder,e.cluster=new h(e.map,null,{styles:[{width:30,height:30,className:"mapboxgl-cluster"}]}),t.dispatchEvent(new Event(o))}},{key:"addMarker",value:function addMarker(e,t){var r=this,o={lat:e[1],lng:e[0]},n=new r.MarkerUI({position:o,map:r.map,align:["center","top"],html:'<div class="mapboxgl-marker"><div id="Marker'.concat(t.id,'" data-id="').concat(t.id,'" class="marker">').concat(t.icon,"</div></div>"),onClick:function onClick(){var e=document.querySelector("#Marker".concat(t.id));r.showPopup(o,t.content),e.dispatchEvent(new Event(s))}});return r.markers.push(n),r.cluster.addMarker(n),n}},{key:"showPopup",value:function showPopup(e,t){var r=this,o=r.popup.getDiv();r.config.flyToMarker&&(r.map.setCenter(e),r.config.noZoom||r.map.setZoom(18)),o.style.opacity="0",o.classList.remove("d-none"),o.querySelector(".mapboxgl-popup-content .html").innerHTML=t,o.querySelector(".mapboxgl-popup-close-button").addEventListener("click",(function(e){e.preventDefault(),r.hidePopup()})),r.popup.setPosition(e,["center","top"]),o.style.opacity="1",o.style["margin-top"]="-1rem"}},{key:"hidePopup",value:function hidePopup(){var e=this;e.popup.getDiv().classList.add("d-none"),e.config.noRestoreBounds&&!e.config.flyToBounds||e.restoreBounds(),e.el.dispatchEvent(new Event(n))}},{key:"geocode",value:function geocode(e,t){var r=this;r.geocoder.geocode({address:e},(function(e,o){if("OK"===o)return"function"===typeof t&&t(e),e;console.error("".concat(r.getName(),": Geocode was not successful for the following reason: ").concat(o))}))}},{key:"reverseGeocode",value:function reverseGeocode(e,t){var r=this;r.geocoder.geocode({location:latlng},(function(e,o){if("OK"===o)return"function"===typeof t&&t(e),e;console.error("".concat(r.getName(),": Reverse Geocoding was not successful for the following reason: ").concat(o))}))}},{key:"addGeoJson",value:function addGeoJson(e){var t=this,r=JSON.parse(e.geojson),o=(r.features[0].geometry.coordinates,new google.maps.LatLngBounds);r.features.forEach((function(r){var s=r.id,n=r.geometry.coordinates,i=r.properties.content;t.addMarker(n,{id:s,content:i,icon:r.icon,flyToMarker:e.flyToMarker}),o.extend({lat:n[1],lng:n[0]})})),t.markers.length>1?t.map.fitBounds(o,{padding:30}):t.markers[0]&&t.map.setCenter(t.markers[0].getPosition()),t.default_bounds=o,t.default_zoom=t.map.getZoom()}},{key:"getMap",value:function getMap(){return this.map}},{key:"getPopup",value:function getPopup(){return this.popup}},{key:"restoreBounds",value:function restoreBounds(){var e=this;e.default_bounds&&e.markers.length>1?e.map.fitBounds(e.default_bounds,{padding:30}):(e.markers[0]&&e.map.setCenter(e.markers[0].getPosition()),e.restoreZoom())}},{key:"restoreZoom",value:function restoreZoom(){this.map.setZoom(this.default_zoom)}}]),GoogleMapsDriver}()}(window)};function map_api_defineProperties(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}!function(s){var n="js-mapapi",i=d.MAP_DRIVER,a=function(){function MapAPI(e){!function map_api_classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,MapAPI);var t=this,r=new i,s=document.querySelector("body"),a=e.dataset;a.center=[a.lng?a.lng:s.dataset["default-lng"],a.lat?a.lat:s.dataset["default-lat"]],a.icon||(a.icon='<i class="fas fa-map-marker-alt"></i>'),console.log("".concat(n,": init ").concat(r.getName(),"...")),t.drv=r,t.el=e,t.config=a,r.init(e,a),e.addEventListener(o,(function(){t.addMarkers()}))}return function map_api_createClass(e,t,r){return t&&map_api_defineProperties(e.prototype,t),r&&map_api_defineProperties(e,r),e}(MapAPI,[{key:"getMap",value:function getMap(){return ui.map}},{key:"dispose",value:function dispose(){this.el=null,this.el.classList.remove("".concat(n,"-active"))}},{key:"addMarkers",value:function addMarkers(){console.log("".concat(n,": addMarkers"));var e=this,t=e.el,o=e.drv,s=e.config;if(e.map=o.getMap(),s.geojson)console.log("".concat(n,": setting up geocode data")),o.addGeoJson(s);else if(s.address)console.log(s.address),console.log("".concat(n,": setting up address marker")),o.geocode(s.address,(function(t){console.log(t);var r=t[0].geometry.location.lat(),i=t[0].geometry.location.lng();console.log("".concat(n,": setting up single lat/lng marker lat: ").concat(r," lng: ").concat(i)),o.addMarker([i,r],s),e.map.setCenter({lat:r,lng:i})}));else if(s.lat&&s.lng){var i=s.lat,a=s.lng;console.log("".concat(n,": setting up single lat/lng marker lat: ").concat(i," lng: ").concat(a)),o.addMarker([a,i],s)}t.classList.add("".concat(n,"-active")),t.dispatchEvent(new Event(r)),console.log("".concat(n,": Map is loaded"))}}]),MapAPI}(),l=function init(){console.log("".concat(n,": init")),document.querySelectorAll(".".concat(n)).forEach((function(e,t){new a(e)}))};s.addEventListener("".concat(t),l),s.addEventListener("".concat(e),l)}(window)}();
/*! For license information please see app_Site.Controllers.MapElementController.js.LICENSE.txt */
!function(){"use strict";var t={3439:function(t){function _typeof(t){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof(t)}t.exports=function equal(t,r){if(t===r)return!0;if(t&&r&&"object"==_typeof(t)&&"object"==_typeof(r)){if(t.constructor!==r.constructor)return!1;var o,a,i;if(Array.isArray(t)){if((o=t.length)!=r.length)return!1;for(a=o;0!==a--;)if(!equal(t[a],r[a]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if((o=(i=Object.keys(t)).length)!==Object.keys(r).length)return!1;for(a=o;0!==a--;)if(!Object.prototype.hasOwnProperty.call(r,i[a]))return!1;for(a=o;0!==a--;){var l=i[a];if(!equal(t[l],r[l]))return!1}return!0}return t!==t&&r!==r}}},r={};function __webpack_require__(o){var a=r[o];if(void 0!==a)return a.exports;var i=r[o]={exports:{}};return t[o](i,i.exports,__webpack_require__),i.exports}__webpack_require__.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return __webpack_require__.d(r,{a:r}),r},__webpack_require__.d=function(t,r){for(var o in r)__webpack_require__.o(r,o)&&!__webpack_require__.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:r[o]})},__webpack_require__.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},function(){var t="ajax-load",r="load-ready",o="map-loaded",a="map-api-loaded",i="map-marker-click",l="map-popup-close",u=__webpack_require__(3439),c=__webpack_require__.n(u);function _typeof(t){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof(t)}function _slicedToArray(t,r){return function _arrayWithHoles(t){if(Array.isArray(t))return t}(t)||function _iterableToArrayLimit(t,r){var o=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=o){var a,i,l,u,c=[],p=!0,m=!1;try{if(l=(o=o.call(t)).next,0===r){if(Object(o)!==o)return;p=!1}else for(;!(p=(a=l.call(o)).done)&&(c.push(a.value),c.length!==r);p=!0);}catch(t){m=!0,i=t}finally{try{if(!p&&null!=o.return&&(u=o.return(),Object(u)!==u))return}finally{if(m)throw i}}return c}}(t,r)||function _unsupportedIterableToArray(t,r){if(!t)return;if("string"===typeof t)return _arrayLikeToArray(t,r);var o=Object.prototype.toString.call(t).slice(8,-1);"Object"===o&&t.constructor&&(o=t.constructor.name);if("Map"===o||"Set"===o)return Array.from(t);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return _arrayLikeToArray(t,r)}(t,r)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _arrayLikeToArray(t,r){(null==r||r>t.length)&&(r=t.length);for(var o=0,a=new Array(r);o<r;o++)a[o]=t[o];return a}function _defineProperties(t,r){for(var o=0;o<r.length;o++){var a=r[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,_toPropertyKey(a.key),a)}}function _toPropertyKey(t){var r=function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var o=t[Symbol.toPrimitive];if(void 0!==o){var a=o.call(t,r||"default");if("object"!=_typeof(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==_typeof(r)?r:r+""}var p=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],m=function(){function KDBush(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:64,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Float64Array,a=arguments.length>3?arguments[3]:void 0;if(function _classCallCheck(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this,KDBush),isNaN(t)||t<0)throw new Error("Unpexpected numItems value: ".concat(t,"."));this.numItems=+t,this.nodeSize=Math.min(Math.max(+r,2),65535),this.ArrayType=o,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;var i=p.indexOf(this.ArrayType),l=2*t*this.ArrayType.BYTES_PER_ELEMENT,u=t*this.IndexArrayType.BYTES_PER_ELEMENT,c=(8-u%8)%8;if(i<0)throw new Error("Unexpected typed array class: ".concat(o,"."));a&&a instanceof ArrayBuffer?(this.data=a,this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+u+c,2*t),this._pos=2*t,this._finished=!0):(this.data=new ArrayBuffer(8+l+u+c),this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+u+c,2*t),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+i]),new Uint16Array(this.data,2,1)[0]=r,new Uint32Array(this.data,4,1)[0]=t)}return function _createClass(t,r,o){return r&&_defineProperties(t.prototype,r),o&&_defineProperties(t,o),Object.defineProperty(t,"prototype",{writable:!1}),t}(KDBush,[{key:"add",value:function add(t,r){var o=this._pos>>1;return this.ids[o]=o,this.coords[this._pos++]=t,this.coords[this._pos++]=r,o}},{key:"finish",value:function finish(){var t=this._pos>>1;if(t!==this.numItems)throw new Error("Added ".concat(t," items when expected ").concat(this.numItems,"."));return sort(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}},{key:"range",value:function range(t,r,o,a){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");for(var i=this.ids,l=this.coords,u=this.nodeSize,c=[0,i.length-1,0],p=[];c.length;){var m=c.pop()||0,d=c.pop()||0,y=c.pop()||0;if(d-y<=u)for(var h=y;h<=d;h++){var g=l[2*h],v=l[2*h+1];g>=t&&g<=o&&v>=r&&v<=a&&p.push(i[h])}else{var _=y+d>>1,b=l[2*_],k=l[2*_+1];b>=t&&b<=o&&k>=r&&k<=a&&p.push(i[_]),(0===m?t<=b:r<=k)&&(c.push(y),c.push(_-1),c.push(1-m)),(0===m?o>=b:a>=k)&&(c.push(_+1),c.push(d),c.push(1-m))}}return p}},{key:"within",value:function within(t,r,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");for(var a=this.ids,i=this.coords,l=this.nodeSize,u=[0,a.length-1,0],c=[],p=o*o;u.length;){var m=u.pop()||0,d=u.pop()||0,y=u.pop()||0;if(d-y<=l)for(var h=y;h<=d;h++)sqDist(i[2*h],i[2*h+1],t,r)<=p&&c.push(a[h]);else{var g=y+d>>1,v=i[2*g],_=i[2*g+1];sqDist(v,_,t,r)<=p&&c.push(a[g]),(0===m?t-o<=v:r-o<=_)&&(u.push(y),u.push(g-1),u.push(1-m)),(0===m?t+o>=v:r+o>=_)&&(u.push(g+1),u.push(d),u.push(1-m))}}return c}}],[{key:"from",value:function from(t){if(!(t instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");var r=_slicedToArray(new Uint8Array(t,0,2),2),o=r[0],a=r[1];if(219!==o)throw new Error("Data does not appear to be in a KDBush format.");var i=a>>4;if(1!==i)throw new Error("Got v".concat(i," data when expected v").concat(1,"."));var l=p[15&a];if(!l)throw new Error("Unrecognized array type.");var u=_slicedToArray(new Uint16Array(t,2,1),1)[0];return new KDBush(_slicedToArray(new Uint32Array(t,4,1),1)[0],u,l,t)}}])}();function sort(t,r,o,a,i,l){if(!(i-a<=o)){var u=a+i>>1;kdbush_select(t,r,u,a,i,l),sort(t,r,o,a,u-1,1-l),sort(t,r,o,u+1,i,1-l)}}function kdbush_select(t,r,o,a,i,l){for(;i>a;){if(i-a>600){var u=i-a+1,c=o-a+1,p=Math.log(u),m=.5*Math.exp(2*p/3),d=.5*Math.sqrt(p*m*(u-m)/u)*(c-u/2<0?-1:1);kdbush_select(t,r,o,Math.max(a,Math.floor(o-c*m/u+d)),Math.min(i,Math.floor(o+(u-c)*m/u+d)),l)}var y=r[2*o+l],h=a,g=i;for(swapItem(t,r,a,o),r[2*i+l]>y&&swapItem(t,r,a,i);h<g;){for(swapItem(t,r,h,g),h++,g--;r[2*h+l]<y;)h++;for(;r[2*g+l]>y;)g--}r[2*a+l]===y?swapItem(t,r,a,g):swapItem(t,r,++g,i),g<=o&&(a=g+1),o<=g&&(i=g-1)}}function swapItem(t,r,o,a){swap(t,o,a),swap(r,2*o,2*a),swap(r,2*o+1,2*a+1)}function swap(t,r,o){var a=t[r];t[r]=t[o],t[o]=a}function sqDist(t,r,o,a){var i=t-o,l=r-a;return i*i+l*l}function supercluster_typeof(t){return supercluster_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},supercluster_typeof(t)}function _createForOfIteratorHelper(t,r){var o="undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!o){if(Array.isArray(t)||(o=supercluster_unsupportedIterableToArray(t))||r&&t&&"number"===typeof t.length){o&&(t=o);var a=0,i=function F(){};return{s:i,n:function n(){return a>=t.length?{done:!0}:{done:!1,value:t[a++]}},e:function e(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l,u=!0,c=!1;return{s:function s(){o=o.call(t)},n:function n(){var t=o.next();return u=t.done,t},e:function e(t){c=!0,l=t},f:function f(){try{u||null==o.return||o.return()}finally{if(c)throw l}}}}function supercluster_slicedToArray(t,r){return function supercluster_arrayWithHoles(t){if(Array.isArray(t))return t}(t)||function supercluster_iterableToArrayLimit(t,r){var o=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=o){var a,i,l,u,c=[],p=!0,m=!1;try{if(l=(o=o.call(t)).next,0===r){if(Object(o)!==o)return;p=!1}else for(;!(p=(a=l.call(o)).done)&&(c.push(a.value),c.length!==r);p=!0);}catch(t){m=!0,i=t}finally{try{if(!p&&null!=o.return&&(u=o.return(),Object(u)!==u))return}finally{if(m)throw i}}return c}}(t,r)||supercluster_unsupportedIterableToArray(t,r)||function supercluster_nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function supercluster_unsupportedIterableToArray(t,r){if(t){if("string"===typeof t)return supercluster_arrayLikeToArray(t,r);var o=Object.prototype.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?supercluster_arrayLikeToArray(t,r):void 0}}function supercluster_arrayLikeToArray(t,r){(null==r||r>t.length)&&(r=t.length);for(var o=0,a=new Array(r);o<r;o++)a[o]=t[o];return a}function supercluster_defineProperties(t,r){for(var o=0;o<r.length;o++){var a=r[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,supercluster_toPropertyKey(a.key),a)}}function supercluster_toPropertyKey(t){var r=function supercluster_toPrimitive(t,r){if("object"!=supercluster_typeof(t)||!t)return t;var o=t[Symbol.toPrimitive];if(void 0!==o){var a=o.call(t,r||"default");if("object"!=supercluster_typeof(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==supercluster_typeof(r)?r:r+""}var d,y={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function map(t){return t}},h=Math.fround||(d=new Float32Array(1),function(t){return d[0]=+t,d[0]}),g=3,v=5,_=6,b=function(){return function supercluster_createClass(t,r,o){return r&&supercluster_defineProperties(t.prototype,r),o&&supercluster_defineProperties(t,o),Object.defineProperty(t,"prototype",{writable:!1}),t}((function Supercluster(t){!function supercluster_classCallCheck(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this,Supercluster),this.options=Object.assign(Object.create(y),t),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}),[{key:"load",value:function load(t){var r=this.options,o=r.log,a=r.minZoom,i=r.maxZoom;o&&console.time("total time");var l="prepare ".concat(t.length," points");o&&console.time(l),this.points=t;for(var u=[],c=0;c<t.length;c++){var p=t[c];if(p.geometry){var m=supercluster_slicedToArray(p.geometry.coordinates,2),d=m[0],y=m[1],g=h(lngX(d)),v=h(latY(y));u.push(g,v,1/0,c,-1,1),this.options.reduce&&u.push(0)}}var _=this.trees[i+1]=this._createTree(u);o&&console.timeEnd(l);for(var b=i;b>=a;b--){var k=+Date.now();_=this.trees[b]=this._createTree(this._cluster(_,b)),o&&console.log("z%d: %d clusters in %dms",b,_.numItems,+Date.now()-k)}return o&&console.timeEnd("total time"),this}},{key:"getClusters",value:function getClusters(t,r){var o=((t[0]+180)%360+360)%360-180,a=Math.max(-90,Math.min(90,t[1])),i=180===t[2]?180:((t[2]+180)%360+360)%360-180,l=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)o=-180,i=180;else if(o>i){var u=this.getClusters([o,a,180,l],r),c=this.getClusters([-180,a,i,l],r);return u.concat(c)}var p,m=this.trees[this._limitZoom(r)],d=m.range(lngX(o),latY(l),lngX(i),latY(a)),y=m.data,h=[],_=_createForOfIteratorHelper(d);try{for(_.s();!(p=_.n()).done;){var b=p.value,k=this.stride*b;h.push(y[k+v]>1?getClusterJSON(y,k,this.clusterProps):this.points[y[k+g]])}}catch(w){_.e(w)}finally{_.f()}return h}},{key:"getChildren",value:function getChildren(t){var r=this._getOriginId(t),o=this._getOriginZoom(t),a="No cluster with the specified id.",i=this.trees[o];if(!i)throw new Error(a);var l=i.data;if(r*this.stride>=l.length)throw new Error(a);var u,c=this.options.radius/(this.options.extent*Math.pow(2,o-1)),p=l[r*this.stride],m=l[r*this.stride+1],d=[],y=_createForOfIteratorHelper(i.within(p,m,c));try{for(y.s();!(u=y.n()).done;){var h=u.value*this.stride;l[h+4]===t&&d.push(l[h+v]>1?getClusterJSON(l,h,this.clusterProps):this.points[l[h+g]])}}catch(_){y.e(_)}finally{y.f()}if(0===d.length)throw new Error(a);return d}},{key:"getLeaves",value:function getLeaves(t,r,o){r=r||10,o=o||0;var a=[];return this._appendLeaves(a,t,r,o,0),a}},{key:"getTile",value:function getTile(t,r,o){var a=this.trees[this._limitZoom(t)],i=Math.pow(2,t),l=this.options,u=l.extent,c=l.radius/u,p=(o-c)/i,m=(o+1+c)/i,d={features:[]};return this._addTileFeatures(a.range((r-c)/i,p,(r+1+c)/i,m),a.data,r,o,i,d),0===r&&this._addTileFeatures(a.range(1-c/i,p,1,m),a.data,i,o,i,d),r===i-1&&this._addTileFeatures(a.range(0,p,c/i,m),a.data,-1,o,i,d),d.features.length?d:null}},{key:"getClusterExpansionZoom",value:function getClusterExpansionZoom(t){for(var r=this._getOriginZoom(t)-1;r<=this.options.maxZoom;){var o=this.getChildren(t);if(r++,1!==o.length)break;t=o[0].properties.cluster_id}return r}},{key:"_appendLeaves",value:function _appendLeaves(t,r,o,a,i){var l,u=_createForOfIteratorHelper(this.getChildren(r));try{for(u.s();!(l=u.n()).done;){var c=l.value,p=c.properties;if(p&&p.cluster?i+p.point_count<=a?i+=p.point_count:i=this._appendLeaves(t,p.cluster_id,o,a,i):i<a?i++:t.push(c),t.length===o)break}}catch(m){u.e(m)}finally{u.f()}return i}},{key:"_createTree",value:function _createTree(t){for(var r=new m(t.length/this.stride|0,this.options.nodeSize,Float32Array),o=0;o<t.length;o+=this.stride)r.add(t[o],t[o+1]);return r.finish(),r.data=t,r}},{key:"_addTileFeatures",value:function _addTileFeatures(t,r,o,a,i,l){var u,c=_createForOfIteratorHelper(t);try{for(c.s();!(u=c.n()).done;){var p=u.value*this.stride,m=r[p+v]>1,d=void 0,y=void 0,h=void 0;if(m)d=getClusterProperties(r,p,this.clusterProps),y=r[p],h=r[p+1];else{var _=this.points[r[p+g]];d=_.properties;var b=supercluster_slicedToArray(_.geometry.coordinates,2),k=b[0],w=b[1];y=lngX(k),h=latY(w)}var x={type:1,geometry:[[Math.round(this.options.extent*(y*i-o)),Math.round(this.options.extent*(h*i-a))]],tags:d},P=void 0;void 0!==(P=m||this.options.generateId?r[p+g]:this.points[r[p+g]].id)&&(x.id=P),l.features.push(x)}}catch(C){c.e(C)}finally{c.f()}}},{key:"_limitZoom",value:function _limitZoom(t){return Math.max(this.options.minZoom,Math.min(Math.floor(+t),this.options.maxZoom+1))}},{key:"_cluster",value:function _cluster(t,r){for(var o=this.options,a=o.radius,i=o.extent,l=o.reduce,u=o.minPoints,c=a/(i*Math.pow(2,r)),p=t.data,m=[],d=this.stride,y=0;y<p.length;y+=d)if(!(p[y+2]<=r)){p[y+2]=r;var h,g=p[y],_=p[y+1],b=t.within(p[y],p[y+1],c),k=p[y+v],w=k,x=_createForOfIteratorHelper(b);try{for(x.s();!(h=x.n()).done;){var P=h.value*d;p[P+2]>r&&(w+=p[P+v])}}catch(U){x.e(U)}finally{x.f()}if(w>k&&w>=u){var C,M=g*k,O=_*k,A=void 0,S=-1,E=(y/d<<5)+(r+1)+this.points.length,T=_createForOfIteratorHelper(b);try{for(T.s();!(C=T.n()).done;){var j=C.value*d;if(!(p[j+2]<=r)){p[j+2]=r;var I=p[j+v];M+=p[j]*I,O+=p[j+1]*I,p[j+4]=E,l&&(A||(A=this._map(p,y,!0),S=this.clusterProps.length,this.clusterProps.push(A)),l(A,this._map(p,j)))}}}catch(U){T.e(U)}finally{T.f()}p[y+4]=E,m.push(M/w,O/w,1/0,E,-1,w),l&&m.push(S)}else{for(var L=0;L<d;L++)m.push(p[y+L]);if(w>1){var N,Z=_createForOfIteratorHelper(b);try{for(Z.s();!(N=Z.n()).done;){var D=N.value*d;if(!(p[D+2]<=r)){p[D+2]=r;for(var R=0;R<d;R++)m.push(p[D+R])}}}catch(U){Z.e(U)}finally{Z.f()}}}}return m}},{key:"_getOriginId",value:function _getOriginId(t){return t-this.points.length>>5}},{key:"_getOriginZoom",value:function _getOriginZoom(t){return(t-this.points.length)%32}},{key:"_map",value:function _map(t,r,o){if(t[r+v]>1){var a=this.clusterProps[t[r+_]];return o?Object.assign({},a):a}var i=this.points[t[r+g]].properties,l=this.options.map(i);return o&&l===i?Object.assign({},l):l}}])}();function getClusterJSON(t,r,o){return{type:"Feature",id:t[r+g],properties:getClusterProperties(t,r,o),geometry:{type:"Point",coordinates:[(l=t[r],360*(l-.5)),(a=t[r+1],i=(180-360*a)*Math.PI/180,360*Math.atan(Math.exp(i))/Math.PI-90)]}};var a,i,l}function getClusterProperties(t,r,o){var a=t[r+v],i=a>=1e4?"".concat(Math.round(a/1e3),"k"):a>=1e3?"".concat(Math.round(a/100)/10,"k"):a,l=t[r+_],u=-1===l?{}:Object.assign({},o[l]);return Object.assign(u,{cluster:!0,cluster_id:t[r+g],point_count:a,point_count_abbreviated:i})}function lngX(t){return t/360+.5}function latY(t){var r=Math.sin(t*Math.PI/180),o=.5-.25*Math.log((1+r)/(1-r))/Math.PI;return o<0?0:o>1?1:o}function index_esm_slicedToArray(t,r){return function index_esm_arrayWithHoles(t){if(Array.isArray(t))return t}(t)||function index_esm_iterableToArrayLimit(t,r){var o=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=o){var a,i,l,u,c=[],p=!0,m=!1;try{if(l=(o=o.call(t)).next,0===r){if(Object(o)!==o)return;p=!1}else for(;!(p=(a=l.call(o)).done)&&(c.push(a.value),c.length!==r);p=!0);}catch(t){m=!0,i=t}finally{try{if(!p&&null!=o.return&&(u=o.return(),Object(u)!==u))return}finally{if(m)throw i}}return c}}(t,r)||index_esm_unsupportedIterableToArray(t,r)||function index_esm_nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _toConsumableArray(t){return function _arrayWithoutHoles(t){if(Array.isArray(t))return index_esm_arrayLikeToArray(t)}(t)||function _iterableToArray(t){if("undefined"!==typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||index_esm_unsupportedIterableToArray(t)||function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _callSuper(t,r,o){return r=_getPrototypeOf(r),function _possibleConstructorReturn(t,r){if(r&&("object"===index_esm_typeof(r)||"function"===typeof r))return r;if(void 0!==r)throw new TypeError("Derived constructors may only return object or undefined");return function _assertThisInitialized(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,_isNativeReflectConstruct()?Reflect.construct(r,o||[],_getPrototypeOf(t).constructor):r.apply(t,o))}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}function _inherits(t,r){if("function"!==typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&_setPrototypeOf(t,r)}function _setPrototypeOf(t,r){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(t,r){return t.__proto__=r,t},_setPrototypeOf(t,r)}function index_esm_createForOfIteratorHelper(t,r){var o="undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!o){if(Array.isArray(t)||(o=index_esm_unsupportedIterableToArray(t))||r&&t&&"number"===typeof t.length){o&&(t=o);var a=0,i=function F(){};return{s:i,n:function n(){return a>=t.length?{done:!0}:{done:!1,value:t[a++]}},e:function e(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l,u=!0,c=!1;return{s:function s(){o=o.call(t)},n:function n(){var t=o.next();return u=t.done,t},e:function e(t){c=!0,l=t},f:function f(){try{u||null==o.return||o.return()}finally{if(c)throw l}}}}function index_esm_unsupportedIterableToArray(t,r){if(t){if("string"===typeof t)return index_esm_arrayLikeToArray(t,r);var o=Object.prototype.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?index_esm_arrayLikeToArray(t,r):void 0}}function index_esm_arrayLikeToArray(t,r){(null==r||r>t.length)&&(r=t.length);for(var o=0,a=new Array(r);o<r;o++)a[o]=t[o];return a}function index_esm_typeof(t){return index_esm_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},index_esm_typeof(t)}function index_esm_classCallCheck(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function index_esm_defineProperties(t,r){for(var o=0;o<r.length;o++){var a=r[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,index_esm_toPropertyKey(a.key),a)}}function index_esm_createClass(t,r,o){return r&&index_esm_defineProperties(t.prototype,r),o&&index_esm_defineProperties(t,o),Object.defineProperty(t,"prototype",{writable:!1}),t}function index_esm_toPropertyKey(t){var r=function index_esm_toPrimitive(t,r){if("object"!=index_esm_typeof(t)||!t)return t;var o=t[Symbol.toPrimitive];if(void 0!==o){var a=o.call(t,r||"default");if("object"!=index_esm_typeof(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==index_esm_typeof(r)?r:r+""}function __rest(t,r){var o={};for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&r.indexOf(a)<0&&(o[a]=t[a]);if(null!=t&&"function"===typeof Object.getOwnPropertySymbols){var i=0;for(a=Object.getOwnPropertySymbols(t);i<a.length;i++)r.indexOf(a[i])<0&&Object.prototype.propertyIsEnumerable.call(t,a[i])&&(o[a[i]]=t[a[i]])}return o}var k=function(){return index_esm_createClass((function MarkerUtils(){index_esm_classCallCheck(this,MarkerUtils)}),null,[{key:"isAdvancedMarkerAvailable",value:function isAdvancedMarkerAvailable(t){return google.maps.marker&&!0===t.getMapCapabilities().isAdvancedMarkersAvailable}},{key:"isAdvancedMarker",value:function isAdvancedMarker(t){return google.maps.marker&&t instanceof google.maps.marker.AdvancedMarkerElement}},{key:"setMap",value:function setMap(t,r){this.isAdvancedMarker(t)?t.map=r:t.setMap(r)}},{key:"getPosition",value:function getPosition(t){if(this.isAdvancedMarker(t)){if(t.position){if(t.position instanceof google.maps.LatLng)return t.position;if(t.position.lat&&t.position.lng)return new google.maps.LatLng(t.position.lat,t.position.lng)}return new google.maps.LatLng(null)}return t.getPosition()}},{key:"getVisible",value:function getVisible(t){return!!this.isAdvancedMarker(t)||t.getVisible()}}])}(),w=function(){return index_esm_createClass((function Cluster(t){var r=t.markers,o=t.position;index_esm_classCallCheck(this,Cluster),this.markers=r,o&&(o instanceof google.maps.LatLng?this._position=o:this._position=new google.maps.LatLng(o))}),[{key:"bounds",get:function get(){if(0!==this.markers.length||this._position){var t,r=new google.maps.LatLngBounds(this._position,this._position),o=index_esm_createForOfIteratorHelper(this.markers);try{for(o.s();!(t=o.n()).done;){var a=t.value;r.extend(k.getPosition(a))}}catch(i){o.e(i)}finally{o.f()}return r}}},{key:"position",get:function get(){return this._position||this.bounds.getCenter()}},{key:"count",get:function get(){return this.markers.filter((function(t){return k.getVisible(t)})).length}},{key:"push",value:function push(t){this.markers.push(t)}},{key:"delete",value:function _delete(){this.marker&&(k.setMap(this.marker,null),this.marker=void 0),this.markers.length=0}}])}(),x=function(){return index_esm_createClass((function AbstractAlgorithm(t){var r=t.maxZoom,o=void 0===r?16:r;index_esm_classCallCheck(this,AbstractAlgorithm),this.maxZoom=o}),[{key:"noop",value:function noop(t){var r=t.markers;return P(r)}}])}(),P=function _noop(t){return t.map((function(t){return new w({position:k.getPosition(t),markers:[t]})}))},C=function(t){function SuperClusterAlgorithm(t){var r;index_esm_classCallCheck(this,SuperClusterAlgorithm);var o=t.maxZoom,a=t.radius,i=void 0===a?60:a,l=__rest(t,["maxZoom","radius"]);return(r=_callSuper(this,SuperClusterAlgorithm,[{maxZoom:o}])).state={zoom:-1},r.superCluster=new b(Object.assign({maxZoom:r.maxZoom,radius:i},l)),r}return _inherits(SuperClusterAlgorithm,t),index_esm_createClass(SuperClusterAlgorithm,[{key:"calculate",value:function calculate(t){var r=!1,o={zoom:t.map.getZoom()};if(!c()(t.markers,this.markers)){r=!0,this.markers=_toConsumableArray(t.markers);var a=this.markers.map((function(t){var r=k.getPosition(t);return{type:"Feature",geometry:{type:"Point",coordinates:[r.lng(),r.lat()]},properties:{marker:t}}}));this.superCluster.load(a)}return r||(this.state.zoom<=this.maxZoom||o.zoom<=this.maxZoom)&&(r=!c()(this.state,o)),this.state=o,r&&(this.clusters=this.cluster(t)),{clusters:this.clusters,changed:r}}},{key:"cluster",value:function cluster(t){var r=this,o=t.map;return this.superCluster.getClusters([-180,-90,180,90],Math.round(o.getZoom())).map((function(t){return r.transformCluster(t)}))}},{key:"transformCluster",value:function transformCluster(t){var r=index_esm_slicedToArray(t.geometry.coordinates,2),o=r[0],a=r[1],i=t.properties;if(i.cluster)return new w({markers:this.superCluster.getLeaves(i.cluster_id,1/0).map((function(t){return t.properties.marker})),position:{lat:a,lng:o}});var l=i.marker;return new w({markers:[l],position:k.getPosition(l)})}}])}(x),M=index_esm_createClass((function ClusterStats(t,r){index_esm_classCallCheck(this,ClusterStats),this.markers={sum:t.length};var o=r.map((function(t){return t.count})),a=o.reduce((function(t,r){return t+r}),0);this.clusters={count:r.length,markers:{mean:a/r.length,sum:a,min:Math.min.apply(Math,_toConsumableArray(o)),max:Math.max.apply(Math,_toConsumableArray(o))}}})),O=function(){return index_esm_createClass((function DefaultRenderer(){index_esm_classCallCheck(this,DefaultRenderer)}),[{key:"render",value:function render(t,r,o){var a=t.count,i=t.position,l=a>Math.max(10,r.clusters.markers.mean)?"#ff0000":"#0000ff",u='<svg fill="'.concat(l,'" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 240" width="50" height="50">\n<circle cx="120" cy="120" opacity=".6" r="70" />\n<circle cx="120" cy="120" opacity=".3" r="90" />\n<circle cx="120" cy="120" opacity=".2" r="110" />\n<text x="50%" y="50%" style="fill:#fff" text-anchor="middle" font-size="50" dominant-baseline="middle" font-family="roboto,arial,sans-serif">').concat(a,"</text>\n</svg>"),c="Cluster of ".concat(a," markers"),p=Number(google.maps.Marker.MAX_ZINDEX)+a;if(k.isAdvancedMarkerAvailable(o)){var m=(new DOMParser).parseFromString(u,"image/svg+xml").documentElement;m.setAttribute("transform","translate(0 25)");var d={map:o,position:i,zIndex:p,title:c,content:m};return new google.maps.marker.AdvancedMarkerElement(d)}var y={position:i,zIndex:p,title:c,icon:{url:"data:image/svg+xml;base64,".concat(btoa(u)),anchor:new google.maps.Point(25,25)}};return new google.maps.Marker(y)}}])}();var A,S=index_esm_createClass((function OverlayViewSafe(){index_esm_classCallCheck(this,OverlayViewSafe),function extend(t,r){for(var o in r.prototype)t.prototype[o]=r.prototype[o]}(OverlayViewSafe,google.maps.OverlayView)}));!function(t){t.CLUSTERING_BEGIN="clusteringbegin",t.CLUSTERING_END="clusteringend",t.CLUSTER_CLICK="click"}(A||(A={}));var E=function defaultOnClusterClickHandler(t,r,o){o.fitBounds(r.bounds)},T=function(t){function MarkerClusterer(t){var r,o=t.map,a=t.markers,i=void 0===a?[]:a,l=t.algorithmOptions,u=void 0===l?{}:l,c=t.algorithm,p=void 0===c?new C(u):c,m=t.renderer,d=void 0===m?new O:m,y=t.onClusterClick,h=void 0===y?E:y;return index_esm_classCallCheck(this,MarkerClusterer),(r=_callSuper(this,MarkerClusterer)).markers=_toConsumableArray(i),r.clusters=[],r.algorithm=p,r.renderer=d,r.onClusterClick=h,o&&r.setMap(o),r}return _inherits(MarkerClusterer,t),index_esm_createClass(MarkerClusterer,[{key:"addMarker",value:function addMarker(t,r){this.markers.includes(t)||(this.markers.push(t),r||this.render())}},{key:"addMarkers",value:function addMarkers(t,r){var o=this;t.forEach((function(t){o.addMarker(t,!0)})),r||this.render()}},{key:"removeMarker",value:function removeMarker(t,r){var o=this.markers.indexOf(t);return-1!==o&&(k.setMap(t,null),this.markers.splice(o,1),r||this.render(),!0)}},{key:"removeMarkers",value:function removeMarkers(t,r){var o=this,a=!1;return t.forEach((function(t){a=o.removeMarker(t,!0)||a})),a&&!r&&this.render(),a}},{key:"clearMarkers",value:function clearMarkers(t){this.markers.length=0,t||this.render()}},{key:"render",value:function render(){var t=this.getMap();if(t instanceof google.maps.Map&&t.getProjection()){google.maps.event.trigger(this,A.CLUSTERING_BEGIN,this);var r=this.algorithm.calculate({markers:this.markers,map:t,mapCanvasProjection:this.getProjection()}),o=r.clusters,a=r.changed;if(a||void 0==a){var i,l=new Set,u=index_esm_createForOfIteratorHelper(o);try{for(u.s();!(i=u.n()).done;){var c=i.value;1==c.markers.length&&l.add(c.markers[0])}}catch(h){u.e(h)}finally{u.f()}var p,m=[],d=index_esm_createForOfIteratorHelper(this.clusters);try{for(d.s();!(p=d.n()).done;){var y=p.value;null!=y.marker&&(1==y.markers.length?l.has(y.marker)||k.setMap(y.marker,null):m.push(y.marker))}}catch(h){d.e(h)}finally{d.f()}this.clusters=o,this.renderClusters(),requestAnimationFrame((function(){return m.forEach((function(t){return k.setMap(t,null)}))}))}google.maps.event.trigger(this,A.CLUSTERING_END,this)}}},{key:"onAdd",value:function onAdd(){this.idleListener=this.getMap().addListener("idle",this.render.bind(this)),this.render()}},{key:"onRemove",value:function onRemove(){google.maps.event.removeListener(this.idleListener),this.reset()}},{key:"reset",value:function reset(){this.markers.forEach((function(t){return k.setMap(t,null)})),this.clusters.forEach((function(t){return t.delete()})),this.clusters=[]}},{key:"renderClusters",value:function renderClusters(){var t=this,r=new M(this.markers,this.clusters),o=this.getMap();this.clusters.forEach((function(a){1===a.markers.length?a.marker=a.markers[0]:(a.marker=t.renderer.render(a,r,o),a.markers.forEach((function(t){return k.setMap(t,null)})),t.onClusterClick&&a.marker.addListener("click",(function(r){google.maps.event.trigger(t,A.CLUSTER_CLICK,a),t.onClusterClick(r,a,o)}))),k.setMap(a.marker,o)}))}}])}(S);function map_google_marker_typeof(t){return map_google_marker_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},map_google_marker_typeof(t)}function map_google_marker_defineProperties(t,r){for(var o=0;o<r.length;o++){var a=r[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,map_google_marker_toPropertyKey(a.key),a)}}function map_google_marker_toPropertyKey(t){var r=function map_google_marker_toPrimitive(t,r){if("object"!=map_google_marker_typeof(t)||!t)return t;var o=t[Symbol.toPrimitive];if(void 0!==o){var a=o.call(t,r||"default");if("object"!=map_google_marker_typeof(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==map_google_marker_typeof(r)?r:r+""}function map_google_marker_callSuper(t,r,o){return r=map_google_marker_getPrototypeOf(r),function map_google_marker_possibleConstructorReturn(t,r){if(r&&("object"===map_google_marker_typeof(r)||"function"===typeof r))return r;if(void 0!==r)throw new TypeError("Derived constructors may only return object or undefined");return function map_google_marker_assertThisInitialized(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,map_google_marker_isNativeReflectConstruct()?Reflect.construct(r,o||[],map_google_marker_getPrototypeOf(t).constructor):r.apply(t,o))}function map_google_marker_isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(map_google_marker_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}function map_google_marker_getPrototypeOf(t){return map_google_marker_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(t){return t.__proto__||Object.getPrototypeOf(t)},map_google_marker_getPrototypeOf(t)}function map_google_marker_setPrototypeOf(t,r){return map_google_marker_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(t,r){return t.__proto__=r,t},map_google_marker_setPrototypeOf(t,r)}var j={init:function init(){return function(t){function GoogleMapsHtmlOverlay(t){var r;!function map_google_marker_classCallCheck(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this,GoogleMapsHtmlOverlay);var o=r=map_google_marker_callSuper(this,GoogleMapsHtmlOverlay);return o.ownerMap=t.map,o.position=t.position,o.html=t.html?t.html:'<div class="mapboxgl-marker"><i class="marker-icon fas fa-map-marker-alt"></i></div>',o.divClass=t.divClass,o.align=t.align,o.isDebugMode=t.debug,o.onClick=t.onClick,o.onMouseOver=t.onMouseOver,o.isBoolean=function(t){return"boolean"===typeof t},o.isNotUndefined=function(t){return"undefined"!==typeof t},o.hasContent=function(t){return t.length>0},o.isString=function(t){return"string"===typeof t},o.isFunction=function(t){return"function"===typeof t},r}return function map_google_marker_inherits(t,r){if("function"!==typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&map_google_marker_setPrototypeOf(t,r)}(GoogleMapsHtmlOverlay,window.google.maps.OverlayView),function map_google_marker_createClass(t,r,o){return r&&map_google_marker_defineProperties(t.prototype,r),o&&map_google_marker_defineProperties(t,o),Object.defineProperty(t,"prototype",{writable:!1}),t}(GoogleMapsHtmlOverlay,[{key:"onAdd",value:function onAdd(){var t=this;t.div=document.createElement("div"),t.div.style.position="absolute",t.isNotUndefined(t.divClass)&&t.hasContent(t.divClass)&&(t.div.className=t.divClass),t.isNotUndefined(t.html)&&t.hasContent(t.html)&&t.isString(t.html)&&(t.div.innerHTML=t.html),t.isBoolean(t.isDebugMode)&&t.isDebugMode&&(t.div.className="debug-mode",t.div.innerHTML='<div style="height: 10px; width: 10px; background: red; border-radius: 100%;"></div><div style="position: absolute; top: 5px; padding: 5px; width: 130px; text-align: center; font-size: 18px; text-transform: uppercase; font-weight: bolder; background: red; color: white; font-family: Arial;">Debug mode</div>',t.div.setAttribute("style","position: absolute;border: 5px dashed red;height: 150px;width: 150px;display: flex;justify-content: center;align-items: center;")),t.getPanes().overlayMouseTarget.appendChild(t.div),t.div.addEventListener("click",(function(r){window.google.maps.event.trigger(t,"click"),t.isFunction(t.onClick)&&t.onClick(),r.stopPropagation()})),t.div.addEventListener("mouseover",(function(r){window.google.maps.event.trigger(t,"mouseover"),t.isFunction(t.onMouseOver)&&t.onMouseOver(),r.stopPropagation()}))}},{key:"draw",value:function draw(){var t=this,r=document.querySelector(".popup");r.length||(r=t.div);var o=t.getProjection();if(!o)return console.log("GoogleMapsHtmlOverlay: current map is missing"),null;var a=o.fromLatLngToDivPixel(t.getPosition()),i={y:void 0,x:void 0},l=r.offsetWidth,u=r.offsetHeight;switch(Array.isArray(t.align)?t.align.join(" "):""){case"left top":i.y=u,i.x=l;break;case"left center":i.y=u/2,i.x=l;break;case"left bottom":i.y=0,i.x=l;break;case"center top":i.y=u,i.x=l/2;break;case"center center":default:i.y=u/2,i.x=l/2;break;case"center bottom":i.y=0,i.x=l/2;break;case"right top":i.y=u,i.x=0;break;case"right center":i.y=u/2,i.x=0;break;case"right bottom":i.y=0,i.x=0}t.div.style.top="".concat(a.y-i.y,"px"),t.div.style.left="".concat(a.x-i.x,"px")}},{key:"getPosition",value:function getPosition(){return new window.google.maps.LatLng(this.position)}},{key:"getDiv",value:function getDiv(){return this.div}},{key:"setPosition",value:function setPosition(t,r){var o=this;o.position=t,o.align=r,o.draw()}},{key:"remove",value:function remove(){this.setMap(null),this.div.remove()}},{key:"getDraggable",value:function getDraggable(){return!1}}])}()}};function map_google_typeof(t){return map_google_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},map_google_typeof(t)}function map_google_defineProperties(t,r){for(var o=0;o<r.length;o++){var a=r[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,map_google_toPropertyKey(a.key),a)}}function map_google_toPropertyKey(t){var r=function map_google_toPrimitive(t,r){if("object"!=map_google_typeof(t)||!t)return t;var o=t[Symbol.toPrimitive];if(void 0!==o){var a=o.call(t,r||"default");if("object"!=map_google_typeof(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==map_google_typeof(r)?r:r+""}var I=function(t){var r=function(){return function map_google_createClass(t,r,o){return r&&map_google_defineProperties(t.prototype,r),o&&map_google_defineProperties(t,o),Object.defineProperty(t,"prototype",{writable:!1}),t}((function GoogleMapsDriver(){!function map_google_classCallCheck(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this,GoogleMapsDriver)}),[{key:"getName",value:function getName(){return"GoogleMapsDriver"}},{key:"init",value:function init(r){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],a=this;a.el=r,a.config=o,a.markers=[],t["init".concat(a.getName())]=function(){a.googleApiLoaded()};var i=document.createElement("script");i.src="https://maps.googleapis.com/maps/api/js?key=".concat(o.key,"&callback=init").concat(a.getName()),i.async=!0,i.defer=!0,document.head.appendChild(i)}},{key:"googleApiLoaded",value:function googleApiLoaded(){var r=this,o=r.el,i=r.config,l=o.querySelector(".mapAPI-map"),u=i.mapZoom&&"0"!==i.mapZoom?parseInt(i.mapZoom):10,c=i.center&&","!==i.center?{lat:i.center[1],lng:i.center[0]}:{lat:0,lng:0},p=i.style?i.style:null;console.log("".concat(r.getName(),": API is loaded")),r.MarkerUI=j.init(),r.map=new t.google.maps.Map(l,{zoom:u,center:c,fullscreenControl:!0,styles:p}),r.default_zoom=u,l.classList.add("mapboxgl-map"),r.popup=new r.MarkerUI({map:r.map,align:["center","top"],divClass:"mapboxgl-popup popup mapboxgl-popup-anchor-bottom d-none",html:'<div class="mapboxgl-popup-tip"></div><div class="mapboxgl-popup-content"><div class="mapboxgl-popup-close-button" type="button" aria-label="Close popup">\xd7</div><div class="html"></div></div>'}),r.popup.setMap(r.map),r.geocoder=new t.google.maps.Geocoder,r.cluster=new T(r.map,null,{styles:[{width:30,height:30,className:"mapboxgl-cluster"}]}),o.dispatchEvent(new Event(a))}},{key:"addMarker",value:function addMarker(t,r){var o=this,a={lat:t[1],lng:t[0]},l=new o.MarkerUI({position:a,map:o.map,align:["center","top"],html:'<div class="mapboxgl-marker"><div id="Marker'.concat(r.id,'" data-id="').concat(r.id,'" class="marker">').concat(r.icon,"</div></div>"),onClick:function onClick(){var t=document.querySelector("#Marker".concat(r.id));o.showPopup(a,r.content),t.dispatchEvent(new Event(i))}});return o.markers.push(l),o.cluster.addMarker(l),l.setMap(o.map),l}},{key:"showPopup",value:function showPopup(t,r){var o=this,a=o.popup.getDiv();o.config.flyToMarker&&(o.map.setCenter(t),o.config.noZoom||o.map.setZoom(18)),a.style.opacity="0",a.classList.remove("d-none"),a.querySelector(".mapboxgl-popup-content .html").innerHTML=r,a.querySelector(".mapboxgl-popup-close-button").addEventListener("click",(function(t){t.preventDefault(),o.hidePopup()})),o.popup.setPosition(t,["center","top"]),a.style.opacity="1",a.style["margin-top"]="-1rem"}},{key:"hidePopup",value:function hidePopup(){var t=this;t.popup.getDiv().classList.add("d-none"),t.config.noRestoreBounds&&!t.config.flyToBounds||t.restoreBounds(),t.el.dispatchEvent(new Event(l))}},{key:"geocode",value:function geocode(t,r){var o=this;o.geocoder.geocode({address:t},(function(t,a){if("OK"===a)return"function"===typeof r&&r(t),t;console.error("".concat(o.getName(),": Geocode was not successful for the following reason: ").concat(a))}))}},{key:"reverseGeocode",value:function reverseGeocode(t,r){var o=this;o.geocoder.geocode({location:latlng},(function(t,a){if("OK"===a)return"function"===typeof r&&r(t),t;console.error("".concat(o.getName(),": Reverse Geocoding was not successful for the following reason: ").concat(a))}))}},{key:"addGeoJson",value:function addGeoJson(r){var o=this,a=JSON.parse(r.geojson),i=new t.google.maps.LatLngBounds;a.features.forEach((function(t){var a=t.id,l=t.geometry.coordinates,u=t.properties.content;o.addMarker(l,{id:a,content:u,icon:t.icon,flyToMarker:r.flyToMarker}),i.extend({lat:parseFloat(l[1]),lng:parseFloat(l[0])})})),o.markers.length>1?o.map.fitBounds(i,{padding:30}):o.markers[0]&&o.map.setCenter(o.markers[0].getPosition()),o.default_bounds=i,o.default_zoom=o.map.getZoom()}},{key:"getMap",value:function getMap(){return this.map}},{key:"getPopup",value:function getPopup(){return this.popup}},{key:"restoreBounds",value:function restoreBounds(){var t=this;t.default_bounds&&t.markers.length>1?t.map.fitBounds(t.default_bounds,{padding:30}):(t.markers[0]&&t.map.setCenter(t.markers[0].getPosition()),t.restoreZoom())}},{key:"restoreZoom",value:function restoreZoom(){this.map.setZoom(this.default_zoom)}}])}();return r}(window),L={ENVS:["xs","sm","md","lg","xl","xxl","xxxl"],MAP_DRIVER:I};function map_api_typeof(t){return map_api_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},map_api_typeof(t)}function map_api_defineProperties(t,r){for(var o=0;o<r.length;o++){var a=r[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,map_api_toPropertyKey(a.key),a)}}function map_api_toPropertyKey(t){var r=function map_api_toPrimitive(t,r){if("object"!=map_api_typeof(t)||!t)return t;var o=t[Symbol.toPrimitive];if(void 0!==o){var a=o.call(t,r||"default");if("object"!=map_api_typeof(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==map_api_typeof(r)?r:r+""}!function(i){var l="js-mapapi",u=L.MAP_DRIVER,c=function(){return function map_api_createClass(t,r,o){return r&&map_api_defineProperties(t.prototype,r),o&&map_api_defineProperties(t,o),Object.defineProperty(t,"prototype",{writable:!1}),t}((function MapAPI(t){!function map_api_classCallCheck(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this,MapAPI);var r=this,o=new u,i=document.querySelector("body"),c=t.dataset;c.lng?c.lng:i.dataset["default-lng"],c.lat?c.lat:i.dataset["default-lat"],c.icon||(c.icon='<i class="fas fa-map-marker-alt"></i>'),console.log("".concat(l,": init ").concat(o.getName(),"...")),r.drv=o,r.el=t,r.config=c,o.init(t,c),t.addEventListener(a,(function(){r.addMarkers()}))}),[{key:"getMap",value:function getMap(){return this.map}},{key:"dispose",value:function dispose(){this.el=null,this.el.classList.remove("".concat(l,"-active"))}},{key:"addMarkers",value:function addMarkers(){console.log("".concat(l,": addMarkers"));var t=this,r=t.el,a=t.drv,i=t.config;if(t.map=a.getMap(),i.geojson)console.log("".concat(l,": setting up geocode data")),a.addGeoJson(i);else if(i.address)console.log(i.address),console.log("".concat(l,": setting up address marker")),a.geocode(i.address,(function(r){console.log(r);var o=parseFloat(r[0].geometry.location.lat()),u=parseFloat(r[0].geometry.location.lng());console.log("".concat(l,": setting up single lat/lng marker lat: ").concat(o," lng: ").concat(u," #1")),a.addMarker([u,o],i),t.map.setCenter({lat:o,lng:u})}));else if(i.lat&&i.lng){var u=parseFloat(i.lat),c=parseFloat(i.lng);console.log("".concat(l,": setting up single lat/lng marker lat: ").concat(u," lng: ").concat(c," #2")),a.addMarker([c,u],i),t.map.setCenter({lat:u,lng:c})}r.classList.add("".concat(l,"-active")),r.dispatchEvent(new Event(o)),console.log("".concat(l,": Map is loaded"))}}])}(),p=function init(){console.log("".concat(l,": init")),document.querySelectorAll(".".concat(l)).forEach((function(t,r){new c(t)}))};i.addEventListener("".concat(r),p),i.addEventListener("".concat(t),p)}(window)}()}();

View File

@ -0,0 +1,14 @@
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */

View File

@ -0,0 +1 @@
!function(){"use strict";var e={6793:function(e){e.exports=function makeYoutubeEmbed(e){if("string"===typeof e){var t=function getId(e){var t=e.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/);if(t&&11==t[2].length)return t[2]}(e);return t?"//www.youtube.com/embed/"+t:void 0}}}},t={};function __webpack_require__(n){var a=t[n];if(void 0!==a)return a.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,__webpack_require__),o.exports}!function(){var e="ajax-load",t="load-ready";function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}function _toConsumableArray(e){return function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}(e)||function _iterableToArray(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function _unsupportedIterableToArray(e,t){if(!e)return;if("string"===typeof e)return _arrayLikeToArray(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(e,t)}(e)||function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,_toPropertyKey(a.key),a)}}function _defineProperty(e,t,n){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _toPropertyKey(e){var t=function _toPrimitive(e,t){if("object"!=_typeof(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,t||"default");if("object"!=_typeof(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==_typeof(t)?t:t+""}var n=window,a=function(){return function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}((function MetaWindow(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{shown:!1},a=arguments.length>1?arguments[1]:void 0;!function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,MetaWindow),_defineProperty(this,"state",{content:"",type:["empty"],shown:!1,loading:!1,error:!1,embed:!1,collections:[],current:null,target:null,extraClass:null}),_defineProperty(this,"show",(function(){var t=e;console.log("".concat(t.name,": show")),t.setState({shown:!0}),n.dispatchEvent(new Event("{ui.name}.show"))})),_defineProperty(this,"hide",(function(){var t=e;console.log("".concat(t.name,": hide")),t.setState({shown:!1}),n.dispatchEvent(new Event("{ui.name}.hide"))})),_defineProperty(this,"next",(function(){var t=e,a=t.state.current.getAttribute("data-gallery"),o=t._currIndex();o<t.state.collections[a].length-1?o++:o=0,t.state.collections[a][o].click(),console.log("".concat(t.name,": next")),n.dispatchEvent(new Event("{ui.name}.next"))})),_defineProperty(this,"prev",(function(){var t=e,a=t.state.current.getAttribute("data-gallery"),o=t._currIndex();o>0?o--:o=t.state.collections[a].length-1,t.state.collections[a][o].click(),console.log("".concat(t.name,": prev")),n.dispatchEvent(new Event("{ui.name}.prev"))})),_defineProperty(this,"reset",(function(){e.setState({content:"",type:["empty"],shown:!1,loading:!1,error:!1,embed:!1})})),_defineProperty(this,"load",(function(t){var a=e;a.reset(),a.setState({loading:!0}),a.show(),window.fetch(t,{mode:"no-cors"}).then((function(e){var o=e.headers.get("content-type").toLowerCase();console.log(e),console.log("".concat(a.name,": response content-type: ").concat(o));switch(o){case"image/jpeg":case"image/png":case"image/svg+xml":case"image/bmp":case"image/gif":case"image/tiff":case"image/webp":case"image/jpg":case"image/svg":e.arrayBuffer().then((function(e){a.setContent('<img src="data:'.concat(o,";base64,").concat(a._imageEncode(e),'" />'),"meta-".concat(a.name,"--image"))}));break;case"application/json":case"application/ld+json":case"application/json; charset=utf-8":a.setContent("".concat((!1).Content),["meta-".concat(a.name,"--text"),"meta-".concat(a.name,"--html"),"meta-".concat(a.name,"--json")]);break;case"video/mp4":a.setContent('<video controls autoplay><source src="'.concat(t,'" type="video/mp4">Your browser does not support the video tag.</video>'),["meta-".concat(a.name,"--image"),"meta-".concat(a.name,"--video")]);break;case"text/html":case"application/xhtml+xml":case"text/plain":case"text/html; charset=utf-8":case"application/xhtml+xml; charset=utf-8":case"text/plain; charset=utf-8":e.text().then((function(e){a.setContent(e,["meta-".concat(a.name,"--text"),"meta-".concat(a.name,"--html"),"meta-".concat(a.name,"--pajax")])}));break;default:console.warn("".concat(a.name,": Unknown response content-type!"))}n.dispatchEvent(new Event("{ui.name}.loaded"))})).catch((function(e){console.error(e);var t="";if(e.response)switch(e.response.status){case 404:t="Not Found.";break;case 500:t="Server issue, please try again latter.";break;default:t="Something went wrong."}else e.request?t="No response received":console.warn("Error",e.message);a.setState({error:t}),n.dispatchEvent(new Event("{ui.name}.error"))})).then((function(){a.setState({loading:!1}),setTimeout((function(){a.state.current.classList.remove("loading")}),1e3)}))})),_defineProperty(this,"_currIndex",(function(){var t=e,n=t.state.current,a=n.getAttribute("data-gallery");return t.state.collections[a].indexOf(n)})),_defineProperty(this,"embed",(function(t){var n=e;console.log("".concat(n.name,": embed")),n.reset(),n.setState({embed:t,loading:!1,type:["meta-".concat(n.name,"--embed"),"meta-".concat(n.name,"--video")]}),n.show()})),_defineProperty(this,"setCaption",(function(t){var n=e;console.log("".concat(n.name,": setCaption")),n.state.caption=t})),_defineProperty(this,"addExtraClass",(function(t){var n=e;t&&t.length&&(console.log("".concat(n.name,": addExtraClass(").concat(t,")")),n.state.extraClass=t)})),_defineProperty(this,"getCaption",(function(){return e.state.caption})),_defineProperty(this,"_imageEncode",(function(e){var t="";return[].slice.call(new Uint8Array(e)).forEach((function(e){t+=String.fromCharCode(e)})),window.btoa(t)})),_defineProperty(this,"setContent",(function(t,n){var a=e;console.log("".concat(a.name,": setContent"));var o=n||["meta-".concat(a.name,"--html"),"meta-".concat(a.name,"--text")];Array.isArray(o)||(o=n.split(" ")),a.setState({content:t,type:o})})),_defineProperty(this,"getHtml",(function(){var t=e;if(t.state.embed){var n=__webpack_require__(6793)(t.state.embed);t.state.content='<iframe width="600" height="380" src="'.concat(n,'" frameborder="0"></iframe>')}return t.state.content}));var o=this;switch(o.name=o.constructor.name,console.log("".concat(o.name,": init")),o.setState(t),a){case"show":case"hide":o.hide()}n.dispatchEvent(new Event("{ui.name}.init"))}),[{key:"cleanLinks",value:function cleanLinks(){document.querySelectorAll('[data-toggle="lightbox"]').forEach((function(e){e.classList.remove("loading")}))}},{key:"collectGaleries",value:function collectGaleries(e){var t=this;e&&(t.state.collections[e]=[],document.querySelectorAll('[data-toggle="lightbox"][data-gallery="'.concat(e,'"]')).forEach((function(n){t.state.collections[e].push(n)})))}},{key:"toggle",value:function toggle(e){var t=this;t.cleanLinks();var n=e.getAttribute("href")||e.getAttribute("data-href"),a=e.getAttribute("data-embed");e.classList.add("loading"),t.state.current=e;var o=e.getAttribute("data-title");o?t.setCaption(o):t.setCaption(""),a?t.embed(n):t.load(n),t.addExtraClass(e.getAttribute("data-lightbox-class"))}},{key:"init",value:function init(){var e=this;console.log("MetaWindow: [links] init"),document.querySelectorAll('[data-toggle="lightbox"],[data-gallery]').forEach((function(t){var n=t.getAttribute("data-gallery");e.collectGaleries(n),t.addEventListener("click",(function(t){t.preventDefault(),console.log("MetaWindow: [link] click");var n=t.currentTarget;e.toggle(n)}))}))}},{key:"setState",value:function setState(e){var t=this;t.state=Object.assign({},t.state,e),t.render()}},{key:"render",value:function render(){var e,t=this,n=t.name,a=t.state.current;t.state.target.innerHTML="";var o=document.createElement("div");o.classList.add("meta-".concat(n)),(e=o.classList).add.apply(e,_toConsumableArray(t.state.type)),t.state.target.append(o);var r=document.createElement("div");r.classList.add("meta-".concat(n,"-overlay")),t.state.shown&&r.classList.add("meta-".concat(n,"-overlay--open")),t.state.loading&&r.classList.add("meta-".concat(n,"-overlay--loading")),t.state.error&&r.classList.add("meta-".concat(n,"-overlay--error")),o.append(r);var i=document.createElement("div");i.classList.add("meta-content"),r.append(i);var c=document.createElement("button");if(c.classList.add("meta-nav","meta-close","a"),c.innerHTML='<i class="icon fa fas fa-times"></i> <span class="visually-hidden">Close</span>',c.addEventListener("click",(function(e){e.preventDefault(),t.hide()})),i.append(c),a){var s=a.getAttribute("data-gallery");if(s&&t.state.collections[s].length>1){var l=document.createElement("nav");l.classList.add("meta-navs");var d=document.createElement("button");d.classList.add("meta-nav","meta-nav-arrow","meta-nav-arrow__prev","a"),d.innerHTML='<i class="icon fa fas fa-chevron-left"></i> <span class="visually-hidden">Previous</span>',d.addEventListener("click",(function(e){e.preventDefault(),t.prev()})),l.append(d);var u=document.createElement("button");u.classList.add("meta-nav","meta-nav-arrow","meta-nav-arrow__next","a"),u.innerHTML='<i class="icon fa fas fa-chevron-right"></i> <span class="visually-hidden">Next</span>',u.addEventListener("click",(function(e){e.preventDefault(),t.next()})),l.append(u),i.append(l)}}var m=document.createElement("section");if(m.classList.add("meta-wrap","typography"),t.state.extraClass&&m.classList.add(t.state.extraClass),m.innerHTML=t.getHtml(),i.append(m),t.state.error){var p=document.createElement("div");p.classList.add("meta-error"),p.innerHTML=t.state.error,i.append(p)}else if(t.state.caption){var f=document.createElement("div");f.classList.add("meta-caption"),f.innerHTML=t.getCaption(),i.append(f)}return"undefined"!==typeof window.FontAwesome&&window.FontAwesome.dom.i2svg(),t}}])}(),o=a,r=document.getElementById("MetaLightboxApp");r||(console.warn("MetaWindow: missing container #MetaLightboxApp - create new one"),(r=document.createElement("div")).setAttribute("id","MetaLightboxApp"),document.querySelector("body").append(r));var i=function init(){var e=window.MetaWindow;"undefined"===typeof e&&(e=new o({target:r}),window.MetaWindow=e),e.init()};window.addEventListener("".concat(t),i),window.addEventListener("".concat(e),i),window.addEventListener("MetaWindow.initLinks",i);jQuery.entwine("ss",(function($){$('[data-toggle="lightbox"]').entwine({onmatch:function onmatch(){console.log("Init lightbox links at CMS"),window.dispatchEvent(new Event("MetaWindow.initLinks"))}})}))}()}();

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,15 @@
/*!
* Get all of an element's parent elements up the DOM tree
* (c) 2019 Chris Ferdinandi, MIT License, https://gomakethings.com
* @param {Node} elem The element
* @param {String} selector Selector to match against [optional]
* @return {Array} The parent elements
*/
/*!
* Glide.js v3.6.0
* (c) 2013-2022 Jędrzej Chałubek (https://github.com/jedrzejchalubek/)
* Released under the MIT License.
*/
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */

View File

@ -1,393 +1,148 @@
{
"chunks": {
"byName": {
"app": 143,
"app_SilverShop.Page.CheckoutPageController": 193,
"app_Site.Controllers.MapElementController": 133,
"app_cms": 498,
"app_dev": 206,
"app_editor": 831,
"app_order": 299,
"sample": 148
"app": 524,
"app_SilverShop.Page.CheckoutPageController": 950,
"app_Site.Controllers.MapElementController": 905,
"app_cms": 218,
"app_dev": 584,
"app_editor": 68,
"app_order": 241,
"sample": 877
},
"bySource": {
"0 app": 143,
"0 app_SilverShop.Page.CheckoutPageController": 193,
"0 app_Site.Controllers.MapElementController": 133,
"0 app_cms": 498,
"0 app_dev": 206,
"0 app_editor": 831,
"0 app_order": 299,
"0 sample": 148
"0 app": 524,
"0 app_SilverShop.Page.CheckoutPageController": 950,
"0 app_Site.Controllers.MapElementController": 905,
"0 app_cms": 218,
"0 app_dev": 584,
"0 app_editor": 68,
"0 app_order": 241,
"0 sample": 877
},
"usedIds": [
133,
143,
148,
193,
206,
299,
498,
831
68,
218,
241,
524,
584,
877,
905,
950
]
},
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/app.scss": [
{
"chunks": {
"byName": {
"child": 396
},
"bySource": {
"0 child": 396
},
"usedIds": [
396
]
},
"modules": {
"byIdentifier": {
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/api.js": 695,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/cssWithMappingToString.js": 236,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/getUrl.js": 976,
"./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/app.scss": 978,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%272%27 fill=%27%23fff%27/%3e%3c/svg%3e": 204,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%2386b7fe%27/%3e%3c/svg%3e": 609,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%23fff%27/%3e%3c/svg%3e": 469,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27rgba%280, 0, 0, 0.25%29%27/%3e%3c/svg%3e": 486,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23dc3545%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23dc3545%27 stroke=%27none%27/%3e%3c/svg%3e": 144,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23000%27%3e%3cpath d=%27M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z%27/%3e%3c/svg%3e": 175,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%230c63e4%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e": 740,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23212529%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e": 460,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23fff%27%3e%3cpath d=%27M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z%27/%3e%3c/svg%3e": 647,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23fff%27%3e%3cpath d=%27M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e": 692,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3e%3cpath fill=%27none%27 stroke=%27%23343a40%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27M2 5l6 6 6-6%27/%3e%3c/svg%3e": 214,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10h8%27/%3e%3c/svg%3e": 931,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10l3 3l6-6%27/%3e%3c/svg%3e": 349,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%280, 0, 0, 0.55%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e": 217,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%28255, 255, 255, 0.55%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e": 956,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 8%27%3e%3cpath fill=%27%23198754%27 d=%27M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z%27/%3e%3c/svg%3e": 819
},
"usedIds": [
144,
175,
204,
214,
217,
236,
349,
460,
469,
486,
609,
647,
692,
695,
740,
819,
931,
956,
976,
978
]
}
}
],
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/types/cms.scss": [
{
"chunks": {
"byName": {
"child": 396
},
"bySource": {
"0 child": 396
},
"usedIds": [
396
]
},
"modules": {
"byIdentifier": {
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/api.js": 695,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/cssWithMappingToString.js": 236,
"./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/types/cms.scss": 723
},
"usedIds": [
236,
695,
723
]
}
}
],
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/types/dev.scss": [
{
"chunks": {
"byName": {
"child": 396
},
"bySource": {
"0 child": 396
},
"usedIds": [
396
]
},
"modules": {
"byIdentifier": {
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/api.js": 695,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/cssWithMappingToString.js": 236,
"./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/types/dev.scss": 654
},
"usedIds": [
236,
654,
695
]
}
}
],
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/types/editor.scss": [
{
"chunks": {
"byName": {
"child": 396
},
"bySource": {
"0 child": 396
},
"usedIds": [
396
]
},
"modules": {
"byIdentifier": {
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/api.js": 695,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/cssWithMappingToString.js": 236,
"./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/types/editor.scss": 285
},
"usedIds": [
236,
285,
695
]
}
}
],
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/types/order.scss": [
{
"chunks": {
"byName": {
"child": 396
},
"bySource": {
"0 child": 396
},
"usedIds": [
396
]
},
"modules": {
"byIdentifier": {
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/api.js": 695,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/cssWithMappingToString.js": 236,
"./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/types/order.scss": 379
},
"usedIds": [
236,
379,
695
]
}
}
],
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./node_modules/.pnpm/@a2nt+ss-bootstrap-ui-webpack-boilerplate-react@4.3.2/node_modules/@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/types/map.api.scss": [
{
"chunks": {
"byName": {
"child": 396
},
"bySource": {
"0 child": 396
},
"usedIds": [
396
]
},
"modules": {
"byIdentifier": {
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/api.js": 695,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/cssWithMappingToString.js": 236,
"./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./node_modules/.pnpm/@a2nt+ss-bootstrap-ui-webpack-boilerplate-react@4.3.2/node_modules/@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/types/map.api.scss": 614
},
"usedIds": [
236,
614,
695
]
}
}
],
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./themes/sample/client/src/scss/app.scss": [
{
"chunks": {
"byName": {
"child": 396
},
"bySource": {
"0 child": 396
},
"usedIds": [
396
]
},
"modules": {
"byIdentifier": {
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/api.js": 695,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/cssWithMappingToString.js": 236,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/runtime/getUrl.js": 976,
"./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./themes/sample/client/src/scss/app.scss": 455,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%272%27 fill=%27%23fff%27/%3e%3c/svg%3e": 204,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%2386b7fe%27/%3e%3c/svg%3e": 609,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%23fff%27/%3e%3c/svg%3e": 469,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27rgba%280, 0, 0, 0.25%29%27/%3e%3c/svg%3e": 486,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23dc3545%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23dc3545%27 stroke=%27none%27/%3e%3c/svg%3e": 144,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23000%27%3e%3cpath d=%27M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z%27/%3e%3c/svg%3e": 175,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%230c63e4%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e": 740,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23212529%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e": 460,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23fff%27%3e%3cpath d=%27M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z%27/%3e%3c/svg%3e": 647,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23fff%27%3e%3cpath d=%27M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e": 692,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3e%3cpath fill=%27none%27 stroke=%27%23343a40%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27M2 5l6 6 6-6%27/%3e%3c/svg%3e": 214,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10h8%27/%3e%3c/svg%3e": 931,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10l3 3l6-6%27/%3e%3c/svg%3e": 349,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%280, 0, 0, 0.55%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e": 217,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%28255, 255, 255, 0.55%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e": 956,
"asset/inline|data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 8%27%3e%3cpath fill=%27%23198754%27 d=%27M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z%27/%3e%3c/svg%3e": 819
},
"usedIds": [
144,
175,
204,
214,
217,
236,
349,
455,
460,
469,
486,
609,
647,
692,
695,
740,
819,
931,
956,
976
]
}
}
],
"modules": {
"byIdentifier": {
"./app/client/src/img|sync|nonrecursive|../../../../../../\\.(png|webp|jpg|jpeg|gif|svg)$/": 779,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./app/client/src/js/app.js|970a8a0fb1c126748a34b9514094c4fe": 352,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./app/client/src/js/types/SilverShop.Page.CheckoutPageController.js": 812,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./app/client/src/js/types/Site.Controllers.MapElementController.js|f782c30cadbc15047cbef40fabd2f9f3": 597,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/index.js": 916,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/adapters/xhr.js": 863,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/axios.js": 492,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/cancel/Cancel.js": 978,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/cancel/CancelToken.js": 510,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/cancel/isCancel.js": 454,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/Axios.js": 270,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/InterceptorManager.js": 261,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/buildFullPath.js": 573,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/createError.js": 191,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/dispatchRequest.js": 431,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/enhanceError.js": 828,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/mergeConfig.js": 195,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/settle.js": 475,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/transformData.js": 849,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/defaults.js": 626,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/bind.js": 671,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/buildURL.js": 616,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/combineURLs.js": 855,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/cookies.js": 271,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/isAbsoluteURL.js": 672,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/isAxiosError.js": 478,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/isURLSameOrigin.js": 958,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/normalizeHeaderName.js": 269,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/parseHeaders.js": 213,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/spread.js": 295,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/validator.js": 884,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/utils.js": 230,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/youtube-embed@1.0.0/node_modules/youtube-embed/index.js": 267,
"./node_modules/.pnpm/babel-loader@8.2.2_16ff48a381fa3cd612ae60c01c46e0d7/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./themes/sample/client/src/js/app.js": 46,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.52.1/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/bg.png": 347,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.52.1/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/logo.png": 529,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.52.1/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/logo.svg": 206,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.52.1/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/original.png": 932,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.52.1/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/original2.png": 939,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.52.1/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/photo1.png": 290,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.52.1/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/photo2.jpg": 781,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.52.1/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/photo3.svg": 926,
"./node_modules/.pnpm/mini-css-extract-plugin@2.3.0_webpack@5.52.1/node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[1].use[0]!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/types/cms.scss": 675,
"./node_modules/.pnpm/mini-css-extract-plugin@2.3.0_webpack@5.52.1/node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[1].use[0]!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/types/dev.scss": 693,
"./node_modules/.pnpm/mini-css-extract-plugin@2.3.0_webpack@5.52.1/node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[1].use[0]!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/types/editor.scss": 889,
"./node_modules/.pnpm/mini-css-extract-plugin@2.3.0_webpack@5.52.1/node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[1].use[0]!./node_modules/.pnpm/css-loader@6.2.0_webpack@5.52.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@12.1.0_sass@1.39.2+webpack@5.52.1/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/types/order.scss": 553,
"./node_modules/font-awesome|sync|nonrecursive|../../../../../../\\.(otf|eot|ttf|woff|woff2)$/": 429,
"json|./node_modules/.pnpm/axios@0.21.4/node_modules/axios/package.json": 857
"./app/client/src/img|sync|nonrecursive|/\\.(png%7Cwebp%7Cjpg%7Cjpeg%7Cgif%7Csvg)$/": 480,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./app/client/src/js/app.js|8eaca3a8fd9fdf67c21c61e85d6b8f13": 8490,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./app/client/src/js/types/SilverShop.Page.CheckoutPageController.js": 4648,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./app/client/src/js/types/Site.Controllers.MapElementController.js|c9c9d5020de25df2edcbd336ea1739fa": 1501,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./app/client/src/js/types/cms.js|94b306966adc2dd896c889a3566ba065": 649,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@a2nt+mithril-ui@1.1.7_@popperjs+core@2.11.8/node_modules/@a2nt/mithril-ui/src/js/_events.js": 3144,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@a2nt+mithril-ui@1.1.7_@popperjs+core@2.11.8/node_modules/@a2nt/mithril-ui/src/js/ui/ajax.js": 6881,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@a2nt+mithril-ui@1.1.7_@popperjs+core@2.11.8/node_modules/@a2nt/mithril-ui/src/js/ui/index.js": 815,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@a2nt+mithril-ui@1.1.7_@popperjs+core@2.11.8/node_modules/@a2nt/mithril-ui/src/js/ui/page/index.js": 9219,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@a2nt+mithril-ui@1.1.7_@popperjs+core@2.11.8/node_modules/@a2nt/mithril-ui/src/js/ui/page/resources.js": 5102,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@a2nt+mithril-ui@1.1.7_@popperjs+core@2.11.8/node_modules/@a2nt/mithril-ui/src/js/ui/page/tpl.js": 8223,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@a2nt+mithril-ui@1.1.7_@popperjs+core@2.11.8/node_modules/@a2nt/mithril-ui/src/js/ui/router.js": 2058,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@a2nt+mithril-ui@1.1.7_@popperjs+core@2.11.8/node_modules/@a2nt/mithril-ui/src/js/util/getParents.js": 3484,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@a2nt+ss-bootstrap-ui-webpack-boilerplate-react@5.3.9_zone.js@0.14.4/node_modules/@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/main/funcs.js": 1492,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js": 3439,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/api/mount-redraw.js": 7762,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/api/router.js": 1940,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/hyperscript.js": 1707,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/index.js": 8694,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/mount-redraw.js": 5879,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/pathname/build.js": 1811,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/pathname/compileTemplate.js": 4692,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/pathname/parse.js": 3312,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/promise/polyfill.js": 2149,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/promise/promise.js": 113,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/querystring/build.js": 7528,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/querystring/parse.js": 1747,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/render.js": 4328,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/render/fragment.js": 7835,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/render/hyperscript.js": 6254,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/render/hyperscriptVnode.js": 4354,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/render/render.js": 235,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/render/trust.js": 2793,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/render/vnode.js": 1509,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/request.js": 7015,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/request/request.js": 5965,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/route.js": 8227,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/util/assign.js": 7654,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/util/censor.js": 8421,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/mithril@2.2.2/node_modules/mithril/util/hasOwn.js": 963,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/youtube-embed@1.0.0/node_modules/youtube-embed/index.js": 6793,
"./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.24.5_webpack@5.91.0/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./themes/sample/client/src/js/app.js": 7064,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0_webpack@5.91.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/bg.png": 6730,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0_webpack@5.91.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/logo.png": 8614,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0_webpack@5.91.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/logo.svg": 4993,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0_webpack@5.91.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/original.png": 6670,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0_webpack@5.91.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/original2.png": 6526,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0_webpack@5.91.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/photo1.png": 7782,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0_webpack@5.91.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/photo2.jpg": 2637,
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0_webpack@5.91.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/photo3.svg": 1955,
"./node_modules/.pnpm/mini-css-extract-plugin@2.9.0_webpack@5.91.0/node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[1].use[0]!./node_modules/.pnpm/css-loader@7.1.1_webpack@5.91.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@14.2.1_sass@1.75.0_webpack@5.91.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/types/dev.scss": 6030,
"./node_modules/.pnpm/mini-css-extract-plugin@2.9.0_webpack@5.91.0/node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[1].use[0]!./node_modules/.pnpm/css-loader@7.1.1_webpack@5.91.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@14.2.1_sass@1.75.0_webpack@5.91.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/types/editor.scss": 978,
"./node_modules/.pnpm/mini-css-extract-plugin@2.9.0_webpack@5.91.0/node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[1].use[0]!./node_modules/.pnpm/css-loader@7.1.1_webpack@5.91.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/sass-loader@14.2.1_sass@1.75.0_webpack@5.91.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./app/client/src/scss/types/order.scss": 2229,
"./node_modules/font-awesome|sync|nonrecursive|/\\.(otf%7Ceot%7Cttf%7Cwoff%7Cwoff2)$/": 9906
},
"usedIds": [
46,
191,
195,
206,
213,
230,
261,
267,
269,
270,
271,
290,
295,
347,
352,
429,
431,
454,
475,
478,
492,
510,
529,
553,
573,
597,
616,
626,
671,
672,
675,
693,
779,
781,
812,
828,
849,
855,
857,
863,
884,
889,
916,
926,
932,
939,
958,
978
113,
235,
480,
649,
815,
963,
978,
1492,
1501,
1509,
1707,
1747,
1811,
1940,
1955,
2058,
2149,
2229,
2637,
2793,
3144,
3312,
3439,
3484,
4328,
4354,
4648,
4692,
4993,
5102,
5879,
5965,
6030,
6254,
6526,
6670,
6730,
6793,
6881,
7015,
7064,
7528,
7654,
7762,
7782,
7835,
8223,
8227,
8421,
8490,
8614,
8694,
9219,
9906
]
}
}

File diff suppressed because one or more lines are too long

View File

@ -2,12 +2,12 @@
* Add your global events here
*/
import MAP_DRIVER from "@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/drivers/map.google";
//import MAP_DRIVER from '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/drivers/map.mapbox';
import MAP_DRIVER from '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/drivers/map.google'
// import MAP_DRIVER from '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/drivers/map.mapbox';
const CONSTS = {
ENVS: ["xs", "sm", "md", "lg", "xl", "xxl", "xxxl"],
ENVS: ['xs', 'sm', 'md', 'lg', 'xl', 'xxl', 'xxxl'],
MAP_DRIVER,
};
}
export default CONSTS;
export default CONSTS

View File

@ -0,0 +1,26 @@
import '@a2nt/mithril-ui/src/js/ui'
import Events from '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/_events'
const m = require("mithril") // eslint-disable-line
const MainContentContainer = document.getElementById('MainContent')
const MainContent = document.createElement('div')
if (!MainContentContainer.dataset['legacy']) {
MainContent.classList.add('page--container')
MainContentContainer.append(MainContent)
const page = require('@a2nt/mithril-ui/src/js/ui/page/tpl')
m.mount(MainContent, page)
} else {
// legacy fallback
const spinner = document.getElementById('PageLoading')
if (spinner) {
window.addEventListener(`${Events.LOADED}`, () => {
spinner.classList.add('d-none')
})
window.addEventListener(`${Events.AJAX}`, () => {
spinner.classList.add('d-none')
})
}
}

View File

@ -1,58 +1,68 @@
'use strict'
/*
* UI Basics
*/
import '../scss/app.scss';
// import $ from 'jquery';
import '../scss/app.scss'
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/main';
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/main'
/*
* Extra functionality
*/
import '@a2nt/meta-lightbox-js/src/js/app';
import 'bootstrap/js/src/collapse';
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ui/dropdown';
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ui/carousel';
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ui/datepicker';
//import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ui/instagram.feed';
import './_graphql'
import '@a2nt/meta-lightbox-js/src/js/app'
import 'bootstrap/js/src/collapse'
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ui/dropdown'
//import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ui/carousel'
import "@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ui/glide";
// import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ui/datepicker';
// import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ui/instagram.feed';
//import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ui/captcha'
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ui/turnstile'
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ui/password'
/*
* AJAX functionality
*/
//import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ajax/links';
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ajax/online';
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ajax/lazy-images';
// import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ajax/links';
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ajax/online'
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ajax/lazy-images'
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ajax/form'
/*
* Site specific modules
*/
import './layout';
import './layout'
('use strict');
function importAll(r) {
return r.keys().map(r);
/*
* Import fonts and images
*/
function importAll (r) {
return r.keys().map(r)
}
const images = importAll(
importAll(
require.context('../img/', false, /\.(png|webp|jpg|jpeg|gif|svg)$/)
);
const fontAwesome = importAll(
)
importAll(
require.context('font-awesome', false, /\.(otf|eot|ttf|woff|woff2)$/)
);
)
/*
* Service workers
*/
// Register service worker
if ('serviceWorker' in navigator) {
const baseHref = (document.getElementsByTagName('base')[0] || {}).href;
const baseHref = (document.getElementsByTagName('base')[0] || {}).href
const version = (document.querySelector('meta[name="swversion"]') || {})
.content;
.content
if (baseHref) {
navigator.serviceWorker
.register(`${baseHref}sw.js?v=${version}`)
.then(() => {
console.log('Service Worker Registered');
});
console.log('Service Worker Registered')
})
}
}

View File

@ -1,26 +1,25 @@
import Events from "@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/_events";
import Events from '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/_events'
const LayoutUI = ((W) => {
const NAME = "_layout";
const D = document;
const BODY = D.body;
const NAME = '_layout'
const D = document
const init_fonts = () => {
console.log(`${NAME}: init_fonts`);
const initFonts = () => {
console.log(`${NAME}: initFonts`)
const css = D.createElement("link");
css.rel = "stylesheet";
css.type = "text/css";
css.media = "all";
const css = D.createElement('link')
css.rel = 'stylesheet'
css.type = 'text/css'
css.media = 'all'
css.href =
"https://fonts.googleapis.com/css?family=Roboto:ital,wght@0,400;0,700;1,400&display=swap";
D.getElementsByTagName("head")[0].appendChild(css);
};
'https://fonts.googleapis.com/css?family=Roboto:ital,wght@0,400;0,700;1,400&display=swap'
D.getElementsByTagName('head')[0].appendChild(css)
}
const init_analytics = () => {
console.log(`${NAME}: init_analytics`);
/*google analytics */
/*(function(i, s, o, g, r, a, m) {
const initAnalytics = () => {
console.log(`${NAME}: initAnalytics`)
/* google analytics */
/* (function(i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
(i[r] =
i[r] ||
@ -40,12 +39,12 @@ const LayoutUI = ((W) => {
'ga',
);
ga('create', 'UA-********-*', 'auto');
ga('send', 'pageview');*/
};
ga('send', 'pageview'); */
}
W.addEventListener(`${Events.LOADED}`, () => {
init_fonts();
//init_analytics();
});
})(window);
export default LayoutUI;
W.addEventListener(`${Events.LODEDANDREADY}`, () => {
initFonts()
initAnalytics()
})
})(window)
export default LayoutUI

View File

@ -1,3 +1,3 @@
"use strict";
'use strict'
//import '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.map.api';
// import '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.map.api';

View File

@ -1,12 +1,12 @@
"use strict";
'use strict'
import Events from "@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/_events";
// import Events from '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/_events'
// Mapbox API
import "@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ui/map.api";
import "@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/types/map.api.scss";
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/ui/map.api'
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/types/map.api.scss'
/*const LocationUI = (($) => {
/* const LocationUI = (($) => {
// Constants
const W = window;
const D = document;
@ -59,4 +59,4 @@ import "@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/types/map.api.s
})($);
export default LocationUI;*/
export default LocationUI; */

View File

@ -1,4 +1,15 @@
"use strict";
'use strict'
import "../../scss/cms.scss";
//import '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.image-position';
import '../../scss/_cms.scss'
import "@a2nt/meta-lightbox-js/src/js/app";
(function ($) {
$.entwine("ss", ($) => {
$('[data-toggle="lightbox"]').entwine({
onmatch() {
console.log("Init lightbox links at CMS");
window.dispatchEvent(new Event("MetaWindow.initLinks"));
},
});
});
})(jQuery);

View File

@ -1,49 +1,3 @@
"use strict";
'use strict'
import "../../scss/types/dev.scss";
/*import $ from 'jquery';
import Events from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_events';
const DevUI = ($ => {
// Constants
const W = window;
const D = document;
const $Body = $('body');
const NAME = 'DevUI';
class DevUI {
// Static methods
static init() {
this.dispose();
console.log(`Initializing: ${NAME}`);
const $el = $('#DevUtilities');
this.$el = $el;
const $orig = $el.find('.original');
$el.find('.toggle-original').on('click', () => {
if ($orig.hasClass('d-none')) {
$orig.removeClass('d-none');
} else {
$orig.addClass('d-none');
}
});
}
static dispose() {
console.log(`Destroying: ${NAME}`);
}
}
$(W).on(`${Events.AJAX} ${Events.LOADED}`, () => {
DevUI.init();
});
return DevUI;
})($);
export default DevUI;*/
import '../../scss/types/dev.scss'

View File

@ -1,14 +1,3 @@
@import "~@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/scss/types/cms";
.notifications-list {
.alert {
.btn-close {
display: none;
}
}
}
.btn-outline-primary,
.btn-primary {
color: #fff;
}
@import "./variables";
@import "~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/types/cms";
@import "~@a2nt/meta-lightbox-js/src/scss/app";

View File

@ -1,34 +1,33 @@
// Add your site-wide, but not content editor typography styling
.bg-dark {
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6,
.typography,
a {
color: $white;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6,
.typography,
a {
color: $white;
}
}
.typography {
@include clearfix;
@include clearfix;
@import "./types/editor";
@import "./types/editor";
a.btn-primary {
color: $white;
}
a.btn-primary {
color: $white;
}
img {
border: 0;
}
img {
border: 0;
}
}

View File

@ -2,9 +2,10 @@
@import "~@a2nt/meta-lightbox-js/src/scss/app";
@import "~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/libs/bootstrap";
@import "~bootstrap/scss/card";
@import "~bootstrap/scss/accordion";
@import "~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/ui/datepicker";
//@import "~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/ui/datepicker";
@import "~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/layout";
@import "~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/libs/silverstripe";

View File

@ -1,12 +1,78 @@
.carousel-caption {
font-size: 3rem;
padding: 6rem 0;
.carousel {
&-caption {
font-size: 3rem;
padding: 6rem 0;
}
&-title {
font-size: 4rem;
}
.carousel-title {
font-size: 4rem;
}
&-content {
font-style: italic;
}
.carousel-content {
font-style: italic;
}
&__img {
min-width: 100%;
background-size: cover;
}
}
.glide__slide {
video {
pointer-events: none;
background: $black;
aspect-ratio: 1920/549;
min-width: 100%;
max-width: 100%;
min-height: 20rem;
object-fit: cover;
&::after {
position: absolute;
z-index: 9;
top: 0;
right: 0;
bottom: 0;
left: 0;
display: block;
content: "";
}
}
video::-webkit-media-controls,
video::-moz-media-controls,
video::-o-media-controls,
video::-ms-media-controls,
video::-webkit-media-controls-enclosure,
video::-webkit-slider-thumb,
video::-moz-range-track,
video::-moz-range-thumb {
display: none !important;
}
}
.a2nt__elementalbasics__elements__sliderelement {
padding: 0;
.element__container {
max-width: none;
padding: 0;
}
.slide-link__media {
opacity: 0;
}
.carousel-item {
&:hover,
&:focus {
.carousel__btn {
color: $white !important;
@extend .btn-primary,
:hover;
}
}
}
}

View File

@ -9,3 +9,30 @@ body {
padding-top: 2 * $element-reduced-spacer-y;
padding-bottom: 2 * $element-reduced-spacer-y;
}*/
// disable animation
main {
&.loaded,
&.loading {
animation: none;
}
}
#PageBreadcumbs {
padding-bottom: 0;
margin-bottom: -2rem;
}
.page-header-element {
display: none !important;
}
// hide content loading anmation by default
//.form-container,
main {
&.loaded,
&.loading {
animation: none;
}
}

View File

@ -1,37 +1,29 @@
#SiteWideMessage {
text-align: center;
text-align: center;
.alert {
margin-bottom: 0;
.alert {
margin-bottom: 0;
.btn-close {
float: right;
margin-top: -0.5rem;
.btn-close {
float: right;
margin-top: -.5rem;
}
}
}
}
#Header {
.nav-container {
align-items: center;
display: flex;
justify-content: flex-end;
position: static;
}
position: relative;
z-index: 9;
.logo {
img {
width: 6.5vw;
@media (orientation: portrait) {
width: 20vw;
}
.element {
margin-top: 0;
}
}
.tagline {
display: inline-block;
font-size: 1.2rem;
margin-left: 2em;
}
.nav-container {
position: static;
display: flex;
align-items: center;
justify-content: flex-end;
}
}

View File

@ -1,7 +1,91 @@
#Header {
.element--nav {
padding: 0;
}
}
#Navigation {
padding: 0;
.navbar-nav {
width: 100%;
padding: 0;
align-items: stretch;
justify-content: stretch;
}
.nav {
&-item {
flex: 1 1;
}
&-link {
width: 100%;
background: none;
align-items: center;
justify-content: center;
&.active {
}
&.section {
}
&[aria-expanded="true"],
&:hover,
&:focus {
}
}
}
.dropdown-toggle {
&:after {
display: none;
}
}
@media (min-width: $full-body-min-width) {
.dropdown-toggle-touch {
display: none !important;
}
.dropdown-toggle-notouch {
display: flex !important;
}
}
.dropdown-menu {
top: 100%;
min-width: 18em;
border: 0;
.dropdown-menu {
top: 0;
}
}
.dropdown-item {
&.active,
&:active {
}
.nav {
&-item {
&[aria-expanded="true"],
&:hover,
&:focus {
}
}
&-link {
justify-content: flex-start;
}
}
}
}
#PageBreadcumbs {
position: relative;
z-index: 2;
position: relative;
z-index: 2;
}

View File

@ -1,2 +0,0 @@
@import "../variables";
@import "~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/types/cms";

View File

@ -1,3 +1,3 @@
$white: #fff;
$black: #000;
$gray-1: #212529;
$gray-500: #212529;

View File

@ -3,6 +3,7 @@
// First Define Bootstrap and Webkit bootstrap UI variables
//
@import "~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/mixings";
@import "./ui";
@import "~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/variables";
$headings-margin-bottom: $spacer;

View File

@ -2,10 +2,13 @@
// Bootstrap and Webkit bootstrap UI variables
$html-font-size: 14px;
$font-family-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
$font-family-base: "Roboto", $font-family-sans-serif;
$font-family-base: "Roboto", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
$body-bg: $white;
$body-color: $gray-1;
$body-color: $gray-500;
$sidebar-nav-link-hover-color: $body-color;
// screen size - 32px (ex. 1400 - 32 = 1368)
$grid-breakpoints: (

View File

@ -0,0 +1,16 @@
<?php
namespace App\Pages\Controllers;
use PageController;
/**
* Class \App\Pages\Controllers\HomePageController
*
* @property \App\Pages\HomePage $dataRecord
* @method \App\Pages\HomePage data()
* @mixin \App\Pages\HomePage
*/
class HomePageController extends PageController
{
}

View File

@ -2,9 +2,15 @@
namespace App\Pages;
use App\Pages\Controllers\HomePageController;
use Page;
/**
* Class \App\Pages\HomePage
*
*/
class HomePage extends Page
{
private static $icon_class = 'font-icon-p-home';
private static $controller_name = HomePageController::class;
}

View File

@ -1,9 +0,0 @@
<?php
namespace App\Pages;
use PageController;
class HomePageController extends PageController
{
}

View File

@ -5,14 +5,23 @@
//namespace App\Pages;
use SilverStripe\CMS\Model\SiteTree;
use DNADesign\Elemental\Models\ElementContent;
use SilverStripe\FontAwesome\FontAwesomeField;
use TractorCow\Fluent\Extension\FluentSiteTreeExtension;
/**
* Class \Page
*
* @property bool $InheritSideBar
* @property string $BlockIcon
* @property int $SideBarID
* @property int $ElementalAreaID
* @method \SilverStripe\Widgets\Model\WidgetArea SideBar()
* @method \DNADesign\Elemental\Models\ElementalArea ElementalArea()
* @mixin \DNADesign\Elemental\Extensions\ElementalPageExtension
* @mixin \A2nt\CMSNiceties\Widgets\WidgetPageExtension
* @mixin \A2nt\CMSNiceties\GraphQL\ObjectGraphQlEx
*/
class Page extends SiteTree
{
private static $default_container_class = 'container';
protected $_cached = [];
private static $db = [
'BlockIcon' => 'Varchar(255)',
];
@ -21,12 +30,6 @@ class Page extends SiteTree
'ElementalAreaID',
];
public static function DefaultContainer()
{
return self::config()->get('default_container_class');
}
public function getSettingsFields()
{
$fields = parent::getSettingsFields();
@ -37,57 +40,4 @@ class Page extends SiteTree
return $fields;
}
/*
* Shows custom summary of the post, otherwise
* Displays summary of the first content element
*/
public function Summary($wordsToDisplay = 30)
{
if (isset($this->_cached['summary'.$wordsToDisplay])) {
return $this->_cached['summary'.$wordsToDisplay];
}
$summary = $this->getField('Summary');
if ($summary) {
$this->_cached['summary'.$wordsToDisplay] = $summary;
return $this->_cached['summary'.$wordsToDisplay];
}
$element = ElementContent::get()->filter([
'ParentID' => $this->ElementalArea()->ID,
'HTML:not' => [null],
])->first();
if ($element) {
$this->_cached['summary'.$wordsToDisplay] = $element->dbObject('HTML')->Summary($wordsToDisplay);
return $this->_cached['summary'.$wordsToDisplay];
}
$content = $this->getField('Content');
if ($content) {
$this->_cached['summary'.$wordsToDisplay] = $this->dbObject('Content')->Summary($wordsToDisplay);
return $this->_cached['summary'.$wordsToDisplay];
}
$this->_cached['summary'.$wordsToDisplay] = false;
return $this->_cached['summary'.$wordsToDisplay];
}
public function CSSClass()
{
return str_replace(['\\'], '-', $this->getField('ClassName'));
}
protected function onBeforeWrite()
{
parent::onBeforeWrite();
if (class_exists(FluentSiteTreeExtension::class) && !$this->isDraftedInLocale() && $this->isInDB()) {
$elementalArea = $this->ElementalArea();
$elementalAreaNew = $elementalArea->duplicate();
$this->setField('ElementalAreaID', $elementalAreaNew->ID);
}
}
}

View File

@ -4,229 +4,80 @@
// extends global PageController class
//namespace App\Pages;
use SilverStripe\Control\Controller;
use A2nt\CMSNiceties\Ajax\Ex\AjaxControllerEx;
use SilverStripe\CMS\Controllers\ContentController;
use SilverStripe\Control\Director;
use SilverStripe\Core\Config\Config;
use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\View\ArrayData;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\ORM\PaginatedList;
use SilverStripe\Forms\Form;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\RequiredFields;
use SilverStripe\Control\HTTPRequest;
use SilverStripe\ORM\ArrayList;
use DNADesign\Elemental\Models\ElementContent;
use DNADesign\Elemental\Models\ElementalArea;
use DNADesign\ElementalUserForms\Control\ElementFormController;
use A2nt\ElementalBasics\Models\TeamMember;
use A2nt\CMSNiceties\Templates\DeferredRequirements;
use SilverStripe\Control\Controller;
use SilverStripe\Control\Director;
use SilverStripe\View\SSViewer;
/**
* Class \PageController
*
* @property \Page $dataRecord
* @method \Page data()
* @mixin \Page
* @mixin \A2nt\CMSNiceties\Extensions\PageControllerEx
* @mixin \A2nt\CMSNiceties\Ajax\Ex\AjaxControllerEx
*/
class PageController extends ContentController
{
private static $allowed_actions = [
'SearchForm',
];
private static $searchable_elements = [
ElementContent::class,
];
private static $searchable_objects = [
TeamMember::class,
];
private $site_message;
private $search_term;
protected function init()
{
DeferredRequirements::Auto();
return parent::init();
}
public function index(HTTPRequest $request)
{
$search = $request->getVar('q');
if ($search) {
return $this->doSearch($search);
}
return $this->render();
}
public function setAction($action)
{
$this->action = $action;
}
private static $graphql_resources = [];
private static $ajax_resources = [];
public function ElementalArea()
{
if (!$this->getAction() || $this->getAction() === 'index') {
return ElementalArea::get()->byID($this->getField('ElementalAreaID'));
return $this->dataRecord->ElementalArea();
}
public function getViewer($action)
{
// Manually set templates should be dealt with by Controller::getViewer()
if (!empty($this->templates[$action])
|| !empty($this->templates['index'])
|| $this->template
) {
return parent::getViewer($action);
}
return false;
}
// Prepare action for template search
$action = $action === 'index' ? '' : '_' . $action;
public function CurrentElement()
{
$controller_curr = Controller::curr();
if (is_a($controller_curr, ElementFormController::class)) {
return $controller_curr;
$templatesFound = [];
// Find templates for the record + action together - e.g. Page_action.ss
if ($this->dataRecord instanceof SiteTree) {
$templatesFound[] = $this->dataRecord->getViewerTemplates($action);
}
return false;
}
// Find templates for the controller + action together - e.g. PageController_action.ss
$templatesFound[] = SSViewer::get_templates_by_class(static::class, $action, Controller::class);
public function SearchForm(): Form
{
$config = $this->SiteConfig();
return Form::create(
$this,
__FUNCTION__,
FieldList::create(
TextField::create('q', 'Search ...')
->setAttribute('placeholder', 'Search '.$config->getField('Title').' Website')
),
FieldList::create(
FormAction::create(
'doSearch',
'Find it!'
)
->setUseButtonTag(true)
->addExtraClass('btn-secondary')
->setButtonContent(
'<i class="fas fa-search"></i>'
.'<span class="sr-only">Search</span>'
)
),
RequiredFields::create(['q'])
)->setFormMethod('POST');
}
public function doSearch($data)
{
$this->search_term = is_array($data) ? $data['q'] : $data;
return $this->renderWith([__CLASS__.'_search', 'Page']);
}
private static function getSearchObjects($classNames, $term): ArrayList
{
$elements = ArrayList::create();
foreach ($classNames as $class) {
$fields = Config::inst()->get($class, 'frontend_searchable_fields');
$find = array_combine($fields, $fields);
$find = array_map(static function () use ($term) {
return $term;
}, $find);
$elements->merge($class::get()->filterAny($find)->sort('Created DESC'));
// Find templates for the record without an action - e.g. Page.ss
if ($this->dataRecord instanceof SiteTree) {
$templatesFound[] = $this->dataRecord->getViewerTemplates();
}
return $elements;
}
// Find the templates for the controller without an action - e.g. PageController.ss
$templatesFound[] = SSViewer::get_templates_by_class(static::class, "", Controller::class);
public function SearchResults()
{
$term = $this->search_term;
if (!$term) {
return false;
$tpls = array_merge(...$templatesFound);
// inject AJAX processing
if (Director::is_ajax()) {
return AjaxControllerEx::processAJAX($tpls);
}
$results = ArrayList::create();
return SSViewer::create($tpls);
}
// get pages by title and content
$pages = SiteTree::get()->filterAny([
'Title:PartialMatch' => $term,
'Content:PartialMatch' => $term,
])->sort('Created DESC');
protected function prepareResponse($response)
{
parent::prepareResponse($response);
$results->merge($pages);
// get pages by elements
$elements = self::getSearchObjects(
self::config()->get('searchable_elements'),
$term
);
foreach ($elements as $element) {
$page = Page::get()->filter('ElementalAreaID', $element->getField('ParentID'))->first();
if (!$page) {
continue;
}
$results->push($page);
// inject AJAX processing
if (Director::is_ajax()) {
$response = $this->getResponse();
$this->prepareAjaxResponse($response);
}
// get pages by objects
$elements = self::getSearchObjects(
self::config()->get('searchable_objects'),
$term
);
foreach ($elements as $element) {
$page = $element->Page();
if (!$page) {
continue;
}
$results->push($page);
}
$results->removeDuplicates();
return ArrayData::create([
'Title' => 'You searched for: "'.$term.'"',
'Results' => PaginatedList::create($results),
]);
}
public function getParentRecursively()
{
return $this->Level(1);
}
public static function setSiteWideMessage($message, $type, $request = null)
{
$request = $request ? $request : Controller::curr()->getRequest();
$request->getSession()->set(
'SiteWideMessage',
ArrayData::create([
'Message' => $message,
'Type' => $type,
])
);
return true;
}
public function getSiteWideMessage()
{
$request = $this->getRequest();
if ($request->isGET() && !$this->site_message) {
$session = $request->getSession();
$this->site_message = $session->get('SiteWideMessage');
$session->clear('SiteWideMessage');
}
return $this->site_message;
}
public function CurrentTime()
{
return DBDatetime::now();
}
public function isDev()
{
return Director::isDev();
}
}

View File

@ -0,0 +1,17 @@
<?php
namespace App\Tasks;
use A2nt\CMSNiceties\Tasks\BuildTask;
class MoveOldData extends BuildTask
{
protected $title = 'Move Old Data';
protected $description = 'Move Old Data';
protected $enabled = false;
public function run($request)
{
die('Done!');
}
}

View File

@ -3,9 +3,9 @@
<% include Content ExcludeHeader=true %>
<%-- div class="page-content page-content-main page-content-extra">
<div class="element">
<div class="element-container $DefaultContainer">
<!-- Some exta page type specific content -->
</div>
</div>
<div class="element">
<div class="element-container $DefaultContainer">
<!-- Some exta page type specific content -->
</div>
</div>
</div --%>

View File

@ -1,7 +1,7 @@
<div
id="$Anchor"
class="element $SimpleClassName.LowerCase
<% if $LinkedElement %> $LinkedElement.SimpleClassName.LowerCase<% end_if %>
<%-- if $LinkedElement %> $LinkedElement.SimpleClassName.LowerCase<% end_if --%>
<% if $StyleVariant %> $StyleVariant<% end_if %>
<% if $ExtraClass %> $ExtraClass<% end_if %>"
>

View File

@ -0,0 +1,21 @@
<% if $Title && $ShowTitle %><h2 class="element__title">$Title</h2><% end_if %>
<% if $EmbeddedObject %>
<div class="row element__oembed__object">
<div class="col-md-12 card">
$EmbeddedObject
<div class="card-body">
<% if $EmbeddedObject.Title %><h3 class="card-title">$EmbeddedObject.Title</h3><% end_if %>
<% if $EmbeddedObject.Description %><p class="card-text">$EmbeddedObject.Description</p><% end_if %>
</div>
</div>
</div>
<% else_if $VideoFile %>
<% with $VideoFile %>
<video controls autoplay="true" muted="true" loop="true" width="100%">
<source src="{$Link}" type="video/mp4">
Download the
<a href="{$Link}">video</a>.
</video>
<% end_with %>
<% end_if %>

View File

@ -1,4 +1,16 @@
<style>
<%-- Some prestyling to prevent jumpings --%>
button{background:none;border:0}
.container{margin-left:auto;margin-right:auto;padding-left:0.75rem;padding-right:0.75rem}
@media (min-width: 1368px){.container{max-width:1180px}}
.meta-MetaWindow {position:fixed}
.collapse:not(.show),.offline-message:not(.show){display:none}
.row {display:flex;justify-content:space-between}
.breadcrumb{list-style:none}
.breadcrumb-item{display:inline-block}
<%-- always show scroll bar --%>
html {overflow-y:scroll}
<%-- Site Specific --%>
@keyframes lds-ellipsis1 {
0% {
transform: scale(0);

View File

@ -1,3 +1,4 @@
<% cached 'Navigation', $NavID, $List('SilverStripe\CMS\Model\SiteTree').max('LastEdited'), $List('SilverStripe\CMS\Model\SiteTree').count() %>
<nav id="{$NavID}" class="navbar navbar-expand-lg">
<button
class="navbar-toggler"
@ -19,3 +20,4 @@
</div>
</div>
</nav>
<% end_cached %>

View File

@ -1,3 +1 @@
<div id="PageContainer" class="page{$CSSClass} action{$Action}">
<% include Content %>
</div>
<% include Content %>

View File

@ -1,56 +1,59 @@
<% with $SearchResults %>
<div id="PageContainer" class="page{$CSSClass} pageSearch action{$Action}">
<div class="element">
<div class="element page-header-element d-block no-elements">
<div class="element-container {$Top.DefaultContainer}">
<h1 class="page-header">
$Title
</h1>
</div>
<div class="element page-header-element d-block no-elements">
<div class="element-container {$Top.DefaultContainer}">
<h1 class="page-header">
$Title
</h1>
</div>
</div>
<div class="page-content page-content-main page-content-extra">
<div class="elemental-area">
<div class="element">
<div class="element-container {$Top.DefaultContainer}">
<% if $Results %>
<div id="SearchAccordion{$ID}">
<% loop $Results %>
<div class="card">
<div class="card-header" id="Heading{$ID}{$Up.ID}">
<h3
class="mb-0 a"
data-bs-toggle="collapse"
data-bs-target="#Collapse{$ID}{$Up.ID}"
aria-expanded="false"
aria-controls="Collapse{$ID}{$Up.ID}"
>
$Title
<i class="fas fa-plus accordion-icon pull-right"></i>
</h3>
</div>
<div class="element element-search-results">
<div class="element-container {$Top.DefaultContainer}">
<h2 class="search-header">
$Title
</h2>
<% if $Results %>
<div id="SearchAccordion{$ID}" class="accordion accordion-flush">
<%-- loop $Results %>
<div class="accordion-item">
<h3 class="accordion-header">
<button
class="accordion-button collapsed"
type="button"
data-bs-toggle="collapse"
data-bs-target="#Collapse{$ID}{$Up.ID}"
aria-expanded="false"
aria-controls="Collapse{$ID}{$Up.ID}"
>
$Title
</button>
</h3>
<div
id="Collapse{$ID}{$Up.ID}"
class="collapse"
aria-labelledby="Heading{$ID}{$Up.ID}"
data-bs-parent="#SearchAccordion{$Up.ID}"
>
<div class="card-body">
<p>$Summary(100)</p>
<a href="{$Link}">Learn More</a>
</div>
</div>
<div
id="Collapse{$ID}{$Up.ID}"
class="accordion-collapse collapse"
aria-labelledby="Heading{$ID}{$Up.ID}"
data-bs-parent="#SearchAccordion{$Up.ID}"
>
<div class="accordion-body">
<p>$Summary(100)</p>
<a href="{$Link}">Learn More</a>
</div>
<% end_loop %>
</div>
</div>
<% else %>
<h3>Nothing was found.</h3>
<% end_if %>
</div>
<% end_loop --%>
<% loop $Results %>
<h3 class="accordion-header">
<a href="$Link" class="accordion-button collapsed">
$Title
<small>Go to page &raquo;</small>
</a>
</h3>
<% end_loop %>
</div>
<% else %>
<h3 class="alert alert-danger not-found">Nothing was found.</h3>
<% end_if %>
</div>
</div>
</div>
<% end_with %>

View File

@ -5,6 +5,8 @@
<% else_if $Type == 'Email' %>
<i class="fas fa-envelope-open"></i>
<% end_if %>
$Title
<span class="link-label">
$Title
</span>
</a>
<% end_if %>
<% end_if %>

View File

@ -1,4 +1,4 @@
<% require css("app/client/dist/css/order.css") %>
<% require css("app/client/dist/css/app_order.css") %>
<%-- As Order.ss is also used in emails, avoid div, paragraph and heading elements --%>
<% include SilverShop\Model\Order_Address %>

View File

@ -1,4 +1,4 @@
<div class="page-content">
<div class="cart-page cart-page--checkout page-content">
<div class="checkout element">
<% if $PaymentErrorMessage %>
<div class="container">

View File

@ -1,22 +1,29 @@
<div class="blog-post__info blog-post-info">
<%-- div class="published-date">
<div class="day">$PublishDate.Format("d")</div>
<div class="month">$PublishDate.Format("MMM")</div>
</div --%>
<div class="blog-post blog-post--info">
<% if $FeaturedImage %>
<div class="blog-post__img">
$FeaturedImage.Fill(300,200)
</div>
<% end_if %>
<div class="blog-post__body blog-body">
<h2 class="blog-post__title card-title title h3">
$Title
</h2>
<h2 class="blog-post__title card-title title h3">
$Title
</h2>
<div class="blog-post__summary card-text typography summary">
$Summary
</div>
<div class="blog-post__date">
<span class="blog-post__date__m">$PublishDate.Format("MMMM")</span>
<span class="blog-post__date__d">$PublishDate.Format("dd"),</span>
<span class="blog-post__date__y">$PublishDate.Format("YYYY")</span>
</div>
<a href="{$Link}" class="blog-post__link graphql-page stretched-link">
<%t SilverStripe\\Blog\\Model\\Blog.READMORE "Read More" %> &raquo;
</a>
<div class="blog-post__summary card-text typography summary">
$Summary
</div>
<% include SilverStripe\\Blog\\EntryMeta %>
</div>
<a href="{$Link}" class="blog-post__link graphql-page stretched-link">
<%t SilverStripe\\Blog\\Model\\Blog.READMORE "Read More" %> &raquo;
</a>
<% include SilverStripe\\Blog\\EntryMeta %>
</div>
</div>

View File

@ -1,57 +1,62 @@
<div class="blog-post__meta blog-post-meta text-muted">
<% if $Categories.exists %>
<div class="blog-post__categories categories">
<%t SilverStripe\\Blog\\Model\\Blog.PostedIn "Posted in" %>
<% loop $Categories %>
<a href="$Link" title="$Title" class="category">$Title</a><% if not Last %>, <% else %>;<% end_if %>
<% end_loop %>
</div>
<% end_if %>
<div class="blog-post__meta text-muted">
<% if $Categories.exists %>
<div class="blog-post__categories categories">
<span class="val-title"><%t SilverStripe\\Blog\\Model\\Blog.PostedIn "Posted in" %></span>
<% loop $Categories %>
<a href="$Link" title="$Title" class="blog-post__cat">$Title</a><% if not Last %>, <% else %>;<% end_if %>
<% end_loop %>
</div>
<% end_if %>
<% if $Tags.exists %>
<div class="blog-post__tags tags">
<%t SilverStripe\\Blog\\Model\\Blog.Tagged "Tagged" %>
<% loop $Tags %>
<a href="$Link" title="$Title" class="tag">$Title</a><% if not Last %>, <% else %>;<% end_if %>
<% end_loop %>
</div>
<% end_if %>
<% if $Tags.exists %>
<div class="blog-post__tags">
<span class="val-title"><%t SilverStripe\\Blog\\Model\\Blog.Tagged "Tagged" %></span>
<% loop $Tags %>
<a href="$Link" title="$Title" class="blog-post__tag">$Title</a><% if not Last %>, <% else %>;<% end_if %>
<% end_loop %>
</div>
<% end_if %>
<div class="blog-post__ago posted-ago">
<%t SilverStripe\\Blog\\Model\\Blog.Posted "Posted" %>
<a href="$MonthlyArchiveLink">$PublishDate.ago</a>
</div>
<div class="blog-post__ago">
<span class="val-title"><%t SilverStripe\\Blog\\Model\\Blog.Posted "Posted" %></span>
<a href="$MonthlyArchiveLink" class="val">$PublishDate.ago</a>
</div>
<% if $Credits %>
<div class="blog-post__credits credits">
<%t SilverStripe\\Blog\\Model\\Blog.By "by" %>
<% if $Credits %>
<div class="blog-post__credits">
<span class="val-title"><%t SilverStripe\\Blog\\Model\\Blog.By "by" %></span>
<% loop $Credits %>
<% if not $First && not $Last %>, <% end_if %>
<% if not $First && $Last %> <%t SilverStripe\\Blog\\Model\\Blog.AND "and" %> <% end_if %>
<% if $URLSegment && not $Up.ProfilesDisabled %>
<a href="$URL" class="blog-post__credit credit">$Name.XML</a>
<% else %>
<span class="blog-post__credit credit">$Name.XML</span>
<% end_if %>
<% end_loop %>
</div>
<% end_if %>
<% loop $Credits %>
<% if not $First && not $Last %>, <% end_if %>
<% if not $First && $Last %> <%t SilverStripe\\Blog\\Model\\Blog.AND "and" %> <% end_if %>
<% if $URLSegment && not $Up.ProfilesDisabled %>
<a href="$URL" class="blog-post__credit">$Name.XML</a>
<% else %>
<span class="blog-post__credit">$Name.XML</span>
<% end_if %>
<% end_loop %>
</div>
<% end_if %>
<% if $Comments.exists %>
<a class="blog-post__comments comments" href="{$Link}#comments-holder">
<span class="count">$Comments.count</span>
<%t SilverStripe\\Blog\\Model\\Blog.Comments "comments" %>
</a>
<% end_if %>
<% if $Comments.exists %>
<a class="blog-post__comments" href="{$Link}#comments-holder">
<span class="val">$Comments.count</span>
<span class="val-title"><%t SilverStripe\\Blog\\Model\\Blog.Comments "comments" %></span>
</a>
<% end_if %>
<% if $MinutesToRead %>
<div class="blog-post__reading-time reading-time">
<% if $MinutesToRead < 1 %>
<%t SilverStripe\\Blog\\Model\\Blog.LessThanAMinuteToRead "Less than a minute to read" %>
<% else %>
$MinutesToRead <%t SilverStripe\\Blog\\Model\\Blog.MinutesToRead "Minute(s) to read" %>
<% end_if %>
</div>
<% end_if %>
<% if $MinutesToRead %>
<div class="blog-post__read-time">
<% if $MinutesToRead < 1 %>
<span class="val val--less">
<%t SilverStripe\\Blog\\Model\\Blog.LessThanAMinuteToRead "Less than a minute to read" %>
</span>
<% else %>
<span class="val">
$MinutesToRead
</span>
<span class="val-title"><%t SilverStripe\\Blog\\Model\\Blog.MinutesToRead "Minute(s) to read" %></span>
<% end_if %>
</div>
<% end_if %>
</div>

View File

@ -1,23 +1,49 @@
<% require css('silverstripe/blog: client/dist/styles/main.css') %>
<div id="PageContainer" class="page{$CSSClass} action{$Action}">
<% include Content ExcludeHeader=true %>
<div class="blog-entry content-container <% if $SideBarView %>unit size3of4<% end_if %>">
<div class="page-content">
<div class="element page-header-element d-block">
<div class="element-container $DefaultContainer">
<%t SilverStripe\\Blog\\Model\\Blog.PostsByUser 'Posts by {firstname} {surname} for {title}' firstname=$CurrentProfile.FirstName surname=$CurrentProfile.Surname title=$Title %>
</div>
</div>
<% include SilverStripe\\Blog\\MemberDetails %>
<% if $PaginatedList.Exists %>
<div class="list_blogpost">
<% loop $PaginatedList %>
<div class="element element__blogpost element__blogpost__short">
<div class="element-container $Top.DefaultContainer">
<% include SilverStripe\Blog\Includes\BlogPostInfo %>
</div>
</div>
<% end_loop %>
</div>
<% else %>
<div class="element element__no_blogposts">
<div class="element-container $DefaultContainer">
<p class="blog__no-posts alert alert-info alert-block">
<%t SilverStripe\\Blog\\Model\\Blog.NoPosts 'There are no posts' %>
</p>
</div>
</div>
<% end_if %>
<% if $PaginatedList.Exists %>
<h2><%t SilverStripe\\Blog\\Model\\Blog.PostsByUser 'Posts by {firstname} {surname} for {title}' firstname=$CurrentProfile.FirstName surname=$CurrentProfile.Surname title=$Title %></h2>
<% loop $PaginatedList %>
<% include SilverStripe\\Blog\\PostSummary %>
<% end_loop %>
<% end_if %>
$Form
$CommentsForm
<% with $PaginatedList %>
<% include SilverStripe\\Blog\\Pagination %>
<% end_with %>
<div class="element element__pagination">
<div class="element-container $DefaultContainer">
<% with $PaginatedList %>
<% include Objects\Pagination %>
<% end_with %>
</div>
</div>
<% if $CommentsForm %>
<div class="element element__comments blog__comments">
<div class="element-container $DefaultContainer">
$CommentsForm
</div>
</div>
<% end_if %>
</div>
</div>
<% include SilverStripe\\Blog\\BlogSideBar %>
<%-- include SilverStripe\\Blog\\BlogSideBar --%>

View File

@ -3,11 +3,18 @@
<ul class="list-unstyled list-inline">
<% loop $Categories %>
<li class="list-inline-item">
<a href="$Link">
<a href="$Link" class="<% if $Up.Controller.getParentController.CurrentCategory.ID == $ID %>active<% end_if %>">
<span class="text">$Title</span>
</a>
</li>
<% end_loop %>
<% if $Controller.getParentController.CurrentCategory %>
<li class="list-inline-item">
<a href="$Controller.getParentController.Link" class="view-all">
<span class="text">View All</span>
</a>
</li>
<% end_if %>
</ul>
</div>
<% end_if %>

View File

@ -0,0 +1,96 @@
<html>
<head>
<title>Site health: $Status</title>
<style>
* {
font-family: Helvetica, Arial;
font-size: 12px;
}
.subtext {
margin-top: -10px;
font-size: 10px;
}
h1 {
font-size: 30px;
margin-bottom: 3px;
margin-left: 8px;
}
h2 {
font-size: 16px;
margin: 2px 0 10px 8px;
}
p {
margin-left: 10px;
}
table {
border-collapse: collapse;
}
table th {
color: white;
background-color: #777;
/*border: 1px #aaa solid;*/
padding: 10px;
text-align: left;
}
table td {
background-color: #eee;
/*border: 1px #ddd solid;*/
padding: 5px 10px;
}
table tr:nth-child(odd) td {
background-color: #ddd;
}
.OK {
color: green;
}
.WARNING {
color: orange;
font-weight: bold;
}
.ERROR {
color: red;
font-weight: bold;
}
.extra-links a {
display: block;
margin: 1rem 0;
}
</style>
</head>
<body>
<h1 class="$Status">$Title: $Status</h1>
<h2 class="website">Site: $URL</h2>
<div class="extra-links">
<a href="/dev/tasks/DataIntegrityTest/?do=obsoletefields">TEST DB Integrity</a>
<a href="/dev/tasks/testemail">Test SilverStripe mailer</a>
</div>
<% if $IncludeDetails %>
<table>
<tr><th>Check</th> <th>Status</th> <th>Message</th></tr>
<% loop $Details %>
<tr><td>$Check</td> <td class="$Status">$Status</td> <td>$Message.XML</td></tr>
<% end_loop %>
</table>
<% end_if %>
<% if $ShouldPass %>
<p>Site is available</p>
<p class="subtext">(you may check for the presence of the text 'Site is available' rather than an HTTP $ErrorCode error on this page, if you prefer.<% if not $IncludeDetails %> Full details are available for logged in users at <a href="{$AbsoluteBaseURL}dev/check/">dev/check</a><% end_if %>)</p>
<% else %>
<% if $Name == "check" %>
<p><b>A subsystem of the site is unavailable, but the site remains operational</b></p>
<% else %>
<p><b>Site is not available</b></p>
<% end_if %>
<% end_if %>
</body>
</html>

View File

@ -1,8 +1,9 @@
<div id="$Name" class="form__field field<% if $extraClass %> $extraClass<% end_if %>">
<% if $Title %><label class="field__label field__label-left left" for="$ID">$Title</label><% end_if %>
<div id="$Name" class="form-floating form__field field<% if $extraClass %> $extraClass<% end_if %>">
<div class="field__content middleColumn">
$Field
<div class="form-floating">
$Field
<% if $Title %><label for="$ID">$Title</label><% end_if %>
</div>
</div>
<% if $Title && $RightTitle %>

@ -1 +0,0 @@
Subproject commit 57f2097c063461403df25c52fd5302f3ccc96f9c

View File

@ -3,32 +3,31 @@
* to SilverStripe i18n js file in client/lang
* Quick and dirty node script!
*/
var fs = require('fs');
var path = require('path');
const fs = require('fs')
const path = require('path')
const PATHS = {
SRC: path.resolve('client/src/lang'),
DIST: path.resolve('client/lang'),
};
DIST: path.resolve('client/lang')
}
console.log('Writing SS i18n JS lang files...');
console.log('Writing SS i18n JS lang files...')
fs.readdir(PATHS.SRC, function(err, files)
{
files.forEach(function (file) {
var lang = file.split('.').shift();
fs.readFile(PATHS.SRC + '/' + file, "utf8", function(err, data) {
if (err) { console.log(err); }
var fileData = `if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
fs.readdir(PATHS.SRC, function (err, files) {
files.forEach(function (file) {
const lang = file.split('.').shift()
fs.readFile(PATHS.SRC + '/' + file, 'utf8', function (err, data) {
if (err) { console.log(err) }
const fileData = `if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
if(typeof(console) != 'undefined') console.error('Class ss.i18n not defined');
} else {
ss.i18n.addDictionary('${lang}', ${data});
}`;
}`
fs.writeFile(PATHS.DIST + '/' + lang + '.js', fileData, "utf8", function(err) {
if (err) { console.log(err); }
console.log("Saved " + lang + '.js');
});
});
});
});
fs.writeFile(PATHS.DIST + '/' + lang + '.js', fileData, 'utf8', function (err) {
if (err) { console.log(err) }
console.log('Saved ' + lang + '.js')
})
})
})
})

BIN
bin/composer Normal file

Binary file not shown.

View File

@ -1,100 +1,126 @@
{
"name": "a2nt/silverstripe-webpack",
"type": "silverstripe-recipe",
"description": "SilverStripe WebPack boilerplate + Basics of JS/CSS UI",
"keywords": [
"silverstripe",
"webpack"
"name": "a2nt/silverstripe-webpack",
"type": "silverstripe-recipe",
"description": "SilverStripe WebPack boilerplate + Basics of JS/CSS UI",
"keywords": [
"silverstripe",
"webpack"
],
"license": "BSD-3-Clause",
"require": {
"php": ">=8",
"ext-json": "*",
"silverstripe/recipe-cms": "^5",
"silverstripe/recipe-plugin": "*",
"wilr/silverstripe-googlesitemaps": "*",
"silverstripe/userforms": "*",
"undefinedoffset/sortablegridfield": "*",
"silverstripe/spamprotection": "*",
"jonom/silverstripe-betternavigator": "*",
"silverstripe/externallinks": "*",
"symbiote/silverstripe-gridfieldextensions": "*",
"colymba/gridfield-bulk-editing-tools": "^4",
"dnadesign/silverstripe-elemental-list": "*",
"dnadesign/silverstripe-elemental-virtual": "*",
"dnadesign/silverstripe-elemental-userforms": "*",
"axllent/silverstripe-version-truncator": "*",
"axllent/silverstripe-bootstrap-forms": "*",
"silverstripe/redirectedurls": "*",
"stevie-mayhew/silverstripe-svg": "*",
"innoweb/silverstripe-sitemap": "*",
"silverstripe/multiuser-editing-alert": "*",
"silverstripe/environmentcheck": "*",
"a2nt/silverstripe-font-awesome-field": "dev-master",
"a2nt/silverstripe-progressivewebapp": "dev-master",
"bummzack/sortablefile": "*",
"ezyang/htmlpurifier": "^4.13",
"endroid/qr-code": "^3.9",
"jonom/focuspoint": "*",
"silverstripe/login-forms": "*",
"axllent/silverstripe-trailing-slash": "*",
"webbuilders-group/silverstripe-turnstile": "*",
"a2nt/cms-niceties": "*",
"dynamic/flexslider": "^5",
"dynamic/silverstripe-elemental-flexslider": "^2.0@dev",
"silverstripe/blog": "^4.2"
},
"require-dev": {
"phpunit/phpunit": "*",
"sunnysideup/easy-coding-standards": "dev-master",
"silverleague/ideannotator": "dev-master",
"lekoala/silverstripe-debugbar": "^3.0"
},
"repositories": [
{
"type": "vcs",
"url": "https://github.com/a2nt/silverstripe-elemental-archive-report"
},
{
"type": "vcs",
"url": "https://github.com/a2nt/silverstripe-font-awesome"
},
{
"type": "vcs",
"url": "https://github.com/a2nt/silverstripe-mapboxfield"
},
{
"type": "vcs",
"url": "https://github.com/a2nt/silverstripe-addressable"
},
{
"type": "vcs",
"url": "https://github.com/a2nt/silverstripe-image-cropper-field"
},
{
"type": "vcs",
"url": "https://github.com/a2nt/silverstripe-dataintegritytests"
},
{
"type": "vcs",
"url": "https://github.com/a2nt/silverstripe-flexslider"
},
{
"type": "vcs",
"url": "https://github.com/a2nt/silverstripe-turnstile"
}
],
"extra": {
"expose": [
"app/client/dist"
],
"license": "BSD-3-Clause",
"require": {
"php": ">=7.1.0",
"ext-json": "*",
"silverstripe/recipe-cms": "^4",
"silverstripe/recipe-plugin": "^1.5",
"wilr/silverstripe-googlesitemaps": "*",
"silverstripe/userforms": "*",
"undefinedoffset/sortablegridfield": "*",
"silverstripe/spamprotection": "*",
"jonom/silverstripe-betternavigator": "*",
"silverstripe/externallinks": "*",
"symbiote/silverstripe-gridfieldextensions": "*",
"colymba/gridfield-bulk-editing-tools": "*",
"dnadesign/silverstripe-elemental-list": "*",
"dnadesign/silverstripe-elemental-virtual": "*",
"dnadesign/silverstripe-elemental-userforms": "*",
"dynamic/silverstripe-elemental-blocks": "*",
"drmartingonzo/ss-tinymce-charcount": "*",
"axllent/silverstripe-version-truncator": "*",
"gorriecoe/silverstripe-dataobjecthistory": "*",
"axllent/silverstripe-bootstrap-forms": "*",
"silverstripe/redirectedurls": "*",
"undefinedoffset/silverstripe-nocaptcha": "*",
"stevie-mayhew/silverstripe-svg": "*",
"betterbrief/silverstripe-googlemapfield": "*",
"innoweb/silverstripe-sitemap": "*",
"silverstripe/multiuser-editing-alert": "*",
"gorriecoe/silverstripe-link": "*",
"gorriecoe/silverstripe-linkfield": "*",
"silverstripe/environmentcheck": "*",
"silverstripe/widgets": "^2.0",
"a2nt/silverstripe-font-awesome-field": "dev-master",
"a2nt/silverstripe-mapboxfield": "dev-master",
"a2nt/silverstripe-progressivewebapp": "dev-master",
"a2nt/silverstripe-elemental-basics": "*",
"a2nt/cms-niceties": "*",
"bummzack/sortablefile": "*",
"eluceo/ical": "^0.16.0",
"ezyang/htmlpurifier": "^4.13",
"showpro/silverstripe-seo-images": "^1.0",
"endroid/qr-code": "^3.9",
"jonom/focuspoint": "^3.1",
"symbiote/silverstripe-addressable": "dev-master",
"silverstripe/graphql": "^3.4"
},
"require-dev": {
"phpunit/phpunit": "^5.7",
"lekoala/silverstripe-debugbar": "dev-master",
"silverstripe/graphql-devtools": "1.x-dev"
},
"repositories": [
{
"type": "vcs",
"url": "https://github.com/a2nt/silverstripe-font-awesome"
},
{
"type": "vcs",
"url": "https://github.com/a2nt/silverstripe-mapboxfield"
},
{
"type": "vcs",
"url": "https://github.com/a2nt/silverstripe-addressable"
}
"project-files-installed": [
"app/.htaccess",
"app/_config.php",
"app/_config/database.yml",
"app/_config/mimevalidator.yml",
"app/_config/mysite.yml",
"app/src/Page.php",
"app/src/PageController.php"
],
"extra": {
"expose": [
"app/client/dist"
],
"project-files-installed": [
"app/.htaccess",
"app/_config.php",
"app/_config/database.yml",
"app/_config/mimevalidator.yml",
"app/_config/mysite.yml",
"app/src/Page.php",
"app/src/PageController.php"
],
"public-files-installed": [
".htaccess",
"index.php",
"install-frameworkmissing.html",
"install.php",
"web.config"
]
"public-files-installed": [
".htaccess",
"index.php",
"install-frameworkmissing.html",
"install.php",
"web.config"
]
},
"config": {
"process-timeout": 600,
"allow-plugins": {
"composer/installers": true,
"silverstripe/vendor-plugin": true,
"silverstripe/recipe-plugin": true
}
},
"autoload": {
"psr-4": {
"App\\": "app/src"
},
"config": {
"process-timeout": 600
},
"prefer-stable": true,
"minimum-stability": "dev"
"exclude-from-classmap": [
"vendor/dynamic/flexslider/src/Model/SlideImage.php"
]
},
"prefer-stable": true,
"minimum-stability": "dev"
}

View File

@ -7,3 +7,17 @@ SS_DEFAULT_ADMIN_USERNAME=''
SS_DEFAULT_ADMIN_PASSWORD=''
SS_ENVIRONMENT_TYPE='dev'
SS_SEND_ALL_EMAILS_FROM=''
NOCAPTCHA_SITE_KEY=''
NOCAPTCHA_SECRET_KEY=''
SS_TURNSTILE_SITE_KEY=''
SS_TURNSTILE_SECRET_KEY=''
GOOGLEMAPS_API_KEY=''
MAPBOX_API_KEY=''
APP_SMTP_USERNAME=''
APP_SMTP_PASSWORD=''

14
jsconfig.json Normal file
View File

@ -0,0 +1,14 @@
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "Node",
"target": "ES2020",
"jsx": "react",
"strictNullChecks": true,
"strictFunctionTypes": true
},
"exclude": [
"node_modules",
"**/node_modules/*"
]
}

View File

@ -1,6 +1,6 @@
{
"name": "ss-webpack-boilerplate",
"version": "2.0.2",
"version": "5.0.0",
"description": "Lets you create SilverStripe faster",
"author": "Tony Air <tony@twma.pro>",
"license": "MIT",
@ -17,7 +17,7 @@
"dash": "cross-env NODE_ENV=development webpack-dashboard -- webpack-dev-server --config webpack.config.serve.js",
"prebuild": "yarn lint:fix && yarn lint:check && rimraf ./app/client/dist",
"build": "cross-env NODE_ENV=production webpack --progress --stats-all",
"lint:fix": "eslint './app/client/src/**/*.js' -c eslint.config.json --fix && sass-lint-auto-fix -s -c ./sass-lint.yml './app/client/src/**/*.scss'",
"lint:fix": "eslint './app/client/src/**/*.js' -c eslint.config.json --fix",
"lint:js": "eslint './app/client/src/**/*.js' -c eslint.config.json",
"lint:scss": "sass-lint ./app/client/src/**/*.scss -c sass-lint.yml -v",
"lint:check": "yarn lint:js && yarn lint:scss",
@ -26,148 +26,168 @@
"postuninstall": "npm run prunecaches",
"preinstall": "npx only-allow pnpm"
},
"resolutions": {
"colors": "1.4.0"
},
"browserslist": [
"defaults",
"ie>=11"
],
"dependencies": {
"@a2nt/meta-lightbox-js": "^4.1.2",
"@a2nt/ss-bootstrap-ui-webpack-boilerplate-react": "^4.3.2",
"@angular/common": "^12.2.5",
"@angular/core": "^12.2.5",
"@apollo/client": "^3.4.11",
"@jsanahuja/instagramfeed": "github:jsanahuja/instagramfeed",
"@popperjs/core": "^2.10.1",
"@a2nt/meta-lightbox-js": "^4.2.8",
"@a2nt/mithril-ui": "^1.1.7",
"@a2nt/ss-bootstrap-ui-webpack-boilerplate-react": "^5.3.9",
"@angular/common": "^17.3.6",
"@angular/core": "^17.3.6",
"@apollo/client": "^3.10.1",
"@glidejs/glide": "^3.6.0",
"@popperjs/core": "^2.11.8",
"@turf/clone": "^6.5.0",
"@turf/clusters-dbscan": "^6.5.0",
"@turf/clusters-kmeans": "^6.5.0",
"@turf/distance": "^6.5.0",
"@turf/helpers": "^6.5.0",
"@turf/invariant": "^6.5.0",
"@turf/meta": "^6.5.0",
"aos": "^2.3.4",
"apollo3-cache-persist": "^0.12.1",
"axios": "^0.21.4",
"balanced-match": "^2.0.0",
"bootbox": "^5.5.2",
"bootstrap": "^5.1.1",
"brace-expansion": "^2.0.1",
"apollo3-cache-persist": "^0.15.0",
"balanced-match": "^3.0.1",
"bootbox": "^6.0.0",
"bootstrap": "^5.3.3",
"brace-expansion": "^4.0.0",
"charming": "^3.0.2",
"density-clustering": "^1.3.0",
"eslint-scope": "^8.0.1",
"fast-deep-equal": "^3.1.3",
"font-awesome": "^4.7.0",
"graphql": "^15.5.3",
"graphql": "^16.8.1",
"hammerjs": "^2.0.8",
"inputmask": "^5.0.6",
"keyboardjs": "^2.6.4",
"inputmask": "^5.0.8",
"kdbush": "^4.0.2",
"keyboardjs": "^2.7.0",
"localforage": "^1.10.0",
"localforage-cordovasqlitedriver": "^1.8.0",
"lodash.debounce": "^4.0.8",
"lodash.throttle": "^4.1.1",
"mapbox-gl": "^2.4.1",
"mapbox-gl": "^3.3.0",
"material-design-color": "^2.3.2",
"minimatch": "^3.0.4",
"moment": "^2.29.1",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-easy-swipe": "^0.0.22",
"minimatch": "^9.0.4",
"mithril": "^2.2.2",
"moment": "^2.30.1",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-easy-swipe": "^0.0.23",
"react-tiny-oembed": "^1.1.0",
"rxjs": "^7.3.0",
"redaxios": "^0.5.1",
"rxjs": "^7.8.1",
"select2": "^4.0.13",
"setimmediate": "^1.0.5",
"skmeans": "^0.11.3",
"supercluster": "^8.0.1",
"vanilla-calendar": "^1.0.30",
"vanillajs-datepicker": "^1.1.4",
"vanillajs-datepicker": "^1.3.4",
"youtube-embed": "^1.0.0"
},
"devDependencies": {
"@a2nt/image-sprite-webpack-plugin": "^0.2.5",
"@babel/core": "^7.15.5",
"@babel/eslint-parser": "^7.15.4",
"@babel/plugin-proposal-class-properties": "^7.14.5",
"@babel/plugin-proposal-object-rest-spread": "^7.15.6",
"@babel/plugin-syntax-jsx": "^7.14.5",
"@babel/core": "^7.24.5",
"@babel/eslint-parser": "^7.24.5",
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-proposal-object-rest-spread": "^7.20.7",
"@babel/plugin-syntax-jsx": "^7.24.1",
"@babel/plugin-syntax-top-level-await": "^7.14.5",
"@babel/plugin-transform-react-jsx": "^7.14.9",
"@babel/plugin-transform-runtime": "^7.15.0",
"@babel/plugin-transform-typescript": "^7.15.4",
"@babel/preset-env": "^7.15.6",
"@babel/preset-react": "^7.14.5",
"@babel/runtime": "^7.15.4",
"@googlemaps/markerclustererplus": "*",
"@babel/plugin-transform-react-jsx": "^7.23.4",
"@babel/plugin-transform-runtime": "^7.24.3",
"@babel/plugin-transform-typescript": "^7.24.5",
"@babel/preset-env": "^7.24.5",
"@babel/preset-react": "^7.24.1",
"@babel/runtime": "^7.24.5",
"@googlemaps/markerclusterer": "^2.5.3",
"@sucrase/webpack-loader": "^2.0.0",
"@ungap/global-this": "^0.4.4",
"@wry/context": "^0.6.1",
"@wry/equality": "^0.5.2",
"@wry/trie": "^0.3.1",
"@wry/context": "^0.7.4",
"@wry/equality": "^0.5.7",
"@wry/trie": "^0.5.0",
"animate.css": "^4.1.1",
"ansi-html": "^0.0.7",
"ansi-html": "^0.0.9",
"ansi-html-community": "^0.0.8",
"ansi-regex": "^6.0.1",
"autoprefixer": "^10.3.4",
"babel-loader": "^8.2.2",
"classnames": "^2.3.1",
"copy-webpack-plugin": "^9.0.1",
"autoprefixer": "^10.4.19",
"babel-loader": "^9.1.3",
"classnames": "^2.5.1",
"copy-webpack-plugin": "^12.0.2",
"croppie": "^2.6.5",
"cross-env": "^7.0.3",
"css-loader": "^6.2.0",
"css-minimizer-webpack-plugin": "^3.0.2",
"eslint": "^7.32.0",
"eslint-plugin-import": "^2.24.2",
"css-loader": "^7.1.1",
"css-minimizer-webpack-plugin": "^6.0.0",
"eslint": "^8.57.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jquery": "^1.5.1",
"eslint-plugin-react": "^7.25.1",
"eslint-plugin-react": "^7.34.1",
"events": "^3.3.0",
"exif-js": "^2.3.0",
"exports-loader": "^3.0.0",
"exports-loader": "^5.0.0",
"fast-equals": "^5.0.1",
"fast-json-stable-stringify": "^2.1.0",
"fast-levenshtein": "^3.0.0",
"fastest-levenshtein": "^1.0.12",
"favicons": "^6.2.2",
"favicons-webpack-plugin": "^5.0.2",
"fastest-levenshtein": "^1.0.16",
"favicons": "^7.2.0",
"favicons-webpack-plugin": "^6.0.1",
"file-loader": "^6.2.0",
"graphql-tag": "^2.12.5",
"graphql-tag": "^2.12.6",
"hoist-non-react-statics": "^3.3.2",
"html-dom-parser": "^1.0.2",
"html-entities": "^2.3.2",
"html-loader": "^2.1.2",
"html-react-parser": "^1.3.0",
"html-webpack-plugin": "^5.3.2",
"html-dom-parser": "^5.0.8",
"html-entities": "^2.5.2",
"html-loader": "^5.0.0",
"html-react-parser": "^5.1.10",
"html-webpack-plugin": "^5.6.0",
"img-optimize-loader": "^1.0.7",
"js-yaml": "^4.1.0",
"loglevel": "^1.7.1",
"mini-css-extract-plugin": "^2.3.0",
"msw": "^0.35.0",
"node-fetch": "^3.0.0",
"loglevel": "^1.9.1",
"mini-css-extract-plugin": "^2.9.0",
"msw": "^2.2.14",
"node-fetch": "^3.3.2",
"object-assign": "^4.1.1",
"optimism": "^0.16.1",
"optimism": "^0.17.5",
"optimize-css-assets-webpack-plugin": "^6.0.1",
"postcss-loader": "^6.1.1",
"prop-types": "^15.7.2",
"punycode": "^2.1.1",
"postcss-loader": "^8.1.1",
"prop-types": "^15.8.1",
"punycode": "^2.3.1",
"querystring": "^0.2.1",
"raw-loader": "^4.0.2",
"react-hot-loader": "^4.13.0",
"react-is": "^17.0.2",
"react-hot-loader": "^4.13.1",
"react-is": "^18.3.1",
"react-lifecycles-compat": "^3.0.4",
"regenerator-runtime": "^0.13.9",
"resolve-url-loader": "^4.0.0",
"rimraf": "^3.0.2",
"regenerator-runtime": "^0.14.1",
"resolve-url-loader": "^5.0.0",
"rimraf": "^5.0.5",
"routie": "0.0.1",
"sass": "*",
"sass": "^1.75.0",
"sass-lint": "^1.13.1",
"sass-lint-auto-fix": "^0.21.2",
"sass-lint-fix": "^1.12.1",
"sass-loader": "^12.1.0",
"scheduler": "^0.20.2",
"sass-loader": "^14.2.1",
"scheduler": "^0.23.2",
"shallowequal": "^1.1.0",
"strip-ansi": "^7.0.1",
"style-loader": "^3.2.1",
"sucrase": "^3.20.1",
"svg-url-loader": "^7.1.1",
"strip-ansi": "^7.1.0",
"style-loader": "^4.0.0",
"sucrase": "^3.35.0",
"svg-url-loader": "^8.0.0",
"symbol-observable": "^4.0.0",
"terser-webpack-plugin": "^5.2.4",
"ts-invariant": "^0.9.3",
"tslib": "^2.3.1",
"url": "^0.11.0",
"terser-webpack-plugin": "^5.3.10",
"ts-invariant": "^0.10.3",
"tslib": "^2.6.2",
"url": "^0.11.3",
"url-loader": "^4.1.1",
"webpack": "^5.52.1",
"webpack-bundle-analyzer": "^4.4.2",
"webpack-cli": "^4.8.0",
"webpack-dev-server": "^4.2.0",
"webpack-manifest-plugin": "^4.0.2",
"webpack-merge": "^5.8.0",
"yarn": "^1.22.11",
"zen-observable": "^0.8.15"
"webpack": "^5.91.0",
"webpack-build-notifications": "^0.3.2",
"webpack-bundle-analyzer": "^4.10.2",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^5.0.4",
"webpack-manifest-plugin": "^5.0.0",
"webpack-merge": "^5.10.0",
"yarn": "^1.22.22",
"zen-observable": "^0.10.0"
},
"stylelint": {
"rules": {

154
phpcs.xml Normal file
View File

@ -0,0 +1,154 @@
<?xml version="1.0"?>
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="PHP_CodeSniffer" xsi:noNamespaceSchemaLocation="phpcs.xsd">
<description>The coding standard for PHP_CodeSniffer itself.</description>
<file>autoload.php</file>
<file>bin</file>
<file>scripts</file>
<file>src</file>
<file>tests</file>
<exclude-pattern>*/src/Standards/*/Tests/*\.(inc|css|js)$</exclude-pattern>
<exclude-pattern>*/tests/Core/*/*\.(inc|css|js)$</exclude-pattern>
<arg name="basepath" value="."/>
<arg name="colors"/>
<arg name="parallel" value="75"/>
<arg value="np"/>
<!-- Don't hide tokenizer exceptions -->
<rule ref="Internal.Tokenizer.Exception">
<type>error</type>
</rule>
<!-- Include the whole PEAR standard -->
<rule ref="PEAR">
<exclude name="PEAR.NamingConventions.ValidFunctionName"/>
<exclude name="PEAR.NamingConventions.ValidVariableName"/>
<exclude name="PEAR.Commenting.ClassComment"/>
<exclude name="PEAR.Commenting.FileComment.MissingCategoryTag"/>
<exclude name="PEAR.Commenting.FileComment.MissingPackageTag"/>
<exclude name="PEAR.Commenting.FileComment.MissingLinkTag"/>
<exclude name="PEAR.Commenting.FileComment.MissingVersion"/>
<exclude name="PEAR.Commenting.InlineComment"/>
</rule>
<!-- Include some sniffs from other standards that don't conflict with PEAR -->
<rule ref="Squiz.Arrays.ArrayBracketSpacing"/>
<rule ref="Squiz.Arrays.ArrayDeclaration"/>
<rule ref="Squiz.Commenting.ClosingDeclarationComment"/>
<rule ref="Squiz.ControlStructures.ControlSignature"/>
<rule ref="Squiz.ControlStructures.ElseIfDeclaration"/>
<rule ref="Squiz.Commenting.BlockComment"/>
<rule ref="Squiz.Commenting.DocCommentAlignment"/>
<rule ref="Squiz.Commenting.EmptyCatchComment"/>
<rule ref="Squiz.Commenting.InlineComment"/>
<rule ref="Squiz.Commenting.LongConditionClosingComment"/>
<rule ref="Squiz.Commenting.PostStatementComment"/>
<rule ref="Squiz.Commenting.VariableComment"/>
<rule ref="Squiz.Formatting.OperatorBracket"/>
<rule ref="Squiz.Functions.FunctionDeclarationArgumentSpacing"/>
<rule ref="Squiz.Operators.ComparisonOperatorUsage"/>
<rule ref="Squiz.PHP.DisallowInlineIf"/>
<rule ref="Squiz.Scope.MethodScope"/>
<rule ref="Squiz.Strings.ConcatenationSpacing"/>
<rule ref="Squiz.WhiteSpace.ControlStructureSpacing"/>
<rule ref="Squiz.WhiteSpace.FunctionClosingBraceSpace"/>
<rule ref="Squiz.WhiteSpace.FunctionSpacing"/>
<rule ref="Squiz.WhiteSpace.MemberVarSpacing"/>
<rule ref="Squiz.WhiteSpace.OperatorSpacing"/>
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace"/>
<rule ref="Generic.Arrays.DisallowLongArraySyntax"/>
<rule ref="Generic.Commenting.Todo"/>
<rule ref="Generic.ControlStructures.DisallowYodaConditions"/>
<rule ref="Generic.ControlStructures.InlineControlStructure"/>
<rule ref="Generic.Formatting.DisallowMultipleStatements"/>
<rule ref="Generic.Formatting.SpaceAfterCast"/>
<rule ref="Generic.NamingConventions.ConstructorName"/>
<rule ref="Generic.PHP.DeprecatedFunctions"/>
<rule ref="Generic.PHP.LowerCaseKeyword"/>
<rule ref="Generic.Strings.UnnecessaryStringConcat"/>
<rule ref="Generic.WhiteSpace.IncrementDecrementSpacing"/>
<rule ref="PSR2.Classes.PropertyDeclaration"/>
<rule ref="PSR2.Methods.MethodDeclaration"/>
<rule ref="PSR2.Files.EndFileNewline"/>
<rule ref="PSR12.Files.OpenTag"/>
<rule ref="Zend.Files.ClosingTag"/>
<!-- PEAR uses warnings for inline control structures, so switch back to errors -->
<rule ref="Generic.ControlStructures.InlineControlStructure">
<properties>
<property name="error" value="true"/>
</properties>
</rule>
<!-- We use custom indent rules for arrays -->
<rule ref="Generic.Arrays.ArrayIndent"/>
<rule ref="Squiz.Arrays.ArrayDeclaration.KeyNotAligned">
<severity>0</severity>
</rule>
<rule ref="Squiz.Arrays.ArrayDeclaration.ValueNotAligned">
<severity>0</severity>
</rule>
<rule ref="Squiz.Arrays.ArrayDeclaration.CloseBraceNotAligned">
<severity>0</severity>
</rule>
<rule ref="Squiz.Arrays.ArrayDeclaration.CloseBraceNewLine">
<severity>0</severity>
</rule>
<!-- Check var names, but we don't want leading underscores for private vars -->
<rule ref="Squiz.NamingConventions.ValidVariableName"/>
<rule ref="Squiz.NamingConventions.ValidVariableName.PrivateNoUnderscore">
<severity>0</severity>
</rule>
<!-- Only one argument per line in multi-line function calls -->
<rule ref="PEAR.Functions.FunctionCallSignature">
<properties>
<property name="allowMultipleArguments" value="false"/>
</properties>
</rule>
<!-- Have 12 chars padding maximum and always show as errors -->
<rule ref="Generic.Formatting.MultipleStatementAlignment">
<properties>
<property name="maxPadding" value="12"/>
<property name="error" value="true"/>
</properties>
</rule>
<!-- Ban some functions -->
<rule ref="Generic.PHP.ForbiddenFunctions">
<properties>
<property name="forbiddenFunctions" type="array">
<element key="sizeof" value="count"/>
<element key="delete" value="unset"/>
<element key="print" value="echo"/>
<element key="is_null" value="null"/>
<element key="create_function" value="null"/>
</property>
</properties>
</rule>
<!-- Private methods MUST not be prefixed with an underscore -->
<rule ref="PSR2.Methods.MethodDeclaration.Underscore">
<type>error</type>
</rule>
<!-- Private properties MUST not be prefixed with an underscore -->
<rule ref="PSR2.Classes.PropertyDeclaration.Underscore">
<type>error</type>
</rule>
<!-- The testing bootstrap file uses string concats to stop IDEs seeing the class aliases -->
<rule ref="Generic.Strings.UnnecessaryStringConcat">
<exclude-pattern>tests/bootstrap\.php</exclude-pattern>
</rule>
<!-- This test file specifically *needs* Windows line endings for testing purposes. -->
<rule ref="Generic.Files.LineEndings.InvalidEOLChar">
<exclude-pattern>tests/Core/Tokenizer/StableCommentWhitespaceWinTest\.php</exclude-pattern>
</rule>
</ruleset>

View File

@ -3,7 +3,6 @@
use SilverStripe\Control\HTTPApplication;
use SilverStripe\Control\HTTPRequestBuilder;
use SilverStripe\Core\CoreKernel;
use SilverStripe\Core\Startup\ErrorControlChainMiddleware;
// Find autoload.php
if (file_exists(__DIR__ . '/../vendor/autoload.php')) {
@ -22,6 +21,5 @@ $request = HTTPRequestBuilder::createFromEnvironment();
// Default application
$kernel = new CoreKernel(BASE_PATH);
$app = new HTTPApplication($kernel);
$app->addMiddleware(new ErrorControlChainMiddleware($app));
$response = $app->handle($request);
$response->output();

View File

@ -1,8 +1,8 @@
# sass-lint config to match the AirBNB style guide
files:
include: 'app/client/src/**/*.scss'
include: "app/client/src/**/*.scss"
ignore:
- 'app/client/src/thirdparty/*'
- "app/client/src/thirdparty/*"
options:
formatter: stylish
merge-default-rules: false
@ -23,10 +23,10 @@ rules:
no-misspelled-properties:
- 1
- extra-properties:
- '-moz-border-radius-topleft'
- '-moz-border-radius-topright'
- '-moz-border-radius-bottomleft'
- '-moz-border-radius-bottomright'
- "-moz-border-radius-topleft"
- "-moz-border-radius-topright"
- "-moz-border-radius-bottomleft"
- "-moz-border-radius-bottomright"
variable-name-format:
- 1
- allow-leading-underscore: true
@ -40,14 +40,12 @@ rules:
# Things that can be easily fixed are marked as errors
indentation:
- 2
- size: 2
final-newline:
- 2
- include: true
- size: 4
final-newline: false
no-trailing-whitespace: 2
border-zero:
- 2
- convention: '0'
- convention: "0"
brace-style:
- 2
- allow-single-line: true
@ -56,7 +54,7 @@ rules:
- filename-extension: false
- leading-underscore: true
no-debug: 2
no-empty-rulesets: 2
no-empty-rulesets: 0
no-invalid-hex: 2
no-mergeable-selectors: 2
# no-qualifying-elements:

View File

@ -11,5 +11,5 @@ require_once('app/src/Tests/TestServer.php');
$req = new \SilverStripe\Control\NullHTTPRequest();
$t = new \Site\Tests\TestServer();
$t = new \A2nt\CMSNiceties\Tests\TestServer();
$t->run($req);

View File

@ -126,29 +126,66 @@ themes.forEach((theme) => {
_addAppFiles(theme);
});
const UIInfo = require('./node_modules/@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/package.json');
const UINAME = JSON.stringify(UIInfo.name);
const UIVERSION = JSON.stringify(UIInfo.version);
const UIMetaInfo = require('./node_modules/@a2nt/meta-lightbox-js/package.json');
const NODE_ENV = conf.NODE_ENV || process.env.NODE_ENV;
const COMPRESS = NODE_ENV === 'production' ? true : false;
const IP = process.env.IP || conf.HOSTNAME;
const PORT = process.env.PORT || conf.PORT;
console.log('NODE_ENV: ' + NODE_ENV);
console.log('COMPRESS: ' + COMPRESS);
console.log('WebP images: ' + conf['webp']);
console.log('GRAPHQL_API_KEY: ' + conf['GRAPHQL_API_KEY']);
const JSVARS = {
NODE_ENV: JSON.stringify(NODE_ENV),
UINAME: UINAME,
UIVERSION: UIVERSION,
UIAUTHOR: JSON.stringify(UIInfo.author),
UIMetaNAME: JSON.stringify(UIMetaInfo.name),
UIMetaVersion: JSON.stringify(UIMetaInfo.version),
GRAPHQL_API_KEY: JSON.stringify(conf['GRAPHQL_API_KEY']),
SWVERSION: JSON.stringify(`sw-${new Date().getTime()}`),
BASE_HREF: JSON.stringify(''),
};
const provides = {};
const externals = {};
const aliases = {};
if (!conf['JQUERY']) {
/*provides['react'] = 'React';
provides['react-dom'] = 'ReactDOM';
externals['react'] = 'React';
externals['react-dom'] = 'ReactDOM';*/
} else {
provides['$'] = 'jquery';
provides['jQuery'] = 'jquery';
externals['jquery'] = 'jQuery';
aliases['window.jQuery'] = require.resolve('jquery');
aliases['$'] = require.resolve('jquery');
aliases['jquery'] = require.resolve('jquery');
aliases['jQuery'] = require.resolve('jquery');
}
module.exports = {
PROVIDES: provides,
JSVARS: JSVARS,
configuration: conf,
themes: themes,
webpack: {
entry: includes,
externals: {
// comment out jQuery if you don't use it to prevent bootstrap thinking that there's jQuery present
//jquery: 'jQuery',
react: 'React',
'react-dom': 'ReactDOM',
},
externals: externals,
resolve: {
modules: modules,
extensions: ['.tsx', '.ts', '.js'],
alias: {
// comment out jQuery if you don't use it to prevent bootstrap thinking that there's jQuery present
/*'window.jQuery': require.resolve('jquery'),
$: require.resolve('jquery'),
jquery: require.resolve('jquery'),
jQuery: require.resolve('jquery'),
react: require.resolve('react'),
'react-dom': require.resolve('react-dom'),*/
},
alias: aliases,
fallback: {
path: false,
},

View File

@ -20,10 +20,7 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin');
//const ImageSpritePlugin = require('@a2nt/image-sprite-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const UIInfo = require('./node_modules/@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/package.json');
const UIVERSION = JSON.stringify(UIInfo.version);
const UIMetaInfo = require('./node_modules/@a2nt/meta-lightbox-js/package.json');
const WebpackBuildNotifications = require('webpack-build-notifications');
const NODE_ENV = conf.NODE_ENV || process.env.NODE_ENV;
const COMPRESS = NODE_ENV === 'production' ? true : false;
@ -31,59 +28,25 @@ const COMPRESS = NODE_ENV === 'production' ? true : false;
const IP = process.env.IP || conf.HOSTNAME;
const PORT = process.env.PORT || conf.PORT;
console.log('NODE_ENV: ' + NODE_ENV);
console.log('COMPRESS: ' + COMPRESS);
console.log('WebP images: ' + conf['webp']);
console.log('GRAPHQL_API_KEY: ' + conf['GRAPHQL_API_KEY']);
let plugins = [
new webpack.ProvidePlugin({
react: 'React',
'react-dom': 'ReactDOM',
/*$: 'jquery',
jQuery: 'jquery',*/
}),
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify(NODE_ENV),
},
UINAME: JSON.stringify(UIInfo.name),
UIVERSION: UIVERSION,
UIAUTHOR: JSON.stringify(UIInfo.author),
UIMetaNAME: JSON.stringify(UIMetaInfo.name),
UIMetaVersion: JSON.stringify(UIMetaInfo.version),
GRAPHQL_API_KEY: JSON.stringify(conf['GRAPHQL_API_KEY']),
SWVERSION: JSON.stringify(`sw-${new Date().getTime()}`),
BASE_HREF: JSON.stringify(''),
}),
const plugins = [
new webpack.ProvidePlugin(common['PROVIDES']),
new webpack.DefinePlugin(common['JSVARS']),
new webpack.LoaderOptionsPlugin({
minimize: COMPRESS,
debug: !COMPRESS,
}),
new MiniCssExtractPlugin({
filename: 'css/[name].css',
//allChunks: true,
}),
experimentalUseImportModule: false,
filename: 'css/[name].css',
//allChunks: true,
}),
new WebpackBuildNotifications({
title: common['JSVARS']['UINAME'] + ' ' + common['JSVARS']['UIVERSION'],
logo: path.join(__dirname, conf.APPDIR, conf.SRC, 'favicon.png'),
suppressWarning: true,
}),
];
if (COMPRESS) {
plugins.push(require('autoprefixer'));
/*plugins.push(
new ImageSpritePlugin({
exclude: /exclude|original|default-|icons|sprite|svg|logo|favicon/,
commentOrigin: false,
compress: COMPRESS,
extensions: ['png'],
indent: '',
log: true,
//outputPath: path.join(__dirname, conf.APPDIR, conf.DIST),
outputFilename: 'img/sprite-[hash].png',
padding: 0,
}),
);*/
}
const indexPath = path.join(__dirname, conf.APPDIR, conf.SRC, 'index.html');
if (fs.existsSync(indexPath)) {
plugins.push(
@ -93,9 +56,7 @@ if (fs.existsSync(indexPath)) {
templateParameters: {
NODE_ENV: NODE_ENV,
GRAPHQL_URL: conf['GRAPHQL_URL'],
STATIC_URL: conf['STATIC_URL'],
REACT_SCRIPTS: NODE_ENV === 'production' ?
'<script crossorigin src="https://unpkg.com/react@17/umd/react.production.min.js"></script><script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"></script>' : '<script crossorigin src="https://unpkg.com/react@17/umd/react.development.js"></script><script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>',
STATIC_URL: conf['STATIC_URL']
},
xhtml: true,
}),
@ -169,6 +130,100 @@ common.themes.forEach((theme) => {
}
});
const minimizers = [];
minimizers.push(
new TerserPlugin({
terserOptions: {
module: false,
parse: {
// we want terser to parse ecma 8 code. However, we don't want it
// to apply any minfication steps that turns valid ecma 5 code
// into invalid ecma 5 code. This is why the 'compress' and 'output'
// sections only apply transformations that are ecma 5 safe
// https://github.com/facebook/create-react-app/pull/4234
ecma: 8,
},
compress: {
ecma: 6,
warnings: false,
// Disabled because of an issue with Uglify breaking seemingly valid code:
// https://github.com/facebook/create-react-app/issues/2376
// Pending further investigation:
// https://github.com/mishoo/UglifyJS2/issues/2011
comparisons: false,
},
keep_fnames: true,
keep_classnames: true,
mangle: {
safari10: true,
keep_fnames: true,
keep_classnames: true,
reserved: ['$', 'jQuery', 'jquery'],
},
output: {
ecma: 6,
comments: false,
// Turned on because emoji and regex is not minified properly using default
// https://github.com/facebook/create-react-app/issues/2488
ascii_only: true,
},
},
// Use multi-process parallel running to improve the build speed
// Default number of concurrent runs: os.cpus().length - 1
parallel: true,
})
);
if (conf['PROCESS_CSS']) {
minimizers.push(
new CssMinimizerPlugin({
parallel: true,
minimizerOptions: [{
preset: [
'default',
{
discardComments: {
removeAll: true,
},
zindex: true,
cssDeclarationSorter: true,
reduceIdents: false,
mergeIdents: true,
mergeRules: true,
mergeLonghand: true,
discardUnused: true,
discardOverridden: true,
discardDuplicates: true,
},
],
},],
minify: [
CssMinimizerPlugin.cssnanoMinify,
//CssMinimizerPlugin.cleanCssMinify,
],
})
);
}
if (COMPRESS) {
plugins.push(require('autoprefixer'));
/*plugins.push(
new ImageSpritePlugin({
exclude: /exclude|original|default-|icons|sprite|svg|logo|favicon/,
commentOrigin: false,
compress: COMPRESS,
extensions: ['png'],
indent: '',
log: true,
//outputPath: path.join(__dirname, conf.APPDIR, conf.DIST),
outputFilename: 'img/sprite-[hash].png',
padding: 0,
}),
);*/
}
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
.BundleAnalyzerPlugin;
plugins.push(
@ -192,75 +247,7 @@ const cfg = merge(common.webpack, {
minChunks: 2,
},
concatenateModules: true, //ModuleConcatenationPlugin
minimizer: [
new TerserPlugin({
terserOptions: {
module: false,
parse: {
// we want terser to parse ecma 8 code. However, we don't want it
// to apply any minfication steps that turns valid ecma 5 code
// into invalid ecma 5 code. This is why the 'compress' and 'output'
// sections only apply transformations that are ecma 5 safe
// https://github.com/facebook/create-react-app/pull/4234
ecma: 8,
},
compress: {
ecma: 6,
warnings: false,
// Disabled because of an issue with Uglify breaking seemingly valid code:
// https://github.com/facebook/create-react-app/issues/2376
// Pending further investigation:
// https://github.com/mishoo/UglifyJS2/issues/2011
comparisons: false,
},
keep_fnames: true,
keep_classnames: true,
mangle: {
safari10: true,
keep_fnames: true,
keep_classnames: true,
reserved: ['$', 'jQuery', 'jquery'],
},
output: {
ecma: 5,
comments: false,
// Turned on because emoji and regex is not minified properly using default
// https://github.com/facebook/create-react-app/issues/2488
ascii_only: true,
},
},
// Use multi-process parallel running to improve the build speed
// Default number of concurrent runs: os.cpus().length - 1
parallel: true,
}),
new CssMinimizerPlugin({
parallel: true,
minimizerOptions: [{
preset: [
'default',
{
discardComments: {
removeAll: true,
},
zindex: true,
cssDeclarationSorter: true,
reduceIdents: false,
mergeIdents: true,
mergeRules: true,
mergeLonghand: true,
discardUnused: true,
discardOverridden: true,
discardDuplicates: true,
},
],
},],
minify: [
CssMinimizerPlugin.cssnanoMinify,
//CssMinimizerPlugin.cleanCssMinify,
],
}),
],
minimizer: minimizers,
},
output: {
@ -274,21 +261,17 @@ const cfg = merge(common.webpack, {
test: /\.(js|ts)x?$/,
//exclude: /node_modules/,
use: {
loader: 'babel-loader', //'@sucrase/webpack-loader',
loader: 'babel-loader',//'@sucrase/webpack-loader',
options: {
//transforms: ['jsx']
presets: [
'@babel/preset-env',
'@babel/react',
{
plugins: [
'@babel/plugin-proposal-class-properties',
],
},
], //Preset used for env setup
plugins: [
'@babel/plugin-transform-typescript',
'@babel/transform-react-jsx',
"presets": ["@babel/preset-env"],
"plugins": [
[
"@babel/plugin-transform-react-jsx",
{
"pragma": "m",
"pragmaFrag": "'['"
}
]
],
cacheDirectory: true,
cacheCompression: true,
@ -307,6 +290,7 @@ const cfg = merge(common.webpack, {
loader: 'css-loader',
options: {
sourceMap: true,
esModule: true,
},
},
{

View File

@ -19,38 +19,12 @@ const HtmlWebpackPlugin = require('html-webpack-plugin');
const IP = process.env.IP || conf.HOSTNAME;
const PORT = process.env.PORT || conf.PORT;
const UIInfo = require('./node_modules/@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/package.json');
const UIVERSION = JSON.stringify(UIInfo.version);
const UIMetaInfo = require('./node_modules/@a2nt/meta-lightbox-js/package.json');
const NODE_ENV = 'development'; //conf.NODE_ENV || process.env.NODE_ENV;
const COMPRESS = NODE_ENV === 'production' ? true : false;
console.log('NODE_ENV: ' + NODE_ENV);
console.log('COMPRESS: ' + COMPRESS);
console.log('WebP images: ' + conf['webp']);
console.log('GRAPHQL_API_KEY: ' + conf['GRAPHQL_API_KEY']);
console.log('HTTPS: ' + conf['HTTPS']);
const plugins = [
new webpack.ProvidePlugin({
react: 'React',
'react-dom': 'ReactDOM',
/*$: 'jquery',
jQuery: 'jquery',*/
}),
new webpack.DefinePlugin({
UINAME: JSON.stringify(UIInfo.name),
UIVERSION: UIVERSION,
UIAUTHOR: JSON.stringify(UIInfo.author),
UIMetaNAME: JSON.stringify(UIMetaInfo.name),
UIMetaVersion: JSON.stringify(UIMetaInfo.version),
GRAPHQL_API_KEY: JSON.stringify(conf['GRAPHQL_API_KEY']),
SWVERSION: JSON.stringify(`sw-${new Date().getTime()}`),
BASE_HREF: JSON.stringify(
`http${conf['HTTPS'] ? 's' : ''}://${IP}:${PORT}`,
),
}),
new webpack.ProvidePlugin(common['PROVIDES']),
new webpack.DefinePlugin(common['JSVARS']),
//new webpack.HotModuleReplacementPlugin(),
new MiniCssExtractPlugin(),
];
@ -134,7 +108,7 @@ const config = merge(common.webpack, {
options: {
sourceMap: true,
},
},],
}, ],
},
{
test: /fontawesome([^.]+).(ttf|otf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/,
@ -143,7 +117,7 @@ const config = merge(common.webpack, {
{
test: /\.(gif|png|jpg|jpeg|ttf|otf|eot|svg|webp|woff(2)?)$/,
type: 'asset/resource',
},],
}, ],
},
plugins: plugins,