IMPR: Switched to Webpack 5 + REACT + GraphQL
10
README.md
@ -1,5 +1,4 @@
|
||||
# silverstripe-webpack SS4.\*
|
||||
|
||||
# tony
|
||||
## Simple WebPack boiler plate for SilverStripe
|
||||
|
||||
Checkout files at /app/ folder for details
|
||||
@ -75,7 +74,7 @@ php -d memory_limit=-1 composer.phar update --ignore-platform-reqs
|
||||
- Folder /app/client/src/js/types is used to create page specific JS (just create JS file there and it will be compiled)
|
||||
- Folder /app/clent/src/scss/types is used to create page specific CSS (just create SCSS file there and it will be compiled)
|
||||
- Automatic linting (JS+SCSS)
|
||||
- Bootstrap 4 included by default
|
||||
- Bootstrap 5 included by default
|
||||
- Font-Awesome included by default
|
||||
- Deferred requirements loading
|
||||
- Requirements auto-loading
|
||||
@ -115,8 +114,3 @@ php -d memory_limit=-1 composer.phar update --ignore-platform-reqs
|
||||
- yarn build - to build production assets
|
||||
- yarn lint:check - to check SCSS and JS linting
|
||||
- yarn lint:fix - to fix SCSS and JS linting automatically
|
||||
|
||||
### TODO:
|
||||
|
||||
- Planktos torrent auto-generation for static files (https://github.com/xuset/planktos#----------planktos)
|
||||
- ServiceWorker auto-generation
|
||||
|
16
app/_config/api-captcha.yml
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
Name: app-api-captcha
|
||||
---
|
||||
SilverStripe\SpamProtection\Extension\FormSpamProtectionExtension:
|
||||
default_spam_protector: UndefinedOffset\NoCaptcha\Forms\NocaptchaProtector
|
||||
|
||||
UndefinedOffset\NoCaptcha\Forms\NocaptchaField:
|
||||
site_key: '6LfKgywaAAAAAH2VuHILbaNoUs0p0YZBNbNGyIsh' #Your site key (required)
|
||||
secret_key: '6LfKgywaAAAAAJ0mxLSg1pZQIqui1gXSp2GGRKbY' #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)
|
||||
default_size: 'normal' #Default size (optional, normal, compact or invisible, defaults to normal)
|
||||
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)
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
Name: 'webapp-map'
|
||||
Name: webapp-api-map
|
||||
After:
|
||||
- 'silverstripe-mapboxfield'
|
||||
- 'addressable'
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
Name: 'webapp-payment'
|
||||
Name: 'webapp-api-payment'
|
||||
---
|
||||
SilverStripe\Omnipay\Model\Payment:
|
||||
allowed_gateways:
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
Name: webapp
|
||||
Name: webapp-base-config
|
||||
---
|
||||
SilverStripe\Core\Manifest\ModuleManifest:
|
||||
project: app
|
||||
@ -24,11 +24,5 @@ SilverStripe\Forms\HTMLEditor\TinyMCEConfig:
|
||||
editor_css:
|
||||
- 'app/client/dist/css/app_editor.css'
|
||||
|
||||
# Secure cookies
|
||||
SilverStripe\Control\Session:
|
||||
cookie_secure: true
|
||||
strict_user_agent_check: false
|
||||
timeout: 604800
|
||||
|
||||
SilverStripe\Control\Email\Email:
|
||||
send_all_emails_from: noreply@twma.pro
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
Name: webapp-extensions
|
||||
Name: webapp-base-extensions
|
||||
---
|
||||
# Basic extensions
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
Name: webapp-files
|
||||
Name: webapp-base-files
|
||||
---
|
||||
SilverStripe\Blog\Model\BlogPost:
|
||||
featured_images_directory: 'blog-posts'
|
58
app/_config/base-graphql.yml
Normal file
@ -0,0 +1,58 @@
|
||||
---
|
||||
Name: webapp-base-graphql
|
||||
After: graphqlconfig
|
||||
---
|
||||
SilverStripe\Control\Director:
|
||||
rules:
|
||||
'graphql': '%$SilverStripe\GraphQL\Controller.default'
|
||||
|
||||
SilverStripe\GraphQL\Controller:
|
||||
cors:
|
||||
Enabled: true
|
||||
Allow-Origin:
|
||||
- '127.0.0.1:3001'
|
||||
- 'localhost:3001'
|
||||
- 'http://127.0.0.1'
|
||||
- 'http://127.0.0.1:3001'
|
||||
- 'http://127.0.0.1:3000'
|
||||
- 'https://127.0.0.1'
|
||||
- 'https://127.0.0.1:3001'
|
||||
- 'https://127.0.0.1:3000'
|
||||
- 'http://localhost'
|
||||
- 'http://localhost:3001'
|
||||
- 'http://localhost:3000'
|
||||
- 'https://localhost'
|
||||
- 'https://localhost:3001'
|
||||
- 'https://localhost:3000'
|
||||
- 'twma.pro'
|
||||
- 'tony.twma.pro'
|
||||
- 'http://twma.pro'
|
||||
- 'https://twma.pro'
|
||||
- 'http://tony.twma.pro'
|
||||
- 'https://tony.twma.pro'
|
||||
Allow-Headers: 'Authorization, Content-Type, Content-Language, apikey'
|
||||
Allow-Methods: 'GET, PUT, DELETE, OPTIONS, POST'
|
||||
#Allow-Credentials: 'true'
|
||||
Max-Age: 600 # 600 seconds = 10 minutes.
|
||||
|
||||
SilverStripe\GraphQL\Auth\Handler:
|
||||
authenticators:
|
||||
- class: Site\GraphQL\APIKeyAuthenticator
|
||||
priority: 30
|
||||
|
||||
SilverStripe\GraphQL\Manager.default:
|
||||
properties:
|
||||
Middlewares:
|
||||
APIKeyMiddleware: Site\GraphQL\APIKeyMiddleware
|
||||
|
||||
SilverStripe\GraphQL\Manager:
|
||||
schemas:
|
||||
default:
|
||||
types:
|
||||
member: 'Site\GraphQL\MemberTypeCreator'
|
||||
page: 'Site\GraphQL\PageTypeCreator'
|
||||
element: 'Site\GraphQL\ElementTypeCreator'
|
||||
queries:
|
||||
readPages: 'Site\GraphQL\PaginatedReadPagesQueryCreator'
|
||||
readMembers: 'Site\GraphQL\ReadMembersQueryCreator'
|
||||
paginatedReadMembers: 'Site\GraphQL\PaginatedReadMembersQueryCreator'
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
Name: webapp-dev-errors
|
||||
Name: webapp-base-logs-dev
|
||||
Only:
|
||||
environment: dev
|
||||
---
|
||||
@ -15,7 +15,7 @@ SilverStripe\Core\Injector\Injector:
|
||||
Formatter: '%$SilverStripe\Logging\DetailedErrorFormatter'
|
||||
CLIFormatter: '%$SilverStripe\Logging\DetailedErrorFormatter'
|
||||
---
|
||||
Name: webapp-live-errors
|
||||
Name: webapp-base-logs-live
|
||||
Except:
|
||||
environment: dev
|
||||
---
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
Name: app-mimeuploadvalidator
|
||||
Name: webapp-base-mimeuploadvalidator
|
||||
After: '#mimeuploadvalidator'
|
||||
Only:
|
||||
moduleexists: 'silverstripe/mimevalidator'
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
Name: 'webapp-security'
|
||||
Name: 'webapp-base-security'
|
||||
After: 'framework/*, cms/*, security_baseline'
|
||||
---
|
||||
SilverStripe\Core\Injector\Injector:
|
||||
@ -11,6 +11,12 @@ SilverStripe\Core\Injector\Injector:
|
||||
Except:
|
||||
environment: dev
|
||||
---
|
||||
# Secure cookies
|
||||
SilverStripe\Control\Session:
|
||||
cookie_secure: true
|
||||
strict_user_agent_check: false
|
||||
timeout: 604800
|
||||
|
||||
SilverStripe\Forms\PasswordField:
|
||||
autocompleate: false
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
Name: 'webapp-version-truncator'
|
||||
Name: 'webapp-base-version-truncator'
|
||||
---
|
||||
Axllent\VersionTruncator\VersionTruncator:
|
||||
keep_versions: 4 # how many (published) versions of each page to keep
|
@ -1,17 +0,0 @@
|
||||
---
|
||||
Name: 'app-captcha'
|
||||
---
|
||||
|
||||
SilverStripe\SpamProtection\Extension\FormSpamProtectionExtension:
|
||||
default_spam_protector: UndefinedOffset\NoCaptcha\Forms\NocaptchaProtector
|
||||
|
||||
UndefinedOffset\NoCaptcha\Forms\NocaptchaField:
|
||||
site_key: "YOUR_SITE_KEY" #Your site key (required)
|
||||
secret_key: "YOUR_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)
|
||||
default_size: "normal" #Default size (optional, normal, compact or invisible, defaults to normal)
|
||||
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)
|
@ -1,8 +0,0 @@
|
||||
---
|
||||
Name: 'webapp-columns'
|
||||
---
|
||||
|
||||
Site\Extensions\ElementRows:
|
||||
container_max_width: 1140
|
||||
column_class: 'col-block col-md'
|
||||
|
42
app/_config/locale-fluent.yml_
Normal file
@ -0,0 +1,42 @@
|
||||
---
|
||||
Name: webapp-locale-fluent
|
||||
After:
|
||||
- webapp-extensions
|
||||
- webapp-elemental
|
||||
- webapp-locale
|
||||
---
|
||||
# Define Fluent locales
|
||||
TractorCow\Fluent\Model\Locale:
|
||||
default_records:
|
||||
en:
|
||||
Title: 'EN'
|
||||
Locale: en_US
|
||||
URLSegment: en
|
||||
IsGlobalDefault: 1
|
||||
us:
|
||||
Locale: en_US
|
||||
Title: 'EN'
|
||||
URLSegment: en
|
||||
ru:
|
||||
Locale: ru_RU
|
||||
Title: 'RU'
|
||||
URLSegment: ru
|
||||
Fallbacks:
|
||||
- =>TractorCow\Fluent\Model\Locale.us
|
||||
|
||||
# Enable Fluent extensions
|
||||
Page:
|
||||
extensions:
|
||||
- DNADesign\Elemental\TopPage\SiteTreeExtension
|
||||
- DNADesign\Elemental\Extensions\ElementalPageExtension
|
||||
- Site\Extensions\PageFluentExtension
|
||||
|
||||
DNADesign\Elemental\Models\ElementalArea:
|
||||
extensions:
|
||||
- DNADesign\Elemental\TopPage\FluentExtension
|
||||
- Site\Extensions\ElementalArea
|
||||
|
||||
DNADesign\Elemental\Models\BaseElement:
|
||||
extensions:
|
||||
- DNADesign\Elemental\TopPage\FluentExtension
|
||||
- Site\Extensions\ElementRows
|
@ -1,23 +1,6 @@
|
||||
---
|
||||
Name: 'webapp-locale'
|
||||
Name: webapp-locale
|
||||
---
|
||||
TractorCow\Fluent\Model\Locale:
|
||||
default_records:
|
||||
en:
|
||||
Title: 'EN'
|
||||
Locale: en_US
|
||||
URLSegment: en
|
||||
IsGlobalDefault: 1
|
||||
us:
|
||||
Locale: en_US
|
||||
Title: 'EN'
|
||||
URLSegment: en
|
||||
ru:
|
||||
Locale: ru_RU
|
||||
Title: 'RU'
|
||||
URLSegment: ru
|
||||
Fallbacks:
|
||||
- =>TractorCow\Fluent\Model\Locale.us
|
||||
|
||||
Symbiote\Addressable\Addressable:
|
||||
allowed_countries:
|
||||
|
@ -1,14 +1,10 @@
|
||||
---
|
||||
Name: webapp-elemental
|
||||
Name: webapp-options-elements
|
||||
After:
|
||||
- elemental
|
||||
- elemental-list
|
||||
- elementalvirtual
|
||||
---
|
||||
Site\Elements\SliderElement:
|
||||
slide_width: 2140
|
||||
slide_height: 700
|
||||
|
||||
Page:
|
||||
searchable_elements:
|
||||
- DNADesign\Elemental\Models\ElementContent
|
||||
@ -17,7 +13,6 @@ Page:
|
||||
extensions:
|
||||
- DNADesign\Elemental\TopPage\SiteTreeExtension
|
||||
- DNADesign\Elemental\Extensions\ElementalPageExtension
|
||||
- Site\Extensions\PageFluentExtension
|
||||
|
||||
SilverStripe\CMS\Controllers\ContentController:
|
||||
extensions:
|
||||
@ -29,14 +24,12 @@ SilverStripe\CMS\Controllers\ContentController:
|
||||
DNADesign\Elemental\Models\ElementalArea:
|
||||
extensions:
|
||||
#- DNADesign\Elemental\TopPage\DataExtension
|
||||
- DNADesign\Elemental\TopPage\FluentExtension
|
||||
- Site\Extensions\ElementalArea
|
||||
|
||||
DNADesign\Elemental\Models\BaseElement:
|
||||
default_global_elements: true
|
||||
extensions:
|
||||
#- DNADesign\Elemental\TopPage\DataExtension
|
||||
- DNADesign\Elemental\TopPage\FluentExtension
|
||||
- Site\Extensions\ElementRows
|
||||
|
||||
SilverStripe\CMS\Model\SiteTree:
|
||||
@ -56,6 +49,7 @@ SilverStripe\CMS\Model\SiteTree:
|
||||
- DNADesign\ElementalVirtual\Model\ElementVirtual
|
||||
- Site\Elements\AccordionElement
|
||||
- Site\Elements\CustomSnippetElement
|
||||
- Site\Elements\InstagramElement
|
||||
|
||||
DNADesign\ElementalList\Model\ElementList:
|
||||
inline_editable: false
|
||||
@ -75,6 +69,8 @@ DNADesign\ElementalList\Model\ElementList:
|
||||
- Site\Elements\BlockElement
|
||||
- Site\Elements\MapElement
|
||||
- Site\Elements\AccordionElement
|
||||
- Site\Elements\CustomSnippetElement
|
||||
- Site\Elements\InstagramElement
|
||||
styles:
|
||||
whiteframe: 'White Frame'
|
||||
noframe: 'No Frame'
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
Name: 'webapp-widgets'
|
||||
Name: webapp-options-widgets
|
||||
---
|
||||
# Blog + Widgets module extensions
|
||||
Page:
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
Name: 'webapp-shop'
|
||||
Name: webapp-shop
|
||||
---
|
||||
SilverStripe\Core\Injector\Injector:
|
||||
SilverShop\Checkout\SinglePageCheckoutComponentConfig:
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
Name: 'webapp-requirements'
|
||||
Name: webapp-templates-requirements
|
||||
---
|
||||
Site\Templates\DeferredRequirements:
|
||||
nojquery: false
|
||||
nofontawesome: false
|
||||
version: false
|
||||
static_domain: false
|
||||
deferred: true
|
||||
noreact: false
|
||||
nojquery: true
|
||||
jquery_version: '3.4.1'
|
||||
|
||||
SilverStripe\FontAwesome\FontAwesomeField:
|
@ -1,12 +1,19 @@
|
||||
---
|
||||
Name: 'webapp-themes'
|
||||
Name: webapp-templates-themes
|
||||
After:
|
||||
- webapp-options-elements
|
||||
---
|
||||
SilverStripe\View\SSViewer:
|
||||
source_file_comments: false
|
||||
source_file_comments: true
|
||||
themes:
|
||||
- '$public'
|
||||
- '$default'
|
||||
|
||||
Site\Elements\SliderElement:
|
||||
slide_width: 2140
|
||||
slide_height: 700
|
||||
|
||||
# 2x container width to automatically resize images for 2K display
|
||||
Site\Extensions\ElementRows:
|
||||
container_max_width: 2280
|
||||
column_class: 'col-block col-md'
|
@ -1,14 +1,21 @@
|
||||
# Name: webapp-webpack
|
||||
# that's important to place this file into /app/_config/webpack.yml
|
||||
# with all configuration variables presented
|
||||
# Cuz WebPack compiling script use it to set configuration
|
||||
|
||||
Site\Templates\WebpackTemplateProvider:
|
||||
APPDIR: app
|
||||
THEMESDIR: themes
|
||||
HOSTNAME: localhost
|
||||
APPDIR: './app'
|
||||
THEMESDIR: './themes'
|
||||
HOSTNAME: 127.0.0.1
|
||||
PORT: 3000
|
||||
SRC: client/src
|
||||
DIST: client/dist
|
||||
TYPESJS: client/src/js/types
|
||||
TYPESSCSS: client/src/scss/types
|
||||
webp: false
|
||||
NODE_ENV: production #production,development
|
||||
HTTPS: true
|
||||
injectClient: true
|
||||
GRAPHQL_URL: '/graphql'
|
||||
GRAPHQL_API_KEY: 'LgPaRkVPYa8IY7x3AjbLC8wx6oPPSlO01yPflFXecvQ'
|
||||
#STATIC_URL: 'http://127.0.0.1'
|
||||
|
2
app/client/dist/css/app.css
vendored
@ -1 +0,0 @@
|
||||
@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(.8)}to{transform:scale(1)}}@keyframes fade{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.mapAPI-map{height:30rem;margin-bottom:4rem}.mapboxgl-popup{width:16rem;height:7rem;font-size:.8rem;line-height:1.2em;position:absolute;top:0;left:0;display:flex;pointer-events:none;z-index:4}.mapboxgl-popup-anchor-bottom,.mapboxgl-popup-anchor-bottom-left,.mapboxgl-popup-anchor-bottom-right{flex-direction:column-reverse}.mapboxgl-popup-content{min-width:16rem;background:#fff;color:#212121;position:relative;pointer-events:auto;padding:.8rem;border-radius:.25rem;min-height:5rem;box-shadow:0 .1rem .8rem 0 rgba(0,0,0,.4)}.mapboxgl-popup-close-button{position:absolute;right:0;top:0;font-size:2rem;padding:.5rem;border-top-right-radius:.25rem}.mapboxgl-popup-close-button:focus,.mapboxgl-popup-close-button:hover{background:#2196f3;color:#fff}.mapboxgl-popup-tip{width:0;height:0;border:.8rem solid transparent;z-index:1}.mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip{border-top-color:#fff;align-self:center;border-bottom:none}.mapboxgl-marker{width:30px;height:30px;font-size:30px;line-height:1em;color:#2196f3;cursor:pointer;text-align:center;display:flex;align-items:flex-end;justify-content:center}.mapboxgl-marker .fab,.mapboxgl-marker .far,.mapboxgl-marker .fas,.mapboxgl-marker .marker-icon{animation:pulse .8s linear infinite}
|
@ -1 +0,0 @@
|
||||
@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(.8)}to{transform:scale(1)}}@keyframes fade{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.mapAPI-map{height:30rem;margin-bottom:4rem}.mapboxgl-popup{width:16rem;height:7rem;font-size:.8rem;line-height:1.2em;position:absolute;top:0;left:0;display:flex;pointer-events:none;z-index:4}.mapboxgl-popup-anchor-bottom,.mapboxgl-popup-anchor-bottom-left,.mapboxgl-popup-anchor-bottom-right{flex-direction:column-reverse}.mapboxgl-popup-content{min-width:16rem;background:#fff;color:#212121;position:relative;pointer-events:auto;padding:.8rem;border-radius:.25rem;min-height:5rem;box-shadow:0 .1rem .8rem 0 rgba(0,0,0,.4)}.mapboxgl-popup-close-button{position:absolute;right:0;top:0;font-size:2rem;padding:.5rem;border-top-right-radius:.25rem}.mapboxgl-popup-close-button:focus,.mapboxgl-popup-close-button:hover{background:#2196f3;color:#fff}.mapboxgl-popup-tip{width:0;height:0;border:.8rem solid transparent;z-index:1}.mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip{border-top-color:#fff;align-self:center;border-bottom:none}.mapboxgl-marker{width:30px;height:30px;font-size:30px;line-height:1em;color:#2196f3;cursor:pointer;text-align:center;display:flex;align-items:flex-end;justify-content:center}.mapboxgl-marker .fab,.mapboxgl-marker .far,.mapboxgl-marker .fas,.mapboxgl-marker .marker-icon{animation:pulse .8s linear infinite}
|
2
app/client/dist/css/app_cms.css
vendored
@ -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{min-width:30%;padding-bottom:0;margin-bottom:0;border:0}#Form_EditForm_MajorActions_Holder{min-width:70%;padding-bottom:0;margin-bottom:0;border:0}#Form_ItemEditForm_RightGroup_Holder{min-width:20%;padding-bottom:0;margin-bottom:0;border: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{overflow:hidden}.fields-compact .form-group{padding-bottom:.5rem;margin-bottom:.25rem}.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{margin:0!important;padding:0!important;width:100%!important;max-width:100%!important;flex:0 0 100%!important;display:flex;flex-wrap:wrap}.fields-row .form__fieldgroup>.form-group{padding:0 1rem;margin:0!important;flex:1 1 50%;max-width:50%}.notifications-list .alert .btn-close{display:none}.btn-outline-primary,.btn-primary{color:#fff}
|
||||
#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{min-width:30%;padding-bottom:0;margin-bottom:0;border:0}#Form_EditForm_MajorActions_Holder{min-width:70%;padding-bottom:0;margin-bottom:0;border:0}#Form_ItemEditForm_RightGroup_Holder{min-width:20%;padding-bottom:0;margin-bottom:0;border: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{overflow:hidden}.fields-compact .form-group{padding-bottom:.5rem;margin-bottom:.25rem}.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{margin:0!important;padding:0!important;width:100%!important;max-width:100%!important;flex:0 0 100%!important;display:flex;flex-wrap:wrap}.fields-row .form__fieldgroup>.form-group{padding:0 1rem;margin:0!important;flex:1 1 50%;max-width:50%}.notifications-list .alert .btn-close{display:none}
|
2
app/client/dist/css/app_editor.css
vendored
@ -1 +1 @@
|
||||
.table,table{width:100%;margin-bottom:1rem;color:#212121}.table td,.table th,table td,table th{padding:.75rem;vertical-align:top;border-top:1px solid #e0e0e0}.table thead th,table thead th{vertical-align:bottom;border-bottom:2px solid #e0e0e0}.table tbody+tbody,table tbody+tbody{border-top:2px solid #e0e0e0}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th,table,table td,table th{border:1px solid #e0e0e0}.table-bordered thead td,.table-bordered thead th,table thead td,table thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212121;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#c1e2fc}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#8cc8f9}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#a9d7fb}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d8d8d8}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b7b7b7}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#cbcbcb}.table-success,.table-success>td,.table-success>th{background-color:#cde9ce}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#a2d5a4}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#bbe1bd}.table-info,.table-info>td,.table-info>th{background-color:#b8ecf3}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#7adce9}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#a2e6ef}.table-warning,.table-warning>td,.table-warning>th{background-color:#fff9c8}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#fff599}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#fff6af}.table-danger,.table-danger>td,.table-danger>th{background-color:#fccac7}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#f99d96}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#fbb3af}.table-light,.table-light>td,.table-light>th{background-color:#fcfcfc}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fafafa}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#efefef}.table-dark,.table-dark>td,.table-dark>th{background-color:#c1c1c1}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#8c8c8c}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b4b4b4}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th,table .thead-dark th{color:#fff;background-color:#424242;border-color:#555}.table .thead-light th,table .thead-light th{color:#616161;background-color:#eee;border-color:#e0e0e0}.table-dark{color:#fff;background-color:#424242}.table-dark td,.table-dark th,.table-dark thead th{border-color:#555}.table-dark.table-bordered,table.table-dark{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered,.table-responsive-sm>table{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered,.table-responsive-md>table{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered,.table-responsive-lg>table{border:0}}@media (max-width:1167.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered,.table-responsive-xl>table{border:0}}@media (max-width:1367.98px){.table-responsive-xxl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xxl>.table-bordered,.table-responsive-xxl>table{border:0}}@media (max-width:1567.98px){.table-responsive-xxxl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xxxl>.table-bordered,.table-responsive-xxxl>table{border:0}}@media (max-width:1867.98px){.table-responsive-xxxxl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xxxxl>.table-bordered,.table-responsive-xxxxl>table{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered,.table-responsive>table{border:0}.captionImage,.image,.ss-htmleditorfield-file,img{display:block;margin:1rem;max-width:100%}.captionImage.center,.image.center,.ss-htmleditorfield-file.center,img.center{margin-left:auto;margin-right:auto;text-align:center}.captionImage.left,.image.left,.ss-htmleditorfield-file.left,img.left{float:left;clear:left;margin:0 1rem 1rem 0}.captionImage.right,.image.right,.ss-htmleditorfield-file.right,img.right{float:right;clear:right;margin:1rem 0 0 1rem}.captionImage.leftAlone,.image.leftAlone,.ss-htmleditorfield-file.leftAlone,img.leftAlone{float:left;clear:left;margin:0 1rem 1rem 0}.captionImage.rightAlone,.image.rightAlone,.ss-htmleditorfield-file.rightAlone,img.rightAlone{float:right;clear:right;margin:1rem 0 0 1rem}.captionImage iframe,.image iframe,.ss-htmleditorfield-file iframe,img iframe{width:100%!important;height:100%!important}.captionImage img{margin-bottom:.5rem!important}.captionImage .caption{font-size:.8rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}table{width:100%;max-width:100%;border-collapse:collapse}table.table-none{border:0}table.table-none td,table.table-none th,table.table-none tr{border:0;background:none!important}table:first-child{margin-top:0}table:last-child{margin-bottom:0}ol,ul{padding-left:2rem}ol li,ul li{position:relative;padding-left:0}ul,ul li{list-style:none}ul li{margin:.5em 0}ul li:before{content:"\2022";display:inline-block;margin-right:.5em;position:absolute;left:-.75em;font-size:1.5em;top:-.25em}div,iframe,img,p,table,td,th,tr{max-width:100%!important}@media (max-width:575px){div,iframe,img,p,table,td,th,tr{display:block;width:100%!important;border:0!important;padding-left:0!important;padding-right:0!important}}@media (max-width:575px){div,img,p,table,td,th,tr{height:auto!important}}a{color:#2196f3}img{border:1px dashed #dedede}
|
||||
.table,table{--bs-table-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);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*,table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.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;color:#000;border-color:#bacbe6}.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;color:#000;border-color:#cbccce}.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;color:#000;border-color:#bcd0c7}.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;color:#000;border-color:#badce3}.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;color:#000;border-color:#e6dbb9}.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;color:#000;border-color:#dfc2c4}.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;color:#000;border-color:#dfe0e1}.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;color:#fff;border-color:#373b3e}.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}}@media (max-width:1367.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1567.98px){.table-responsive-xxxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1867.98px){.table-responsive-xxxxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.captionImage,.image,.ss-htmleditorfield-file,img{display:block;margin-top:var(--body-gutter-reduced-y);margin-bottom:var(--body-gutter-reduced-y);max-width:100%}@media (min-width:576px){.captionImage,.image,.ss-htmleditorfield-file,img{margin-left:var(--body-gutter-reduced-x);margin-right:var(--body-gutter-reduced-x)}}.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{float:left;clear: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 var(--body-gutter-reduced-x) var(--body-gutter-reduced-y) 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{float:right;clear: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:var(--body-gutter-reduced-y) 0 0 var(--body-gutter-reduced-x)}}.captionImage iframe,.image iframe,.ss-htmleditorfield-file iframe,img iframe{width:100%!important;height:100%!important}.captionImage img{margin-bottom:var(--body-gutter-reduced-y)!important}.captionImage .caption{font-size:.8rem}.text-left,.text-start{text-align:left}.text-center{text-align:center}.text-end,.text-right{text-align:right}.text-justify{text-align:justify}table{width:100%;max-width:100%;border-collapse:collapse}table.table-none{border:0}table.table-none td,table.table-none th,table.table-none tr{border:0;background:none!important;box-shadow:none!important}ol,ul{padding-left:1rem}ol li,ul li{position:relative;padding-left:0}ul,ul li{list-style:none}ul li{margin:.5em 0}ul li:before{content:"\2022";display:inline-block;margin-right:.5em;position:absolute;left:-.75em;font-size:1em;top:-.1em;opacity:.5}iframe,img,p,table,td,th,tr{max-width:100%!important}@media (max-width:575px){iframe,img,p,table,td,th,tr{display:block;width:100%!important;border:0!important;padding-left:0!important;padding-right:0!important}}@media (max-width:575px){img,p,table,td,th,tr{height:auto!important}}@media (max-width:575px){.d-typography-breakpoint-none{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}thead{display:block;text-align:center}thead>tr{display:flex}tbody{display:block}td{display:flex}td:before{content:attr(data-label);font-weight:700;width:50%;min-width:50%;padding:0 .5rem;display:block}}a{color:#0d6efd}img{border:1px dashed #dedede}
|
2
app/client/dist/css/app_order.css
vendored
@ -1 +1 @@
|
||||
h1.title{display:block;text-align:right;border-bottom:1px solid #e0e0e0;text-transform:uppercase;line-height:1.5em}.warningMessage{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border-radius:.25rem;color:#856404;background-color:#fff3cd;border:1px solid #ffeeba}#Content{text-align:left;margin:auto;padding-left:20px}#Content .emailTitle{font-weight:400;font-size:2.25rem}#Content .emailTitle,#Content .PageTitle{font-family:Lato,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}#Content .PageTitle{padding:5px;color:#212121;font-size:14px}#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{margin:.75em 0;color:#212121}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{border-collapse:collapse;width:100%;border:1px solid #e0e0e0;background:#fff;margin-top:10px}table.infotable td.product.title{color:#2196f3;font-size:1.75rem;font-weight:400;font-family:Lato,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}table.infotable tr td,table.infotable tr th{padding:5px;color:#212121;border:1px solid #e0e0e0}table.infotable td{vertical-align:middle}table.infotable tr.summary{font-weight:700}table.infotable td.ordersummary{font-size:1em;border-bottom:1px solid #e0e0e0}table.infotable tr th{font-weight:700}table.infotable tr td a{color:#2196f3;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{display:block;text-align:right;border-bottom:1px solid #dee2e6;text-transform:uppercase;line-height:1.5em}.warningMessage{position:relative;padding:1rem;margin-bottom:1rem;color:#856404;background-color:#fff3cd;border:1px solid #ffeeba}#Content{text-align:left;margin:auto;padding-left:20px}#Content .emailTitle{font-weight:400;font-size:2.5rem}#Content .emailTitle,#Content .PageTitle{font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}#Content .PageTitle{padding:5px;color:#212529;font-size:14px}#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{margin:.75em 0;color:#212529}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{border-collapse:collapse;width:100%;border:1px solid #dee2e6;background:#fff;margin-top:10px}table.infotable td.product.title{color:#0d6efd;font-size:1.75rem;font-weight:400;font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}table.infotable tr td,table.infotable tr th{padding:5px;color:#212529;border:1px solid #dee2e6}table.infotable td{vertical-align:middle}table.infotable tr.summary{font-weight:700}table.infotable td.ordersummary{font-size:1em;border-bottom:1px solid #dee2e6}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}
|
2
app/client/dist/css/sample.css
vendored
BIN
app/client/dist/icons/android-chrome-144x144.png
vendored
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 5.5 KiB |
BIN
app/client/dist/icons/android-chrome-192x192.png
vendored
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 7.8 KiB |
BIN
app/client/dist/icons/android-chrome-256x256.png
vendored
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 11 KiB |
BIN
app/client/dist/icons/android-chrome-384x384.png
vendored
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 18 KiB |
BIN
app/client/dist/icons/android-chrome-512x512.png
vendored
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 26 KiB |
BIN
app/client/dist/icons/android-chrome-96x96.png
vendored
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.2 KiB |
BIN
app/client/dist/icons/apple-touch-icon-1024x1024.png
vendored
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 115 KiB |
BIN
app/client/dist/icons/apple-touch-icon-114x114.png
vendored
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 8.3 KiB |
BIN
app/client/dist/icons/apple-touch-icon-120x120.png
vendored
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 9.0 KiB |
BIN
app/client/dist/icons/apple-touch-icon-144x144.png
vendored
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 11 KiB |
BIN
app/client/dist/icons/apple-touch-icon-152x152.png
vendored
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 12 KiB |
BIN
app/client/dist/icons/apple-touch-icon-167x167.png
vendored
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 13 KiB |
BIN
app/client/dist/icons/apple-touch-icon-180x180.png
vendored
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 15 KiB |
BIN
app/client/dist/icons/apple-touch-icon-57x57.png
vendored
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 3.4 KiB |
BIN
app/client/dist/icons/apple-touch-icon-60x60.png
vendored
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 3.6 KiB |
BIN
app/client/dist/icons/apple-touch-icon-72x72.png
vendored
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 4.6 KiB |
BIN
app/client/dist/icons/apple-touch-icon-76x76.png
vendored
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 15 KiB |
BIN
app/client/dist/icons/apple-touch-icon.png
vendored
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 137 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 152 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 155 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 193 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 208 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 216 KiB |
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 217 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 194 KiB |
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 282 KiB |
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 209 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 154 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 217 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 218 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 138 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 157 KiB |
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 284 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 96 KiB |
8
app/client/dist/icons/browserconfig.xml
vendored
@ -2,10 +2,10 @@
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square70x70logo src="/icons/mstile-70x70.png"/>
|
||||
<square150x150logo src="/icons/mstile-150x150.png"/>
|
||||
<wide310x150logo src="/icons/mstile-310x150.png"/>
|
||||
<square310x310logo src="/icons/mstile-310x310.png"/>
|
||||
<square70x70logo src="mstile-70x70.png"/>
|
||||
<square150x150logo src="mstile-150x150.png"/>
|
||||
<wide310x150logo src="mstile-310x150.png"/>
|
||||
<square310x310logo src="mstile-310x310.png"/>
|
||||
<TileColor>#fff</TileColor>
|
||||
|
||||
</tile>
|
||||
|
BIN
app/client/dist/icons/coast-228x228.png
vendored
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 20 KiB |
BIN
app/client/dist/icons/favicon-16x16.png
vendored
Before Width: | Height: | Size: 274 B After Width: | Height: | Size: 321 B |
BIN
app/client/dist/icons/firefox_app_128x128.png
vendored
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 14 KiB |
BIN
app/client/dist/icons/firefox_app_512x512.png
vendored
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 76 KiB |
BIN
app/client/dist/icons/firefox_app_60x60.png
vendored
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 5.3 KiB |
18
app/client/dist/icons/manifest.json
vendored
@ -11,47 +11,47 @@
|
||||
"theme_color": "#fff",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/icons/android-chrome-36x36.png",
|
||||
"src": "android-chrome-36x36.png",
|
||||
"sizes": "36x36",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/icons/android-chrome-48x48.png",
|
||||
"src": "android-chrome-48x48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/icons/android-chrome-72x72.png",
|
||||
"src": "android-chrome-72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/icons/android-chrome-96x96.png",
|
||||
"src": "android-chrome-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/icons/android-chrome-144x144.png",
|
||||
"src": "android-chrome-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/icons/android-chrome-192x192.png",
|
||||
"src": "android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/icons/android-chrome-256x256.png",
|
||||
"src": "android-chrome-256x256.png",
|
||||
"sizes": "256x256",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/icons/android-chrome-384x384.png",
|
||||
"src": "android-chrome-384x384.png",
|
||||
"sizes": "384x384",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/icons/android-chrome-512x512.png",
|
||||
"src": "android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
|
6
app/client/dist/icons/manifest.webapp
vendored
@ -3,9 +3,9 @@
|
||||
"name": "ss-webpack-boilerplate",
|
||||
"description": "Lets you create SilverStripe faster",
|
||||
"icons": {
|
||||
"60": "/icons/firefox_app_60x60.png",
|
||||
"128": "/icons/firefox_app_128x128.png",
|
||||
"512": "/icons/firefox_app_512x512.png"
|
||||
"60": "firefox_app_60x60.png",
|
||||
"128": "firefox_app_128x128.png",
|
||||
"512": "firefox_app_512x512.png"
|
||||
},
|
||||
"developer": {
|
||||
"name": "Tony Air",
|
||||
|
BIN
app/client/dist/icons/mstile-144x144.png
vendored
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 5.5 KiB |
BIN
app/client/dist/icons/mstile-150x150.png
vendored
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 5.7 KiB |
BIN
app/client/dist/icons/mstile-310x150.png
vendored
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 6.0 KiB |
BIN
app/client/dist/icons/mstile-310x310.png
vendored
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 14 KiB |
@ -2,7 +2,7 @@
|
||||
"version": "2.0.2",
|
||||
"api_version": 1,
|
||||
"layout": {
|
||||
"logo": "/icons/yandex-browser-50x50.png",
|
||||
"logo": "yandex-browser-50x50.png",
|
||||
"color": "#fff",
|
||||
"show_title": true
|
||||
}
|
||||
|
BIN
app/client/dist/img/logo.png
vendored
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
BIN
app/client/dist/img/photo2.jpg
vendored
Before Width: | Height: | Size: 229 KiB After Width: | Height: | Size: 127 KiB |
Before Width: | Height: | Size: 572 KiB After Width: | Height: | Size: 2.3 MiB |
2
app/client/dist/js/app.js
vendored
106
app/client/dist/js/app.js.LICENSE.txt
vendored
@ -1,94 +1,28 @@
|
||||
/*!
|
||||
* Bootstrap alert.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Bootstrap v5.0.0-beta2 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap button.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap carousel.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap collapse.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap modal.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap popover.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap scrollspy.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap tab.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap tooltip.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap util.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*! Hammer.JS - v2.0.7 - 2016-04-22
|
||||
* http://hammerjs.github.io/
|
||||
*
|
||||
* Copyright (c) 2016 Jorik Tangelder;
|
||||
* Licensed under the MIT license */
|
||||
|
||||
/*! smooth-scroll v16.1.3 | (c) 2020 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */
|
||||
|
||||
/**!
|
||||
* @fileOverview Kickass library to create and place poppers near their reference elements.
|
||||
* @version 1.16.1
|
||||
* @license
|
||||
* Copyright (c) 2016 Federico Zivolo and contributors
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
* 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
|
||||
*/
|
||||
|
||||
/*@cc_on!@*/
|
||||
/*! *****************************************************************************
|
||||
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.
|
||||
***************************************************************************** */
|
||||
|
@ -1 +0,0 @@
|
||||
!function(){"use strict";var e={609:function(e){e.exports=jQuery}},t={};function __webpack_require__(o){if(t[o])return t[o].exports;var n=t[o]={exports:{}};return e[o](n,n.exports,__webpack_require__),n.exports}__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=function(e,t){for(var o in t)__webpack_require__.o(t,o)&&!__webpack_require__.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e=__webpack_require__(609),t=__webpack_require__.n(e),o="ajax-load",n="load",r="map-loaded",a="map-api-loaded",i="map-marker-click",s="map-popup-close";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 o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}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 Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var o,n=_getPrototypeOf(e);if(t){var r=_getPrototypeOf(this).constructor;o=Reflect.construct(n,arguments,r)}else o=n.apply(this,arguments);return _possibleConstructorReturn(this,o)}}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!==typeof t?_assertThisInitialized(e):t}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 c={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 o=_createSuper(GoogleMapsHtmlOverlay);function GoogleMapsHtmlOverlay(e){var t;!function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,GoogleMapsHtmlOverlay);var n=_assertThisInitialized(t=o.call(this));return n.setMap(e.map),n.position=e.position,n.html=e.html?e.html:'<div class="mapboxgl-marker"><i class="marker-icon fas fa-map-marker-alt"></i></div>',n.divClass=e.divClass,n.align=e.align,n.isDebugMode=e.debug,n.onClick=e.onClick,n.onMouseOver=e.onMouseOver,n.isBoolean=function(e){return"boolean"===typeof e},n.isNotUndefined=function(e){return"undefined"!==typeof e},n.hasContent=function(e){return e.length>0},n.isString=function(e){return"string"===typeof e},n.isFunction=function(e){return"function"===typeof e},t}return function _createClass(e,t,o){return t&&_defineProperties(e.prototype,t),o&&_defineProperties(e,o),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,o=t()(e.div).find(".mapboxgl-marker,.marker-pin,.mapboxgl-popup,.popup");o.length||(o=t()(e.div));var n=e.getProjection().fromLatLngToDivPixel(new google.maps.LatLng(e.position)),r={y:void 0,x:void 0},a=o.outerWidth(),i=o.outerHeight();switch(Array.isArray(e.align)?e.align.join(" "):""){case"left top":r.y=i,r.x=a;break;case"left center":r.y=i/2,r.x=a;break;case"left bottom":r.y=0,r.x=a;break;case"center top":r.y=i,r.x=a/2;break;case"center center":r.y=i/2,r.x=a/2;break;case"center bottom":r.y=0,r.x=a/2;break;case"right top":r.y=i,r.x=0;break;case"right center":r.y=i/2,r.x=0;break;case"right bottom":r.y=0,r.x=0;break;default:r.y=i/2,r.x=a/2}e.div.style.top="".concat(n.y-r.y,"px"),e.div.style.left="".concat(n.x-r.x,"px")}},{key:"getPosition",value:function getPosition(){return this.position}},{key:"getDiv",value:function getDiv(){return this.div}},{key:"setPosition",value:function setPosition(e,t){var o=this;o.position=e,o.align=t,o.draw()}}]),GoogleMapsHtmlOverlay}()}};function _map_google_defineProperties(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var $,l={ENVS:["xs","sm","md","lg","xl","xxl","xxxl"],MAP_DRIVER:($=t(),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,o){return t&&_map_google_defineProperties(e.prototype,t),o&&_map_google_defineProperties(e,o),e}(GoogleMapsDriver,[{key:"getName",value:function getName(){return"GoogleMapsDriver"}},{key:"init",value:function init(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=this,n=window;o.$el=e,o.config=t,o.markers=[],n["init".concat(o.getName())]=function(){o.googleApiLoaded()},$("body").append('<script async defer src="https://maps.googleapis.com/maps/api/js?key='.concat(t.key,"&callback=init").concat(o.getName(),'"><\/script>'))}},{key:"googleApiLoaded",value:function googleApiLoaded(){var e=this,t=e.$el,o=e.config,n=t.find(".mapAPI-map"),r=o.mapZoom?o.mapZoom:10,i=o.center?{lat:o.center[1],lng:o.center[0]}:{lat:0,lng:0},s=o.style?o.style:null;console.log("".concat(e.getName(),": API is loaded")),e.MarkerUI=c.init($),e.map=new google.maps.Map(n[0],{zoom:r,center:i,fullscreenControl:!0,styles:s}),e.default_zoom=r,n.addClass("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.geocoder=new google.maps.Geocoder,t.trigger(a)}},{key:"addMarker",value:function addMarker(e,t){var o=this,n={lat:e[1],lng:e[0]},r=new o.MarkerUI({position:n,map:o.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=$("#Marker".concat(t.id));o.showPopup(n,t.content),e.trigger(i)}});return o.markers.push(r),r}},{key:"showPopup",value:function showPopup(e,t){var o=this,n=$(o.popup.getDiv());o.config.flyToMarker&&(o.map.setCenter(e),o.config.noZoom||o.map.setZoom(18)),n.css({opacity:"0"}),n.removeClass("d-none"),n.find(".mapboxgl-popup-content .html").html(t),n.find(".mapboxgl-popup-close-button").on("click",(function(e){e.preventDefault(),o.hidePopup()})),o.popup.setPosition(e,["center","top"]),n.css({"margin-top":"-1rem",opacity:"1"})}},{key:"hidePopup",value:function hidePopup(){var e=this;$(e.popup.getDiv()).addClass("d-none"),e.config.noRestoreBounds&&!e.config.flyToBounds||e.restoreBounds(),e.$el.trigger(s)}},{key:"geocode",value:function geocode(e,t){var o=this;o.geocoder.geocode({address:e},(function(e,n){if("OK"===n)return"function"===typeof t&&t(e),e;console.error("".concat(o.getName(),": Geocode was not successful for the following reason: ").concat(n))}))}},{key:"reverseGeocode",value:function reverseGeocode(e,t){var o=this;o.geocoder.geocode({location:latlng},(function(e,n){if("OK"===n)return"function"===typeof t&&t(e),e;console.error("".concat(o.getName(),": Reverse Geocoding was not successful for the following reason: ").concat(n))}))}},{key:"addGeoJson",value:function addGeoJson(e){var t=this,o=(e.geojson.features[0].geometry.coordinates,new google.maps.LatLngBounds);e.geojson.features.forEach((function(n){var r=n.id,a=n.geometry.coordinates,i=n.properties.content;t.addMarker(a,{id:r,content:i,icon:n.icon,flyToMarker:e.flyToMarker}),o.extend({lat:a[1],lng:a[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}())},jQuery=__webpack_require__(609);function _ui_map_api_defineProperties(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}!function($){var e="jsMapAPI",t=e,i=$("body"),s=l.MAP_DRIVER,c=window,p=function(){function MapAPI(o){!function _ui_map_api_classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,MapAPI);var n=this,c=new s;n.$el=$(o);var l=n.$el,p=l.data();p.center=[p.lng?p.lng:i.data("default-lng"),p.lat?p.lat:i.data("default-lat")],p.style=p.style?jQuery.parseJSON(p.style):null,p["font-family"]=i.css("font-family"),p.icon||(p.icon='<i class="fas fa-map-marker-alt"></i>'),console.log("".concat(e,": init ").concat(c.getName(),"...")),c.init(l,p),n.drv=c,l.on(a,(function(o){if(n.map=c.getMap(),p.geojson)console.log("".concat(e,": setting up geocode data")),c.addGeoJson(p);else if(p.address)console.log(p.address),console.log("".concat(e,": setting up address marker")),c.geocode(p.address,(function(t){console.log(t);var o=t[0].geometry.location.lat(),r=t[0].geometry.location.lng();console.log("".concat(e,": setting up single lat/lng marker lat: ").concat(o," lng: ").concat(r)),c.addMarker([r,o],p),n.map.setCenter({lat:o,lng:r})}));else if(p.lat&&p.lng){var a=p.lat,i=p.lng;console.log("".concat(e,": setting up single lat/lng marker lat: ").concat(a," lng: ").concat(i)),c.addMarker([i,a],p)}l.data(t,n),l.addClass("".concat(e,"-active")),l.trigger(r),console.log("".concat(e,": Map is loaded"))}))}return function _ui_map_api_createClass(e,t,o){return t&&_ui_map_api_defineProperties(e.prototype,t),o&&_ui_map_api_defineProperties(e,o),e}(MapAPI,[{key:"getMap",value:function getMap(){return ui.map}},{key:"dispose",value:function dispose(){var o=this;o.$el=null,$.removeData(o.$el[0],t),o.$el.removeClass("".concat(e,"-active"))}}],[{key:"_jQueryInterface",value:function _jQueryInterface(){var e=this;if("undefined"!==typeof c.localStorage)return this.each((function(){var o=$(e),n=o.data(t);n||(n=new MapAPI(e),o.data(t,n))}))}}]),MapAPI}();$.fn[e]=p._jQueryInterface,$.fn[e].Constructor=p,$.fn[e].noConflict=function(){return $.fn[e]=JQUERY_NO_CONFLICT,p._jQueryInterface},$(c).on("".concat(o," ").concat(n),(function(){$(".mapAPI-map-container").jsMapAPI()}))}(t())}()}();
|
@ -1 +0,0 @@
|
||||
!function(){"use strict";var e={609:function(e){e.exports=jQuery}},o={};function __webpack_require__(t){if(o[t])return o[t].exports;var n=o[t]={exports:{}};return e[t](n,n.exports,__webpack_require__),n.exports}__webpack_require__.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(o,{a:o}),o},__webpack_require__.d=function(e,o){for(var t in o)__webpack_require__.o(o,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},__webpack_require__.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},function(){var e=__webpack_require__(609),o=__webpack_require__.n(e),t="ajax-load",n="load",a="map-loaded",r="map-api-loaded",i="map-marker-click",c="map-popup-close";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,o){for(var t=0;t<o.length;t++){var n=o[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _setPrototypeOf(e,o){return(_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(e,o){return e.__proto__=o,e})(e,o)}function _createSuper(e){var o=function _isNativeReflectConstruct(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var t,n=_getPrototypeOf(e);if(o){var a=_getPrototypeOf(this).constructor;t=Reflect.construct(n,arguments,a)}else t=n.apply(this,arguments);return _possibleConstructorReturn(this,t)}}function _possibleConstructorReturn(e,o){return!o||"object"!==_typeof(o)&&"function"!==typeof o?_assertThisInitialized(e):o}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 l={init:function init(){return function(e){!function _inherits(e,o){if("function"!==typeof o&&null!==o)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(o&&o.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),o&&_setPrototypeOf(e,o)}(GoogleMapsHtmlOverlay,google.maps.OverlayView);var t=_createSuper(GoogleMapsHtmlOverlay);function GoogleMapsHtmlOverlay(e){var o;!function _classCallCheck(e,o){if(!(e instanceof o))throw new TypeError("Cannot call a class as a function")}(this,GoogleMapsHtmlOverlay);var n=_assertThisInitialized(o=t.call(this));return n.setMap(e.map),n.position=e.position,n.html=e.html?e.html:'<div class="mapboxgl-marker"><i class="marker-icon fas fa-map-marker-alt"></i></div>',n.divClass=e.divClass,n.align=e.align,n.isDebugMode=e.debug,n.onClick=e.onClick,n.onMouseOver=e.onMouseOver,n.isBoolean=function(e){return"boolean"===typeof e},n.isNotUndefined=function(e){return"undefined"!==typeof e},n.hasContent=function(e){return e.length>0},n.isString=function(e){return"string"===typeof e},n.isFunction=function(e){return"function"===typeof e},o}return function _createClass(e,o,t){return o&&_defineProperties(e.prototype,o),t&&_defineProperties(e,t),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(o){google.maps.event.trigger(e,"click"),e.isFunction(e.onClick)&&e.onClick(),o.stopPropagation()})),google.maps.event.addDomListener(e.div,"mouseover",(function(o){google.maps.event.trigger(e,"mouseover"),e.isFunction(e.onMouseOver)&&e.onMouseOver(),o.stopPropagation()}))}},{key:"draw",value:function draw(){var e=this,t=o()(e.div).find(".mapboxgl-marker,.marker-pin,.mapboxgl-popup,.popup");t.length||(t=o()(e.div));var n=e.getProjection().fromLatLngToDivPixel(new google.maps.LatLng(e.position)),a={y:void 0,x:void 0},r=t.outerWidth(),i=t.outerHeight();switch(Array.isArray(e.align)?e.align.join(" "):""){case"left top":a.y=i,a.x=r;break;case"left center":a.y=i/2,a.x=r;break;case"left bottom":a.y=0,a.x=r;break;case"center top":a.y=i,a.x=r/2;break;case"center center":a.y=i/2,a.x=r/2;break;case"center bottom":a.y=0,a.x=r/2;break;case"right top":a.y=i,a.x=0;break;case"right center":a.y=i/2,a.x=0;break;case"right bottom":a.y=0,a.x=0;break;default:a.y=i/2,a.x=r/2}e.div.style.top="".concat(n.y-a.y,"px"),e.div.style.left="".concat(n.x-a.x,"px")}},{key:"getPosition",value:function getPosition(){return this.position}},{key:"getDiv",value:function getDiv(){return this.div}},{key:"setPosition",value:function setPosition(e,o){var t=this;t.position=e,t.align=o,t.draw()}}]),GoogleMapsHtmlOverlay}()}};function _map_google_defineProperties(e,o){for(var t=0;t<o.length;t++){var n=o[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var $,s={ENVS:["xs","sm","md","lg","xl","xxl","xxxl"],MAP_DRIVER:($=o(),function(){function GoogleMapsDriver(){!function _map_google_classCallCheck(e,o){if(!(e instanceof o))throw new TypeError("Cannot call a class as a function")}(this,GoogleMapsDriver)}return function _map_google_createClass(e,o,t){return o&&_map_google_defineProperties(e.prototype,o),t&&_map_google_defineProperties(e,t),e}(GoogleMapsDriver,[{key:"getName",value:function getName(){return"GoogleMapsDriver"}},{key:"init",value:function init(e){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=this,n=window;t.$el=e,t.config=o,t.markers=[],n["init".concat(t.getName())]=function(){t.googleApiLoaded()},$("body").append('<script async defer src="https://maps.googleapis.com/maps/api/js?key='.concat(o.key,"&callback=init").concat(t.getName(),'"><\/script>'))}},{key:"googleApiLoaded",value:function googleApiLoaded(){var e=this,o=e.$el,t=e.config,n=o.find(".mapAPI-map"),a=t.mapZoom?t.mapZoom:10,i=t.center?{lat:t.center[1],lng:t.center[0]}:{lat:0,lng:0},c=t.style?t.style:null;console.log("".concat(e.getName(),": API is loaded")),e.MarkerUI=l.init($),e.map=new google.maps.Map(n[0],{zoom:a,center:i,fullscreenControl:!0,styles:c}),e.default_zoom=a,n.addClass("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.geocoder=new google.maps.Geocoder,o.trigger(r)}},{key:"addMarker",value:function addMarker(e,o){var t=this,n={lat:e[1],lng:e[0]},a=new t.MarkerUI({position:n,map:t.map,align:["center","top"],html:'<div class="mapboxgl-marker"><div id="Marker'.concat(o.id,'" data-id="').concat(o.id,'" class="marker">').concat(o.icon,"</div></div>"),onClick:function onClick(){var e=$("#Marker".concat(o.id));t.showPopup(n,o.content),e.trigger(i)}});return t.markers.push(a),a}},{key:"showPopup",value:function showPopup(e,o){var t=this,n=$(t.popup.getDiv());t.config.flyToMarker&&(t.map.setCenter(e),t.config.noZoom||t.map.setZoom(18)),n.css({opacity:"0"}),n.removeClass("d-none"),n.find(".mapboxgl-popup-content .html").html(o),n.find(".mapboxgl-popup-close-button").on("click",(function(e){e.preventDefault(),t.hidePopup()})),t.popup.setPosition(e,["center","top"]),n.css({"margin-top":"-1rem",opacity:"1"})}},{key:"hidePopup",value:function hidePopup(){var e=this;$(e.popup.getDiv()).addClass("d-none"),e.config.noRestoreBounds&&!e.config.flyToBounds||e.restoreBounds(),e.$el.trigger(c)}},{key:"geocode",value:function geocode(e,o){var t=this;t.geocoder.geocode({address:e},(function(e,n){if("OK"===n)return"function"===typeof o&&o(e),e;console.error("".concat(t.getName(),": Geocode was not successful for the following reason: ").concat(n))}))}},{key:"reverseGeocode",value:function reverseGeocode(e,o){var t=this;t.geocoder.geocode({location:latlng},(function(e,n){if("OK"===n)return"function"===typeof o&&o(e),e;console.error("".concat(t.getName(),": Reverse Geocoding was not successful for the following reason: ").concat(n))}))}},{key:"addGeoJson",value:function addGeoJson(e){var o=this,t=(e.geojson.features[0].geometry.coordinates,new google.maps.LatLngBounds);e.geojson.features.forEach((function(n){var a=n.id,r=n.geometry.coordinates,i=n.properties.content;o.addMarker(r,{id:a,content:i,icon:n.icon,flyToMarker:e.flyToMarker}),t.extend({lat:r[1],lng:r[0]})})),o.markers.length>1?o.map.fitBounds(t,{padding:30}):o.markers[0]&&o.map.setCenter(o.markers[0].getPosition()),o.default_bounds=t,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 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}())},jQuery=__webpack_require__(609);function _ui_map_api_defineProperties(e,o){for(var t=0;t<o.length;t++){var n=o[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}!function($){var e="jsMapAPI",o=e,i=$("body"),c=s.MAP_DRIVER,l=window,p=function(){function MapAPI(t){!function _ui_map_api_classCallCheck(e,o){if(!(e instanceof o))throw new TypeError("Cannot call a class as a function")}(this,MapAPI);var n=this,l=new c;n.$el=$(t);var s=n.$el,p=s.data();p.center=[p.lng?p.lng:i.data("default-lng"),p.lat?p.lat:i.data("default-lat")],p.style=p.style?jQuery.parseJSON(p.style):null,p["font-family"]=i.css("font-family"),p.icon||(p.icon='<i class="fas fa-map-marker-alt"></i>'),console.log("".concat(e,": init ").concat(l.getName(),"...")),l.init(s,p),n.drv=l,s.on(r,(function(t){if(n.map=l.getMap(),p.geojson)console.log("".concat(e,": setting up geocode data")),l.addGeoJson(p);else if(p.address)console.log(p.address),console.log("".concat(e,": setting up address marker")),l.geocode(p.address,(function(o){console.log(o);var t=o[0].geometry.location.lat(),a=o[0].geometry.location.lng();console.log("".concat(e,": setting up single lat/lng marker lat: ").concat(t," lng: ").concat(a)),l.addMarker([a,t],p),n.map.setCenter({lat:t,lng:a})}));else if(p.lat&&p.lng){var r=p.lat,i=p.lng;console.log("".concat(e,": setting up single lat/lng marker lat: ").concat(r," lng: ").concat(i)),l.addMarker([i,r],p)}s.data(o,n),s.addClass("".concat(e,"-active")),s.trigger(a),console.log("".concat(e,": Map is loaded"))}))}return function _ui_map_api_createClass(e,o,t){return o&&_ui_map_api_defineProperties(e.prototype,o),t&&_ui_map_api_defineProperties(e,t),e}(MapAPI,[{key:"getMap",value:function getMap(){return ui.map}},{key:"dispose",value:function dispose(){var t=this;t.$el=null,$.removeData(t.$el[0],o),t.$el.removeClass("".concat(e,"-active"))}}],[{key:"_jQueryInterface",value:function _jQueryInterface(){var e=this;if("undefined"!==typeof l.localStorage)return this.each((function(){var t=$(e),n=t.data(o);n||(n=new MapAPI(e),t.data(o,n))}))}}]),MapAPI}();$.fn[e]=p._jQueryInterface,$.fn[e].Constructor=p,$.fn[e].noConflict=function(){return $.fn[e]=JQUERY_NO_CONFLICT,p._jQueryInterface},$(l).on("".concat(t," ").concat(n),(function(){$(".mapAPI-map-container").jsMapAPI()}))}(o());function Site_Controllers_MapElementController_defineProperties(e,o){for(var t=0;t<o.length;t++){var n=o[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}!function($){var e=window,o=(document,$("body")),r="LocationUI",l=function(){function LocationUI(){!function Site_Controllers_MapElementController_classCallCheck(e,o){if(!(e instanceof o))throw new TypeError("Cannot call a class as a function")}(this,LocationUI)}return function Site_Controllers_MapElementController_createClass(e,o,t){return o&&Site_Controllers_MapElementController_defineProperties(e.prototype,o),t&&Site_Controllers_MapElementController_defineProperties(e,t),e}(LocationUI,null,[{key:"init",value:function init(){this.dispose(),console.log("Initializing: ".concat(r))}},{key:"initMap",value:function initMap(){$(".mapAPI-map-container").find(".marker").on("".concat(i),(function(e){var t=$(e.currentTarget).data("id");o.find(".locations .location").removeClass("active"),o.find('.locations .location[data-id="'.concat(t,'"]')).addClass("active")})),o.find(".locations .location").on("click",(function(e){var t=$(e.currentTarget).data("id");o.find("#Marker".concat(t)).click()})),$(".mapAPI-map-container").on(c,(function(e){o.find(".locations .location").removeClass("active")}))}},{key:"dispose",value:function dispose(){console.log("Destroying: ".concat(r))}}]),LocationUI}();$(e).on("".concat(t," ").concat(n),(function(){l.init()})),$(e).on(a,(function(){l.initMap()}))}(o())}()}();
|
1
app/client/dist/js/app_dev.js
vendored
@ -1 +0,0 @@
|
||||
!function(){"use strict";var n={n:function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(o,{a:o}),o},d:function(e,o){for(var t in o)n.o(o,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},o:function(n,e){return Object.prototype.hasOwnProperty.call(n,e)}},e=jQuery,o="ajax-load",t="load";function _defineProperties(n,e){for(var o=0;o<e.length;o++){var t=e[o];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(n,t.key,t)}}!function($){var n=window,e=(document,$("body"),"DevUI"),i=function(){function DevUI(){!function _classCallCheck(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,DevUI)}return function _createClass(n,e,o){return e&&_defineProperties(n.prototype,e),o&&_defineProperties(n,o),n}(DevUI,null,[{key:"init",value:function init(){this.dispose(),console.log("Initializing: ".concat(e));var n=$("#DevUtilities");this.$el=n;var o=n.find(".original");n.find(".toggle-original").on("click",(function(){o.hasClass("d-none")?o.removeClass("d-none"):o.addClass("d-none")}))}},{key:"dispose",value:function dispose(){console.log("Destroying: ".concat(e))}}]),DevUI}();$(n).on("".concat(o," ").concat(t),(function(){i.init()}))}(n.n(e)())}();
|
2
app/client/dist/js/sample.js
vendored
106
app/client/dist/js/sample.js.LICENSE.txt
vendored
@ -1,94 +1,28 @@
|
||||
/*!
|
||||
* Bootstrap alert.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Bootstrap v5.0.0-beta2 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap button.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap carousel.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap collapse.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap modal.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap popover.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap scrollspy.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap tab.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap tooltip.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Bootstrap util.js v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*! Hammer.JS - v2.0.7 - 2016-04-22
|
||||
* http://hammerjs.github.io/
|
||||
*
|
||||
* Copyright (c) 2016 Jorik Tangelder;
|
||||
* Licensed under the MIT license */
|
||||
|
||||
/*! smooth-scroll v16.1.3 | (c) 2020 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */
|
||||
|
||||
/**!
|
||||
* @fileOverview Kickass library to create and place poppers near their reference elements.
|
||||
* @version 1.16.1
|
||||
* @license
|
||||
* Copyright (c) 2016 Federico Zivolo and contributors
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
* 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
|
||||
*/
|
||||
|
||||
/*@cc_on!@*/
|
||||
/*! *****************************************************************************
|
||||
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.
|
||||
***************************************************************************** */
|
||||
|
477
app/client/dist/records.json
vendored
@ -31,334 +31,401 @@
|
||||
831
|
||||
]
|
||||
},
|
||||
"favicons-webpack-plugin": [
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/app.scss": [
|
||||
{
|
||||
"chunks": {
|
||||
"byName": {
|
||||
"favicon.png": 561
|
||||
"child": 396
|
||||
},
|
||||
"bySource": {
|
||||
"0 favicon.png": 561
|
||||
"0 child": 396
|
||||
},
|
||||
"usedIds": [
|
||||
561
|
||||
396
|
||||
]
|
||||
},
|
||||
"modules": {
|
||||
"byIdentifier": {
|
||||
"./node_modules/.pnpm/cache-loader@4.1.0_webpack@5.16.0/node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"/mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.cache/favicons-webpack-plugin\"}!./node_modules/.pnpm/github.com/jantimon/favicons-webpack-plugin@ee2818afa97c4b4bf1c6f919a403e56203e26606_webpack@5.16.0/node_modules/favicons-webpack-plugin/src/loader.js?{\"prefix\":\"/icons/\",\"options\":{\"appName\":\"ss-webpack-boilerplate\",\"appDescription\":\"Lets you create SilverStripe faster\",\"version\":\"2.0.2\",\"developerName\":\"Tony Air\"},\"path\":\"app/client/dist\"}!./app/client/src/favicon.png": 313
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/runtime/api.js": 787,
|
||||
"./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/app.scss": 331
|
||||
},
|
||||
"usedIds": [
|
||||
313
|
||||
331,
|
||||
787
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/_cms.scss": [
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/cms.scss": [
|
||||
{
|
||||
"chunks": {
|
||||
"byName": {
|
||||
"mini-css-extract-plugin": 323
|
||||
"child": 396
|
||||
},
|
||||
"bySource": {
|
||||
"0 mini-css-extract-plugin": 323
|
||||
"0 child": 396
|
||||
},
|
||||
"usedIds": [
|
||||
323
|
||||
396
|
||||
]
|
||||
},
|
||||
"modules": {
|
||||
"byIdentifier": {
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/runtime/api.js": 183,
|
||||
"./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/_cms.scss": 766
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/runtime/api.js": 787,
|
||||
"./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/cms.scss": 82
|
||||
},
|
||||
"usedIds": [
|
||||
183,
|
||||
766
|
||||
82,
|
||||
787
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/app.scss": [
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/dev.scss": [
|
||||
{
|
||||
"chunks": {
|
||||
"byName": {
|
||||
"mini-css-extract-plugin": 323
|
||||
"child": 396
|
||||
},
|
||||
"bySource": {
|
||||
"0 mini-css-extract-plugin": 323
|
||||
"0 child": 396
|
||||
},
|
||||
"usedIds": [
|
||||
323
|
||||
396
|
||||
]
|
||||
},
|
||||
"modules": {
|
||||
"byIdentifier": {
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/runtime/api.js": 183,
|
||||
"./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/app.scss": 549,
|
||||
"./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/select2@4.0.13/node_modules/select2/dist/css/select2.css": 637
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/runtime/api.js": 787,
|
||||
"./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/dev.scss": 118
|
||||
},
|
||||
"usedIds": [
|
||||
183,
|
||||
549,
|
||||
637
|
||||
118,
|
||||
787
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/dev.scss": [
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/editor.scss": [
|
||||
{
|
||||
"chunks": {
|
||||
"byName": {
|
||||
"mini-css-extract-plugin": 323
|
||||
"child": 396
|
||||
},
|
||||
"bySource": {
|
||||
"0 mini-css-extract-plugin": 323
|
||||
"0 child": 396
|
||||
},
|
||||
"usedIds": [
|
||||
323
|
||||
396
|
||||
]
|
||||
},
|
||||
"modules": {
|
||||
"byIdentifier": {
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/runtime/api.js": 183,
|
||||
"./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/dev.scss": 889
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/runtime/api.js": 787,
|
||||
"./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/editor.scss": 518
|
||||
},
|
||||
"usedIds": [
|
||||
183,
|
||||
889
|
||||
518,
|
||||
787
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/editor.scss": [
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/order.scss": [
|
||||
{
|
||||
"chunks": {
|
||||
"byName": {
|
||||
"mini-css-extract-plugin": 323
|
||||
"child": 396
|
||||
},
|
||||
"bySource": {
|
||||
"0 mini-css-extract-plugin": 323
|
||||
"0 child": 396
|
||||
},
|
||||
"usedIds": [
|
||||
323
|
||||
396
|
||||
]
|
||||
},
|
||||
"modules": {
|
||||
"byIdentifier": {
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/runtime/api.js": 183,
|
||||
"./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/editor.scss": 864
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/runtime/api.js": 787,
|
||||
"./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/order.scss": 554
|
||||
},
|
||||
"usedIds": [
|
||||
183,
|
||||
864
|
||||
554,
|
||||
787
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/order.scss": [
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./node_modules/.pnpm/@a2nt/meta-lightbox-react@3.1.0/node_modules/@a2nt/meta-lightbox-react/src/scss/_window.scss": [
|
||||
{
|
||||
"chunks": {
|
||||
"byName": {
|
||||
"mini-css-extract-plugin": 323
|
||||
"child": 396
|
||||
},
|
||||
"bySource": {
|
||||
"0 mini-css-extract-plugin": 323
|
||||
"0 child": 396
|
||||
},
|
||||
"usedIds": [
|
||||
323
|
||||
396
|
||||
]
|
||||
},
|
||||
"modules": {
|
||||
"byIdentifier": {
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/runtime/api.js": 183,
|
||||
"./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/order.scss": 205
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/runtime/api.js": 787,
|
||||
"./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./node_modules/.pnpm/@a2nt/meta-lightbox-react@3.1.0/node_modules/@a2nt/meta-lightbox-react/src/scss/_window.scss": 887
|
||||
},
|
||||
"usedIds": [
|
||||
183,
|
||||
205
|
||||
787,
|
||||
887
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./node_modules/.pnpm/@a2nt/meta-lightbox@2.7.3/node_modules/@a2nt/meta-lightbox/src/scss/app.scss": [
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./themes/sample/client/src/scss/app.scss": [
|
||||
{
|
||||
"chunks": {
|
||||
"byName": {
|
||||
"mini-css-extract-plugin": 323
|
||||
"child": 396
|
||||
},
|
||||
"bySource": {
|
||||
"0 mini-css-extract-plugin": 323
|
||||
"0 child": 396
|
||||
},
|
||||
"usedIds": [
|
||||
323
|
||||
396
|
||||
]
|
||||
},
|
||||
"modules": {
|
||||
"byIdentifier": {
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/runtime/api.js": 183,
|
||||
"./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./node_modules/.pnpm/@a2nt/meta-lightbox@2.7.3/node_modules/@a2nt/meta-lightbox/src/scss/app.scss": 430
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/runtime/api.js": 787,
|
||||
"./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./themes/sample/client/src/scss/app.scss": 209
|
||||
},
|
||||
"usedIds": [
|
||||
183,
|
||||
430
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./node_modules/.pnpm/@a2nt/ss-bootstrap-ui-webpack-boilerplate@2.8.4/node_modules/@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/scss/_components/_ui.map.scss": [
|
||||
{
|
||||
"chunks": {
|
||||
"byName": {
|
||||
"mini-css-extract-plugin": 323
|
||||
},
|
||||
"bySource": {
|
||||
"0 mini-css-extract-plugin": 323
|
||||
},
|
||||
"usedIds": [
|
||||
323
|
||||
]
|
||||
},
|
||||
"modules": {
|
||||
"byIdentifier": {
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/runtime/api.js": 183,
|
||||
"./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./node_modules/.pnpm/@a2nt/ss-bootstrap-ui-webpack-boilerplate@2.8.4/node_modules/@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/scss/_components/_ui.map.scss": 338
|
||||
},
|
||||
"usedIds": [
|
||||
183,
|
||||
338
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./node_modules/.pnpm/aos@2.3.4/node_modules/aos/dist/aos.css": [
|
||||
{
|
||||
"chunks": {
|
||||
"byName": {
|
||||
"mini-css-extract-plugin": 323
|
||||
},
|
||||
"bySource": {
|
||||
"0 mini-css-extract-plugin": 323
|
||||
},
|
||||
"usedIds": [
|
||||
323
|
||||
]
|
||||
},
|
||||
"modules": {
|
||||
"byIdentifier": {
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/runtime/api.js": 183,
|
||||
"./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./node_modules/.pnpm/aos@2.3.4/node_modules/aos/dist/aos.css": 726
|
||||
},
|
||||
"usedIds": [
|
||||
183,
|
||||
726
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"mini-css-extract-plugin /mnt/data/srv/dist/repositories/silverstripe-webpack/node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./themes/sample/client/src/scss/app.scss": [
|
||||
{
|
||||
"chunks": {
|
||||
"byName": {
|
||||
"mini-css-extract-plugin": 323
|
||||
},
|
||||
"bySource": {
|
||||
"0 mini-css-extract-plugin": 323
|
||||
},
|
||||
"usedIds": [
|
||||
323
|
||||
]
|
||||
},
|
||||
"modules": {
|
||||
"byIdentifier": {
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/runtime/api.js": 183,
|
||||
"./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./themes/sample/client/src/scss/app.scss": 913,
|
||||
"./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/select2@4.0.13/node_modules/select2/dist/css/select2.css": 637
|
||||
},
|
||||
"usedIds": [
|
||||
183,
|
||||
637,
|
||||
913
|
||||
209,
|
||||
787
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"modules": {
|
||||
"byIdentifier": {
|
||||
"./app/client/src/img|sync|nonrecursive|../../../../../../\\.(png|jpe?g|svg)$/": 999,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./app/client/src/js/app.js|f6b4f5ad9a4cc1899e534fbbf97f4783": 145,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./app/client/src/js/types/SilverShop.Page.CheckoutPageController.js|fae47322dac2dc65254f14cebdfe053c": 724,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./app/client/src/js/types/Site.Controllers.MapElementController.js|8bbd4b20c36292da496b019ac08b37c1": 958,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./app/client/src/js/types/cms.js": 976,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./app/client/src/js/types/dev.js|da0cd41d785b0cb984e00105b7359333": 581,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@a2nt/ss-bootstrap-ui-webpack-boilerplate@2.8.4/node_modules/@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/drivers/_google.track.external.links.js": 120,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/aos@2.3.4/node_modules/aos/dist/aos.js": 303,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/bootstrap@4.6.0_jquery@3.5.1+popper.js@1.16.1/node_modules/bootstrap/js/dist/alert.js": 875,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/bootstrap@4.6.0_jquery@3.5.1+popper.js@1.16.1/node_modules/bootstrap/js/dist/button.js": 93,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/bootstrap@4.6.0_jquery@3.5.1+popper.js@1.16.1/node_modules/bootstrap/js/dist/carousel.js": 918,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/bootstrap@4.6.0_jquery@3.5.1+popper.js@1.16.1/node_modules/bootstrap/js/dist/collapse.js": 154,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/bootstrap@4.6.0_jquery@3.5.1+popper.js@1.16.1/node_modules/bootstrap/js/dist/modal.js": 121,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/bootstrap@4.6.0_jquery@3.5.1+popper.js@1.16.1/node_modules/bootstrap/js/dist/popover.js": 452,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/bootstrap@4.6.0_jquery@3.5.1+popper.js@1.16.1/node_modules/bootstrap/js/dist/scrollspy.js": 324,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/bootstrap@4.6.0_jquery@3.5.1+popper.js@1.16.1/node_modules/bootstrap/js/dist/tab.js": 71,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/bootstrap@4.6.0_jquery@3.5.1+popper.js@1.16.1/node_modules/bootstrap/js/dist/tooltip.js": 222,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/bootstrap@4.6.0_jquery@3.5.1+popper.js@1.16.1/node_modules/bootstrap/js/dist/util.js": 734,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/hammerjs@2.0.8/node_modules/hammerjs/hammer.js": 695,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/jquery-hammerjs@2.0.0/node_modules/jquery-hammerjs/jquery.hammer.js": 456,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/jquery-hoverintent@1.10.1/node_modules/jquery-hoverintent/jquery.hoverIntent.js": 89,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/popper.js@1.16.1/node_modules/popper.js/dist/esm/popper.js": 314,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/smooth-scroll@16.1.3/node_modules/smooth-scroll/dist/smooth-scroll.polyfills.min.js": 893,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_f0c87bb7cbf8c08531ee428ecaa3548a/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./themes/sample/client/src/js/app.js": 897,
|
||||
"./node_modules/.pnpm/file-loader@6.2.0_webpack@5.16.0/node_modules/file-loader/dist/cjs.js??ruleSet[1].rules[3].use[0]!./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.16.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./node_modules/.pnpm/image-minimizer-webpack-plugin@2.2.0_webpack@5.16.0/node_modules/image-minimizer-webpack-plugin/dist/loader.js??ruleSet[1].rules[5]!./app/client/src/img/logo.svg": 305,
|
||||
"./node_modules/.pnpm/file-loader@6.2.0_webpack@5.16.0/node_modules/file-loader/dist/cjs.js??ruleSet[1].rules[3].use[0]!./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.16.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./node_modules/.pnpm/image-minimizer-webpack-plugin@2.2.0_webpack@5.16.0/node_modules/image-minimizer-webpack-plugin/dist/loader.js??ruleSet[1].rules[5]!./app/client/src/img/photo3.svg": 956,
|
||||
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.16.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./node_modules/.pnpm/image-minimizer-webpack-plugin@2.2.0_webpack@5.16.0/node_modules/image-minimizer-webpack-plugin/dist/loader.js??ruleSet[1].rules[5]!./app/client/src/img/bg.png": 410,
|
||||
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.16.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./node_modules/.pnpm/image-minimizer-webpack-plugin@2.2.0_webpack@5.16.0/node_modules/image-minimizer-webpack-plugin/dist/loader.js??ruleSet[1].rules[5]!./app/client/src/img/logo.png": 479,
|
||||
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.16.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./node_modules/.pnpm/image-minimizer-webpack-plugin@2.2.0_webpack@5.16.0/node_modules/image-minimizer-webpack-plugin/dist/loader.js??ruleSet[1].rules[5]!./app/client/src/img/original.png": 487,
|
||||
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.16.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./node_modules/.pnpm/image-minimizer-webpack-plugin@2.2.0_webpack@5.16.0/node_modules/image-minimizer-webpack-plugin/dist/loader.js??ruleSet[1].rules[5]!./app/client/src/img/original2.png": 764,
|
||||
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.16.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./node_modules/.pnpm/image-minimizer-webpack-plugin@2.2.0_webpack@5.16.0/node_modules/image-minimizer-webpack-plugin/dist/loader.js??ruleSet[1].rules[5]!./app/client/src/img/photo1.png": 189,
|
||||
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.16.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./node_modules/.pnpm/image-minimizer-webpack-plugin@2.2.0_webpack@5.16.0/node_modules/image-minimizer-webpack-plugin/dist/loader.js??ruleSet[1].rules[5]!./app/client/src/img/photo2.jpg": 497,
|
||||
"./node_modules/.pnpm/mini-css-extract-plugin@1.3.4_webpack@5.16.0/node_modules/mini-css-extract-plugin/dist/loader.js!./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/editor.scss": 616,
|
||||
"./node_modules/.pnpm/mini-css-extract-plugin@1.3.4_webpack@5.16.0/node_modules/mini-css-extract-plugin/dist/loader.js!./node_modules/.pnpm/css-loader@5.0.1_webpack@5.16.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@10.1.1_node-sass@5.0.0+webpack@5.16.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/order.scss": 594,
|
||||
"./node_modules/font-awesome|sync|nonrecursive|../../../../../../\\.(otf|eot|svg|ttf|woff|woff2)$/": 761,
|
||||
"external \"jQuery\"": 609
|
||||
"./app/client/src/img|sync|nonrecursive|../../../../../../\\.(png|jpe?g|svg)$/": 6999,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./app/client/src/js/app.js|866b98af63dac5893bf236da39886a2e": 8503,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./app/client/src/js/types/SilverShop.Page.CheckoutPageController.js": 7016,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./app/client/src/js/types/Site.Controllers.MapElementController.js": 9346,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@a2nt/ss-bootstrap-ui-webpack-boilerplate-react@3.0.7/node_modules/@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/_components/_main.funcs.js": 6910,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/cache/index.js|229e945773b5816d80b29bf8ae3d1b3b": 2697,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/cache/inmemory/types.js": 9858,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/core/ApolloClient.js|9e8caf0eb174d7b865f374d3bb67633a": 7365,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/core/ObservableQuery.js|4fee5104b114228ab5afd2649dafd9dc": 6596,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/core/index.js": 2700,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/core/networkStatus.js": 8790,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/core/types.js": 5211,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/errors/index.js": 6449,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/index.js": 961,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/link/core/ApolloLink.js": 3484,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/link/core/concat.js": 3949,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/link/core/empty.js": 8997,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/link/core/execute.js": 360,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/link/core/from.js": 3342,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/link/core/index.js": 6226,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/link/core/split.js": 3016,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/link/core/types.js": 4949,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/link/http/index.js|857c26c9e114f659e471f8081699b398": 2330,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/link/utils/index.js|5f8beb782b1e5a9f352f20a3829feb6f": 9386,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/react/context/index.js|83b527719ea207489c27841b22e1ae7e": 3496,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/react/hooks/index.js|8193ee11c806a931f1030fcb0972e0d9": 3244,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/react/index.js": 9211,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/react/parser/index.js": 9655,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/react/types/types.js": 3967,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@apollo/client@3.3.11_graphql@15.5.0+react@17.0.1/node_modules/@apollo/client/utilities/index.js|8231073420ff587a0181b56b360a7d99": 9440,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/@wry/equality@0.3.3/node_modules/@wry/equality/lib/equality.esm.js": 931,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/index.js": 1490,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/adapters/xhr.js": 7724,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/axios.js": 2586,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/cancel/Cancel.js": 7710,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/cancel/CancelToken.js": 1332,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/cancel/isCancel.js": 1410,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/Axios.js": 6584,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/InterceptorManager.js": 9482,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/buildFullPath.js": 3930,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/createError.js": 8454,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/dispatchRequest.js": 8846,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/enhanceError.js": 3198,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/mergeConfig.js": 6555,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/settle.js": 4078,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/transformData.js": 2426,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/defaults.js": 9663,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/bind.js": 4563,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/buildURL.js": 3524,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/combineURLs.js": 1648,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/cookies.js": 5224,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/isAbsoluteURL.js": 5242,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/isAxiosError.js": 9887,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/isURLSameOrigin.js": 5451,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/normalizeHeaderName.js": 5091,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/parseHeaders.js": 9003,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/spread.js": 9368,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/utils.js": 3523,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/balanced-match@1.0.0/node_modules/balanced-match/index.js": 5975,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/brace-expansion@2.0.1/node_modules/brace-expansion/index.js": 9402,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/fast-json-stable-stringify@2.1.0/node_modules/fast-json-stable-stringify/index.js": 3057,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/github.com/jsanahuja/instagramfeed@018a8c108fb5be844bba77bdab1b9e44be5875c7/node_modules/@jsanahuja/instagramfeed/src/InstagramFeed.js": 1575,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql-tag@2.11.0_graphql@15.5.0/node_modules/graphql-tag/src/index.js": 1935,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/error/GraphQLError.js": 538,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/error/syntaxError.js": 2554,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/jsutils/defineInspect.js": 9691,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/jsutils/devAssert.js": 36,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/jsutils/inspect.js": 4850,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/jsutils/instanceOf.js": 3278,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/jsutils/invariant.js": 7647,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/jsutils/isObjectLike.js": 4727,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/jsutils/nodejsCustomInspectSymbol.js": 6282,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/language/ast.js": 1457,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/language/blockString.js": 6756,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/language/directiveLocation.js": 8578,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/language/kinds.js": 5366,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/language/lexer.js": 5664,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/language/location.js": 9993,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/language/parser.js": 3778,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/language/printLocation.js": 185,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/language/source.js": 1056,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/language/tokenKind.js": 8729,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/language/visitor.js": 1928,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/polyfills/symbols.js": 1374,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/minimatch@3.0.4/node_modules/minimatch/minimatch.js": 1838,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/react-tiny-oembed@1.0.1_react-dom@17.0.1+react@17.0.1/node_modules/react-tiny-oembed/lib/index.js": 6760,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/symbol-observable@3.0.0/node_modules/symbol-observable/es/index.js|3bffa25f522179fb3379ad608c4f697e": 5495,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/ts-invariant@0.6.1/node_modules/ts-invariant/lib/invariant.esm.js|37876e5baa3abcfadb0a3e3180afa528": 2167,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/tslib@2.1.0/node_modules/tslib/tslib.es6.js": 9978,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/zen-observable@0.8.15/node_modules/zen-observable/index.js": 5589,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/zen-observable@0.8.15/node_modules/zen-observable/lib/Observable.js": 3832,
|
||||
"./node_modules/.pnpm/babel-loader@8.2.2_6e26e6eb30eee304758fd82069cd3cab/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./themes/sample/client/src/js/app.js": 514,
|
||||
"./node_modules/.pnpm/file-loader@6.2.0_webpack@5.24.2/node_modules/file-loader/dist/cjs.js??ruleSet[1].rules[3].use[0]!./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.24.2/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/logo.svg": 3061,
|
||||
"./node_modules/.pnpm/file-loader@6.2.0_webpack@5.24.2/node_modules/file-loader/dist/cjs.js??ruleSet[1].rules[3].use[0]!./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.24.2/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/photo3.svg": 2037,
|
||||
"./node_modules/.pnpm/graphql@15.5.0/node_modules/graphql/language/visitor.mjs|3169b6159575a7c1144bcfbea4ed01af": 3210,
|
||||
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.24.2/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/bg.png": 6827,
|
||||
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.24.2/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/logo.png": 3811,
|
||||
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.24.2/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/original.png": 7371,
|
||||
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.24.2/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/original2.png": 4801,
|
||||
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.24.2/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/photo1.png": 522,
|
||||
"./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.24.2/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./app/client/src/img/photo2.jpg": 6091,
|
||||
"./node_modules/.pnpm/mini-css-extract-plugin@1.3.9_webpack@5.24.2/node_modules/mini-css-extract-plugin/dist/loader.js!./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/cms.scss": 6881,
|
||||
"./node_modules/.pnpm/mini-css-extract-plugin@1.3.9_webpack@5.24.2/node_modules/mini-css-extract-plugin/dist/loader.js!./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/dev.scss": 6523,
|
||||
"./node_modules/.pnpm/mini-css-extract-plugin@1.3.9_webpack@5.24.2/node_modules/mini-css-extract-plugin/dist/loader.js!./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/editor.scss": 2891,
|
||||
"./node_modules/.pnpm/mini-css-extract-plugin@1.3.9_webpack@5.24.2/node_modules/mini-css-extract-plugin/dist/loader.js!./node_modules/.pnpm/css-loader@5.1.0_webpack@5.24.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/resolve-url-loader@3.1.2/node_modules/resolve-url-loader/index.js!./node_modules/.pnpm/sass-loader@11.0.1_node-sass@5.0.0+webpack@5.24.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./app/client/src/scss/types/order.scss": 1398,
|
||||
"./node_modules/font-awesome|sync|nonrecursive|../../../../../../\\.(otf|eot|svg|ttf|woff|woff2)$/": 3761,
|
||||
"external \"React\"": 3804,
|
||||
"ignored|path": 1386
|
||||
},
|
||||
"usedIds": [
|
||||
71,
|
||||
89,
|
||||
93,
|
||||
120,
|
||||
121,
|
||||
145,
|
||||
154,
|
||||
189,
|
||||
222,
|
||||
303,
|
||||
305,
|
||||
314,
|
||||
324,
|
||||
410,
|
||||
452,
|
||||
456,
|
||||
479,
|
||||
487,
|
||||
497,
|
||||
581,
|
||||
594,
|
||||
609,
|
||||
616,
|
||||
695,
|
||||
724,
|
||||
734,
|
||||
761,
|
||||
764,
|
||||
875,
|
||||
893,
|
||||
897,
|
||||
918,
|
||||
956,
|
||||
958,
|
||||
976,
|
||||
999
|
||||
36,
|
||||
185,
|
||||
360,
|
||||
514,
|
||||
522,
|
||||
538,
|
||||
931,
|
||||
961,
|
||||
1056,
|
||||
1332,
|
||||
1374,
|
||||
1386,
|
||||
1398,
|
||||
1410,
|
||||
1457,
|
||||
1490,
|
||||
1575,
|
||||
1648,
|
||||
1838,
|
||||
1928,
|
||||
1935,
|
||||
2037,
|
||||
2167,
|
||||
2330,
|
||||
2426,
|
||||
2554,
|
||||
2586,
|
||||
2697,
|
||||
2700,
|
||||
2891,
|
||||
3016,
|
||||
3057,
|
||||
3061,
|
||||
3198,
|
||||
3210,
|
||||
3244,
|
||||
3278,
|
||||
3342,
|
||||
3484,
|
||||
3496,
|
||||
3523,
|
||||
3524,
|
||||
3761,
|
||||
3778,
|
||||
3804,
|
||||
3811,
|
||||
3832,
|
||||
3930,
|
||||
3949,
|
||||
3967,
|
||||
4078,
|
||||
4563,
|
||||
4727,
|
||||
4801,
|
||||
4850,
|
||||
4949,
|
||||
5091,
|
||||
5211,
|
||||
5224,
|
||||
5242,
|
||||
5366,
|
||||
5451,
|
||||
5495,
|
||||
5589,
|
||||
5664,
|
||||
5975,
|
||||
6091,
|
||||
6226,
|
||||
6282,
|
||||
6449,
|
||||
6523,
|
||||
6555,
|
||||
6584,
|
||||
6596,
|
||||
6756,
|
||||
6760,
|
||||
6827,
|
||||
6881,
|
||||
6910,
|
||||
6999,
|
||||
7016,
|
||||
7365,
|
||||
7371,
|
||||
7647,
|
||||
7710,
|
||||
7724,
|
||||
8454,
|
||||
8503,
|
||||
8578,
|
||||
8729,
|
||||
8790,
|
||||
8846,
|
||||
8997,
|
||||
9003,
|
||||
9211,
|
||||
9346,
|
||||
9368,
|
||||
9386,
|
||||
9402,
|
||||
9440,
|
||||
9482,
|
||||
9655,
|
||||
9663,
|
||||
9691,
|
||||
9858,
|
||||
9887,
|
||||
9978,
|
||||
9993
|
||||
]
|
||||
}
|
||||
}
|
13
app/client/dist/report.html
vendored
@ -15,7 +15,7 @@ const CONSTS = {
|
||||
'xxl',
|
||||
'xxxl',
|
||||
],
|
||||
MAP_DRIVER: MAP_DRIVER
|
||||
MAP_DRIVER,
|
||||
};
|
||||
|
||||
export default CONSTS;
|
||||
|
@ -1,74 +1,50 @@
|
||||
'use strict';
|
||||
import Events from '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/_events';
|
||||
|
||||
import $ from 'jquery';
|
||||
import Events from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_events';
|
||||
const LayoutUI = ((W) => {
|
||||
const NAME = '_layout';
|
||||
const D = document;
|
||||
const BODY = D.body;
|
||||
|
||||
// AOS
|
||||
import 'aos/dist/aos.css';
|
||||
import AOS from 'aos/dist/aos.js';
|
||||
const init_fonts = () => {
|
||||
console.log(`${NAME}: init_fonts`);
|
||||
|
||||
const LayoutUI = (($) => {
|
||||
// Constants
|
||||
const W = window;
|
||||
const $W = $(W);
|
||||
const D = document;
|
||||
const $Body = $('body');
|
||||
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);
|
||||
};
|
||||
|
||||
const NAME = 'LayoutUI';
|
||||
|
||||
class LayoutUI {
|
||||
static init() {
|
||||
const ui = this;
|
||||
ui.dispose();
|
||||
|
||||
console.log(`${NAME}: init`);
|
||||
// your custom UI
|
||||
AOS.init();
|
||||
|
||||
// Fire further js when layout is ready
|
||||
$W.trigger(Events.LODEDANDREADY);
|
||||
|
||||
// Custom fonts
|
||||
$Body.append(
|
||||
'<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,700,700i&display=swap" rel="stylesheet" />',
|
||||
);
|
||||
|
||||
/*google analytics */
|
||||
/*(function(i, s, o, g, r, a, m) {
|
||||
i['GoogleAnalyticsObject'] = r;
|
||||
(i[r] =
|
||||
i[r] ||
|
||||
function() {
|
||||
(i[r].q = i[r].q || []).push(arguments);
|
||||
}),
|
||||
(i[r].l = 1 * new Date());
|
||||
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
|
||||
a.async = 1;
|
||||
a.src = g;
|
||||
m.parentNode.insertBefore(a, m);
|
||||
})(
|
||||
window,
|
||||
document,
|
||||
'script',
|
||||
'//www.google-analytics.com/analytics.js',
|
||||
'ga',
|
||||
);
|
||||
ga('create', 'UA-********-*', 'auto');
|
||||
ga('send', 'pageview');*/
|
||||
const init_analytics = () => {
|
||||
console.log(`${NAME}: init_analytics`);
|
||||
/*google analytics */
|
||||
/*(function(i, s, o, g, r, a, m) {
|
||||
i['GoogleAnalyticsObject'] = r;
|
||||
(i[r] =
|
||||
i[r] ||
|
||||
function() {
|
||||
(i[r].q = i[r].q || []).push(arguments);
|
||||
}),
|
||||
(i[r].l = 1 * new Date());
|
||||
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
|
||||
a.async = 1;
|
||||
a.src = g;
|
||||
m.parentNode.insertBefore(a, m);
|
||||
})(
|
||||
window,
|
||||
document,
|
||||
'script',
|
||||
'//www.google-analytics.com/analytics.js',
|
||||
'ga',
|
||||
);
|
||||
ga('create', 'UA-********-*', 'auto');
|
||||
ga('send', 'pageview');*/
|
||||
}
|
||||
|
||||
static dispose() {
|
||||
console.log(`${NAME}: dispose`);
|
||||
}
|
||||
}
|
||||
|
||||
$W.on(`${NAME}.init ${Events.AJAX} ${Events.LOADED}`, () => {
|
||||
LayoutUI.init();
|
||||
});
|
||||
|
||||
W.LayoutUI = LayoutUI;
|
||||
|
||||
return LayoutUI;
|
||||
})($);
|
||||
|
||||
W.addEventListener(`${Events.LOADED}`, () => {
|
||||
init_fonts();
|
||||
//init_analytics();
|
||||
});
|
||||
})(window);
|
||||
export default LayoutUI;
|
||||
|
@ -1,117 +1,34 @@
|
||||
'use strict';
|
||||
|
||||
import '@a2nt/meta-lightbox-react/src/js/app';
|
||||
import '../scss/app.scss';
|
||||
|
||||
// import Bootstrap
|
||||
import 'popper.js';
|
||||
import 'bootstrap/js/dist/util';
|
||||
import 'bootstrap/js/dist/alert';
|
||||
import 'bootstrap/js/dist/button';
|
||||
import 'bootstrap/js/dist/carousel';
|
||||
import 'bootstrap/js/dist/collapse';
|
||||
import MainUI from '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/_components/_main';
|
||||
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/js/_ui/_ui.instagram.feed';
|
||||
|
||||
//import 'hammerjs/hammer';
|
||||
//import 'jquery-hammerjs/jquery.hammer';
|
||||
|
||||
// Routie
|
||||
//import 'pouchdb/dist/pouchdb';
|
||||
//import '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/routes/index';
|
||||
|
||||
// conflicts with _components/_ui.hover.js (shows dropdown on hover)
|
||||
//import 'bootstrap/js/dist/dropdown';
|
||||
|
||||
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.shrink';
|
||||
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.hover';
|
||||
|
||||
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.carousel';
|
||||
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.menu';
|
||||
|
||||
import 'bootstrap/js/dist/modal';
|
||||
import 'bootstrap/js/dist/tooltip';
|
||||
import 'bootstrap/js/dist/popover';
|
||||
import 'bootstrap/js/dist/scrollspy';
|
||||
import 'bootstrap/js/dist/tab';
|
||||
//
|
||||
|
||||
import Spinner from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.spinner';
|
||||
|
||||
// Sticky sidebar
|
||||
import SidebarUI from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.sidebar';
|
||||
|
||||
//import Multislider from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.multislider';
|
||||
|
||||
// Flyout UI
|
||||
//import Flyout from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.flyout';
|
||||
|
||||
// Offcanvas menu
|
||||
//import 'offcanvas-bootstrap/dist/js/bootstrap.offcanvas';
|
||||
|
||||
// Uncomment it to enable meta-lightbox zooming on hover
|
||||
//import 'jquery-zoom/jquery.zoom';
|
||||
|
||||
// Toggle bootstrap form fields
|
||||
//import FormToggleUI from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.form.fields.toggle';
|
||||
|
||||
// Bootstrap Date & Time fields
|
||||
//import FormDatetime from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.form.datetime';
|
||||
|
||||
// Stepped forms functionality
|
||||
//import FormStepped from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.form.stepped';
|
||||
|
||||
// Forms validation functionality
|
||||
import FormValidate from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.form.validate';
|
||||
|
||||
// Store forms data into localStorage
|
||||
import FormStorage from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.form.storage';
|
||||
|
||||
// Google NoCaptcha fields
|
||||
import NoCaptcha from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.nocaptcha';
|
||||
|
||||
// client-side images cropping
|
||||
//import FormCroppie from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.form.croppie';
|
||||
|
||||
// youtube video preview image
|
||||
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.video.preview';
|
||||
|
||||
// Meta Lightbox
|
||||
import '@a2nt/meta-lightbox/src/js/app';
|
||||
|
||||
//import Confirmation from 'bootstrap-confirmation2/dist/bootstrap-confirmation';
|
||||
//import Table from 'bootstrap-table/dist/bootstrap-table';
|
||||
|
||||
//import FormSelect2 from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.form.select2';
|
||||
|
||||
// AJAX UI
|
||||
import AjaxUI from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.ajax';
|
||||
|
||||
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_main';
|
||||
import './_layout';
|
||||
|
||||
// Register service worker
|
||||
if ('serviceWorker' in navigator) {
|
||||
const baseHref = (document.getElementsByTagName('base')[0] || {}).href;
|
||||
const version = (document.querySelector('meta[name="swversion"]') || {})
|
||||
.content;
|
||||
if (baseHref) {
|
||||
navigator.serviceWorker
|
||||
.register(`${baseHref}sw.js?v=${version}`)
|
||||
.then(() => {
|
||||
console.log('Service Worker Registered');
|
||||
});
|
||||
}
|
||||
const baseHref = (document.getElementsByTagName('base')[0] || {}).href;
|
||||
const version = (document.querySelector('meta[name="swversion"]') || {})
|
||||
.content;
|
||||
if (baseHref) {
|
||||
navigator.serviceWorker
|
||||
.register(`${baseHref}sw.js?v=${version}`)
|
||||
.then(() => {
|
||||
console.log('Service Worker Registered');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function importAll(r) {
|
||||
return r.keys().map(r);
|
||||
return r.keys().map(r);
|
||||
}
|
||||
|
||||
const images = importAll(
|
||||
require.context('../img/', false, /\.(png|jpe?g|svg)$/),
|
||||
require.context('../img/', false, /\.(png|jpe?g|svg)$/),
|
||||
);
|
||||
const fontAwesome = importAll(
|
||||
require.context('font-awesome', false, /\.(otf|eot|svg|ttf|woff|woff2)$/),
|
||||
require.context('font-awesome', false, /\.(otf|eot|svg|ttf|woff|woff2)$/),
|
||||
);
|
||||
|
||||
// Google Analytics
|
||||
import '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/drivers/_google.track.external.links';
|
||||
//import MarkerClusterer from '@google/markerclusterer/src/markerclusterer.js';
|
||||
|
@ -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';
|
||||
|
@ -1,6 +1,6 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
|
||||
import $ from 'jquery';
|
||||
/*import $ from 'jquery';
|
||||
import Events from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_events';
|
||||
|
||||
// Mapbox API
|
||||
@ -59,4 +59,4 @@ const LocationUI = (($) => {
|
||||
|
||||
})($);
|
||||
|
||||
export default LocationUI;
|
||||
export default LocationUI;*/
|
||||
|
@ -1,4 +1,4 @@
|
||||
'use strict';
|
||||
|
||||
import '../../scss/_cms.scss';
|
||||
import '../../scss/cms.scss';
|
||||
//import '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.image-position';
|
||||
|
@ -1,9 +1,10 @@
|
||||
'use strict';
|
||||
|
||||
import $ from 'jquery';
|
||||
import '../../scss/types/dev.scss';
|
||||
|
||||
/*import $ from 'jquery';
|
||||
import Events from '@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_events';
|
||||
|
||||
import '../../scss/dev.scss';
|
||||
|
||||
const DevUI = ($ => {
|
||||
// Constants
|
||||
@ -45,4 +46,4 @@ const DevUI = ($ => {
|
||||
return DevUI;
|
||||
})($);
|
||||
|
||||
export default DevUI;
|
||||
export default DevUI;*/
|
||||
|
@ -1,5 +1,7 @@
|
||||
@import '~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/_components/_ui.elemental';
|
||||
|
||||
/* style elements here */
|
||||
.element {
|
||||
/*.element {
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
@ -200,3 +202,19 @@
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.site__elements__instagramelement {
|
||||
.jsInstagramFeed-item {
|
||||
flex: 25%;
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
@ -1,6 +1,209 @@
|
||||
/**
|
||||
* Your custom style
|
||||
*/
|
||||
|
||||
.carousel-caption {
|
||||
padding: 6rem 0;
|
||||
font-size: 3rem;
|
||||
|
||||
.carousel-title {
|
||||
font-size: 4rem;
|
||||
}
|
||||
|
||||
.carousel-content {
|
||||
font-style: italic;
|
||||
}
|
||||
}
|
||||
|
||||
#SiteWideMessage {
|
||||
text-align: center;
|
||||
|
||||
.alert {
|
||||
margin-bottom: 0;
|
||||
|
||||
.btn-close {
|
||||
margin-top: -0.5rem;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Header {
|
||||
background-color: $header-bg;
|
||||
color: $header-color;
|
||||
|
||||
a {
|
||||
color: $header-link;
|
||||
}
|
||||
|
||||
.nav-container {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
position: static;
|
||||
}
|
||||
|
||||
.logo {
|
||||
img {
|
||||
width: 6.5vw;
|
||||
|
||||
@media (orientation: portrait) {
|
||||
width: 20vw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tagline {
|
||||
display: inline-block;
|
||||
font-size: 1.2rem;
|
||||
margin-left: 2em;
|
||||
}
|
||||
}
|
||||
|
||||
#Navigation {
|
||||
letter-spacing: .25em;
|
||||
text-transform: uppercase;
|
||||
width: 100%;
|
||||
background: $header-bg;
|
||||
|
||||
.navbar-nav {
|
||||
width: 100%;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.navbar-toggler {
|
||||
color: $main-nav-link-color;
|
||||
font-size: $main-nav-toggler-size;
|
||||
}
|
||||
|
||||
.nav-item,
|
||||
.nav-link {
|
||||
flex-direction: column;
|
||||
/*@media (min-width: $full-body-min-width) {
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
}*/
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
color: $main-nav-link-color;
|
||||
background: $main-nav-link-bg;
|
||||
|
||||
&:focus,
|
||||
&:hover,
|
||||
&.active {
|
||||
background: $main-nav-link-hover-bg;
|
||||
color: $main-nav-link-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
.active {
|
||||
>.nav-link {
|
||||
background: $main-nav-link-hover-bg;
|
||||
color: $main-nav-link-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-item .nav-dropdown {
|
||||
.fa-chevron-right //&:after
|
||||
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
border-color: $main-nav-dropdown-bg;
|
||||
background: $main-nav-dropdown-bg;
|
||||
margin-top: 0;
|
||||
border-top: 0;
|
||||
min-width: 100%;
|
||||
|
||||
.nav-item-link {
|
||||
color: $main-nav-dropdown-color;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-item {
|
||||
|
||||
&.active,
|
||||
&:active,
|
||||
&:focus,
|
||||
&:hover {
|
||||
background: $main-nav-dropdown-hover-bg;
|
||||
|
||||
.nav-item-link {
|
||||
color: $main-nav-dropdown-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-item-link {
|
||||
width: 100%;
|
||||
justify-content: flex-start;
|
||||
align-items: flex-start;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: $full-body-min-width) {
|
||||
.navbar-nav>.nav-item {
|
||||
padding-right: 2rem;
|
||||
padding-left: 2rem;
|
||||
}
|
||||
|
||||
.dropdown-item .nav-item-link {
|
||||
padding-left: 1rem;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*#MainContent {
|
||||
padding-top: 2 * $element-reduced-spacer-y;
|
||||
padding-bottom: 2 * $element-reduced-spacer-y;
|
||||
}*/
|
||||
|
||||
#PageBreadcumbs {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
#Footer {
|
||||
border-top: 1px solid #ebebeb;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background-color: $footer-bg;
|
||||
color: $footer-color;
|
||||
|
||||
>.wrapper {
|
||||
padding-top: $element-reduced-spacer-y;
|
||||
padding-bottom: $element-reduced-spacer-y;
|
||||
}
|
||||
|
||||
a,
|
||||
.a {
|
||||
color: $footer-link;
|
||||
}
|
||||
|
||||
.footer {
|
||||
padding-top: $element-reduced-spacer-y;
|
||||
padding-bottom: $element-reduced-spacer-y;
|
||||
background-color: $footer-footer-bg;
|
||||
|
||||
.copyright {
|
||||
padding-right: 0.5rem;
|
||||
}
|
||||
|
||||
li {
|
||||
padding: 0 0.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Your custom style
|
||||
*/
|
||||
/*
|
||||
.a.active,
|
||||
.a:focus,
|
||||
.a:hover,
|
||||
@ -130,30 +333,6 @@ body.shrink {
|
||||
}
|
||||
}
|
||||
|
||||
// sticky footer
|
||||
body > .wrapper {
|
||||
min-height: 100%;
|
||||
min-height: 100vh;
|
||||
}
|
||||
@media (min-width: $full-body-min-width) {
|
||||
/*body {
|
||||
height: 100%;
|
||||
min-height: 100%;
|
||||
}*/
|
||||
|
||||
.wrapper {
|
||||
padding-bottom: $footer-size + $footer-bar-size + $grid-gutter-height /
|
||||
2;
|
||||
|
||||
//padding-top: $grid-gutter-height;
|
||||
}
|
||||
|
||||
.footer {
|
||||
height: $footer-size + $footer-bar-size + $grid-gutter-height / 2;
|
||||
margin-top: -($footer-size + $footer-bar-size + $grid-gutter-height / 2);
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar__col {
|
||||
position: relative;
|
||||
margin-top: $grid-gutter-element-height;
|
||||
@ -176,31 +355,6 @@ body > .wrapper {
|
||||
}
|
||||
}
|
||||
|
||||
// stick navbar to top using mobile layout
|
||||
/*#Header {
|
||||
position: relative;
|
||||
padding-top: $grid-gutter-height / 2;
|
||||
padding-bottom: 1rem;
|
||||
|
||||
@media (min-width: map-get($grid-breakpoints, "lg")) {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#Navigation {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 10;
|
||||
|
||||
@media (min-width: map-get($grid-breakpoints, "lg")) {
|
||||
position: relative;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
}*/
|
||||
|
||||
#Header {
|
||||
background-color: $header-bg;
|
||||
color: $header-color;
|
||||
@ -379,3 +533,4 @@ body > .wrapper {
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
@ -1,93 +1,58 @@
|
||||
/*
|
||||
* Your custom variables
|
||||
*/
|
||||
@import '~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/_variables';
|
||||
|
||||
// site specific variables
|
||||
// bootstrap settings
|
||||
// screen size - 32px (ex. 1400 - 32 = 1368)
|
||||
$grid-breakpoints: (
|
||||
xs: 0,
|
||||
sm: 576px,
|
||||
md: 768px,
|
||||
lg: 992px,
|
||||
xl: 1168px,
|
||||
);
|
||||
$grid-breakpoints: (xs: 0,
|
||||
sm: 576px,
|
||||
md: 768px,
|
||||
lg: 992px,
|
||||
xl: 1168px);
|
||||
// screen size - (32px * 2) (ex. 1400 - 64 = 1336)
|
||||
$container-max-widths: (
|
||||
sm: 540px,
|
||||
md: 720px,
|
||||
lg: 960px,
|
||||
xl: 1136px,
|
||||
);
|
||||
$container-max-widths: (sm: 540px,
|
||||
md: 720px,
|
||||
lg: 960px,
|
||||
xl: 1136px);
|
||||
|
||||
$font-family-base: 'Roboto',
|
||||
$font-family-sans-serif;
|
||||
|
||||
$full-body-min-width: map-get($grid-breakpoints, 'lg');
|
||||
$typography-breakpoint: map-get($grid-breakpoints, 'sm') - 1;
|
||||
|
||||
$font-family-sans-serif: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
|
||||
'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji',
|
||||
'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
||||
$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas,
|
||||
'Liberation Mono', 'Courier New', monospace;
|
||||
$header-bg: var(--bs-white);
|
||||
$header-color: var(--bs-dark);
|
||||
$header-link: var(--bs-black);
|
||||
|
||||
$font-family-base: 'Lato', $font-family-sans-serif;
|
||||
|
||||
$grid-gutter-width: 2rem;
|
||||
$grid-gutter-height: 2rem;
|
||||
$grid-gutter-element-height: $grid-gutter-height;
|
||||
|
||||
$border-radius: 0.25rem;
|
||||
$border-radius-lg: 0.3rem;
|
||||
$border-radius-sm: 0.2rem;
|
||||
|
||||
$font-size-base: 1rem;
|
||||
$h1-font-size: $font-size-base * 2.25;
|
||||
$h3-font-size: $font-size-base * 1.75;
|
||||
$h4-font-size: $font-size-base * 1.5;
|
||||
$h5-font-size: $font-size-base * 1.25;
|
||||
$h6-font-size: $font-size-base;
|
||||
|
||||
@import '~@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/scss/_variables';
|
||||
|
||||
// Add your site-wide + content editor typography styling
|
||||
$nav-link-hover-bg: darken($body-bg, 10%);
|
||||
$nav-link-hover-color: lighten($body-color, 10%);
|
||||
|
||||
$full-body-min-width: map-get($grid-breakpoints, 'md');
|
||||
|
||||
$header-bg: $dark;
|
||||
$header-color: darken($white, 5%);
|
||||
$header-link: $white;
|
||||
|
||||
$main-nav-link-color: $white;
|
||||
$main-nav-link-color: var(--bs-black);
|
||||
$main-nav-link-bg: none;
|
||||
|
||||
$main-nav-toggler-size: 2rem;
|
||||
|
||||
$main-nav-link-hover-bg: none;
|
||||
$main-nav-link-hover-color: $primary;
|
||||
$main-nav-link-hover-color: var(--bs-primary);
|
||||
|
||||
$main-nav-dropdown-bg: $header-bg;
|
||||
$main-nav-dropdown-color: $header-link;
|
||||
$main-nav-dropdown-hover-bg: darken($header-bg, 10%);
|
||||
$main-nav-dropdown-hover-color: $primary;
|
||||
$main-nav-dropdown-hover-bg: var(--bs-black);
|
||||
$main-nav-dropdown-hover-color: $main-nav-link-hover-color;
|
||||
|
||||
$footer-size: 7rem;
|
||||
$footer-bar-size: 2rem;
|
||||
$footer-bg: $header-bg;
|
||||
$footer-color: $header-color;
|
||||
$footer-link: $header-link;
|
||||
|
||||
$footer-bg: $dark;
|
||||
$footer-color: darken($white, 5%);
|
||||
$footer-link: $white;
|
||||
$footer-footer-bg: $main-nav-dropdown-hover-bg;
|
||||
|
||||
$footer-footer-bg: darken($dark, 5%);
|
||||
$sliderelement-carousel-slide-max-y: none;
|
||||
$sliderelement-carousel-slide-bg: $header-bg;
|
||||
$sliderelement-carousel-slide-ratio-x: 16;
|
||||
$sliderelement-carousel-slide-ratio-y: 9;
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
.h1,
|
||||
.h2,
|
||||
.h3,
|
||||
.h4,
|
||||
.h5,
|
||||
.h6 {
|
||||
color: $headings-color;
|
||||
}
|
||||
$carousel-title-color: $white;
|
||||
$carousel-slide-min-height: 4rem;
|
||||
$carousel-text-shadow: 1px 1px $black;
|
||||
$carousel-controls-font-size: 3rem;
|
||||
$carousel-controls-zindex: 11;
|
||||
$carousel-controls-shadow: 1px 1px $black;
|
||||
$carousel-controls-hover-bg: transparentize($black, 0.4);
|
||||
$carousel-slide-img-loading-max-height: 70vh;
|
||||
|
@ -1,30 +1,9 @@
|
||||
//@import "~bootstrap-select/sass/bootstrap-select.scss";
|
||||
|
||||
//@import "~bootstrap-datepicker/dist/css/bootstrap-datepicker.css";
|
||||
//@import "~bootstrap-timepicker/css/bootstrap-timepicker.css";
|
||||
@import '~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/_components/_ui.bootstrap';
|
||||
@import '~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/_components/_ui.main';
|
||||
|
||||
// Your custom variables
|
||||
@import '_variables';
|
||||
|
||||
//@import "~bootstrap-select/dist/css/bootstrap-select.css";
|
||||
// conflicts to bootstrap-select
|
||||
//@import "~select2/dist/css/select2.css";
|
||||
|
||||
@import '~@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/scss/_components/_ui.bootstrap';
|
||||
|
||||
// By default we prefer font awesome CDN
|
||||
//@import "~@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/js/_components/_ui.fontawesome";
|
||||
@import '~@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/scss/_components/_ui.lightbox';
|
||||
|
||||
// Flyout UI
|
||||
//@import "~@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/scss/_components/_ui.flyout";
|
||||
|
||||
@import '~@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/scss/_components/_ui.main';
|
||||
@import '~@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/scss/_components/_ui.form.basics';
|
||||
@import '~@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/scss/_components/_ui.elemental';
|
||||
|
||||
//@import "~@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/scss/_components/_ui.form.stepped";
|
||||
|
||||
// Your custom styling
|
||||
@import '_typography';
|
||||
@import '_layout';
|
||||
|
2
app/client/src/scss/types/cms.scss
Normal file
@ -0,0 +1,2 @@
|
||||
@import '~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/types/cms';
|
||||
@import '../_variables';
|
@ -1,4 +1,4 @@
|
||||
@import '~@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/scss/types/editor';
|
||||
@import '~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/types/editor';
|
||||
@import '../_variables';
|
||||
|
||||
// Add content editor (only) typography styling
|
||||
|
@ -1,3 +1,3 @@
|
||||
@import "../_variables";
|
||||
@import '../_variables';
|
||||
|
||||
@import "~@a2nt/ss-bootstrap-ui-webpack-boilerplate/src/scss/types/order";
|
||||
@import '~@a2nt/ss-bootstrap-ui-webpack-boilerplate-react/src/scss/types/order';
|
||||
|
103
app/src/Elements/InstagramElement.php
Normal file
@ -0,0 +1,103 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: tony
|
||||
* Date: 6/30/18
|
||||
* Time: 11:54 PM
|
||||
*/
|
||||
|
||||
namespace Site\Elements;
|
||||
|
||||
|
||||
use DNADesign\Elemental\Models\BaseElement;
|
||||
use SilverStripe\Core\Convert;
|
||||
|
||||
class InstagramElement extends BaseElement
|
||||
{
|
||||
private static $singular_name = 'Instagram';
|
||||
|
||||
private static $plural_name = 'Instagram Elements';
|
||||
|
||||
private static $description = 'Displays Instagram posts';
|
||||
|
||||
private static $table_name = 'InstagramElement';
|
||||
|
||||
private static $db = [
|
||||
'Username' => 'Varchar(255)',
|
||||
'Tag' => 'Varchar(255)',
|
||||
'DisplayProfile' => 'Boolean(0)',
|
||||
'DisplayBiography' => 'Boolean(0)',
|
||||
'DisplayGallery' => 'Boolean(0)',
|
||||
'DisplayCaptions' => 'Boolean(0)',
|
||||
];
|
||||
|
||||
private static $defaults = [
|
||||
'DisplayGallery' => true,
|
||||
];
|
||||
|
||||
public function getType()
|
||||
{
|
||||
return self::$singular_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getAttributes(): array
|
||||
{
|
||||
return [
|
||||
'data-username' => $this->Username,
|
||||
'data-display-profile' => $this->DisplayProfile,
|
||||
'data-display-biography' => $this->DisplayBiography,
|
||||
'data-display-gallery' => $this->DisplayGallery,
|
||||
'data-display-captions' => $this->DisplayCaptions,
|
||||
'data-items' => 12,
|
||||
];
|
||||
}
|
||||
/**
|
||||
* Custom attributes to process.
|
||||
*
|
||||
* @param array $attributes
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function AttributesHTML($attributes = null): string
|
||||
{
|
||||
if (!$attributes) {
|
||||
$attributes = $this->getAttributes();
|
||||
}
|
||||
|
||||
$attributes = (array) $attributes;
|
||||
|
||||
$attributes = array_filter($attributes, static function ($v) {
|
||||
return ($v || $v === 0 || $v === '0');
|
||||
});
|
||||
|
||||
// Create markup
|
||||
$parts = [];
|
||||
|
||||
foreach ($attributes as $name => $value) {
|
||||
if ($value === true) {
|
||||
$value = $name;
|
||||
} else if (is_scalar($value)) {
|
||||
$value = (string) $value;
|
||||
} else {
|
||||
$value = json_encode($value);
|
||||
}
|
||||
|
||||
$parts[] = sprintf('%s=%s', Convert::raw2att($name), Convert::raw2att($value));
|
||||
}
|
||||
|
||||
return implode(' ', $parts);
|
||||
}
|
||||
|
||||
public function FeedLink()
|
||||
{
|
||||
return 'https://www.instagram.com/'.($this->Username ? $this->Username : 'explore/tags/'.$this->Tag).'/';
|
||||
}
|
||||
|
||||
public function FeedTitle()
|
||||
{
|
||||
return ($this->Username ? '@'.$this->Username : '#'.$this->Tag);
|
||||
}
|
||||
}
|
@ -27,16 +27,16 @@ class ElementImageWidget extends DataExtension
|
||||
];
|
||||
|
||||
private static $available_widths = [
|
||||
'300' => 'Small (300px)',
|
||||
'300' => 'Small (300px)',
|
||||
'400' => 'Medium (400px)',
|
||||
'600' => 'Big (600px)',
|
||||
];
|
||||
|
||||
private static $db = [
|
||||
'Resize' => 'Boolean(1)',
|
||||
'ManualWidth' => 'Boolean(0)',
|
||||
'ManualWidth' => 'Boolean(0)',
|
||||
'ImageHeight' => 'Float',
|
||||
'ImageWidth' => 'Float',
|
||||
'ImageWidth' => 'Float',
|
||||
'Content' => 'HTMLText',
|
||||
];
|
||||
|
||||
@ -48,42 +48,44 @@ class ElementImageWidget extends DataExtension
|
||||
{
|
||||
parent::updateCMSFields($fields);
|
||||
|
||||
$fields->removeByName(['ImageLinkID', 'Resize']);
|
||||
|
||||
$fields->push(LinkField::create('ImageLinkID', 'Link'));
|
||||
$fields->insertBefore(
|
||||
'Image',
|
||||
LinkField::create('ImageLinkID', 'Link')
|
||||
);
|
||||
|
||||
$this->owner->ImageHeight = $this->getHeight();
|
||||
|
||||
$heights = Config::inst()->get(__CLASS__, 'available_heights');
|
||||
$widths = Config::inst()->get(__CLASS__, 'available_widths');
|
||||
|
||||
$fields->push(CheckboxField::create(
|
||||
$fields->replaceField('Resize', CheckboxField::create(
|
||||
'Resize',
|
||||
'Would you like to scale image?'
|
||||
));
|
||||
|
||||
if (count($heights)) {
|
||||
$fields->removeByName(['ManualWidth','ImageWidth', 'ImageHeight']);
|
||||
$fields->push(
|
||||
CompositeField::create(
|
||||
DropdownField::create(
|
||||
'ImageHeight',
|
||||
'Image Height',
|
||||
$heights,
|
||||
$this->getHeight()
|
||||
)
|
||||
->setEmptyString('(auto)')
|
||||
->displayIf('Resize')->isChecked()->end(),
|
||||
CheckboxField::create('ManualWidth', 'Set Width Manually')
|
||||
->displayIf('Resize')->isChecked()->end(),
|
||||
DropdownField::create(
|
||||
'ImageWidth',
|
||||
'Image Width',
|
||||
$widths
|
||||
)
|
||||
->setEmptyString('(auto)')
|
||||
->displayIf('ManualWidth')->isChecked()->end()
|
||||
)
|
||||
$fields->removeByName(['ManualWidth','ImageWidth',]);
|
||||
$fields->replaceField(
|
||||
'ImageHeight',
|
||||
CompositeField::create(
|
||||
DropdownField::create(
|
||||
'ImageHeight',
|
||||
'Image Height',
|
||||
$heights,
|
||||
$this->getHeight()
|
||||
)
|
||||
->setEmptyString('(auto)')
|
||||
->displayIf('Resize')->isChecked()->end(),
|
||||
CheckboxField::create('ManualWidth', 'Set Width Manually')
|
||||
->displayIf('Resize')->isChecked()->end(),
|
||||
DropdownField::create(
|
||||
'ImageWidth',
|
||||
'Image Width',
|
||||
$widths
|
||||
)
|
||||
->setEmptyString('(auto)')
|
||||
->displayIf('ManualWidth')->isChecked()->end()
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$fields->dataFieldByName('ImageHeight')
|
||||
@ -115,10 +117,10 @@ class ElementImageWidget extends DataExtension
|
||||
|
||||
public function getWidth()
|
||||
{
|
||||
$obj = $this->owner;
|
||||
$obj = $this->owner;
|
||||
return $obj->getField('ManualWidth') && $obj->getField('ImageWidth')
|
||||
? $obj->getField('ImageWidth')
|
||||
: $obj->getColumnWidthRecursive();
|
||||
? $obj->getField('ImageWidth')
|
||||
: $obj->getColumnWidthRecursive();
|
||||
}
|
||||
|
||||
public function getHeight()
|
||||
@ -138,15 +140,4 @@ class ElementImageWidget extends DataExtension
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function onBeforeWrite()
|
||||
{
|
||||
$title = $this->owner->getField('Title');
|
||||
$img = $this->owner->Image();
|
||||
if (!$title && $img) {
|
||||
$this->owner->setField('Title', $img->getTitle());
|
||||
}
|
||||
|
||||
parent::onBeforeWrite();
|
||||
}
|
||||
}
|
||||
|
33
app/src/GraphQL/APIKeyAuthenticator.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Site\GraphQL;
|
||||
|
||||
|
||||
use SilverStripe\Control\Director;
|
||||
use SilverStripe\Control\HTTPRequest;
|
||||
use SilverStripe\GraphQL\Auth\AuthenticatorInterface;
|
||||
use SilverStripe\ORM\ValidationException;
|
||||
use SilverStripe\Security\Member;
|
||||
use Site\Templates\WebpackTemplateProvider;
|
||||
|
||||
class APIKeyAuthenticator implements AuthenticatorInterface
|
||||
{
|
||||
public function authenticate(HTTPRequest $request)
|
||||
{
|
||||
if(Director::isLive() && $request->getHeader('apikey') !== WebpackTemplateProvider::config()['GRAPHQL_API_KEY']) {
|
||||
throw new ValidationException('Restricted resource', 401);
|
||||
}
|
||||
|
||||
return Member::get()->first();
|
||||
}
|
||||
|
||||
public function isApplicable(HTTPRequest $request)
|
||||
{
|
||||
/*if($request->getHeader('apikey')){
|
||||
return true;
|
||||
}*/
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
}
|
23
app/src/GraphQL/APIKeyMiddleware.php
Normal file
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Site\GraphQL;
|
||||
|
||||
|
||||
use GraphQL\Type\Schema;
|
||||
use SilverStripe\GraphQL\Middleware\QueryMiddleware;
|
||||
use Site\Templates\WebpackTemplateProvider;
|
||||
|
||||
class APIKeyMiddleware implements QueryMiddleware
|
||||
{
|
||||
public function process(Schema $schema, $query, $context, $params, callable $next)
|
||||
{
|
||||
var_dump($context);
|
||||
die('saaddsdsads');
|
||||
if($request->getHeader('apikey') === WebpackTemplateProvider::config()['GRAPHQL_API_KEY']) {
|
||||
return $next($schema, $query, $context, $params);
|
||||
}
|
||||
|
||||
throw new \Exception('Invalid API key token');
|
||||
}
|
||||
}
|
38
app/src/GraphQL/ElementTypeCreator.php
Normal file
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Site\GraphQL;
|
||||
|
||||
|
||||
use GraphQL\Type\Definition\ResolveInfo;
|
||||
use GraphQL\Type\Definition\Type;
|
||||
use SilverStripe\GraphQL\TypeCreator;
|
||||
|
||||
class ElementTypeCreator extends TypeCreator
|
||||
{
|
||||
public function attributes()
|
||||
{
|
||||
return [
|
||||
'name' => 'element'
|
||||
];
|
||||
}
|
||||
|
||||
public function fields()
|
||||
{
|
||||
return [
|
||||
'_id' => ['type' => Type::nonNull(Type::id()),'resolve' => static function($object) {
|
||||
return $object->ID;
|
||||
}],
|
||||
'ID' => ['type' => Type::nonNull(Type::id())],
|
||||
'Title' => ['type' => Type::string()],
|
||||
'ParentID' => ['type' => Type::id()],
|
||||
'Render' => [
|
||||
'type' => Type::string(),
|
||||
'resolve' => static function($object, array $args, $context, ResolveInfo $info) {
|
||||
//$object->forTemplate()->HTML()
|
||||
return $object->getController()->forTemplate()->HTML();
|
||||
}
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
29
app/src/GraphQL/MemberTypeCreator.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Site\GraphQL;
|
||||
|
||||
|
||||
use GraphQL\Type\Definition\Type;
|
||||
use SilverStripe\GraphQL\TypeCreator;
|
||||
use SilverStripe\GraphQL\Pagination\Connection;
|
||||
|
||||
class MemberTypeCreator extends TypeCreator
|
||||
{
|
||||
public function attributes()
|
||||
{
|
||||
return [
|
||||
'name' => 'member'
|
||||
];
|
||||
}
|
||||
|
||||
public function fields()
|
||||
{
|
||||
return [
|
||||
'ID' => ['type' => Type::nonNull(Type::id())],
|
||||
'Email' => ['type' => Type::string()],
|
||||
'FirstName' => ['type' => Type::string()],
|
||||
'Surname' => ['type' => Type::string()],
|
||||
];
|
||||
}
|
||||
}
|
107
app/src/GraphQL/PageTypeCreator.php
Normal file
@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Site\GraphQL;
|
||||
|
||||
|
||||
use GraphQL\Type\Definition\ResolveInfo;
|
||||
use GraphQL\Type\Definition\Type;
|
||||
use SilverStripe\CMS\Controllers\ModelAsController;
|
||||
use SilverStripe\Control\Controller;
|
||||
use SilverStripe\Control\Director;
|
||||
use SilverStripe\Control\HTTPRequest;
|
||||
use SilverStripe\GraphQL\TypeCreator;
|
||||
use SilverStripe\GraphQL\Pagination\Connection;
|
||||
use SilverStripe\View\SSViewer;
|
||||
|
||||
class PageTypeCreator extends TypeCreator
|
||||
{
|
||||
public function attributes()
|
||||
{
|
||||
return [
|
||||
'name' => 'page'
|
||||
];
|
||||
}
|
||||
|
||||
public function fields()
|
||||
{
|
||||
$elementsConnection = Connection::create('Elements')
|
||||
->setConnectionType($this->manager->getType('element'))
|
||||
->setDescription('A list of the page elements')
|
||||
->setSortableFields(['ID', 'Title']);
|
||||
|
||||
return [
|
||||
'_id' => ['type' => Type::nonNull(Type::id()),'resolve' => static function($object) {
|
||||
return $object->ID;
|
||||
}],
|
||||
'ID' => ['type' => Type::nonNull(Type::id())],
|
||||
'Title' => ['type' => Type::string()],
|
||||
'Content' => ['type' => Type::string()],
|
||||
'Link' => ['type' => Type::string(), 'resolve' => static function($object) {
|
||||
return $object->Link();
|
||||
}],
|
||||
'URLSegment' => ['type' => Type::string()],
|
||||
'ParentID' => ['type' => Type::id()],
|
||||
'ClassName' => ['type' => Type::string()],
|
||||
'CSSClass' => ['type' => Type::string(), 'resolve' => static function($object) {
|
||||
return $object->CSSClass();
|
||||
}],
|
||||
'Summary' => ['type' => Type::string(), 'resolve' => static function($object) {
|
||||
return $object->Summary();
|
||||
}],
|
||||
'HTML' => ['type' => Type::string(), 'resolve' => static function($object) {
|
||||
// get action from request
|
||||
$action = null;
|
||||
|
||||
/** @var \Page $object */
|
||||
Director::set_current_page($object);
|
||||
/** @var \PageController $controller */
|
||||
$controller = ModelAsController::controller_for($object);
|
||||
|
||||
// find templates
|
||||
$tpl = 'Page';
|
||||
$tpls = SSViewer::get_templates_by_class(
|
||||
$object->ClassName,
|
||||
($action ? '_'.$action : ''),
|
||||
\Page::class
|
||||
);
|
||||
|
||||
foreach ($tpls as $tpl){
|
||||
if(is_array($tpl)){
|
||||
continue;
|
||||
}
|
||||
|
||||
$a_tpl = explode('\\',$tpl);
|
||||
$last_name = array_pop($a_tpl);
|
||||
$a_tpl[] = 'Layout';
|
||||
$a_tpl[] = $last_name;
|
||||
$a_tpl = implode('\\', $a_tpl);
|
||||
|
||||
if(SSViewer::hasTemplate($a_tpl)){
|
||||
break;
|
||||
}
|
||||
}
|
||||
//
|
||||
|
||||
$tpl = ($tpl !== 'Page') ? $tpl : 'Layout/Page';
|
||||
|
||||
$action = $action ? $action : 'index';
|
||||
/** @var HTTPRequest $request */
|
||||
$controller->setAction($action);
|
||||
|
||||
return $controller->renderWith([$tpl, 'GraphQLPage'])->HTML();
|
||||
}],
|
||||
'Elements' => [
|
||||
'type' => $elementsConnection->toType(),
|
||||
'args' => $elementsConnection->args(),
|
||||
'resolve' => static function($object, array $args, $context, ResolveInfo $info) use ($elementsConnection) {
|
||||
return $elementsConnection->resolveList(
|
||||
$object->ElementalArea()->Elements(),
|
||||
$args,
|
||||
$context
|
||||
);
|
||||
}
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
44
app/src/GraphQL/PaginatedReadMembersQueryCreator.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Site\GraphQL;
|
||||
|
||||
|
||||
use GraphQL\Type\Definition\ResolveInfo;
|
||||
use GraphQL\Type\Definition\Type;
|
||||
use SilverStripe\Security\Member;
|
||||
use SilverStripe\GraphQL\Pagination\Connection;
|
||||
use SilverStripe\GraphQL\Pagination\PaginatedQueryCreator;
|
||||
|
||||
class PaginatedReadMembersQueryCreator extends PaginatedQueryCreator
|
||||
{
|
||||
public function createConnection()
|
||||
{
|
||||
|
||||
return Connection::create('paginatedReadMembers')
|
||||
->setConnectionType($this->manager->getType('member'))
|
||||
->setArgs([
|
||||
'Email' => [
|
||||
'type' => Type::string()
|
||||
]
|
||||
])
|
||||
->setSortableFields(['ID', 'FirstName', 'Email'])
|
||||
->setConnectionResolver(static function ($object, array $args, $context, ResolveInfo $info) {
|
||||
$member = Member::singleton();
|
||||
if (!$member->canView($context['currentUser'])) {
|
||||
throw new \InvalidArgumentException(sprintf(
|
||||
'%s view access not permitted',
|
||||
Member::class
|
||||
));
|
||||
}
|
||||
$list = Member::get();
|
||||
|
||||
// Optional filtering by properties
|
||||
if (isset($args['Email'])) {
|
||||
$list = $list->filter('Email', $args['Email']);
|
||||
}
|
||||
|
||||
return $list;
|
||||
});
|
||||
}
|
||||
}
|
59
app/src/GraphQL/PaginatedReadPagesQueryCreator.php
Normal file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Site\GraphQL;
|
||||
|
||||
|
||||
use GraphQL\Type\Definition\ResolveInfo;
|
||||
use GraphQL\Type\Definition\Type;
|
||||
use SilverStripe\CMS\Model\SiteTree;
|
||||
use SilverStripe\ORM\ArrayList;
|
||||
use SilverStripe\ORM\SS_List;
|
||||
use SilverStripe\Security\Member;
|
||||
use SilverStripe\GraphQL\Pagination\Connection;
|
||||
use SilverStripe\GraphQL\Pagination\PaginatedQueryCreator;
|
||||
|
||||
class PaginatedReadPagesQueryCreator extends PaginatedQueryCreator
|
||||
{
|
||||
public function createConnection()
|
||||
{
|
||||
|
||||
return Connection::create('readPages')
|
||||
->setConnectionType($this->manager->getType('page'))
|
||||
->setArgs([
|
||||
'Link' => [
|
||||
'type' => Type::string()
|
||||
]
|
||||
])
|
||||
->setSortableFields(['Sort'])
|
||||
->setConnectionResolver(static function ($object, array $args, $context, ResolveInfo $info) {
|
||||
|
||||
if (isset($args['Link'])) {
|
||||
$link = $args['Link'];
|
||||
|
||||
if(SiteTree::has_extension('\TractorCow\Fluent\Extension\FluentSiteTreeExtension')) {
|
||||
$arr = array_filter(explode('/', $args['Link']));
|
||||
|
||||
$locale = \TractorCow\Fluent\Model\Locale::get()->filter('URLSegment', array_shift($arr))->first();
|
||||
\TractorCow\Fluent\State\FluentState::singleton()->setLocale($locale->Locale);
|
||||
|
||||
$link = implode('/', $arr);
|
||||
}
|
||||
|
||||
|
||||
$list = ArrayList::create();
|
||||
$page = SiteTree::get_by_link($link);
|
||||
$list->add($page);
|
||||
}
|
||||
|
||||
/*$list = \Page::get();
|
||||
|
||||
// Optional filtering by properties
|
||||
if (isset($args['ID'])) {
|
||||
$list = $list->filter('ID', $args['ID']);
|
||||
}*/
|
||||
|
||||
return $list;
|
||||
});
|
||||
}
|
||||
}
|
53
app/src/GraphQL/ReadMembersQueryCreator.php
Normal file
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Site\GraphQL;
|
||||
|
||||
|
||||
use GraphQL\Type\Definition\ResolveInfo;
|
||||
use GraphQL\Type\Definition\Type;
|
||||
use SilverStripe\Security\Member;
|
||||
use SilverStripe\GraphQL\OperationResolver;
|
||||
use SilverStripe\GraphQL\QueryCreator;
|
||||
|
||||
class ReadMembersQueryCreator extends QueryCreator implements OperationResolver
|
||||
{
|
||||
public function attributes()
|
||||
{
|
||||
return [
|
||||
'name' => 'readMembers'
|
||||
];
|
||||
}
|
||||
|
||||
public function args()
|
||||
{
|
||||
return [
|
||||
'Email' => ['type' => Type::string()]
|
||||
];
|
||||
}
|
||||
|
||||
public function type()
|
||||
{
|
||||
return Type::listOf($this->manager->getType('member'));
|
||||
}
|
||||
|
||||
public function resolve($object, array $args, $context, ResolveInfo $info)
|
||||
{
|
||||
$member = Member::singleton();
|
||||
|
||||
if (!$member->canView($context['currentUser'])) {
|
||||
throw new \InvalidArgumentException(sprintf(
|
||||
'%s view access not permitted',
|
||||
Member::class
|
||||
));
|
||||
}
|
||||
$list = Member::get();
|
||||
|
||||
// Optional filtering by properties
|
||||
if (isset($args['Email'])) {
|
||||
$list = $list->filter('Email', $args['Email']);
|
||||
}
|
||||
|
||||
return $list;
|
||||
}
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Site\Pages;
|
||||
|
||||
use Page;
|
||||
use SilverStripe\AssetAdmin\Forms\UploadField;
|
||||
use SilverStripe\Assets\Image;
|
||||
|
||||
class CatalogueCategoryPage extends Page
|
||||
{
|
||||
private static $table_name = 'CatalogueCategoryPage';
|
||||
private static $icon_class = 'fas fa-th-large';
|
||||
private static $can_be_root = false;
|
||||
private static $allowed_children = [
|
||||
CatalogueItemPage::class,
|
||||
];
|
||||
|
||||
private static $has_one = [
|
||||
'Icon' => Image::class,
|
||||
];
|
||||
|
||||
public function getCMSFields()
|
||||
{
|
||||
$fields = parent::getCMSFields();
|
||||
|
||||
$fields->addFieldsToTab('Root.Main', [
|
||||
UploadField::create('Icon')
|
||||
]);
|
||||
|
||||
return $fields;
|
||||
}
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Site\Pages;
|
||||
|
||||
use Page;
|
||||
use SilverStripe\AssetAdmin\Forms\UploadField;
|
||||
use SilverStripe\Assets\Image;
|
||||
|
||||
class CatalogueItemPage extends Page
|
||||
{
|
||||
private static $table_name = 'CatalogueItemPage';
|
||||
private static $icon_class = 'fas fa-box';
|
||||
private static $allowed_children = [];
|
||||
private static $can_be_root = false;
|
||||
|
||||
private static $has_one = [
|
||||
'Icon' => Image::class,
|
||||
];
|
||||
|
||||
public function getCMSFields()
|
||||
{
|
||||
$fields = parent::getCMSFields();
|
||||
|
||||
$fields->addFieldsToTab('Root.Main', [
|
||||
UploadField::create('Icon')
|
||||
]);
|
||||
|
||||
return $fields;
|
||||
}
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Site\Pages;
|
||||
|
||||
use Page;
|
||||
|
||||
class CataloguePage extends Page
|
||||
{
|
||||
private static $table_name = 'CataloguePage';
|
||||
private static $icon_class = 'fas fa-boxes';
|
||||
private static $allowed_children = [
|
||||
CatalogueCategoryPage::class,
|
||||
];
|
||||
}
|
@ -59,13 +59,18 @@ class PageController extends ContentController
|
||||
return $this->render();
|
||||
}
|
||||
|
||||
public function setAction($action)
|
||||
{
|
||||
$this->action = $action;
|
||||
}
|
||||
|
||||
public function ElementalArea()
|
||||
{
|
||||
if ($this->CurrentElement() || $this->getAction() !== 'index') {
|
||||
return false;
|
||||
}
|
||||
if(!$this->getAction() || $this->getAction() === 'index') {
|
||||
return ElementalArea::get()->byID($this->getField('ElementalAreaID'));
|
||||
}
|
||||
|
||||
return ElementalArea::get()->byID($this->getField('ElementalAreaID'));
|
||||
return false;
|
||||
}
|
||||
|
||||
public function CurrentElement()
|
||||
|
@ -5,27 +5,17 @@ namespace Site\Tasks;
|
||||
|
||||
use SilverStripe\Assets\File;
|
||||
use SilverStripe\Dev\BuildTask;
|
||||
use SilverStripe\ORM\DB;
|
||||
|
||||
class BrokenFilesTask extends BuildTask
|
||||
{
|
||||
protected $title = 'Fix Broken Task';
|
||||
protected $title = 'Broken Files Task';
|
||||
|
||||
protected $description = 'Fix missing PRIMARY keys and Broken files';
|
||||
protected $description = 'Broken files report';
|
||||
|
||||
protected $enabled = true;
|
||||
|
||||
public function run($request)
|
||||
{
|
||||
$q = DB::query('show tables');
|
||||
$tables = array_keys($q->map());
|
||||
|
||||
foreach ($tables as $t) {
|
||||
try {
|
||||
DB::query('ALTER TABLE `'.$t.'` ADD PRIMARY KEY (`ID`)');
|
||||
}catch (\Exception $e) {}
|
||||
}
|
||||
|
||||
$files = File::get();
|
||||
$i = 0;
|
||||
foreach ($files as $file) {
|
||||
|
@ -69,6 +69,17 @@ class DeferredRequirements implements TemplateGlobalProvider
|
||||
.$config['jquery_version'].'/jquery.min.js'
|
||||
);
|
||||
}
|
||||
|
||||
if (!$config['noreact']) {
|
||||
if (!Director::isDev()) {
|
||||
self::loadJS('https://unpkg.com/react@17/umd/react.production.min.js');
|
||||
self::loadJS('https://unpkg.com/react-dom@17/umd/react-dom.production.min.js');
|
||||
} else {
|
||||
self::loadJS('https://unpkg.com/react@17/umd/react.development.js');
|
||||
self::loadJS('https://unpkg.com/react-dom@17/umd/react-dom.development.js');
|
||||
}
|
||||
}
|
||||
|
||||
// App libs
|
||||
if (!$config['nofontawesome']) {
|
||||
$v = !isset($config['fontawesome_version']) || !$config['fontawesome_version']
|
||||
@ -81,19 +92,14 @@ class DeferredRequirements implements TemplateGlobalProvider
|
||||
self::loadCSS($mainTheme.'.css');
|
||||
|
||||
// hot reloading
|
||||
if (self::webpackActive()) {
|
||||
/*if (self::webpackActive()) {
|
||||
self::loadJS('hot.js');
|
||||
}
|
||||
}*/
|
||||
|
||||
self::loadJS($mainTheme.'.js');
|
||||
|
||||
// Custom controller requirements
|
||||
$curr = Controller::curr();
|
||||
if(isset($curr->record, $curr->record['ClassName']) && !$class) {
|
||||
$class = $curr->record['ClassName'];
|
||||
}
|
||||
$curr_class = $class ?: get_class($curr);
|
||||
|
||||
$curr_class = $class ?: get_class(Controller::curr());
|
||||
if (isset($config['custom_requirements'][$curr_class])) {
|
||||
foreach ($config['custom_requirements'][$curr_class] as $file) {
|
||||
if (strpos($file, '.css')) {
|
||||
@ -130,7 +136,7 @@ class DeferredRequirements implements TemplateGlobalProvider
|
||||
public static function loadCSS($css): void
|
||||
{
|
||||
$external = (mb_strpos($css, '//') === 0 || mb_strpos($css, 'http') === 0);
|
||||
if ($external || (self::getDeferred() && !self::webpackActive())) {
|
||||
if ($external) {
|
||||
self::$css[] = $css;
|
||||
} else {
|
||||
WebpackTemplateProvider::loadCSS($css);
|
||||
|
@ -53,9 +53,9 @@ class WebpackTemplateProvider implements TemplateGlobalProvider
|
||||
*/
|
||||
public static function loadCSS($path): void
|
||||
{
|
||||
if (self::isActive()) {
|
||||
/*if (self::isActive()) {
|
||||
return;
|
||||
}
|
||||
}*/
|
||||
|
||||
Requirements::css(self::_getPath($path));
|
||||
}
|
||||
@ -124,10 +124,11 @@ class WebpackTemplateProvider implements TemplateGlobalProvider
|
||||
$cfg = self::config();
|
||||
return sprintf(
|
||||
'%s%s:%s/%s',
|
||||
Director::protocol(),
|
||||
($cfg['HTTPS'] ? 'https://' : 'http://'),
|
||||
$cfg['HOSTNAME'],
|
||||
$cfg['PORT'],
|
||||
basename($path)
|
||||
//Controller::join_links($cfg['APPDIR'], $cfg['SRC'], basename($path))
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -3,10 +3,11 @@
|
||||
|
||||
namespace Site\Widgets;
|
||||
|
||||
use Sheadawson\Linkable\Forms\LinkField;
|
||||
use Sheadawson\Linkable\Models\Link;
|
||||
use SilverStripe\AssetAdmin\Forms\UploadField;
|
||||
use SilverStripe\Assets\Image;
|
||||
use SilverStripe\Widgets\Model\Widget;
|
||||
use Site\Extensions\ElementImageWidget;
|
||||
|
||||
if (!class_exists(Widget::class)) {
|
||||
return;
|
||||
@ -22,29 +23,24 @@ class BannerWidget extends Widget
|
||||
|
||||
private static $has_one = [
|
||||
'Image' => Image::class,
|
||||
'Link' => Link::class,
|
||||
];
|
||||
|
||||
private static $owns = [
|
||||
'Image',
|
||||
];
|
||||
|
||||
private static $extensions = [
|
||||
ElementImageWidget::class,
|
||||
'Link',
|
||||
];
|
||||
|
||||
public function getCMSFields()
|
||||
{
|
||||
$fields = parent::getCMSFields();
|
||||
|
||||
$fields->push(UploadField::create('Image', 'Image')
|
||||
$fields->push(UploadField::create('Image', 'Image (minimal width 301px)')
|
||||
->setAllowedFileCategories(['image/supported']));
|
||||
|
||||
return $fields;
|
||||
}
|
||||
$fields->push(LinkField::create('LinkID', 'Link'));
|
||||
|
||||
public function getSibling()
|
||||
{
|
||||
return false;
|
||||
return $fields;
|
||||
}
|
||||
|
||||
private $_random;
|
||||
@ -59,12 +55,12 @@ class BannerWidget extends Widget
|
||||
|
||||
public function onBeforeWrite()
|
||||
{
|
||||
$title = $this->getField('Title');
|
||||
$img = $this->Image();
|
||||
if (!$title && $img) {
|
||||
$this->setField('Title', $img->getTitle());
|
||||
}
|
||||
$title = $this->getField('Title');
|
||||
$img = $this->Image();
|
||||
if(!$title && $img) {
|
||||
$this->setField('Title', $img->getTitle());
|
||||
}
|
||||
|
||||
parent::onBeforeWrite();
|
||||
parent::onBeforeWrite();
|
||||
}
|
||||
}
|
||||
|
@ -1,21 +1,21 @@
|
||||
<% if $Pages %>
|
||||
<nav class="breadcrumbs $DefaultContainer" aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="/">Home</a>
|
||||
<%-- $Delimiter.RAW --%>
|
||||
</li>
|
||||
<% loop $Pages %>
|
||||
<li
|
||||
class="breadcrumb-item<% if $Last %> current active<% end_if %>"
|
||||
<% if $Last %> aria-current="page"<% end_if %>
|
||||
>
|
||||
<% if not Up.Unlinked %><a href="$Link" class="breadcrumb-$Pos"><% end_if %>
|
||||
$MenuTitle.XML
|
||||
<% if not Up.Unlinked %></a><% end_if %>
|
||||
<%-- if not $Last %>$Up.Delimiter.RAW<% end_if --%>
|
||||
<div class="$DefaultContainer">
|
||||
<nav class="breadcrumbs" aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="/" class="breadcrumb-link">Home</a>
|
||||
</li>
|
||||
<% end_loop %>
|
||||
</ol>
|
||||
</nav>
|
||||
<% loop $Pages %>
|
||||
<li
|
||||
class="breadcrumb-item<% if $Last %> current active<% end_if %>"
|
||||
<% if $Last %> aria-current="page"<% end_if %>
|
||||
>
|
||||
<% if not Up.Unlinked %><a href="$Link" class="graphql-page breadcrumb-link breadcrumb-link__$Pos"><% end_if %>
|
||||
$MenuTitle.XML
|
||||
<% if not Up.Unlinked %></a><% end_if %>
|
||||
</li>
|
||||
<% end_loop %>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
<% end_if %>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div class="image-element__image<% if $Resize %><% if $Height %> height{$Height}<% end_if %><% if $Width %> width{$Width}<% end_if %><% end_if %>">
|
||||
<img
|
||||
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
|
||||
data-lazy-src="$ImageResized.URL" class="img-responsive" alt="$Title"
|
||||
data-lazy-src="$ImageResized.URL" class="img-responsive" alt="$Title.ATT"
|
||||
/>
|
||||
</div>
|
||||
<% end_if %>
|
||||
@ -18,7 +18,7 @@
|
||||
<% end_if %>
|
||||
|
||||
<% if $ImageLink %>
|
||||
<a href="$ImageLink.LinkURL" class="stretched-link">
|
||||
<a href="$ImageLink.LinkURL" class="graphql-page stretched-link">
|
||||
<b class="sr-only">$ImageLink.Title</b>
|
||||
</a>
|
||||
<% end_if %>
|
||||
|
1
app/templates/GraphQLPage.ss
Normal file
@ -0,0 +1 @@
|
||||
<% include MainContent Layout=$Layout %>
|
53
app/templates/Includes/Alerts.ss
Normal file
@ -0,0 +1,53 @@
|
||||
<div id="SiteWideAlerts" class="offline-message">
|
||||
<div
|
||||
class="alert alert-danger alert-offline alert-dismissible fade show"
|
||||
role="alert"
|
||||
>
|
||||
<div class="typography">
|
||||
The Internet connection is missing right now, but you're able to
|
||||
browse previously opened pages offline.
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-danger btn-close"
|
||||
data-bs-dismiss="alert"
|
||||
aria-label="Close"
|
||||
>
|
||||
<i class="fas fa-times"></i>
|
||||
</button>
|
||||
</div>
|
||||
<noscript>
|
||||
<div class="main-bn alert alert-fixed-top alert-danger" role="alert">
|
||||
Please, enable javascript.
|
||||
</div>
|
||||
</noscript>
|
||||
|
||||
<!--[if lt IE 11
|
||||
]><div class="main-bn alert alert-danger" role="alert">
|
||||
<a
|
||||
href="https://www.google.com/chrome/browser/desktop/"
|
||||
classs="alert-link"
|
||||
>
|
||||
You are using an outdated browser. For a faster, safer browsing
|
||||
experience, upgrade for free today.
|
||||
</a>
|
||||
</div><!
|
||||
[endif]-->
|
||||
|
||||
<% if $SiteWideMessage %>
|
||||
<div class="single-message">
|
||||
<div class="alert alert-fixed-top alert-{$Type}">
|
||||
<div class="$DefaultContainer">
|
||||
<b class="btn btn-danger btn-close" data-dismiss="alert" aria-label="Close">
|
||||
<i class="fas fa-times"></i>
|
||||
</b>
|
||||
{$Message}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end_if %>
|
||||
|
||||
<% with $SiteConfig %>
|
||||
<% include Site\Objects\NotificationsList NotificationsToday=$NotificationsToday.filter('Area', 'Site') %>
|
||||
<% end_with %>
|
||||
</div>
|
@ -11,7 +11,7 @@
|
||||
<div class="elemental-area">
|
||||
<% if $ElementalArea.Elements.Count %>
|
||||
$ElementalArea
|
||||
<% else %>
|
||||
<% else_if $Content %>
|
||||
<div class="element element_content_field dnadesign__elemental__models__elementcontent">
|
||||
<div class="element-container {$DefaultContainer}">
|
||||
<% include DNADesign\Elemental\Models\ElementContent HTML=$Content %>
|
||||
|
@ -4,17 +4,10 @@
|
||||
<%-- No JS enabled notice --%>
|
||||
<noscript><div class="main-bn"><%t Page.JAVASCRIPTREQUIRED 'Please, enable javascript.' %></div></noscript>
|
||||
|
||||
<%-- Loading Spinner --%>
|
||||
<div id="PageLoading">
|
||||
<div class="loading-spinner">
|
||||
<img class="logo" src="{$ResourcesURL('logo.svg')}" width="200" alt="{$SiteConfig.Title}" /><br/>
|
||||
<div class="lds-ellipsis"><div></div><div></div><div></div><div></div></div>
|
||||
<br/><%t Page.LOADINGTEXT 'LOADING ..' %>
|
||||
</div>
|
||||
</div>
|
||||
<% include LoadingSpinner %>
|
||||
|
||||
|
||||
<% if $isDev || $WebpackActive %>
|
||||
<%-- if $isDev || $WebpackActive %>
|
||||
<div id="DevUtilities">
|
||||
$DeferedCSS('app_dev.css')
|
||||
$DeferedJS('app_dev.js')
|
||||
@ -23,7 +16,7 @@
|
||||
</div>
|
||||
<div class="original d-none"></div>
|
||||
</div>
|
||||
<% end_if %>
|
||||
<% end_if --%>
|
||||
|
||||
<%-- Site Wide Alert Message --%>
|
||||
<% include SiteWideMessage %>
|
||||
<% include Alerts %>
|
||||
|
@ -1,17 +1,12 @@
|
||||
<div class="element">
|
||||
<div class="element__container $DefaultContainer">
|
||||
<div class="row">
|
||||
<div class="col-xl-4">
|
||||
<div class="col col-xl-3">
|
||||
<a id="Logo" class="logo" href="/">
|
||||
<img src="{$ResourcesURL('logo.svg')}" width="100" alt="{$SiteConfig.Title}" />
|
||||
<img src="{$ResourcesURL('logo.png')}" width="100" alt="{$SiteConfig.Title}" />
|
||||
</a>
|
||||
<% with $SiteConfig %>
|
||||
<% if $Tagline %>
|
||||
<div class="tagline">$Tagline</div>
|
||||
<% end_if %>
|
||||
<% end_with %>
|
||||
</div>
|
||||
<div class="col-xl-8 nav-container">
|
||||
<div class="col col-xl-9 nav-container">
|
||||
<% if $Menu(1) %>
|
||||
<% include Navigation Navigation=$Menu(1), NavID="Navigation" %>
|
||||
<% end_if %>
|
||||
|
221
app/templates/Includes/LoadingSpinner.ss
Normal file
@ -0,0 +1,221 @@
|
||||
<style>
|
||||
@keyframes lds-ellipsis1 {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
@keyframes lds-ellipsis3 {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
}
|
||||
100% {
|
||||
transform: scale(0);
|
||||
}
|
||||
}
|
||||
@keyframes lds-ellipsis2 {
|
||||
0% {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
100% {
|
||||
transform: translate(1.35rem, 0);
|
||||
}
|
||||
}
|
||||
body,
|
||||
html {
|
||||
font-size: 14px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: #fff;
|
||||
color: #333;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
@media (min-width: 2000px) {
|
||||
html, body {
|
||||
font-size: .9vw;
|
||||
}
|
||||
}
|
||||
#PageLoading {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
margin: 0;
|
||||
width: 100% !important;
|
||||
height: 100% !important;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
z-index: 2000;
|
||||
will-change: opacity;
|
||||
background: #fff;
|
||||
color: #212529;
|
||||
}
|
||||
#PageLoading .logo {
|
||||
width:100px;
|
||||
width: 12.5vw;
|
||||
}
|
||||
#PageLoading .tagline {
|
||||
margin-top:1rem;
|
||||
margin-bottom:1rem;
|
||||
color: #212529;
|
||||
font-size:1.8rem;
|
||||
font-size: 4vh;
|
||||
letter-spacing: .25em;
|
||||
}
|
||||
.main-bn {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 99999999;
|
||||
padding: 0.5rem 1rem;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
background: #ff0000;
|
||||
}
|
||||
img,
|
||||
iframe {
|
||||
max-width: 100%;
|
||||
}
|
||||
.loading-spinner {
|
||||
text-align: center;
|
||||
}
|
||||
.lds-ellipsis {
|
||||
margin-top:1.5rem;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 4.57rem;
|
||||
height: 1rem;
|
||||
color: #fff;
|
||||
}
|
||||
.lds-ellipsis div {
|
||||
position: absolute;
|
||||
top:0.15rem;
|
||||
width: 0.78rem;
|
||||
height: 0.78rem;
|
||||
border-radius: 50%;
|
||||
background: #888;
|
||||
animation-timing-function: cubic-bezier(0, 1, 1, 0);
|
||||
}
|
||||
.lds-ellipsis div:nth-child(1) {
|
||||
left: 0.42rem;
|
||||
animation: lds-ellipsis1 0.6s infinite;
|
||||
}
|
||||
.lds-ellipsis div:nth-child(2) {
|
||||
left: 0.9rem;
|
||||
animation: lds-ellipsis2 0.6s infinite;
|
||||
}
|
||||
.lds-ellipsis div:nth-child(3) {
|
||||
left: 1.85rem;
|
||||
animation: lds-ellipsis2 0.6s infinite;
|
||||
}
|
||||
.lds-ellipsis div:nth-child(4) {
|
||||
left: 3.21rem;
|
||||
animation: lds-ellipsis3 0.6s infinite;
|
||||
}
|
||||
@keyframes lds-text {
|
||||
from {
|
||||
font-size: 1em;
|
||||
}
|
||||
to {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
}
|
||||
.lds-text {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-left: -5rem;
|
||||
margin-top: 8rem;
|
||||
font-size: 0.8rem;
|
||||
letter-spacing: 0.25em;
|
||||
color: #fff;
|
||||
}
|
||||
.lds-text b {
|
||||
font-weight: 300;
|
||||
animation: lds-text 5s ease infinite alternate;
|
||||
}
|
||||
.lds-text b:nth-child(1) {
|
||||
animation-delay: 0.5s;
|
||||
}
|
||||
.lds-text b:nth-child(2) {
|
||||
animation-delay: 1s;
|
||||
}
|
||||
.lds-text b:nth-child(3) {
|
||||
animation-delay: 1.5s;
|
||||
}
|
||||
.lds-text b:nth-child(4) {
|
||||
animation-delay: 2s;
|
||||
}
|
||||
.lds-text b:nth-child(5) {
|
||||
animation-delay: 2.5s;
|
||||
}
|
||||
.lds-text b:nth-child(6) {
|
||||
animation-delay: 3s;
|
||||
}
|
||||
.lds-text b:nth-child(7) {
|
||||
animation-delay: 3.5s;
|
||||
}
|
||||
.lds-text b:nth-child(8) {
|
||||
animation-delay: 4s;
|
||||
}
|
||||
.lds-text b:nth-child(9) {
|
||||
animation-delay: 4.5s;
|
||||
}
|
||||
.lds-text b:nth-child(10) {
|
||||
animation-delay: 5s;
|
||||
}
|
||||
@media (orientation: portrait) {
|
||||
#PageLoading .logo {
|
||||
width:50vw;
|
||||
}
|
||||
#PageLoading .tagline {
|
||||
font-size: 4vw;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<% with $SiteConfig %>
|
||||
<div id="PageLoading">
|
||||
<div class="loading-spinner">
|
||||
<img
|
||||
class="logo"
|
||||
src="{$ResourcesURL('logo.png')}"
|
||||
width="200"
|
||||
alt="{$Title}"
|
||||
/><br />
|
||||
<div class="lds-ellipsis">
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
</div>
|
||||
<br />
|
||||
|
||||
<% if $Tagline %>
|
||||
<div class="tagline">
|
||||
$Tagline
|
||||
</div>
|
||||
<% else %>
|
||||
<div class="lds-placeholder">LOADING...</div>
|
||||
<div class="lds-text">
|
||||
<b>L</b>
|
||||
<b>O</b>
|
||||
<b>A</b>
|
||||
<b>D</b>
|
||||
<b>I</b>
|
||||
<b>N</b>
|
||||
<b>G</b>
|
||||
<b>.</b>
|
||||
<b>.</b>
|
||||
<b>.</b>
|
||||
</div>
|
||||
<% end_if %>
|
||||
</div>
|
||||
</div>
|
||||
<% end_with %>
|
@ -1,4 +1,4 @@
|
||||
<div class="maincontent maincontent-{$CSSClass} maincontent-{$URLSegment}<% if $URLSegment != 'home' %> maincontent-inner-page<% end_if %>">
|
||||
<div class="mainContent-page-{$CSSClass}">
|
||||
<% if $HeroImageRecursive %>
|
||||
<div class="element element__hero-image">
|
||||
<div class="element-container">
|
||||
@ -7,26 +7,10 @@
|
||||
</div>
|
||||
<% end_if %>
|
||||
|
||||
<% if $ParentID %>
|
||||
<div id="PageBreadcumbs">
|
||||
<% if $URLSegment != 'home' %>
|
||||
<div id="PageBreadcumbs" class="element element__breadcrumbs">
|
||||
$Breadcrumbs
|
||||
</div>
|
||||
<% else_if $URLSegment != 'home' %>
|
||||
<div id="PageBreadcumbs">
|
||||
<nav class="breadcrumbs $DefaultContainer" aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="/">Home</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item current active" aria-current="page">
|
||||
<a href="$Link" class="breadcrumb-2">
|
||||
$MenuTitle
|
||||
</a>
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
<% end_if %>
|
||||
|
||||
<% if $SideBarContent || $SideBarView && $SideBarView.Widgets.Count %>
|
||||
|
@ -47,9 +47,6 @@ $MetaTags
|
||||
<link rel="preconnect" href="https://i9.ytimg.com" />
|
||||
<link rel="preconnect" href="https://s.ytimg.com" />
|
||||
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
<meta name="swversion" content="{$SWVersion}" />
|
||||
|
||||
<link rel="shortcut icon" type="image/x-icon" href="{$AbsoluteBaseURL}resources/app/client/dist/icons/favicon.ico" />
|
||||
<link rel="apple-touch-icon" href="{$AbsoluteBaseURL}resources/app/client/dist/icons/apple-touch-icon.png" />
|
||||
<link rel="apple-touch-icon-precomposed" href="{$AbsoluteBaseURL}resources/app/client/dist/icons/apple-touch-icon-precomposed.png" />
|
||||
@ -63,4 +60,9 @@ $MetaTags
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1" />
|
||||
|
||||
<% include Prestyling %>
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
|
||||
<meta name="swversion" content="{$SWVersion}" />
|
||||
<meta name="ping" content="/Security/ping" />
|
||||
<meta name="api_url" content="{$AbsoluteBaseURL}graphql" />
|
||||
<meta name="api_static_domain" content="{$AbsoluteBaseURL}" />
|
||||
|
@ -1,78 +1,28 @@
|
||||
<% if $Children %>
|
||||
<div class="nav-item dropdown<% if $isCurrent || $isSection %> active <% end_if %><% if $isSection %> section<% end_if %><% if $SubmenuColumns %> submenu-cols-dropdown<% end_if %> {$CSSClass} {$ExtraClass}">
|
||||
<% if $DropdownNoLink %>
|
||||
<span
|
||||
class="nav-link dropdown-toggle<% if $RedirectionType = 'External' || $ExternalURL || $OpenInNewWindow %> external<% end_if %>"
|
||||
id="NavItem{$ID}"
|
||||
role="button"
|
||||
data-toggle="hover"
|
||||
data-allow-click="true"
|
||||
aria-haspopup="true"
|
||||
aria-expanded="false"
|
||||
data-href="{$Link}"
|
||||
data-text="{$MenuTitle.XML}"
|
||||
<% if $RedirectionType = 'External' || $OpenInNewWindow %>data-target="_blank"<% end_if %>
|
||||
>
|
||||
$MenuTitle.XML
|
||||
<% if $isCurrent || $isSection %><i class="sr-only">(current)</i><% end_if %>
|
||||
</span>
|
||||
<% else %>
|
||||
<a
|
||||
class="nav-link dropdown-toggle<% if $RedirectionType = 'External' || $ExternalURL || $OpenInNewWindow %> external<% end_if %>"
|
||||
id="NavItem{$ID}"
|
||||
role="button"
|
||||
data-toggle="hover"
|
||||
data-allow-click="true"
|
||||
aria-haspopup="true"
|
||||
aria-expanded="false"
|
||||
href="{$Link}"
|
||||
data-text="{$MenuTitle.XML}"
|
||||
<% if $RedirectionType = 'External' || $OpenInNewWindow %>target="_blank"<% end_if %>
|
||||
>
|
||||
$MenuTitle.XML
|
||||
<% if $isCurrent || $isSection %><i class="sr-only">(current)</i><% end_if %>
|
||||
</a>
|
||||
<% end_if %>
|
||||
<div class="nav-item dropdown dropdown-hover<% if $isCurrent || $isSection %> active <% end_if %><% if $isSection %> section<% end_if %><% if $SubmenuColumns %> submenu-cols-dropdown<% end_if %> {$CSSClass} {$ExtraClass}">
|
||||
<% include NavItem_link ExtraClass="dropdown-toggle-fl dropdown-toggle-notouch" %>
|
||||
|
||||
<div class="dropdown-menu<% if $SubmenuColumns %> submenu-cols<% end_if %>" aria-labelledby="NavItem{$ID}">
|
||||
<% if $SubmenuColumns %>
|
||||
<div class="row">
|
||||
<% loop $Children %>
|
||||
<div class="col-xl-{$Up.SubmenuColumnsLayout}">
|
||||
<% include NavItem_link LinkClass="nav-link nav-link-category" %>
|
||||
<button
|
||||
id="NavItemButton{$ID}"
|
||||
class="nav-link dropdown-toggle dropdown-toggle-sm dropdown-toggle-touch<% if $RedirectionType = 'External' || $ExternalURL || $OpenInNewWindow %> external<% end_if %><% if $DropdownNoLink %> d-block<% end_if %>"
|
||||
role="button"
|
||||
data-bs-toggle="dropdown"
|
||||
aria-expanded="false"
|
||||
type="button"
|
||||
>
|
||||
$MenuTitle.XML
|
||||
</button>
|
||||
|
||||
<ul class="dropdown-list">
|
||||
<% loop $Children %>
|
||||
<% include NavItem ExtraClass="dropdown-item" %>
|
||||
<% end_loop %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end_loop %>
|
||||
</div>
|
||||
|
||||
<% if $SubmenuNote %>
|
||||
<div class="submenu-note">
|
||||
<% if $NoteLink %>
|
||||
<a
|
||||
href="$NoteLink.LinkURL"
|
||||
<% if $OpenInNewWindow %>target="_blank"<% end_if %>
|
||||
>$SubmenuNote</a>
|
||||
<% else %>
|
||||
$SubmenuNote
|
||||
<% end_if %>
|
||||
</div>
|
||||
<% end_if %>
|
||||
<% else %>
|
||||
<ul class="dropdown-list">
|
||||
<% loop $Children %>
|
||||
<% include NavItem ExtraClass="dropdown-item" %>
|
||||
<% end_loop %>
|
||||
</ul>
|
||||
<% end_if %>
|
||||
<div class="dropdown-menu<% if $SubmenuColumns %> submenu-cols<% end_if %>" aria-labelledby="NavItemButton{$ID}">
|
||||
<ul class="dropdown-list">
|
||||
<% loop $Children %>
|
||||
<% include NavItem ExtraClass="dropdown-item" %>
|
||||
<% end_loop %>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<% else %>
|
||||
<div class="nav-item {$CSSClass} $ExtraClass <% if $isCurrent || $isSection %> active<% end_if %>">
|
||||
<% include NavItem_link %>
|
||||
<% include NavItem_link ExtraClass='' %>
|
||||
</div>
|
||||
<% end_if %>
|
||||
|
@ -1,5 +1,6 @@
|
||||
<a
|
||||
class="nav-item-link <% if $LinkClass %>{$LinkClass}<% else %>nav-link<% end_if %><% if $RedirectionType = 'External' || $ExternalURL || $OpenInNewWindow %> external<% end_if %>" href="{$Link}"
|
||||
class="nav-link graphql-page $ExtraClass <% if $LinkClass %>{$LinkClass}<% else %>nav-link<% end_if %><% if $RedirectionType = 'External' || $ExternalURL || $OpenInNewWindow %> external<% end_if %>"
|
||||
href="{$Link}"
|
||||
<% if $RedirectionType = 'External' || $OpenInNewWindow %> target="_blank"<% end_if %>
|
||||
data-text="{$MenuTitle.XML}"
|
||||
>
|
||||
|
@ -1,18 +1,18 @@
|
||||
<nav id="{$NavID}" class="navbar navbar-expand-lg dropdown-hover">
|
||||
<nav id="{$NavID}" class="navbar navbar-expand-lg">
|
||||
<button
|
||||
class="navbar-toggler"
|
||||
type="button"
|
||||
data-toggle="collapse"
|
||||
data-target="#{$NavID}Content"
|
||||
aria-controls="{$NavID}Content"
|
||||
aria-expanded="false"
|
||||
aria-label="Toggle navigation"
|
||||
>
|
||||
<i class="fas fa-bars"></i>
|
||||
</button>
|
||||
class="navbar-toggler"
|
||||
type="button"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#{$NavID}Content"
|
||||
aria-controls="{$NavID}Content"
|
||||
aria-expanded="false"
|
||||
aria-label="Toggle navigation"
|
||||
>
|
||||
<i class="navbar-toggler-icon fa fas fa-bars"></i>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="{$NavID}Content">
|
||||
<ul class="navbar-nav mr-auto w-100 justify-content-between">
|
||||
<div id="{$NavID}Content" class="collapse navbar-collapse">
|
||||
<ul class="navbar-nav">
|
||||
<% loop $Navigation %>
|
||||
<% include NavItem %>
|
||||
<% end_loop %>
|
||||
|
@ -1,5 +0,0 @@
|
||||
<style>
|
||||
body,html{font-size:14px;margin:0;padding:0;background:#fff;color:#333;overflow-x:hidden}#PageLoading{position:fixed;left:0;top:0;margin:0;width:100%!important;height:100%!important;background:#fff;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;z-index:9999;will-change:opacity}.main-bn{position:fixed;top:0;left:0;width:100%;z-index:99999999;padding:0.5rem 1rem;text-align:center;color:#fff;background:#FF0000}img,iframe{max-width:100%}.loading-spinner{text-align:center}
|
||||
.lds-ellipsis{display:inline-block;position:relative;width:64px;height:64px}.lds-ellipsis div{position:absolute;top:27px;width:11px;height:11px;border-radius:50%;background:#888;animation-timing-function:cubic-bezier(0, 1, 1, 0)}.lds-ellipsis div:nth-child(1){left:6px;animation:lds-ellipsis1 0.6s infinite}.lds-ellipsis div:nth-child(2){left:6px;animation:lds-ellipsis2 0.6s infinite}.lds-ellipsis div:nth-child(3){left:26px;animation:lds-ellipsis2 0.6s infinite}.lds-ellipsis div:nth-child(4){left:45px;animation:lds-ellipsis3 0.6s infinite}@keyframes lds-ellipsis1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes lds-ellipsis3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes lds-ellipsis2{0%{transform:translate(0, 0)}100%{transform:translate(19px, 0)}}
|
||||
html,body{color:#212121}a{color:#007bff}
|
||||
</style>
|
@ -1,31 +0,0 @@
|
||||
<div id="SiteWideOffline" class="offline-message">
|
||||
<div class="alert alert-fixed-top alert-danger alert-offline">
|
||||
<div class="$DefaultContainer">
|
||||
<div class="typography">
|
||||
The Internet connection is missing right now, but you're able to browse previously opened pages offline.
|
||||
</div>
|
||||
<b class="btn btn-danger btn-close" data-dismiss="alert" aria-label="Close">
|
||||
<i class="fas fa-times"></i>
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="SiteWideMessage">
|
||||
<% if $SiteWideMessage %>
|
||||
<div class="single-message">
|
||||
<div class="alert alert-fixed-top alert-{$Type}">
|
||||
<div class="$DefaultContainer">
|
||||
<b class="btn btn-danger btn-close" data-dismiss="alert" aria-label="Close">
|
||||
<i class="fas fa-times"></i>
|
||||
</b>
|
||||
{$Message}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end_if %>
|
||||
|
||||
<% with $SiteConfig %>
|
||||
<% include Site\Objects\NotificationsList NotificationsToday=$NotificationsToday.filter('Area', 'Site') %>
|
||||
<% end_with %>
|
||||
</div>
|
@ -33,7 +33,8 @@
|
||||
<% end_if %>
|
||||
|
||||
<% if $Content || $Headline || $Description || $SlideLinkID %>
|
||||
<div class="carousel-caption container">
|
||||
<div class="container">
|
||||
<div class="carousel-caption">
|
||||
<div class="carousel-caption-container typography">
|
||||
<% if $Headline %><h2 class="carousel-title">$Headline</h2><% end_if %>
|
||||
|
||||
@ -57,4 +58,5 @@
|
||||
<% end_if %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end_if %>
|
||||
|
@ -6,14 +6,16 @@
|
||||
</head>
|
||||
|
||||
<body oncontextmenu="return false;"<% with $SiteConfig %> data-default-lng="$Longitude" data-default-lat="$Latitude"<% end_with %>>
|
||||
<% include First %>
|
||||
|
||||
<div class="wrapper">
|
||||
<% include First %>
|
||||
|
||||
<div id="MetaLightboxApp"></div>
|
||||
|
||||
<header id="Header">
|
||||
<% include Header %>
|
||||
</header>
|
||||
|
||||
<main id="MainContent" data-ajax-region="LayoutAjax">
|
||||
<main id="MainContent" class="page-content" data-ajax-region="LayoutAjax">
|
||||
<% include MainContent Layout=$Layout %>
|
||||
</main>
|
||||
</div>
|
||||
|
@ -1,31 +1,22 @@
|
||||
<div class="blog-post__info blog-post-info">
|
||||
<div class="row">
|
||||
<%-- div class="published-date">
|
||||
<div class="day">$PublishDate.Format("d")</div>
|
||||
<div class="month">$PublishDate.Format("MMM")</div>
|
||||
</div --%>
|
||||
<div class="col-sm-5">
|
||||
<% if $FeaturedImage %>
|
||||
<div class="blog-post__img img card-img-top">
|
||||
$FeaturedImage.FocusFill(350,200)
|
||||
</div>
|
||||
<% end_if %>
|
||||
</div>
|
||||
<%-- div class="published-date">
|
||||
<div class="day">$PublishDate.Format("d")</div>
|
||||
<div class="month">$PublishDate.Format("MMM")</div>
|
||||
</div --%>
|
||||
|
||||
<div class="col-sm-7 blog-post__body blog-body">
|
||||
<h2 class="blog-post__title card-title title h3">
|
||||
$Title
|
||||
</h2>
|
||||
<div class="blog-post__body blog-body">
|
||||
<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__summary card-text typography summary">
|
||||
$Summary
|
||||
</div>
|
||||
|
||||
<a href="{$Link}" class="blog-post__btn btn btn-link stretched-link">
|
||||
<span class="sr-only"><%t SilverStripe\\Blog\\Model\\Blog.READMORE "Read More" %> »</span>
|
||||
</a>
|
||||
<a href="{$Link}" class="blog-post__link graphql-page stretched-link">
|
||||
<%t SilverStripe\\Blog\\Model\\Blog.READMORE "Read More" %> »
|
||||
</a>
|
||||
|
||||
<% include SilverStripe\\Blog\\EntryMeta %>
|
||||
</div>
|
||||
</div>
|
||||
<% include SilverStripe\\Blog\\EntryMeta %>
|
||||
</div>
|
||||
</div>
|
||||
|
6
app/templates/Site/Elements/InstagramElement.ss
Normal file
@ -0,0 +1,6 @@
|
||||
<% if $ShowTitle %>
|
||||
<h2 class="content-element__title">$Title</h2>
|
||||
<% end_if %>
|
||||
|
||||
<div class="element__feed jsInstagramFeed" $AttributesHTML></div>
|
||||
<div class="feed__link"><a href="{$FeedLink}" target="_blank">{$FeedTitle}</a></div>
|
@ -1,16 +1,6 @@
|
||||
<% if $ImageResized %>
|
||||
<div class="image-element__image<% if $Resize %><% if $Height %> height{$Height}<% end_if %><% if $Width %> width{$Width}<% end_if %><% end_if %>">
|
||||
<% if $ImageLink %><a href="$ImageLink.LinkURL"><% end_if %>
|
||||
<img
|
||||
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
|
||||
data-lazy-src="$ImageResized.URL" class="img-responsive" alt="$Title.ATT"
|
||||
/>
|
||||
<% if $ImageLink %></a><% end_if %>
|
||||
</div>
|
||||
<% end_if %>
|
||||
|
||||
<% if $ImageLink %>
|
||||
<% with $ImageLink %>
|
||||
<img src="$Image.FocusFill(432,315).URL" alt="$Title" />
|
||||
<% if $Link %>
|
||||
<% with $Link %>
|
||||
<a href="$URL"<% if $OpenInNewWindow %> target="_blank"<% end_if %> class="stretched-link">
|
||||
<span class="sr-only">$Up.Title</span>
|
||||
</a>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<% if $Element %>
|
||||
<% with $Element %>
|
||||
<div class="element $SimpleClassName.LowerCase<% if $StyleVariant %> $StyleVariant<% end_if %><% if $ExtraClass %> $ExtraClass<% end_if %>" id="$Anchor">
|
||||
<div class="element element__{$SimpleClassName}<% if $StyleVariant %> $StyleVariant<% end_if %><% if $ExtraClass %> $ExtraClass<% end_if %>" id="$Anchor">
|
||||
<div class="element-container<% if $ContainerClass %> $ContainerClass<% end_if %>">
|
||||
$forTemplate
|
||||
</div>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<nav>
|
||||
<ul class="nav flex-column">
|
||||
<% with $Page.Level(1) %>
|
||||
<li class="nav-item-level1 nav-item {$CSSClass} $ExtraClass <% if $isCurrent || $isSection %> active<% end_if %>">
|
||||
<li class="nav-item-level1 nav-item {$CSSClass} $ExtraClass">
|
||||
<b class="nav-link">
|
||||
$MenuTitle.XML
|
||||
<% if $isCurrent || $isSection %><i class="sr-only">(current)</i><% end_if %>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<nav class="secondary element $ClassName">
|
||||
<nav class="secondary element element__widget widget__$ClassName {$SimpleClassName}">
|
||||
<% if $ShowTitle && $Title %><h2 class="widget-title">$Title</h2><% end_if %>
|
||||
$Content
|
||||
</nav>
|
||||
|
28
babel.config.json
Normal file
@ -0,0 +1,28 @@
|
||||
{
|
||||
"presets": [
|
||||
[
|
||||
"@babel/preset-env",
|
||||
{
|
||||
"targets": {
|
||||
"node": "6.10",
|
||||
"esmodules": true
|
||||
}
|
||||
}
|
||||
],
|
||||
[
|
||||
"@babel/preset-react",
|
||||
{
|
||||
"pragma": "dom", // default pragma is React.createElement (only in classic runtime)
|
||||
"pragmaFrag": "DomFrag", // default is React.Fragment (only in classic runtime)
|
||||
"throwIfNamespace": false, // defaults to true
|
||||
"runtime": "classic" // defaults to classic
|
||||
// "importSource": "custom-jsx-library" // defaults to react (only in automatic runtime)
|
||||
}
|
||||
]
|
||||
],
|
||||
"plugins": [
|
||||
"@babel/plugin-syntax-top-level-await",
|
||||
"@babel/plugin-proposal-object-rest-spread",
|
||||
"@babel/plugin-syntax-jsx"
|
||||
]
|
||||
}
|
@ -48,11 +48,13 @@
|
||||
"showpro/silverstripe-seo-images": "^1.0",
|
||||
"endroid/qr-code": "^3.9",
|
||||
"jonom/focuspoint": "^3.1",
|
||||
"restruct/silverstripe-security-baseline": "*"
|
||||
"restruct/silverstripe-security-baseline": "*",
|
||||
"silverstripe/graphql": "^3.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^5.7",
|
||||
"lekoala/silverstripe-debugbar": "dev-master"
|
||||
"lekoala/silverstripe-debugbar": "dev-master",
|
||||
"silverstripe/graphql-devtools": "1.x-dev"
|
||||
},
|
||||
"repositories": [
|
||||
{
|
||||
|
272
eslint.config.json
Normal file
@ -0,0 +1,272 @@
|
||||
{
|
||||
// http://eslint.org/docs/rules/
|
||||
"extends": "eslint:recommended",
|
||||
|
||||
"settings": {
|
||||
"react": {
|
||||
"version": "detect"
|
||||
}
|
||||
},
|
||||
|
||||
"env": {
|
||||
"browser": true, // browser global variables.
|
||||
"node": true, // Node.js global variables and Node.js-specific rules.
|
||||
"amd": true, // defines require() and define() as global variables as per the amd spec.
|
||||
"mocha": false, // adds all of the Mocha testing global variables.
|
||||
"jasmine": false, // adds all of the Jasmine testing global variables for version 1.3 and 2.0.
|
||||
"phantomjs": false, // phantomjs global variables.
|
||||
"jquery": true, // jquery global variables.
|
||||
"prototypejs": false, // prototypejs global variables.
|
||||
"shelljs": false, // shelljs global variables.
|
||||
"es6": true
|
||||
},
|
||||
|
||||
"globals": {
|
||||
// e.g. "angular": true
|
||||
},
|
||||
|
||||
"plugins": ["react", "import", "jquery"],
|
||||
|
||||
"parser": "@babel/eslint-parser",
|
||||
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 6,
|
||||
"sourceType": "module",
|
||||
"ecmaFeatures": {
|
||||
"jsx": true,
|
||||
"experimentalObjectRestSpread": true
|
||||
}
|
||||
},
|
||||
|
||||
"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)
|
||||
"no-constant-condition": 0, // disallow use of constant expressions in conditions
|
||||
"no-control-regex": 0, // disallow control characters in regular expressions
|
||||
"no-debugger": 0, // disallow use of debugger
|
||||
"no-dupe-keys": 0, // disallow duplicate keys when creating object literals
|
||||
"no-empty": 0, // disallow empty statements
|
||||
"no-empty-class": 0, // disallow the use of empty character classes in regular expressions
|
||||
"no-ex-assign": 0, // disallow assigning to the exception in a catch block
|
||||
"no-extra-boolean-cast": 0, // disallow double-negation boolean casts in a boolean context
|
||||
"no-extra-parens": 0, // disallow unnecessary parentheses (off by default)
|
||||
"no-extra-semi": 0, // disallow unnecessary semicolons
|
||||
"no-func-assign": 0, // disallow overwriting functions written as function declarations
|
||||
"no-inner-declarations": 0, // disallow function or variable declarations in nested blocks
|
||||
"no-invalid-regexp": 0, // disallow invalid regular expression strings in the RegExp constructor
|
||||
"no-irregular-whitespace": 0, // disallow irregular whitespace outside of strings and comments
|
||||
"no-negated-in-lhs": 0, // disallow negation of the left operand of an in expression
|
||||
"no-obj-calls": 0, // disallow the use of object properties of the global object (Math and JSON) as functions
|
||||
"no-regex-spaces": 0, // disallow multiple spaces in a regular expression literal
|
||||
"no-reserved-keys": 0, // disallow reserved words being used as object literal keys (off by default)
|
||||
"no-sparse-arrays": 0, // disallow sparse arrays
|
||||
"no-unreachable": 0, // disallow unreachable statements after a return, throw, continue, or break statement
|
||||
"use-isnan": 0, // disallow comparisons with the value NaN
|
||||
"valid-jsdoc": 0, // Ensure JSDoc comments are valid (off by default)
|
||||
"valid-typeof": 0, // Ensure that the results of typeof are compared against a valid string
|
||||
|
||||
////////// Best Practices //////////
|
||||
|
||||
"block-scoped-var": 0, // treat var statements as if they were block scoped (off by default)
|
||||
"complexity": 0, // specify the maximum cyclomatic complexity allowed in a program (off by default)
|
||||
"consistent-return": 0, // require return statements to either always or never specify values
|
||||
"curly": 0, // specify curly brace conventions for all control statements
|
||||
"default-case": 0, // require default case in switch statements (off by default)
|
||||
"dot-notation": 0, // encourages use of dot notation whenever possible
|
||||
"eqeqeq": 0, // require the use of === and !==
|
||||
"guard-for-in": 0, // make sure for-in loops have an if statement (off by default)
|
||||
"no-alert": 0, // disallow the use of alert, confirm, and prompt
|
||||
"no-caller": 0, // disallow use of arguments.caller or arguments.callee
|
||||
"no-div-regex": 0, // disallow division operators explicitly at beginning of regular expression (off by default)
|
||||
"no-else-return": 0, // disallow else after a return in an if (off by default)
|
||||
"no-empty-label": 0, // disallow use of labels for anything other then loops and switches
|
||||
"no-eq-null": 0, // disallow comparisons to null without a type-checking operator (off by default)
|
||||
"no-eval": 0, // disallow use of eval()
|
||||
"no-extend-native": 0, // disallow adding to native types
|
||||
"no-extra-bind": 0, // disallow unnecessary function binding
|
||||
"no-fallthrough": 0, // disallow fallthrough of case statements
|
||||
"no-floating-decimal": 0, // disallow the use of leading or trailing decimal points in numeric literals (off by default)
|
||||
"no-implied-eval": 0, // disallow use of eval()-like methods
|
||||
"no-iterator": 0, // disallow usage of __iterator__ property
|
||||
"no-labels": 0, // disallow use of labeled statements
|
||||
"no-lone-blocks": 0, // disallow unnecessary nested blocks
|
||||
"no-loop-func": 0, // disallow creation of functions within loops
|
||||
"no-multi-spaces": 0, // disallow use of multiple spaces
|
||||
"no-multi-str": 0, // disallow use of multiline strings
|
||||
"no-native-reassign": 0, // disallow reassignments of native objects
|
||||
"no-new": 0, // disallow use of new operator when not part of the assignment or comparison
|
||||
"no-new-func": 0, // disallow use of new operator for Function object
|
||||
"no-new-wrappers": 0, // disallows creating new instances of String, Number, and Boolean
|
||||
"no-octal": 0, // disallow use of octal literals
|
||||
"no-octal-escape": 0, // disallow use of octal escape sequences in string literals, such as var foo = "Copyright \251";
|
||||
"no-process-env": 0, // disallow use of process.env (off by default)
|
||||
"no-proto": 0, // disallow usage of __proto__ property
|
||||
"no-redeclare": 0, // disallow declaring the same variable more then once
|
||||
"no-return-assign": 0, // disallow use of assignment in return statement
|
||||
"no-script-url": 0, // disallow use of javascript: urls.
|
||||
"no-self-compare": 0, // disallow comparisons where both sides are exactly the same (off by default)
|
||||
"no-sequences": 0, // disallow use of comma operator
|
||||
"no-unused-expressions": 0, // disallow usage of expressions in statement position
|
||||
"no-void": 0, // disallow use of void operator (off by default)
|
||||
"no-warning-comments": 0, // disallow usage of configurable warning terms in comments, e.g. TODO or FIXME (off by default)
|
||||
"no-with": 0, // disallow use of the with statement
|
||||
"radix": 0, // require use of the second argument for parseInt() (off by default)
|
||||
"vars-on-top": 0, // requires to declare all vars on top of their containing scope (off by default)
|
||||
"wrap-iife": 0, // require immediate function invocation to be wrapped in parentheses (off by default)
|
||||
"yoda": 0, // require or disallow Yoda conditions
|
||||
|
||||
////////// Strict Mode //////////
|
||||
|
||||
"global-strict": 0, // (deprecated) require or disallow the "use strict" pragma in the global scope (off by default in the node environment)
|
||||
"no-extra-strict": 0, // (deprecated) disallow unnecessary use of "use strict"; when already in strict mode
|
||||
"strict": 0, // controls location of Use Strict Directives
|
||||
|
||||
////////// Variables //////////
|
||||
|
||||
"no-catch-shadow": 0, // disallow the catch clause parameter name being the same as a variable in the outer scope (off by default in the node environment)
|
||||
"no-delete-var": 0, // disallow deletion of variables
|
||||
"no-label-var": 0, // disallow labels that share a name with a variable
|
||||
"no-shadow": 0, // disallow declaration of variables already declared in the outer scope
|
||||
"no-shadow-restricted-names": 0, // disallow shadowing of names such as arguments
|
||||
"no-undef": 0, // disallow use of undeclared variables unless mentioned in a /*global */ block
|
||||
"no-undef-init": 0, // disallow use of undefined when initializing variables
|
||||
"no-undefined": 0, // disallow use of undefined variable (off by default)
|
||||
"no-unused-vars": 0, // disallow declaration of variables that are not used in the code
|
||||
"no-use-before-define": 0, // disallow use of variables before they are defined
|
||||
|
||||
////////// Node.js //////////
|
||||
|
||||
"handle-callback-err": 0, // enforces error handling in callbacks (off by default) (on by default in the node environment)
|
||||
"no-mixed-requires": 0, // disallow mixing regular variable and require declarations (off by default) (on by default in the node environment)
|
||||
"no-new-require": 0, // disallow use of new operator with the require function (off by default) (on by default in the node environment)
|
||||
"no-path-concat": 0, // disallow string concatenation with __dirname and __filename (off by default) (on by default in the node environment)
|
||||
"no-process-exit": 0, // disallow process.exit() (on by default in the node environment)
|
||||
"no-restricted-modules": 0, // restrict usage of specified node modules (off by default)
|
||||
"no-sync": 0, // disallow use of synchronous methods (off by default)
|
||||
|
||||
////////// Stylistic Issues //////////
|
||||
|
||||
"brace-style": 0, // enforce one true brace style (off by default)
|
||||
"camelcase": 0, // require camel case names
|
||||
"comma-spacing": 0, // enforce spacing before and after comma
|
||||
"comma-style": 0, // enforce one true comma style (off by default)
|
||||
"consistent-this": 0, // enforces consistent naming when capturing the current execution context (off by default)
|
||||
"eol-last": 0, // enforce newline at the end of file, with no multiple empty lines
|
||||
"func-names": 0, // require function expressions to have a name (off by default)
|
||||
"func-style": 0, // enforces use of function declarations or expressions (off by default)
|
||||
"key-spacing": 0, // enforces spacing between keys and values in object literal properties
|
||||
"max-nested-callbacks": 0, // specify the maximum depth callbacks can be nested (off by default)
|
||||
"new-cap": 0, // require a capital letter for constructors
|
||||
"new-parens": 0, // disallow the omission of parentheses when invoking a constructor with no arguments
|
||||
"no-array-constructor": 0, // disallow use of the Array constructor
|
||||
"no-inline-comments": 0, // disallow comments inline after code (off by default)
|
||||
"no-lonely-if": 0, // disallow if as the only statement in an else block (off by default)
|
||||
"no-mixed-spaces-and-tabs": 0, // disallow mixed spaces and tabs for indentation
|
||||
"no-multiple-empty-lines": 0, // disallow multiple empty lines (off by default)
|
||||
"no-nested-ternary": 0, // disallow nested ternary expressions (off by default)
|
||||
"no-new-object": 0, // disallow use of the Object constructor
|
||||
"no-space-before-semi": 0, // disallow space before semicolon
|
||||
"no-spaced-func": 0, // disallow space between function identifier and application
|
||||
"no-ternary": 0, // disallow the use of ternary operators (off by default)
|
||||
"no-trailing-spaces": 0, // disallow trailing whitespace at the end of lines
|
||||
"no-underscore-dangle": 0, // disallow dangling underscores in identifiers
|
||||
"no-wrap-func": 0, // disallow wrapping of non-IIFE statements in parens
|
||||
"one-var": 0, // allow just one var statement per function (off by default)
|
||||
"operator-assignment": 0, // require assignment operator shorthand where possible or prohibit it entirely (off by default)
|
||||
"padded-blocks": 0, // enforce padding within blocks (off by default)
|
||||
"quote-props": 0, // require quotes around object literal property names (off by default)
|
||||
"quotes": 0, // specify whether double or single quotes should be used
|
||||
"semi": 0, // require or disallow use of semicolons instead of ASI
|
||||
"sort-vars": 0, // sort variables within the same declaration block (off by default)
|
||||
"space-after-function-name": 0, // require a space after function names (off by default)
|
||||
"space-after-keywords": 0, // require a space after certain keywords (off by default)
|
||||
"space-before-blocks": 0, // require or disallow space before blocks (off by default)
|
||||
"space-in-brackets": 0, // require or disallow spaces inside brackets (off by default)
|
||||
"space-in-parens": 0, // require or disallow spaces inside parentheses (off by default)
|
||||
"space-infix-ops": 0, // require spaces around operators
|
||||
"space-return-throw-case": 0, // require a space after return, throw, and case
|
||||
"space-unary-ops": 0, // Require or disallow spaces before/after unary operators (words on by default, nonwords off by default)
|
||||
"spaced-line-comment": 0, // require or disallow a space immediately following the // in a line comment (off by default)
|
||||
"wrap-regex": 0, // require regex literals to be wrapped in parentheses (off by default)
|
||||
|
||||
////////// ECMAScript 6 //////////
|
||||
|
||||
"no-var": 0, // require let or const instead of var (off by default)
|
||||
"generator-star": 0, // enforce the position of the * in generator functions (off by default)
|
||||
|
||||
////////// Legacy //////////
|
||||
|
||||
"max-depth": 0, // specify the maximum depth that blocks can be nested (off by default)
|
||||
"max-len": 0, // specify the maximum length of a line in your program (off by default)
|
||||
"max-params": 0, // limits the number of parameters that can be used in the function declaration. (off by default)
|
||||
"max-statements": 0, // specify the maximum number of statement allowed in a function (off by default)
|
||||
"no-bitwise": 0, // disallow use of bitwise operators (off by default)
|
||||
"no-plusplus": 0, // disallow use of unary operators, ++ and -- (off by default)
|
||||
|
||||
//////// Extra //////////
|
||||
"array-bracket-spacing": ["error", "never"],
|
||||
"array-callback-return": "error",
|
||||
"arrow-parens": ["error", "always"],
|
||||
"arrow-spacing": ["error", { "before": true, "after": true }],
|
||||
"comma-dangle": ["error", "always-multiline"],
|
||||
"indent": ["error", 2, { "SwitchCase": 1 }],
|
||||
"no-case-declarations": "error",
|
||||
"no-confusing-arrow": "error",
|
||||
"no-duplicate-imports": "error",
|
||||
"no-param-reassign": "error",
|
||||
"no-useless-escape": "error",
|
||||
"object-curly-spacing": ["error", "always"],
|
||||
"object-shorthand": ["error", "properties"],
|
||||
"prefer-arrow-callback": "error",
|
||||
"prefer-const": "error",
|
||||
"prefer-template": "error",
|
||||
"react/jsx-closing-bracket-location": "error",
|
||||
"react/jsx-curly-spacing": [
|
||||
"error",
|
||||
"never",
|
||||
{ "allowMultiline": true }
|
||||
],
|
||||
"react/jsx-filename-extension": [
|
||||
"error",
|
||||
{ "extensions": [".react.js", ".js", ".jsx"] }
|
||||
],
|
||||
"react/jsx-no-duplicate-props": "error",
|
||||
"react/jsx-no-bind": [
|
||||
"error",
|
||||
{
|
||||
"ignoreRefs": true,
|
||||
"allowArrowFunctions": true,
|
||||
"allowBind": false
|
||||
}
|
||||
],
|
||||
"react/jsx-no-undef": "error",
|
||||
"react/jsx-pascal-case": "error",
|
||||
"react/jsx-tag-spacing": [
|
||||
"error",
|
||||
{
|
||||
"closingSlash": "never",
|
||||
"beforeSelfClosing": "always",
|
||||
"afterOpening": "never"
|
||||
}
|
||||
],
|
||||
"react/jsx-uses-react": "error",
|
||||
"react/jsx-uses-vars": "error",
|
||||
"react/no-danger": "error",
|
||||
"react/no-deprecated": "error",
|
||||
"react/no-did-mount-set-state": "error",
|
||||
"react/no-did-update-set-state": "error",
|
||||
"react/no-direct-mutation-state": "error",
|
||||
"react/no-is-mounted": "error",
|
||||
"react/no-multi-comp": "error",
|
||||
"react/prefer-es6-class": "error",
|
||||
"react/prop-types": "error",
|
||||
"react/require-render-return": "error",
|
||||
"react/self-closing-comp": "error",
|
||||
"react/sort-comp": "error",
|
||||
"import/no-mutable-exports": "error",
|
||||
"import/imports-first": "warn"
|
||||
}
|
||||
}
|
128
package.json
@ -13,14 +13,14 @@
|
||||
"yarn": ">= 1.0.0"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "cross-env NODE_ENV=development webpack-dev-server --https --config webpack.config.serve.js",
|
||||
"start": "cross-env NODE_ENV=development webpack-dev-server --config webpack.config.serve.js",
|
||||
"dash": "cross-env NODE_ENV=development webpack-dashboard -- webpack-dev-server --config webpack.config.serve.js",
|
||||
"prebuild": "rimraf ./app/client/dist",
|
||||
"build": "cross-env NODE_ENV=production webpack --progress --stats-all",
|
||||
"lint:check": "eslint ./app/client/src --config .eslintrc && sass-lint ./app/client/src --config .sasslintrc -v -q",
|
||||
"lint:fix": "eslint ./app/client/src --config .eslintrc --fix && sass-lint ./app/client/src --config .sasslintrc -v -q --fix",
|
||||
"lint:js": "eslint ./app/client/src --config .eslintrc",
|
||||
"lint:sass": "sass-lint ./app/client/src --config .sasslintrc -v -q",
|
||||
"lint:check": "eslint ./app/client/src --config eslint.config.json && sass-lint ./app/client/src --config sass-lint.yml -v -q",
|
||||
"lint:fix": "eslint ./app/client/src --config eslint.config.json --fix && sass-lint ./app/client/src --config sass-lint.yml -v -q --fix",
|
||||
"lint:js": "eslint ./app/client/src --config eslint.config.json",
|
||||
"lint:sass": "sass-lint ./app/client/src --config sass-lint.yml -v -q",
|
||||
"prunecaches": "rimraf ./node_modules/.cache/",
|
||||
"postinstall": "npm run prunecaches",
|
||||
"postuninstall": "npm run prunecaches",
|
||||
@ -31,106 +31,130 @@
|
||||
"ie>=11"
|
||||
],
|
||||
"dependencies": {
|
||||
"@a2nt/meta-lightbox": "^2.7.3",
|
||||
"@a2nt/ss-bootstrap-ui-webpack-boilerplate": "^2.8.4",
|
||||
"@a2nt/meta-lightbox-react": "^3.1.0",
|
||||
"@a2nt/ss-bootstrap-ui-webpack-boilerplate-react": "^3.0.7",
|
||||
"@angular/common": "^11.2.3",
|
||||
"@angular/core": "^11.2.3",
|
||||
"@apollo/client": "^3.3.11",
|
||||
"@jsanahuja/instagramfeed": "github:jsanahuja/instagramfeed",
|
||||
"@popperjs/core": "^2.8.4",
|
||||
"aos": "^2.3.4",
|
||||
"apollo3-cache-persist": "^0.9.1",
|
||||
"axios": "^0.21.1",
|
||||
"balanced-match": "^1.0.0",
|
||||
"bootbox": "^5.5.2",
|
||||
"bootstrap": "^4.6.0",
|
||||
"bootstrap-confirmation2": "^4.2.0",
|
||||
"bootstrap-datepicker": "^1.9.0",
|
||||
"bootstrap-offcanvas": "^1.0.0",
|
||||
"bootstrap-table": "^1.18.1",
|
||||
"bootstrap-timepicker": "^0.5.2",
|
||||
"bootstrap": "next",
|
||||
"brace-expansion": "^2.0.1",
|
||||
"font-awesome": "^4.7.0",
|
||||
"graphql": "^15.5.0",
|
||||
"hammerjs": "^2.0.8",
|
||||
"inputmask": "^5.0.5",
|
||||
"jquery": "^3.5.1",
|
||||
"jquery-hammerjs": "^2.0.0",
|
||||
"jquery-hoverintent": "*",
|
||||
"jquery-zoom": "^1.7.21",
|
||||
"jquery.appear": "^1.0.1",
|
||||
"jquery.instagramFeed": "github:jsanahuja/jquery.instagramFeed",
|
||||
"localforage": "^1.9.0",
|
||||
"localforage-cordovasqlitedriver": "^1.8.0",
|
||||
"lodash.debounce": "^4.0.8",
|
||||
"lodash.throttle": "^4.1.1",
|
||||
"mapbox-gl": "^2.0.1",
|
||||
"mapbox-gl": "^2.1.1",
|
||||
"material-design-color": "^2.3.2",
|
||||
"minimatch": "^3.0.4",
|
||||
"moment": "^2.29.1",
|
||||
"offcanvas-bootstrap": "^2.5.2",
|
||||
"popper.js": "*",
|
||||
"react": "^17.0.1",
|
||||
"react-dom": "^17.0.1",
|
||||
"react-tiny-oembed": "^1.0.1",
|
||||
"rxjs": "^6.6.6",
|
||||
"select2": "^4.0.13",
|
||||
"setimmediate": "^1.0.5",
|
||||
"smooth-scroll": "^16.1.3",
|
||||
"sticky-sidebar": "^3.3.1",
|
||||
"tablednd": "^1.0.5",
|
||||
"yarn": "^1.22.10"
|
||||
"setimmediate": "^1.0.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@a2nt/image-sprite-webpack-plugin": "^0.2.5",
|
||||
"@babel/core": "^7.12.10",
|
||||
"@babel/plugin-proposal-object-rest-spread": "^7.12.1",
|
||||
"@babel/plugin-transform-react-jsx": "^7.12.12",
|
||||
"@babel/preset-env": "^7.12.11",
|
||||
"@babel/core": "^7.13.1",
|
||||
"@babel/eslint-parser": "^7.13.4",
|
||||
"@babel/plugin-proposal-class-properties": "^7.13.0",
|
||||
"@babel/plugin-proposal-object-rest-spread": "^7.13.0",
|
||||
"@babel/plugin-syntax-jsx": "^7.12.13",
|
||||
"@babel/plugin-syntax-top-level-await": "^7.12.13",
|
||||
"@babel/plugin-transform-react-jsx": "^7.12.17",
|
||||
"@babel/plugin-transform-runtime": "^7.13.7",
|
||||
"@babel/preset-env": "^7.13.5",
|
||||
"@babel/preset-react": "^7.12.13",
|
||||
"@babel/runtime": "^7.13.7",
|
||||
"@googlemaps/markerclustererplus": "*",
|
||||
"@ungap/global-this": "^0.4.4",
|
||||
"@wry/context": "^0.5.4",
|
||||
"@wry/equality": "^0.3.3",
|
||||
"@wry/trie": "^0.2.2",
|
||||
"animate.css": "^4.1.1",
|
||||
"ansi-html": "^0.0.7",
|
||||
"ansi-regex": "^5.0.0",
|
||||
"autoprefixer": "^10.2.3",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"autoprefixer": "^10.2.4",
|
||||
"babel-loader": "^8.2.2",
|
||||
"classnames": "^2.2.6",
|
||||
"copy-webpack-plugin": "^7.0.0",
|
||||
"croppie": "^2.6.5",
|
||||
"cross-env": "^7.0.3",
|
||||
"css-loader": "^5.0.1",
|
||||
"eslint": "^7.18.0",
|
||||
"css-loader": "^5.1.0",
|
||||
"eslint": "^7.20.0",
|
||||
"eslint-plugin-import": "^2.22.1",
|
||||
"eslint-plugin-jquery": "^1.5.1",
|
||||
"eslint-plugin-react": "^7.22.0",
|
||||
"events": "^3.2.0",
|
||||
"exif-js": "^2.3.0",
|
||||
"exports-loader": "^1.1.1",
|
||||
"exports-loader": "^2.0.0",
|
||||
"fast-json-stable-stringify": "^2.1.0",
|
||||
"fast-levenshtein": "^3.0.0",
|
||||
"fastest-levenshtein": "^1.0.12",
|
||||
"favicons-webpack-plugin": "github:jantimon/favicons-webpack-plugin#benkostr-webpack-5",
|
||||
"favicons": "^6.2.1",
|
||||
"favicons-webpack-plugin": "^5.0.2",
|
||||
"file-loader": "^6.2.0",
|
||||
"font-awesome": "^4.7.0",
|
||||
"graphql-tag": "^2.11.0",
|
||||
"hoist-non-react-statics": "^3.3.2",
|
||||
"html-dom-parser": "^1.0.0",
|
||||
"html-entities": "^1.4.0",
|
||||
"html-webpack-plugin": "^4.5.1",
|
||||
"image-minimizer-webpack-plugin": "^2.2.0",
|
||||
"imagemin-jpegtran": "^7.0.0",
|
||||
"html-loader": "^1.3.2",
|
||||
"html-react-parser": "^1.2.4",
|
||||
"html-webpack-plugin": "^5.2.0",
|
||||
"img-optimize-loader": "^1.0.7",
|
||||
"loglevel": "^1.7.1",
|
||||
"mini-css-extract-plugin": "^1.3.4",
|
||||
"mini-css-extract-plugin": "^1.3.9",
|
||||
"msw": "^0.26.2",
|
||||
"node-fetch": "^2.6.1",
|
||||
"node-sass": "^5.0.0",
|
||||
"object-assign": "^4.1.1",
|
||||
"optimism": "^0.14.0",
|
||||
"optimize-css-assets-webpack-plugin": "^5.0.4",
|
||||
"postcss-loader": "^4.1.0",
|
||||
"postcss-loader": "^5.0.0",
|
||||
"prop-types": "^15.7.2",
|
||||
"react": "^17.0.1",
|
||||
"react-dom": "^17.0.1",
|
||||
"punycode": "^2.1.1",
|
||||
"querystring": "^0.2.1",
|
||||
"raw-loader": "^4.0.2",
|
||||
"react-hot-loader": "^4.13.0",
|
||||
"react-is": "^17.0.1",
|
||||
"react-lifecycles-compat": "^3.0.4",
|
||||
"regenerator-runtime": "^0.13.7",
|
||||
"resolve-url-loader": "^3.1.2",
|
||||
"rimraf": "^3.0.2",
|
||||
"routie": "0.0.1",
|
||||
"sass-lint": "^1.13.1",
|
||||
"sass-lint-fix": "^1.12.1",
|
||||
"sass-loader": "^10.1.1",
|
||||
"sass-loader": "^11.0.1",
|
||||
"scheduler": "^0.20.1",
|
||||
"script-ext-html-webpack-plugin": "^2.1.5",
|
||||
"shallowequal": "^1.1.0",
|
||||
"sockjs-client": "^1.5.0",
|
||||
"strip-ansi": "^6.0.0",
|
||||
"style-loader": "^2.0.0",
|
||||
"svg-url-loader": "^7.1.1",
|
||||
"symbol-observable": "^3.0.0",
|
||||
"terser-webpack-plugin": "^5.1.1",
|
||||
"ts-invariant": "^0.6.1",
|
||||
"tslib": "^2.1.0",
|
||||
"url": "^0.11.0",
|
||||
"url-loader": "^4.1.1",
|
||||
"webpack": "^5.16.0",
|
||||
"webpack-bundle-analyzer": "^4.3.0",
|
||||
"webpack-cli": "^4.4.0",
|
||||
"webpack": "^5.24.2",
|
||||
"webpack-bundle-analyzer": "^4.4.0",
|
||||
"webpack-cli": "^4.5.0",
|
||||
"webpack-dev-server": "^4.0.0-beta.0",
|
||||
"webpack-manifest-plugin": "^3.0.0",
|
||||
"webpack-merge": "^5.7.3"
|
||||
"webpack-merge": "^5.7.3",
|
||||
"yarn": "^1.22.10",
|
||||
"zen-observable": "^0.8.15"
|
||||
},
|
||||
"stylelint": {
|
||||
"rules": {
|
||||
|
173
sass-lint.yml
Normal file
@ -0,0 +1,173 @@
|
||||
# sass-lint config to match the AirBNB style guide
|
||||
files:
|
||||
include: 'src/**/*.scss'
|
||||
ignore:
|
||||
- 'src/thirdparty/*'
|
||||
options:
|
||||
formatter: stylish
|
||||
merge-default-rules: false
|
||||
rules:
|
||||
# Warnings
|
||||
# Things that require actual refactoring are marked as warnings
|
||||
class-name-format:
|
||||
- 1
|
||||
- convention: hyphenatedbem
|
||||
placeholder-name-format:
|
||||
- 1
|
||||
- convention: hyphenatedlowercase
|
||||
nesting-depth:
|
||||
- 1
|
||||
- max-depth: 3
|
||||
no-ids: 1
|
||||
no-important: 1
|
||||
no-misspelled-properties:
|
||||
- 1
|
||||
- extra-properties:
|
||||
- '-moz-border-radius-topleft'
|
||||
- '-moz-border-radius-topright'
|
||||
- '-moz-border-radius-bottomleft'
|
||||
- '-moz-border-radius-bottomright'
|
||||
variable-name-format:
|
||||
- 1
|
||||
- allow-leading-underscore: true
|
||||
convention: hyphenatedlowercase
|
||||
no-extends: 1
|
||||
|
||||
# Warnings: these things are preferential rather than mandatory
|
||||
no-css-comments: 1
|
||||
|
||||
# Errors
|
||||
# Things that can be easily fixed are marked as errors
|
||||
indentation:
|
||||
- 2
|
||||
- size: 2
|
||||
final-newline:
|
||||
- 2
|
||||
- include: true
|
||||
no-trailing-whitespace: 2
|
||||
border-zero:
|
||||
- 2
|
||||
- convention: '0'
|
||||
brace-style:
|
||||
- 2
|
||||
- allow-single-line: true
|
||||
clean-import-paths:
|
||||
- 2
|
||||
- filename-extension: false
|
||||
leading-underscore: false
|
||||
no-debug: 2
|
||||
no-empty-rulesets: 2
|
||||
no-invalid-hex: 2
|
||||
no-mergeable-selectors: 2
|
||||
# no-qualifying-elements:
|
||||
# - 1
|
||||
# - allow-element-with-attribute: false
|
||||
# allow-element-with-class: false
|
||||
# allow-element-with-id: false
|
||||
no-trailing-zero: 2
|
||||
no-url-protocols: 2
|
||||
quotes:
|
||||
- 2
|
||||
- style: double
|
||||
space-after-bang:
|
||||
- 2
|
||||
- include: false
|
||||
space-after-colon:
|
||||
- 2
|
||||
- include: true
|
||||
space-after-comma:
|
||||
- 2
|
||||
- include: true
|
||||
space-before-bang:
|
||||
- 2
|
||||
- include: true
|
||||
space-before-brace:
|
||||
- 2
|
||||
- include: true
|
||||
space-before-colon: 2
|
||||
space-between-parens:
|
||||
- 2
|
||||
- include: false
|
||||
trailing-semicolon: 2
|
||||
url-quotes: 2
|
||||
zero-unit: 2
|
||||
single-line-per-selector: 2
|
||||
one-declaration-per-line: 2
|
||||
empty-line-between-blocks:
|
||||
- 2
|
||||
- ignore-single-line-rulesets: true
|
||||
# Missing rules
|
||||
# There are no sass-lint rules for the following AirBNB style items, but thess
|
||||
# - Put comments on their own line
|
||||
# - Put property delcarations before mixins
|
||||
# Disabled rules
|
||||
# These are other rules that we may wish to consider using in the future
|
||||
# They are not part of the AirBNB CSS standard but they would introduce some strictness
|
||||
# bem-depth: 0
|
||||
# variable-for-property: 0
|
||||
# no-transition-all: 0
|
||||
# hex-length:
|
||||
# - 1
|
||||
# - style: short
|
||||
# hex-notation:
|
||||
# - 1
|
||||
# - style: lowercase
|
||||
# property-units:
|
||||
# - 1
|
||||
# - global:
|
||||
# - ch
|
||||
# - em
|
||||
# - ex
|
||||
# - rem
|
||||
# - cm
|
||||
# - in
|
||||
# - mm
|
||||
# - pc
|
||||
# - pt
|
||||
# - px
|
||||
# - q
|
||||
# - vh
|
||||
# - vw
|
||||
# - vmin
|
||||
# - vmax
|
||||
# - deg
|
||||
# - grad
|
||||
# - rad
|
||||
# - turn
|
||||
# - ms
|
||||
# - s
|
||||
# - Hz
|
||||
# - kHz
|
||||
# - dpi
|
||||
# - dpcm
|
||||
# - dppx
|
||||
# - '%'
|
||||
# per-property: {}
|
||||
# force-attribute-nesting: 1
|
||||
# force-element-nesting: 1
|
||||
# force-pseudo-nesting: 1
|
||||
# function-name-format:
|
||||
# - 1
|
||||
# - allow-leading-underscore: true
|
||||
# convention: hyphenatedlowercase
|
||||
# no-color-literals: 1
|
||||
# no-duplicate-properties: 1
|
||||
# mixin-name-format:
|
||||
# - 1
|
||||
# - allow-leading-underscore: true
|
||||
# convention: hyphenatedlowercase
|
||||
# shorthand-values:
|
||||
# - 1
|
||||
# - allowed-shorthands:
|
||||
# - 1
|
||||
# - 2
|
||||
# - 3
|
||||
# leading-zero:
|
||||
# - 1
|
||||
# - include: false
|
||||
# no-vendor-prefixes:
|
||||
# - 1
|
||||
# - additional-identifiers: []
|
||||
# excluded-identifiers: []
|
||||
# placeholder-in-extend: 1
|
||||
# no-color-keywords: 2
|
@ -9,110 +9,115 @@ const conf = commonVariables.configuration;
|
||||
const path = require('path');
|
||||
const filesystem = require('fs');
|
||||
|
||||
const UIInfo = require('./node_modules/@a2nt/ss-bootstrap-ui-webpack-boilerplate/package.json');
|
||||
const UINAME = JSON.stringify(UIInfo.name);
|
||||
const UIVERSION = JSON.stringify(UIInfo.version);
|
||||
console.info(`%cUI Kit ${UINAME} ${UIVERSION}`, 'color:yellow;font-size:14px');
|
||||
|
||||
const includes = {};
|
||||
const modules = [
|
||||
path.resolve(__dirname, conf.APPDIR, conf.SRC),
|
||||
path.resolve(__dirname, conf.APPDIR, conf.SRC, 'js'),
|
||||
path.resolve(__dirname, conf.APPDIR, conf.SRC, 'scss'),
|
||||
path.resolve(__dirname, conf.APPDIR, conf.SRC, 'img'),
|
||||
path.resolve(__dirname, conf.APPDIR, conf.SRC, 'thirdparty'),
|
||||
path.resolve(__dirname, 'node_modules'),
|
||||
path.resolve(__dirname),
|
||||
path.resolve(__dirname, 'public'),
|
||||
path.resolve(__dirname, conf.APPDIR, conf.SRC),
|
||||
path.resolve(__dirname, conf.APPDIR, conf.SRC, 'js'),
|
||||
path.resolve(__dirname, conf.APPDIR, conf.SRC, 'scss'),
|
||||
path.resolve(__dirname, conf.APPDIR, conf.SRC, 'img'),
|
||||
path.resolve(__dirname, conf.APPDIR, conf.SRC, 'thirdparty'),
|
||||
path.resolve(__dirname, 'node_modules'),
|
||||
path.resolve(__dirname),
|
||||
path.resolve(__dirname, 'public'),
|
||||
];
|
||||
|
||||
const _addAppFiles = (theme) => {
|
||||
const dirPath = path.resolve(__dirname, theme);
|
||||
let themeName = path.basename(theme);
|
||||
if (themeName == '.') {
|
||||
themeName = 'app';
|
||||
}
|
||||
const dirPath = './' + theme;
|
||||
let themeName = path.basename(theme);
|
||||
if (themeName == '.') {
|
||||
themeName = 'app';
|
||||
}
|
||||
|
||||
if (filesystem.existsSync(path.join(dirPath, conf.SRC, 'js', 'app.js'))) {
|
||||
includes[`${themeName}`] = path.join(dirPath, conf.SRC, 'js', 'app.js');
|
||||
} else if (
|
||||
filesystem.existsSync(path.join(dirPath, conf.SRC, 'scss', 'app.scss'))
|
||||
) {
|
||||
includes[`${themeName}`] = path.join(
|
||||
dirPath,
|
||||
conf.SRC,
|
||||
'scss',
|
||||
'app.scss',
|
||||
);
|
||||
}
|
||||
if (filesystem.existsSync(path.join(dirPath, conf.SRC, 'js', 'app.js'))) {
|
||||
includes[`${themeName}`] = path.join(dirPath, conf.SRC, 'js', 'app.js');
|
||||
} else if (
|
||||
filesystem.existsSync(path.join(dirPath, conf.SRC, 'scss', 'app.scss'))
|
||||
) {
|
||||
includes[`${themeName}`] = path.join(
|
||||
dirPath,
|
||||
conf.SRC,
|
||||
'scss',
|
||||
'app.scss',
|
||||
);
|
||||
}
|
||||
|
||||
modules.push(path.join(dirPath, conf.SRC, 'js'));
|
||||
modules.push(path.join(dirPath, conf.SRC, 'scss'));
|
||||
modules.push(path.join(dirPath, conf.SRC, 'img'));
|
||||
modules.push(path.join(dirPath, conf.SRC, 'thirdparty'));
|
||||
modules.push(path.join(dirPath, conf.SRC, 'js'));
|
||||
modules.push(path.join(dirPath, conf.SRC, 'scss'));
|
||||
modules.push(path.join(dirPath, conf.SRC, 'img'));
|
||||
modules.push(path.join(dirPath, conf.SRC, 'thirdparty'));
|
||||
|
||||
const _getAllFilesFromFolder = function (dir, includeSubFolders = true) {
|
||||
const dirPath = path.resolve(__dirname, dir);
|
||||
let results = [];
|
||||
const _getAllFilesFromFolder = function(dir, includeSubFolders = true) {
|
||||
const dirPath = path.resolve(__dirname, dir);
|
||||
let results = [];
|
||||
|
||||
filesystem.readdirSync(dirPath).forEach((file) => {
|
||||
if (file.charAt(0) === '_') {
|
||||
return;
|
||||
}
|
||||
filesystem.readdirSync(dirPath).forEach((file) => {
|
||||
if (file.charAt(0) === '_') {
|
||||
return;
|
||||
}
|
||||
|
||||
const filePath = path.join(dirPath, file);
|
||||
const stat = filesystem.statSync(filePath);
|
||||
const filePath = path.join(dirPath, file);
|
||||
const stat = filesystem.statSync(filePath);
|
||||
|
||||
if (stat && stat.isDirectory() && includeSubFolders) {
|
||||
results = results.concat(
|
||||
_getAllFilesFromFolder(filePath, includeSubFolders),
|
||||
);
|
||||
} else {
|
||||
results.push(filePath);
|
||||
}
|
||||
});
|
||||
if (stat && stat.isDirectory() && includeSubFolders) {
|
||||
results = results.concat(
|
||||
_getAllFilesFromFolder(filePath, includeSubFolders),
|
||||
);
|
||||
} else {
|
||||
results.push(filePath);
|
||||
}
|
||||
});
|
||||
|
||||
return results;
|
||||
};
|
||||
return results;
|
||||
};
|
||||
|
||||
// add page specific scripts
|
||||
const typesJSPath = path.join(theme, conf.TYPESJS);
|
||||
if (filesystem.existsSync(typesJSPath)) {
|
||||
const pageScripts = _getAllFilesFromFolder(typesJSPath, true);
|
||||
pageScripts.forEach((file) => {
|
||||
includes[`${themeName}_${path.basename(file, '.js')}`] = file;
|
||||
});
|
||||
}
|
||||
// add page specific scripts
|
||||
const typesJSPath = path.join(theme, conf.TYPESJS);
|
||||
if (filesystem.existsSync(typesJSPath)) {
|
||||
const pageScripts = _getAllFilesFromFolder(typesJSPath, true);
|
||||
pageScripts.forEach((file) => {
|
||||
includes[`${themeName}_${path.basename(file, '.js')}`] = file;
|
||||
});
|
||||
}
|
||||
|
||||
// add page specific scss
|
||||
const typesSCSSPath = path.join(theme, conf.TYPESSCSS);
|
||||
if (filesystem.existsSync(typesSCSSPath)) {
|
||||
const scssIncludes = _getAllFilesFromFolder(typesSCSSPath, true);
|
||||
scssIncludes.forEach((file) => {
|
||||
includes[`${themeName}_${path.basename(file, '.scss')}`] = file;
|
||||
});
|
||||
}
|
||||
// add page specific scss
|
||||
const typesSCSSPath = path.join(theme, conf.TYPESSCSS);
|
||||
if (filesystem.existsSync(typesSCSSPath)) {
|
||||
const scssIncludes = _getAllFilesFromFolder(typesSCSSPath, true);
|
||||
scssIncludes.forEach((file) => {
|
||||
includes[`${themeName}_${path.basename(file, '.scss')}`] = file;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
_addAppFiles(conf.APPDIR);
|
||||
|
||||
// add themes
|
||||
commonVariables.themes.forEach((theme) => {
|
||||
_addAppFiles(theme);
|
||||
_addAppFiles(theme);
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
entry: includes,
|
||||
externals: {
|
||||
jquery: 'jQuery',
|
||||
},
|
||||
resolve: {
|
||||
modules: modules,
|
||||
alias: {
|
||||
'window.jQuery': require.resolve('jquery'),
|
||||
$: require.resolve('jquery'),
|
||||
jquery: require.resolve('jquery'),
|
||||
jQuery: require.resolve('jquery'),
|
||||
},
|
||||
},
|
||||
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',
|
||||
},
|
||||
resolve: {
|
||||
modules: modules,
|
||||
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'),
|
||||
},
|
||||
fallback: { path: false },
|
||||
},
|
||||
experiments: {
|
||||
topLevelAwait: true,
|
||||
},
|
||||
};
|
||||
|
@ -1,8 +1,6 @@
|
||||
/*
|
||||
* Production assets generation
|
||||
*/
|
||||
const COMPRESS = true;
|
||||
|
||||
const webpack = require('webpack');
|
||||
const commonVariables = require('./webpack.configuration');
|
||||
const conf = commonVariables.configuration;
|
||||
@ -18,18 +16,29 @@ const TerserPlugin = require('terser-webpack-plugin');
|
||||
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
|
||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
||||
|
||||
const ImageminPlugin = require('image-minimizer-webpack-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/package.json');
|
||||
const UIMetaInfo = require('./node_modules/@a2nt/meta-lightbox/package.json');
|
||||
const UIInfo = require('./package.json');
|
||||
const UIVERSION = JSON.stringify(UIInfo.version);
|
||||
const UIMetaInfo = require('./node_modules/@a2nt/meta-lightbox-react/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']);
|
||||
|
||||
let plugins = [
|
||||
new webpack.ProvidePlugin({
|
||||
$: 'jquery',
|
||||
react: 'React',
|
||||
'react-dom': 'ReactDOM',
|
||||
/*$: 'jquery',
|
||||
jQuery: 'jquery',
|
||||
Popper: ['popper.js', 'default'],
|
||||
Util: 'exports-loader?Util!bootstrap/js/dist/util',
|
||||
@ -42,83 +51,92 @@ let plugins = [
|
||||
Tooltip: 'exports-loader?Tooltip!bootstrap/js/dist/tooltip',
|
||||
Popover: 'exports-loader?Popover!bootstrap/js/dist/popover',
|
||||
Scrollspy: 'exports-loader?Scrollspy!bootstrap/js/dist/scrollspy',
|
||||
Tab: 'exports-loader?Tab!bootstrap/js/dist/tab',
|
||||
Tab: 'exports-loader?Tab!bootstrap/js/dist/tab',*/
|
||||
}),
|
||||
new webpack.DefinePlugin({
|
||||
'process.env': {
|
||||
NODE_ENV: JSON.stringify('production'),
|
||||
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(`http://${IP}:${PORT}`),
|
||||
}),
|
||||
new webpack.LoaderOptionsPlugin({
|
||||
minimize: true,
|
||||
debug: false,
|
||||
minimize: COMPRESS,
|
||||
debug: !COMPRESS,
|
||||
}),
|
||||
new MiniCssExtractPlugin({
|
||||
filename: 'css/[name].css',
|
||||
//allChunks: true,
|
||||
}),
|
||||
new OptimizeCssAssetsPlugin({
|
||||
//assetNameRegExp: /\.optimize\.css$/g,
|
||||
cssProcessor: require('cssnano'),
|
||||
cssProcessorPluginOptions: {
|
||||
preset: ['default'],
|
||||
},
|
||||
cssProcessorOptions: {
|
||||
zindex: true,
|
||||
cssDeclarationSorter: true,
|
||||
reduceIdents: false,
|
||||
mergeIdents: true,
|
||||
mergeRules: true,
|
||||
mergeLonghand: true,
|
||||
discardUnused: true,
|
||||
discardOverridden: true,
|
||||
discardDuplicates: true,
|
||||
discardComments: {
|
||||
removeAll: true,
|
||||
},
|
||||
},
|
||||
canPrint: true,
|
||||
}),
|
||||
require('autoprefixer'),
|
||||
new ImageminPlugin({
|
||||
minimizerOptions: {
|
||||
// Lossless optimization with custom option
|
||||
// Feel free to experiment with options for better result for you
|
||||
plugins: [
|
||||
['gifsicle', { interlaced: true }],
|
||||
['jpegtran', { progressive: true }],
|
||||
['optipng', { optimizationLevel: 5 }],
|
||||
[
|
||||
'svgo',
|
||||
{
|
||||
plugins: [
|
||||
{
|
||||
removeViewBox: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
],
|
||||
},
|
||||
}),
|
||||
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,
|
||||
}),
|
||||
];
|
||||
|
||||
if (COMPRESS) {
|
||||
plugins.push(
|
||||
new OptimizeCssAssetsPlugin({
|
||||
//assetNameRegExp: /\.optimize\.css$/g,
|
||||
cssProcessor: require('cssnano'),
|
||||
cssProcessorPluginOptions: {
|
||||
preset: ['default'],
|
||||
},
|
||||
cssProcessorOptions: {
|
||||
zindex: true,
|
||||
cssDeclarationSorter: true,
|
||||
reduceIdents: false,
|
||||
mergeIdents: true,
|
||||
mergeRules: true,
|
||||
mergeLonghand: true,
|
||||
discardUnused: true,
|
||||
discardOverridden: true,
|
||||
discardDuplicates: true,
|
||||
discardComments: {
|
||||
removeAll: true,
|
||||
},
|
||||
},
|
||||
canPrint: true,
|
||||
}),
|
||||
);
|
||||
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 (filesystem.existsSync(indexPath)) {
|
||||
plugins.push(
|
||||
new HtmlWebpackPlugin({
|
||||
publicPath: '',
|
||||
template: path.join(conf.APPDIR, conf.SRC, 'index.html'),
|
||||
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>',
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
const faviconPath = path.join(__dirname, conf.APPDIR, conf.SRC, 'favicon.png');
|
||||
if (filesystem.existsSync(faviconPath)) {
|
||||
plugins.push(
|
||||
@ -191,11 +209,12 @@ const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
|
||||
plugins.push(
|
||||
new BundleAnalyzerPlugin({
|
||||
analyzerMode: 'static',
|
||||
openAnalyzer: false,
|
||||
}),
|
||||
);
|
||||
|
||||
const cfg = merge(common, {
|
||||
mode: 'production',
|
||||
mode: NODE_ENV,
|
||||
cache: {
|
||||
type: 'filesystem',
|
||||
},
|
||||
@ -267,7 +286,15 @@ const cfg = merge(common, {
|
||||
use: {
|
||||
loader: 'babel-loader',
|
||||
options: {
|
||||
presets: ['@babel/preset-env'], //Preset used for env setup
|
||||
presets: [
|
||||
'@babel/preset-env',
|
||||
'@babel/react',
|
||||
{
|
||||
plugins: [
|
||||
'@babel/plugin-proposal-class-properties',
|
||||
],
|
||||
},
|
||||
], //Preset used for env setup
|
||||
plugins: [['@babel/transform-react-jsx']],
|
||||
cacheDirectory: true,
|
||||
cacheCompression: true,
|
||||
@ -337,6 +364,25 @@ const cfg = merge(common, {
|
||||
mode: 'low', // 'lossless', 'high', 'low'
|
||||
disableOnDevelopment: true,
|
||||
webp: conf['webp'],
|
||||
// loseless compression for png
|
||||
optipng: {
|
||||
optimizationLevel: 4,
|
||||
},
|
||||
// lossy compression for png. This will generate smaller file than optipng.
|
||||
pngquant: {
|
||||
quality: [0.2, 0.8],
|
||||
},
|
||||
// Compression for svg.
|
||||
svgo: true,
|
||||
// Compression for gif.
|
||||
gifsicle: {
|
||||
optimizationLevel: 3,
|
||||
},
|
||||
// Compression for jpg.
|
||||
mozjpeg: {
|
||||
progressive: true,
|
||||
quality: 60,
|
||||
},
|
||||
},
|
||||
inline: {
|
||||
limit: 1,
|
||||
|
@ -2,13 +2,15 @@
|
||||
* Development assets generation
|
||||
*/
|
||||
|
||||
const COMPRESS = false;
|
||||
|
||||
const path = require('path');
|
||||
const filesystem = require('fs');
|
||||
|
||||
//const autoprefixer = require('autoprefixer');
|
||||
const webpack = require('webpack');
|
||||
const { merge } = require('webpack-merge');
|
||||
|
||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
||||
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
||||
|
||||
const common = require('./webpack.config.common.js');
|
||||
const commonVariables = require('./webpack.configuration');
|
||||
@ -17,138 +19,175 @@ const conf = commonVariables.configuration;
|
||||
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/package.json');
|
||||
const UIMetaInfo = require('./node_modules/@a2nt/meta-lightbox/package.json');
|
||||
const UIInfo = require('./package.json');
|
||||
const UIVERSION = JSON.stringify(UIInfo.version);
|
||||
const UIMetaInfo = require('./node_modules/@a2nt/meta-lightbox-react/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.HotModuleReplacementPlugin(),
|
||||
new MiniCssExtractPlugin(),
|
||||
];
|
||||
|
||||
const indexPath = path.join(__dirname, conf.APPDIR, conf.SRC, 'index.html');
|
||||
if (filesystem.existsSync(indexPath)) {
|
||||
plugins.push(
|
||||
new HtmlWebpackPlugin({
|
||||
publicPath: '',
|
||||
template: path.join(conf.APPDIR, conf.SRC, 'index.html'),
|
||||
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>',
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
const config = merge(common, {
|
||||
mode: 'development',
|
||||
mode: 'development',
|
||||
|
||||
entry: {
|
||||
hot: [
|
||||
entry: {
|
||||
/*hot: [
|
||||
'react-hot-loader/patch',
|
||||
'webpack-dev-server/client?https://' + conf.HOSTNAME + ':' + conf.PORT,
|
||||
'webpack-dev-server/?https://' + conf.HOSTNAME + ':' + conf.PORT,
|
||||
'webpack/hot/only-dev-server',
|
||||
],
|
||||
},
|
||||
|
||||
output: {
|
||||
path: path.join(__dirname),
|
||||
filename: '[name].js',
|
||||
// necessary for HMR to know where to load the hot update chunks
|
||||
publicPath: 'https://' + conf.HOSTNAME + ':' + conf.PORT + '/',
|
||||
},
|
||||
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.jsx?$/,
|
||||
//exclude: /node_modules/,
|
||||
use: {
|
||||
loader: 'babel-loader',
|
||||
options: {
|
||||
presets: ['@babel/preset-env'], //Preset used for env setup
|
||||
plugins: [['@babel/transform-react-jsx']],
|
||||
cacheDirectory: true,
|
||||
cacheCompression: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /\.s?css$/,
|
||||
use: [
|
||||
{
|
||||
loader: MiniCssExtractPlugin.loader,
|
||||
},
|
||||
{
|
||||
loader: 'css-loader',
|
||||
options: {
|
||||
sourceMap: !COMPRESS,
|
||||
},
|
||||
},
|
||||
{
|
||||
loader: 'resolve-url-loader',
|
||||
},
|
||||
{
|
||||
loader: 'sass-loader',
|
||||
options: {
|
||||
sourceMap: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
test: /fontawesome([^.]+).(ttf|otf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'url-loader',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
test: /\.(gif|png|jpg|jpeg|ttf|otf|eot|svg|webp|woff(2)?)$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'file-loader',
|
||||
options: {
|
||||
name(file) {
|
||||
return 'public/[path][name].[ext]';
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
plugins: [
|
||||
new webpack.ProvidePlugin({
|
||||
$: 'jquery',
|
||||
jQuery: 'jquery',
|
||||
'window.jQuery': 'jquery',
|
||||
Popper: ['popper.js', 'default'],
|
||||
Util: 'exports-loader?Util!bootstrap/js/dist/util',
|
||||
Alert: 'exports-loader?Alert!bootstrap/js/dist/alert',
|
||||
Button: 'exports-loader?Button!bootstrap/js/dist/button',
|
||||
Carousel: 'exports-loader?Carousel!bootstrap/js/dist/carousel',
|
||||
Collapse: 'exports-loader?Collapse!bootstrap/js/dist/collapse',
|
||||
Dropdown: 'exports-loader?Dropdown!bootstrap/js/dist/dropdown',
|
||||
Modal: 'exports-loader?Modal!bootstrap/js/dist/modal',
|
||||
Tooltip: 'exports-loader?Tooltip!bootstrap/js/dist/tooltip',
|
||||
Popover: 'exports-loader?Popover!bootstrap/js/dist/popover',
|
||||
Scrollspy: 'exports-loader?Scrollspy!bootstrap/js/dist/scrollspy',
|
||||
Tab: 'exports-loader?Tab!bootstrap/js/dist/tab',
|
||||
}),
|
||||
new webpack.HotModuleReplacementPlugin(),
|
||||
new webpack.DefinePlugin({
|
||||
UINAME: JSON.stringify(UIInfo.name),
|
||||
UIVERSION: JSON.stringify(UIInfo.version),
|
||||
UIAUTHOR: JSON.stringify(UIInfo.author),
|
||||
UIMetaNAME: JSON.stringify(UIMetaInfo.name),
|
||||
UIMetaVersion: JSON.stringify(UIMetaInfo.version),
|
||||
}),
|
||||
],
|
||||
|
||||
devServer: {
|
||||
host: IP,
|
||||
port: PORT,
|
||||
historyApiFallback: true,
|
||||
//hot: true,
|
||||
/*clientLogLevel: 'info',
|
||||
disableHostCheck: true,
|
||||
contentBase: [
|
||||
path.resolve(__dirname, 'public'),
|
||||
path.resolve(__dirname, 'public', 'resources'),
|
||||
path.resolve(__dirname, 'public', 'resources', conf.APPDIR, conf.DIST),
|
||||
'node_modules',
|
||||
],*/
|
||||
//watchContentBase: true,
|
||||
overlay: {
|
||||
warnings: true,
|
||||
errors: true,
|
||||
},
|
||||
headers: {
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
output: {
|
||||
path: path.join(__dirname),
|
||||
filename: '[name].js',
|
||||
// necessary for HMR to know where to load the hot update chunks
|
||||
publicPath: `http${conf['HTTPS'] ? 's' : ''}://${conf['HOSTNAME']}:${
|
||||
conf.PORT
|
||||
}/`,
|
||||
},
|
||||
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.jsx?$/,
|
||||
//exclude: /node_modules/,
|
||||
use: {
|
||||
loader: 'babel-loader',
|
||||
options: {
|
||||
presets: [
|
||||
'@babel/preset-env',
|
||||
'@babel/react',
|
||||
{
|
||||
plugins: [
|
||||
'@babel/plugin-proposal-class-properties',
|
||||
'@babel/plugin-syntax-top-level-await',
|
||||
],
|
||||
},
|
||||
], //Preset used for env setup
|
||||
plugins: [
|
||||
['@babel/transform-react-jsx'],
|
||||
['@babel/plugin-syntax-top-level-await'],
|
||||
],
|
||||
cacheDirectory: true,
|
||||
cacheCompression: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /\.s?css$/,
|
||||
use: [
|
||||
{
|
||||
loader: MiniCssExtractPlugin.loader,
|
||||
},
|
||||
{
|
||||
loader: 'css-loader',
|
||||
options: {
|
||||
sourceMap: !COMPRESS,
|
||||
},
|
||||
},
|
||||
{
|
||||
loader: 'resolve-url-loader',
|
||||
},
|
||||
{
|
||||
loader: 'sass-loader',
|
||||
options: {
|
||||
sourceMap: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
test: /fontawesome([^.]+).(ttf|otf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'url-loader',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
test: /\.(gif|png|jpg|jpeg|ttf|otf|eot|svg|webp|woff(2)?)$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'file-loader',
|
||||
options: {
|
||||
name(file) {
|
||||
return 'public/[path][name].[ext]';
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
plugins: plugins,
|
||||
|
||||
devServer: {
|
||||
host: IP,
|
||||
port: PORT,
|
||||
historyApiFallback: false,
|
||||
static: path.resolve(__dirname, conf['APPDIR'], conf['SRC']),
|
||||
https: conf['HTTPS'],
|
||||
hot: false,
|
||||
injectClient: conf['injectClient'],
|
||||
|
||||
overlay: {
|
||||
warnings: true,
|
||||
errors: true,
|
||||
},
|
||||
headers: {
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'Referrer-Policy': 'unsafe-url',
|
||||
'service-worker-allowed': '/',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
module.exports = config;
|
||||
|
@ -2,12 +2,16 @@
|
||||
* Load webpack configuration from app/_config/webpack.yml
|
||||
*/
|
||||
|
||||
const YML_PATH = '/app/_config/webpack.yml';
|
||||
|
||||
const path = require('path');
|
||||
const filesystem = require('fs');
|
||||
const fs = require('fs');
|
||||
const yaml = require('js-yaml');
|
||||
|
||||
const conf = yaml.safeLoad(fs.readFileSync(path.join(__dirname, 'app/_config/webpack.yml'), 'utf8'));
|
||||
const conf = yaml.safeLoad(
|
||||
fs.readFileSync(path.join(__dirname, YML_PATH), 'utf8'),
|
||||
);
|
||||
|
||||
let themes = [];
|
||||
// add themes
|
||||
|
@ -1,181 +0,0 @@
|
||||
{
|
||||
"name": "ss-webpack-boilerplate",
|
||||
"version": "2.0.2",
|
||||
"description": "Lets you create SilverStripe faster",
|
||||
"author": "Tony Air <tony@twma.pro>",
|
||||
"license": "MIT",
|
||||
"private": false,
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/a2nt/silverstripe-webpack"
|
||||
},
|
||||
"engines": {
|
||||
"yarn": ">= 1.0.0"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "cross-env NODE_ENV=development webpack-dev-server --https -d --config webpack.config.dev.js",
|
||||
"dash": "cross-env NODE_ENV=development webpack-dashboard -- webpack-dev-server --config webpack.config.dev.js",
|
||||
"prebuild": "rimraf app/client/dist",
|
||||
"build": "cross-env NODE_ENV=production webpack -p --config webpack.config.prod.js --progress",
|
||||
"lint:check": "eslint ./app/client/src --config .eslintrc && sass-lint ./app/client/src --config .sasslintrc -v -q",
|
||||
"lint:fix": "eslint ./app/client/src --config .eslintrc --fix && sass-lint ./app/client/src --config .sasslintrc -v -q --fix",
|
||||
"lint:js": "eslint ./app/client/src --config .eslintrc",
|
||||
"lint:sass": "sass-lint ./app/client/src --config .sasslintrc -v -q",
|
||||
"prunecaches": "rimraf ./node_modules/.cache/",
|
||||
"postinstall": "npm run prunecaches",
|
||||
"postuninstall": "npm run prunecaches",
|
||||
"preinstall": "npx only-allow pnpm"
|
||||
},
|
||||
"browserslist": [
|
||||
"defaults",
|
||||
"ie>=11"
|
||||
],
|
||||
"dependencies": {
|
||||
"@a2nt/meta-lightbox": "^2.7.1",
|
||||
"@a2nt/ss-bootstrap-ui-webpack-boilerplate": "^2.7.0",
|
||||
"aos": "^2.3.4",
|
||||
"bootbox": "^5.5.2",
|
||||
"bootstrap": "^4.5.3",
|
||||
"bootstrap-confirmation2": "^4.1.0",
|
||||
"bootstrap-datepicker": "^1.9.0",
|
||||
"bootstrap-offcanvas": "^1.0.0",
|
||||
"bootstrap-table": "^1.18.1",
|
||||
"bootstrap-timepicker": "^0.5.2",
|
||||
"font-awesome": "^4.7.0",
|
||||
"hammerjs": "^2.0.8",
|
||||
"inputmask": "^5.0.5",
|
||||
"jquery": "^3.5.1",
|
||||
"jquery-hammerjs": "^2.0.0",
|
||||
"jquery-hoverintent": "*",
|
||||
"jquery-zoom": "^1.7.21",
|
||||
"jquery.appear": "^1.0.1",
|
||||
"jquery.instagramFeed": "github:jsanahuja/jquery.instagramFeed",
|
||||
"lodash.debounce": "^4.0.8",
|
||||
"lodash.throttle": "^4.1.1",
|
||||
"mapbox-gl": "^2.0.1",
|
||||
"material-design-color": "^2.3.2",
|
||||
"moment": "^2.29.1",
|
||||
"offcanvas-bootstrap": "^2.5.2",
|
||||
"popper.js": "*",
|
||||
"select2": "^4.0.13",
|
||||
"setimmediate": "^1.0.5",
|
||||
"smooth-scroll": "^16.1.3",
|
||||
"sticky-sidebar": "^3.3.1",
|
||||
"tablednd": "^1.0.5",
|
||||
"yarn": "^1.22.10"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@a2nt/image-sprite-webpack-plugin": "^0.2.5",
|
||||
"@babel/core": "^7.12.10",
|
||||
"@babel/plugin-proposal-object-rest-spread": "^7.12.1",
|
||||
"@babel/plugin-transform-react-jsx": "^7.12.12",
|
||||
"@babel/preset-env": "^7.12.11",
|
||||
"@googlemaps/markerclustererplus": "*",
|
||||
"animate.css": "^4.1.1",
|
||||
"ansi-html": "^0.0.7",
|
||||
"ansi-regex": "^5.0.0",
|
||||
"autoprefixer": "^10.1.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"babel-loader": "^8.2.2",
|
||||
"copy-webpack-plugin": "^7.0.0",
|
||||
"croppie": "^2.6.5",
|
||||
"cross-env": "^7.0.3",
|
||||
"css-loader": "^5.0.1",
|
||||
"eslint": "^7.16.0",
|
||||
"eslint-plugin-import": "^2.22.1",
|
||||
"eslint-plugin-jquery": "^1.5.1",
|
||||
"eslint-plugin-react": "^7.21.5",
|
||||
"exif-js": "^2.3.0",
|
||||
"exports-loader": "^1.1.1",
|
||||
"fast-levenshtein": "^3.0.0",
|
||||
"fastest-levenshtein": "^1.0.12",
|
||||
"favicons-webpack-plugin": "^4.2.0",
|
||||
"file-loader": "^6.2.0",
|
||||
"font-awesome": "^4.7.0",
|
||||
"hard-source-webpack-plugin": "^0.13.1",
|
||||
"hoist-non-react-statics": "^3.3.2",
|
||||
"html-entities": "^1.4.0",
|
||||
"html-webpack-plugin": "^4.5.0",
|
||||
"imagemin-gifsicle": "^7.0.0",
|
||||
"imagemin-jpegtran": "^7.0.0",
|
||||
"imagemin-optipng": "^8.0.0",
|
||||
"imagemin-svgo": "^8.0.0",
|
||||
"imagemin-webp": "^6.0.0",
|
||||
"img-optimize-loader": "^1.0.7",
|
||||
"loglevel": "^1.7.1",
|
||||
"mini-css-extract-plugin": "^0.12.0",
|
||||
"node-sass": "^5.0.0",
|
||||
"object-assign": "^4.1.1",
|
||||
"optimize-css-assets-webpack-plugin": "^5.0.4",
|
||||
"postcss-loader": "^4.1.0",
|
||||
"prop-types": "^15.7.2",
|
||||
"react": "^17.0.1",
|
||||
"react-dom": "^17.0.1",
|
||||
"react-hot-loader": "^4.13.0",
|
||||
"react-is": "^17.0.1",
|
||||
"react-lifecycles-compat": "^3.0.4",
|
||||
"resolve-url-loader": "^3.1.2",
|
||||
"rimraf": "^3.0.2",
|
||||
"routie": "0.0.1",
|
||||
"sass-lint": "^1.13.1",
|
||||
"sass-lint-fix": "^1.12.1",
|
||||
"sass-loader": "^10.1.0",
|
||||
"scheduler": "^0.20.1",
|
||||
"script-ext-html-webpack-plugin": "^2.1.5",
|
||||
"shallowequal": "^1.1.0",
|
||||
"sockjs-client": "^1.5.0",
|
||||
"strip-ansi": "^6.0.0",
|
||||
"style-loader": "^2.0.0",
|
||||
"svg-url-loader": "^7.1.1",
|
||||
"terser-webpack-plugin": "^4.2.3",
|
||||
"url-loader": "^4.1.1",
|
||||
"webpack": "^4.44.2",
|
||||
"webpack-cli": "^3.3.12",
|
||||
"webpack-dev-server": "^3.11.0",
|
||||
"webpack-manifest-plugin": "^2.2.0",
|
||||
"webpack-merge": "^5.7.3"
|
||||
},
|
||||
"stylelint": {
|
||||
"rules": {
|
||||
"block-no-empty": null,
|
||||
"color-no-invalid-hex": true,
|
||||
"comment-empty-line-before": [
|
||||
"always",
|
||||
{
|
||||
"ignore": [
|
||||
"stylelint-commands",
|
||||
"after-comment"
|
||||
]
|
||||
}
|
||||
],
|
||||
"declaration-colon-space-after": "always",
|
||||
"indentation": [
|
||||
4,
|
||||
{
|
||||
"except": [
|
||||
"value"
|
||||
]
|
||||
}
|
||||
],
|
||||
"max-empty-lines": 2,
|
||||
"rule-empty-line-before": [
|
||||
"always",
|
||||
{
|
||||
"except": [
|
||||
"first-nested"
|
||||
],
|
||||
"ignore": [
|
||||
"after-comment"
|
||||
]
|
||||
}
|
||||
],
|
||||
"unit-whitelist": [
|
||||
"em",
|
||||
"rem",
|
||||
"%",
|
||||
"s",
|
||||
"px"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1,184 +0,0 @@
|
||||
/*
|
||||
* Common Environment
|
||||
*/
|
||||
const UIInfo = require('./node_modules/@a2nt/ss-bootstrap-ui-webpack-boilerplate/package.json');
|
||||
console.log(
|
||||
'UI: ' +
|
||||
JSON.stringify(UIInfo.name) +
|
||||
' ver: ' +
|
||||
JSON.stringify(UIInfo.version),
|
||||
);
|
||||
|
||||
const webpack = require('webpack');
|
||||
const commonVariables = require('./webpack.configuration');
|
||||
const conf = commonVariables.configuration;
|
||||
|
||||
const HardSourceWebpackPlugin = require('hard-source-webpack-plugin');
|
||||
const path = require('path');
|
||||
const filesystem = require('fs');
|
||||
|
||||
const includes = {};
|
||||
const modules = [
|
||||
path.resolve(__dirname, conf.APPDIR, 'client', 'src'),
|
||||
path.resolve(__dirname, conf.APPDIR, 'client', 'src', 'js'),
|
||||
path.resolve(__dirname, conf.APPDIR, 'client', 'src', 'scss'),
|
||||
path.resolve(__dirname, conf.APPDIR, 'client', 'src', 'img'),
|
||||
path.resolve(__dirname, conf.APPDIR, 'client', 'src', 'thirdparty'),
|
||||
path.resolve(__dirname, conf.APPDIR, 'client', 'node_modules'),
|
||||
path.resolve(__dirname, 'node_modules'),
|
||||
path.resolve(__dirname),
|
||||
path.resolve(__dirname, 'public'),
|
||||
];
|
||||
|
||||
const _addAppFiles = (theme) => {
|
||||
const dirPath = path.resolve(__dirname, theme);
|
||||
const themeName = path.basename(theme);
|
||||
|
||||
if (filesystem.existsSync(path.join(dirPath, conf.SRC, 'js', 'app.js'))) {
|
||||
includes[`${themeName}`] = path.join(dirPath, conf.SRC, 'js', 'app.js');
|
||||
} else if (
|
||||
filesystem.existsSync(path.join(dirPath, conf.SRC, 'scss', 'app.scss'))
|
||||
) {
|
||||
includes[`${themeName}`] = path.join(
|
||||
dirPath,
|
||||
conf.SRC,
|
||||
'scss',
|
||||
'app.scss',
|
||||
);
|
||||
}
|
||||
|
||||
modules.push(path.join(dirPath, 'client', 'src', 'js'));
|
||||
modules.push(path.join(dirPath, 'client', 'src', 'scss'));
|
||||
modules.push(path.join(dirPath, 'client', 'src', 'img'));
|
||||
modules.push(path.join(dirPath, 'client', 'src', 'thirdparty'));
|
||||
|
||||
const _getAllFilesFromFolder = function (dir, includeSubFolders = true) {
|
||||
const dirPath = path.resolve(__dirname, dir);
|
||||
let results = [];
|
||||
|
||||
filesystem.readdirSync(dirPath).forEach((file) => {
|
||||
if (file.charAt(0) === '_') {
|
||||
return;
|
||||
}
|
||||
|
||||
const filePath = path.join(dirPath, file);
|
||||
const stat = filesystem.statSync(filePath);
|
||||
|
||||
if (stat && stat.isDirectory() && includeSubFolders) {
|
||||
results = results.concat(
|
||||
_getAllFilesFromFolder(filePath, includeSubFolders),
|
||||
);
|
||||
} else {
|
||||
results.push(filePath);
|
||||
}
|
||||
});
|
||||
|
||||
return results;
|
||||
};
|
||||
|
||||
// add page specific scripts
|
||||
const typesJSPath = path.join(theme, conf.TYPESJS);
|
||||
if (filesystem.existsSync(typesJSPath)) {
|
||||
const pageScripts = _getAllFilesFromFolder(typesJSPath, true);
|
||||
pageScripts.forEach((file) => {
|
||||
includes[`${themeName}_${path.basename(file, '.js')}`] = file;
|
||||
});
|
||||
}
|
||||
|
||||
// add page specific scss
|
||||
const typesSCSSPath = path.join(theme, conf.TYPESSCSS);
|
||||
if (filesystem.existsSync(typesSCSSPath)) {
|
||||
const scssIncludes = _getAllFilesFromFolder(typesSCSSPath, true);
|
||||
scssIncludes.forEach((file) => {
|
||||
includes[`${themeName}_${path.basename(file, '.scss')}`] = file;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
_addAppFiles(conf.APPDIR);
|
||||
|
||||
// add themes
|
||||
commonVariables.themes.forEach((theme) => {
|
||||
_addAppFiles(theme);
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
entry: includes,
|
||||
devtool: 'source-map',
|
||||
externals: {
|
||||
jquery: 'jQuery',
|
||||
},
|
||||
optimization: {
|
||||
namedModules: true, // NamedModulesPlugin()
|
||||
splitChunks: {
|
||||
// CommonsChunkPlugin()
|
||||
name: 'vendor',
|
||||
minChunks: 2,
|
||||
},
|
||||
noEmitOnErrors: true, // NoEmitOnErrorsPlugin
|
||||
concatenateModules: true, //ModuleConcatenationPlugin
|
||||
},
|
||||
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.jsx?$/,
|
||||
//exclude: /node_modules/,
|
||||
use: {
|
||||
loader: 'babel-loader',
|
||||
options: {
|
||||
presets: ['@babel/preset-env'], //Preset used for env setup
|
||||
plugins: [
|
||||
['@babel/transform-react-jsx'],
|
||||
['react-hot-loader/babel'],
|
||||
],
|
||||
cacheDirectory: true,
|
||||
cacheCompression: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
/*{
|
||||
test: /\.tsx?$/,
|
||||
use: 'ts-loader',
|
||||
exclude: /node_modules/,
|
||||
},
|
||||
{
|
||||
test: /\.coffee?$/,
|
||||
use: 'coffee-loader',
|
||||
},*/
|
||||
{
|
||||
test: /\.worker\.js$/,
|
||||
use: {
|
||||
loader: 'worker-loader',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
resolve: {
|
||||
modules: modules,
|
||||
alias: {
|
||||
jquery: require.resolve('jquery'),
|
||||
jQuery: require.resolve('jquery'),
|
||||
},
|
||||
},
|
||||
plugins: [
|
||||
new webpack.ProvidePlugin({
|
||||
$: 'jquery',
|
||||
jQuery: 'jquery',
|
||||
'window.jQuery': 'jquery',
|
||||
Popper: ['popper.js', 'default'],
|
||||
Util: 'exports-loader?Util!bootstrap/js/dist/util',
|
||||
Alert: 'exports-loader?Alert!bootstrap/js/dist/alert',
|
||||
Button: 'exports-loader?Button!bootstrap/js/dist/button',
|
||||
Carousel: 'exports-loader?Carousel!bootstrap/js/dist/carousel',
|
||||
Collapse: 'exports-loader?Collapse!bootstrap/js/dist/collapse',
|
||||
Dropdown: 'exports-loader?Dropdown!bootstrap/js/dist/dropdown',
|
||||
Modal: 'exports-loader?Modal!bootstrap/js/dist/modal',
|
||||
Tooltip: 'exports-loader?Tooltip!bootstrap/js/dist/tooltip',
|
||||
Popover: 'exports-loader?Popover!bootstrap/js/dist/popover',
|
||||
Scrollspy: 'exports-loader?Scrollspy!bootstrap/js/dist/scrollspy',
|
||||
Tab: 'exports-loader?Tab!bootstrap/js/dist/tab',
|
||||
}),
|
||||
new HardSourceWebpackPlugin(),
|
||||
],
|
||||
};
|
@ -1,128 +0,0 @@
|
||||
/*
|
||||
* Development assets generation
|
||||
*/
|
||||
|
||||
const path = require('path');
|
||||
//const autoprefixer = require('autoprefixer');
|
||||
const webpack = require('webpack');
|
||||
const { merge } = require('webpack-merge');
|
||||
const common = require('./webpack.config.common.js');
|
||||
const commonVariables = require('./webpack.configuration');
|
||||
const conf = commonVariables.configuration;
|
||||
|
||||
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/package.json');
|
||||
const UIMetaInfo = require('./node_modules/@a2nt/meta-lightbox/package.json');
|
||||
|
||||
const config = merge(common, {
|
||||
mode: 'development',
|
||||
|
||||
entry: {
|
||||
hot: [
|
||||
'react-hot-loader/patch',
|
||||
'webpack-dev-server/client?https://' + conf.HOSTNAME + ':' + conf.PORT,
|
||||
'webpack/hot/only-dev-server',
|
||||
],
|
||||
},
|
||||
|
||||
output: {
|
||||
path: path.join(__dirname),
|
||||
filename: '[name].js',
|
||||
// necessary for HMR to know where to load the hot update chunks
|
||||
publicPath: 'https://' + conf.HOSTNAME + ':' + conf.PORT + '/',
|
||||
},
|
||||
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.s?css$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'style-loader',
|
||||
options: {},
|
||||
},
|
||||
{
|
||||
loader: 'css-loader',
|
||||
options: {
|
||||
sourceMap: true,
|
||||
},
|
||||
},
|
||||
/*{
|
||||
loader: 'postcss-loader',
|
||||
options: {
|
||||
sourceMap: true,
|
||||
//plugins: [autoprefixer()],
|
||||
},
|
||||
},*/
|
||||
{
|
||||
loader: 'resolve-url-loader',
|
||||
},
|
||||
{
|
||||
loader: 'sass-loader',
|
||||
options: {
|
||||
sourceMap: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
test: /fontawesome([^.]+).(ttf|otf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'url-loader',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
test: /\.(gif|png|jpg|jpeg|ttf|otf|eot|svg|webp|woff(2)?)$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'file-loader',
|
||||
options: {
|
||||
name(file) {
|
||||
return 'public/[path][name].[ext]';
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
plugins: [
|
||||
new webpack.HotModuleReplacementPlugin(),
|
||||
new webpack.DefinePlugin({
|
||||
UINAME: JSON.stringify(UIInfo.name),
|
||||
UIVERSION: JSON.stringify(UIInfo.version),
|
||||
UIAUTHOR: JSON.stringify(UIInfo.author),
|
||||
UIMetaNAME: JSON.stringify(UIMetaInfo.name),
|
||||
UIMetaVersion: JSON.stringify(UIMetaInfo.version),
|
||||
}),
|
||||
],
|
||||
|
||||
devServer: {
|
||||
host: IP,
|
||||
port: PORT,
|
||||
historyApiFallback: true,
|
||||
hot: true,
|
||||
clientLogLevel: 'info',
|
||||
disableHostCheck: true,
|
||||
contentBase: [
|
||||
path.resolve(__dirname, 'public'),
|
||||
path.resolve(__dirname, 'public', 'resources'),
|
||||
path.resolve(__dirname, 'public', 'resources', conf.APPDIR, conf.DIST),
|
||||
'node_modules',
|
||||
],
|
||||
//watchContentBase: true,
|
||||
overlay: {
|
||||
warnings: true,
|
||||
errors: true,
|
||||
},
|
||||
headers: {
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
module.exports = config;
|
@ -1,282 +0,0 @@
|
||||
/*
|
||||
* Production assets generation
|
||||
*/
|
||||
|
||||
const webpack = require('webpack');
|
||||
const commonVariables = require('./webpack.configuration');
|
||||
const conf = commonVariables.configuration;
|
||||
const { merge } = require('webpack-merge');
|
||||
const common = require('./webpack.config.common.js');
|
||||
|
||||
const filesystem = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const ExtractTextPlugin = require('mini-css-extract-plugin');
|
||||
const FaviconsWebpackPlugin = require('favicons-webpack-plugin');
|
||||
|
||||
const TerserPlugin = require('terser-webpack-plugin');
|
||||
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
|
||||
//const ImageminPlugin = require('imagemin-webpack');
|
||||
//const ImageSpritePlugin = require('@a2nt/image-sprite-webpack-plugin');
|
||||
|
||||
const COMPRESS = true;
|
||||
|
||||
const UIInfo = require('./node_modules/@a2nt/ss-bootstrap-ui-webpack-boilerplate/package.json');
|
||||
const UIMetaInfo = require('./node_modules/@a2nt/meta-lightbox/package.json');
|
||||
|
||||
console.log('WebP images: ' + conf['webp']);
|
||||
|
||||
let plugins = [
|
||||
new webpack.DefinePlugin({
|
||||
'process.env': {
|
||||
NODE_ENV: JSON.stringify('production'),
|
||||
},
|
||||
UINAME: JSON.stringify(UIInfo.name),
|
||||
UIVERSION: JSON.stringify(UIInfo.version),
|
||||
UIAUTHOR: JSON.stringify(UIInfo.author),
|
||||
UIMetaNAME: JSON.stringify(UIMetaInfo.name),
|
||||
UIMetaVersion: JSON.stringify(UIMetaInfo.version),
|
||||
}),
|
||||
new webpack.LoaderOptionsPlugin({
|
||||
minimize: true,
|
||||
debug: false,
|
||||
}),
|
||||
new ExtractTextPlugin({
|
||||
filename: 'css/[name].css',
|
||||
}),
|
||||
new OptimizeCssAssetsPlugin({
|
||||
//assetNameRegExp: /\.optimize\.css$/g,
|
||||
cssProcessor: require('cssnano'),
|
||||
cssProcessorPluginOptions: {
|
||||
preset: ['default'],
|
||||
},
|
||||
cssProcessorOptions: {
|
||||
zindex: true,
|
||||
cssDeclarationSorter: true,
|
||||
reduceIdents: false,
|
||||
mergeIdents: true,
|
||||
mergeRules: true,
|
||||
mergeLonghand: true,
|
||||
discardUnused: true,
|
||||
discardOverridden: true,
|
||||
discardDuplicates: true,
|
||||
discardComments: {
|
||||
removeAll: true,
|
||||
},
|
||||
},
|
||||
canPrint: true,
|
||||
}),
|
||||
require('autoprefixer'),
|
||||
/*new ImageSpritePlugin({
|
||||
exclude: /exclude|original|default-|icons|sprite/,
|
||||
commentOrigin: false,
|
||||
compress: true,
|
||||
extensions: ['png'],
|
||||
indent: '',
|
||||
log: true,
|
||||
//outputPath: path.join(__dirname, conf.APPDIR, conf.DIST),
|
||||
outputFilename: 'img/sprite-[hash].png',
|
||||
padding: 0,
|
||||
}),*/
|
||||
];
|
||||
|
||||
const faviconPath = path.join(__dirname, conf.APPDIR, conf.SRC, 'favicon.png');
|
||||
if (filesystem.existsSync(faviconPath)) {
|
||||
plugins.push(
|
||||
new FaviconsWebpackPlugin({
|
||||
title: 'Webpack App',
|
||||
logo: faviconPath,
|
||||
prefix: '/icons/',
|
||||
emitStats: false,
|
||||
persistentCache: true,
|
||||
inject: false,
|
||||
statsFilename: path.join(
|
||||
conf.APPDIR,
|
||||
conf.DIST,
|
||||
'icons',
|
||||
'iconstats.json',
|
||||
),
|
||||
icons: {
|
||||
android: true,
|
||||
appleIcon: true,
|
||||
appleStartup: true,
|
||||
coast: true,
|
||||
favicons: true,
|
||||
firefox: true,
|
||||
opengraph: true,
|
||||
twitter: true,
|
||||
yandex: true,
|
||||
windows: true,
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
// add themes favicons
|
||||
commonVariables.themes.forEach((theme) => {
|
||||
const faviconPath = path.join(__dirname, theme, conf.SRC, 'favicon.png');
|
||||
if (filesystem.existsSync(faviconPath)) {
|
||||
plugins.push(
|
||||
new FaviconsWebpackPlugin({
|
||||
title: 'Webpack App',
|
||||
logo: faviconPath,
|
||||
prefix: '/' + theme + '-icons/',
|
||||
emitStats: false,
|
||||
persistentCache: true,
|
||||
inject: false,
|
||||
statsFilename: path.join(
|
||||
conf.APPDIR,
|
||||
conf.DIST,
|
||||
theme + '-icons',
|
||||
'iconstats.json',
|
||||
),
|
||||
icons: {
|
||||
android: true,
|
||||
appleIcon: true,
|
||||
appleStartup: true,
|
||||
coast: true,
|
||||
favicons: true,
|
||||
firefox: true,
|
||||
opengraph: true,
|
||||
twitter: true,
|
||||
yandex: true,
|
||||
windows: true,
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = merge(common, {
|
||||
mode: 'production',
|
||||
optimization: {
|
||||
removeAvailableModules: false,
|
||||
namedModules: true,
|
||||
splitChunks: {
|
||||
name: 'vendor',
|
||||
minChunks: 2,
|
||||
},
|
||||
noEmitOnErrors: true, // NoEmitOnErrorsPlugin
|
||||
concatenateModules: true, //ModuleConcatenationPlugin
|
||||
minimizer: [
|
||||
new TerserPlugin({
|
||||
terserOptions: {
|
||||
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: 5,
|
||||
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,
|
||||
},
|
||||
mangle: {
|
||||
safari10: true,
|
||||
},
|
||||
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,
|
||||
// Enable file caching
|
||||
cache: true,
|
||||
}),
|
||||
],
|
||||
},
|
||||
|
||||
devtool: '',
|
||||
|
||||
output: {
|
||||
path: path.join(__dirname, conf.APPDIR, conf.DIST),
|
||||
filename: path.join('js', '[name].js'),
|
||||
publicPath: path.join(conf.APPDIR, conf.DIST),
|
||||
},
|
||||
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.s?css$/,
|
||||
use: [
|
||||
{
|
||||
loader: ExtractTextPlugin.loader,
|
||||
},
|
||||
{
|
||||
loader: 'css-loader',
|
||||
options: {
|
||||
sourceMap: !COMPRESS,
|
||||
},
|
||||
},
|
||||
{
|
||||
loader: 'resolve-url-loader',
|
||||
},
|
||||
{
|
||||
loader: 'sass-loader',
|
||||
options: {
|
||||
sourceMap: !COMPRESS,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
test: /fontawesome([^.]+).(ttf|otf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'file-loader',
|
||||
options: {
|
||||
name: '[name].[ext]',
|
||||
outputPath: 'fonts/',
|
||||
publicPath: '../fonts/',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
test: /\.(ttf|otf|eot|svg|woff(2)?)$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'file-loader',
|
||||
options: {
|
||||
name: '[name].[ext]',
|
||||
outputPath: 'fonts/',
|
||||
publicPath: '../fonts/',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
test: /\.(png|webp|jpg|jpeg|gif|svg)$/,
|
||||
loader: 'img-optimize-loader',
|
||||
options: {
|
||||
name: '[name].[ext]',
|
||||
outputPath: 'img/',
|
||||
publicPath: '../img/',
|
||||
compress: {
|
||||
// This will take more time and get smaller images.
|
||||
mode: 'low', // 'lossless', 'high', 'low'
|
||||
disableOnDevelopment: true,
|
||||
webp: conf['webp'],
|
||||
},
|
||||
inline: {
|
||||
limit: 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
plugins: plugins,
|
||||
});
|
@ -1,33 +0,0 @@
|
||||
/*
|
||||
* Load webpack configuration from app/_config/webpack.yml
|
||||
*/
|
||||
|
||||
const path = require('path');
|
||||
const filesystem = require('fs');
|
||||
const fs = require('fs');
|
||||
const yaml = require('js-yaml');
|
||||
|
||||
const conf = yaml.safeLoad(fs.readFileSync(path.join(__dirname, 'app/_config/webpack.yml'), 'utf8'));
|
||||
|
||||
let themes = [];
|
||||
// add themes
|
||||
if (conf['Site\\Templates\\WebpackTemplateProvider'].THEMESDIR) {
|
||||
const themeDir = conf['Site\\Templates\\WebpackTemplateProvider'].THEMESDIR;
|
||||
const dir = path.resolve(__dirname, themeDir);
|
||||
|
||||
if (filesystem.existsSync(dir)) {
|
||||
filesystem.readdirSync(dir).forEach((file) => {
|
||||
filePath = path.join(themeDir, file);
|
||||
const stat = filesystem.statSync(filePath);
|
||||
|
||||
if (stat && stat.isDirectory()) {
|
||||
themes.push(filePath);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
configuration: conf['Site\\Templates\\WebpackTemplateProvider'],
|
||||
themes: themes,
|
||||
};
|