Merge pull request 'ruby-2-7-rails-6-1' (#1) from ruby-2-7-rails-6-1 into master
Reviewed-on: https://code.snogrammer.com/snogrammer/rails_template/pulls/1
This commit is contained in:
commit
86ee5b3016
|
@ -1,6 +1,5 @@
|
|||
COMPOSE_PROJECT_NAME=app
|
||||
DATABASE_URL=postgres://user:password@postgres:5432
|
||||
FONTAWESOME_NPM_AUTH_TOKEN=TODO_CHANGE_ME
|
||||
NODE_ENV=development
|
||||
POSTGRES_USER=user
|
||||
POSTGRES_PASSWORD=password
|
||||
|
|
|
@ -33,3 +33,5 @@ yarn-debug.log*
|
|||
.yarn-integrity
|
||||
|
||||
coverage
|
||||
|
||||
.env*
|
||||
|
|
2
.npmrc
2
.npmrc
|
@ -1,2 +0,0 @@
|
|||
@fortawesome:registry=https://npm.fontawesome.com/
|
||||
//npm.fontawesome.com/:_authToken=${FONTAWESOME_NPM_AUTH_TOKEN}
|
|
@ -1 +1 @@
|
|||
2.6.5
|
||||
2.7.2
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# https://pkgs.alpinelinux.org/packages?name=ruby&branch=v3.11
|
||||
FROM ruby:2.6.5-alpine3.11
|
||||
FROM ruby:2.7-alpine3.11
|
||||
|
||||
ENV BUNDLER_VERSION=2.0.2
|
||||
# ENV BUNDLER_VERSION=2.0.2
|
||||
|
||||
# Minimal requirements to run a Rails app
|
||||
RUN apk add --no-cache --update build-base \
|
||||
|
@ -21,7 +21,7 @@ COPY Gemfile* ./
|
|||
# Bundler workaround
|
||||
# https://stackoverflow.com/a/58102398
|
||||
RUN gem update --system
|
||||
RUN gem install bundler -v $BUNDLER_VERSION
|
||||
RUN gem install bundler # -v $BUNDLER_VERSION
|
||||
RUN bundle install --jobs 5 --retry 5
|
||||
|
||||
# Copy the application into the container
|
||||
|
|
39
Gemfile
39
Gemfile
|
@ -2,50 +2,51 @@
|
|||
|
||||
source 'https://rubygems.org'
|
||||
|
||||
ruby '2.6.5'
|
||||
ruby '2.7.2'
|
||||
|
||||
gem 'bootsnap', '>= 1.4', require: false
|
||||
gem 'jbuilder', '~> 2.9'
|
||||
gem 'bootsnap', '>= 1.5', require: false
|
||||
gem 'jbuilder', '~> 2.10'
|
||||
gem 'lograge', '~> 0.11'
|
||||
gem 'multi_json', '~> 1.14'
|
||||
gem 'multi_json', '~> 1.15'
|
||||
gem 'paranoia', '~> 2.4'
|
||||
gem 'pg', '~> 1.2'
|
||||
gem 'puma', '~> 4.2'
|
||||
gem 'rails', '~> 6.0'
|
||||
gem 'puma', '~> 5.1'
|
||||
gem 'rails', '~> 6.1'
|
||||
gem 'redis-rails', '~> 5.0'
|
||||
gem 'responders', '~> 3.0'
|
||||
gem 'sidekiq', '~> 6.0'
|
||||
gem 'sidekiq', '~> 6.1'
|
||||
gem 'simple_form', '~> 5.0'
|
||||
gem 'validates_email_format_of', '~> 1.6'
|
||||
gem 'webpacker', '~> 4.2'
|
||||
gem 'webpacker', '~> 5.2'
|
||||
|
||||
# auth
|
||||
gem 'activeadmin', '~> 2.6'
|
||||
gem 'arctic_admin'
|
||||
gem 'activeadmin', '~> 2.9'
|
||||
gem 'arctic_admin', '~> 3.3'
|
||||
gem 'devise', '~> 4.7'
|
||||
|
||||
# styles
|
||||
gem 'bulma-rails', '~> 0.8.0'
|
||||
gem 'font_awesome5_rails', '~> 1.1'
|
||||
gem 'premailer-rails', '~> 1.11'
|
||||
gem 'bulma-rails', '~> 0.9.1'
|
||||
gem 'font_awesome5_rails', '~> 1.3'
|
||||
gem 'premailer-rails', '~> 1.11'
|
||||
gem 'sassc-rails', '~> 2.1' # @see https://github.com/cprodhomme/arctic_admin/issues/56#issue-453584917
|
||||
|
||||
group :development, :test do
|
||||
gem 'factory_bot_rails', '~> 5.1'
|
||||
gem 'faker', '~> 2.10'
|
||||
gem 'factory_bot_rails', '~> 6.1'
|
||||
gem 'faker', '~> 2.15'
|
||||
gem 'pry-rails'
|
||||
gem 'rspec-rails', '~> 3.9'
|
||||
gem 'rspec-rails', '~> 4.0'
|
||||
gem 'rubocop'
|
||||
gem 'rubocop-rails'
|
||||
end
|
||||
|
||||
group :development do
|
||||
gem 'listen', '~> 3.2'
|
||||
gem 'spring' # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
|
||||
gem 'listen', '~> 3.3'
|
||||
gem 'spring' # @see https://github.com/rails/spring
|
||||
gem 'spring-watcher-listen', '~> 2.0'
|
||||
end
|
||||
|
||||
group :test do
|
||||
gem 'database_cleaner', '~> 1.7'
|
||||
gem 'database_cleaner', '~> 1.8'
|
||||
gem 'json_spec', '~> 1.1'
|
||||
gem 'mock_redis', '~> 0.17'
|
||||
gem 'rspec-sidekiq', '~> 3.0'
|
||||
|
|
417
Gemfile.lock
417
Gemfile.lock
|
@ -1,114 +1,117 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
actioncable (6.0.2.2)
|
||||
actionpack (= 6.0.2.2)
|
||||
actioncable (6.1.0)
|
||||
actionpack (= 6.1.0)
|
||||
activesupport (= 6.1.0)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (>= 0.6.1)
|
||||
actionmailbox (6.0.2.2)
|
||||
actionpack (= 6.0.2.2)
|
||||
activejob (= 6.0.2.2)
|
||||
activerecord (= 6.0.2.2)
|
||||
activestorage (= 6.0.2.2)
|
||||
activesupport (= 6.0.2.2)
|
||||
actionmailbox (6.1.0)
|
||||
actionpack (= 6.1.0)
|
||||
activejob (= 6.1.0)
|
||||
activerecord (= 6.1.0)
|
||||
activestorage (= 6.1.0)
|
||||
activesupport (= 6.1.0)
|
||||
mail (>= 2.7.1)
|
||||
actionmailer (6.0.2.2)
|
||||
actionpack (= 6.0.2.2)
|
||||
actionview (= 6.0.2.2)
|
||||
activejob (= 6.0.2.2)
|
||||
actionmailer (6.1.0)
|
||||
actionpack (= 6.1.0)
|
||||
actionview (= 6.1.0)
|
||||
activejob (= 6.1.0)
|
||||
activesupport (= 6.1.0)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
actionpack (6.0.2.2)
|
||||
actionview (= 6.0.2.2)
|
||||
activesupport (= 6.0.2.2)
|
||||
rack (~> 2.0, >= 2.0.8)
|
||||
actionpack (6.1.0)
|
||||
actionview (= 6.1.0)
|
||||
activesupport (= 6.1.0)
|
||||
rack (~> 2.0, >= 2.0.9)
|
||||
rack-test (>= 0.6.3)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
||||
actiontext (6.0.2.2)
|
||||
actionpack (= 6.0.2.2)
|
||||
activerecord (= 6.0.2.2)
|
||||
activestorage (= 6.0.2.2)
|
||||
activesupport (= 6.0.2.2)
|
||||
actiontext (6.1.0)
|
||||
actionpack (= 6.1.0)
|
||||
activerecord (= 6.1.0)
|
||||
activestorage (= 6.1.0)
|
||||
activesupport (= 6.1.0)
|
||||
nokogiri (>= 1.8.5)
|
||||
actionview (6.0.2.2)
|
||||
activesupport (= 6.0.2.2)
|
||||
actionview (6.1.0)
|
||||
activesupport (= 6.1.0)
|
||||
builder (~> 3.1)
|
||||
erubi (~> 1.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
||||
activeadmin (2.6.1)
|
||||
activeadmin (2.9.0)
|
||||
arbre (~> 1.2, >= 1.2.1)
|
||||
formtastic (~> 3.1)
|
||||
formtastic (>= 3.1, < 5.0)
|
||||
formtastic_i18n (~> 0.4)
|
||||
inherited_resources (~> 1.7)
|
||||
jquery-rails (~> 4.2)
|
||||
kaminari (~> 1.0, >= 1.0.1)
|
||||
railties (>= 5.2, < 6.1)
|
||||
kaminari (~> 1.0, >= 1.2.1)
|
||||
railties (>= 5.2, < 6.2)
|
||||
ransack (~> 2.1, >= 2.1.1)
|
||||
sassc-rails (~> 2.1)
|
||||
sprockets (>= 3.0, < 4.1)
|
||||
activejob (6.0.2.2)
|
||||
activesupport (= 6.0.2.2)
|
||||
activejob (6.1.0)
|
||||
activesupport (= 6.1.0)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (6.0.2.2)
|
||||
activesupport (= 6.0.2.2)
|
||||
activerecord (6.0.2.2)
|
||||
activemodel (= 6.0.2.2)
|
||||
activesupport (= 6.0.2.2)
|
||||
activestorage (6.0.2.2)
|
||||
actionpack (= 6.0.2.2)
|
||||
activejob (= 6.0.2.2)
|
||||
activerecord (= 6.0.2.2)
|
||||
activemodel (6.1.0)
|
||||
activesupport (= 6.1.0)
|
||||
activerecord (6.1.0)
|
||||
activemodel (= 6.1.0)
|
||||
activesupport (= 6.1.0)
|
||||
activestorage (6.1.0)
|
||||
actionpack (= 6.1.0)
|
||||
activejob (= 6.1.0)
|
||||
activerecord (= 6.1.0)
|
||||
activesupport (= 6.1.0)
|
||||
marcel (~> 0.3.1)
|
||||
activesupport (6.0.2.2)
|
||||
mimemagic (~> 0.3.2)
|
||||
activesupport (6.1.0)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 0.7, < 2)
|
||||
minitest (~> 5.1)
|
||||
tzinfo (~> 1.1)
|
||||
zeitwerk (~> 2.2)
|
||||
i18n (>= 1.6, < 2)
|
||||
minitest (>= 5.1)
|
||||
tzinfo (~> 2.0)
|
||||
zeitwerk (~> 2.3)
|
||||
addressable (2.7.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
arbre (1.2.1)
|
||||
activesupport (>= 3.0.0)
|
||||
arctic_admin (3.1.1)
|
||||
arbre (1.4.0)
|
||||
activesupport (>= 3.0.0, < 6.2)
|
||||
ruby2_keywords (>= 0.0.2, < 1.0)
|
||||
arctic_admin (3.3.0)
|
||||
activeadmin (>= 1.1.0, < 3.0)
|
||||
font-awesome-sass (~> 5.0)
|
||||
jquery-rails
|
||||
ast (2.4.0)
|
||||
bcrypt (3.1.13)
|
||||
bootsnap (1.4.6)
|
||||
ast (2.4.1)
|
||||
bcrypt (3.1.16)
|
||||
bootsnap (1.5.1)
|
||||
msgpack (~> 1.0)
|
||||
builder (3.2.4)
|
||||
bulma-rails (0.8.0)
|
||||
bulma-rails (0.9.1)
|
||||
sassc (~> 2.0)
|
||||
coderay (1.1.2)
|
||||
concurrent-ruby (1.1.6)
|
||||
connection_pool (2.2.2)
|
||||
coderay (1.1.3)
|
||||
concurrent-ruby (1.1.7)
|
||||
connection_pool (2.2.3)
|
||||
crass (1.0.6)
|
||||
css_parser (1.7.1)
|
||||
addressable
|
||||
database_cleaner (1.8.3)
|
||||
devise (4.7.1)
|
||||
database_cleaner (1.8.5)
|
||||
devise (4.7.3)
|
||||
bcrypt (~> 3.0)
|
||||
orm_adapter (~> 0.1)
|
||||
railties (>= 4.1.0)
|
||||
responders
|
||||
warden (~> 1.2.3)
|
||||
diff-lcs (1.3)
|
||||
docile (1.3.2)
|
||||
erubi (1.9.0)
|
||||
factory_bot (5.1.1)
|
||||
activesupport (>= 4.2.0)
|
||||
factory_bot_rails (5.1.1)
|
||||
factory_bot (~> 5.1.0)
|
||||
railties (>= 4.2.0)
|
||||
faker (2.10.2)
|
||||
diff-lcs (1.4.4)
|
||||
docile (1.3.3)
|
||||
erubi (1.10.0)
|
||||
factory_bot (6.1.0)
|
||||
activesupport (>= 5.0.0)
|
||||
factory_bot_rails (6.1.0)
|
||||
factory_bot (~> 6.1.0)
|
||||
railties (>= 5.0.0)
|
||||
faker (2.15.1)
|
||||
i18n (>= 1.6, < 2)
|
||||
ffi (1.12.2)
|
||||
font-awesome-sass (5.12.0)
|
||||
ffi (1.14.0)
|
||||
font-awesome-sass (5.15.1)
|
||||
sassc (>= 1.11)
|
||||
font_awesome5_rails (1.1.1)
|
||||
font_awesome5_rails (1.3.0)
|
||||
railties (>= 4.2)
|
||||
formtastic (3.1.5)
|
||||
actionpack (>= 3.2.13)
|
||||
|
@ -119,36 +122,35 @@ GEM
|
|||
actionpack (>= 4.1)
|
||||
activesupport (>= 4.1)
|
||||
htmlentities (4.3.4)
|
||||
i18n (1.8.2)
|
||||
i18n (1.8.5)
|
||||
concurrent-ruby (~> 1.0)
|
||||
inherited_resources (1.11.0)
|
||||
actionpack (>= 5.0, < 6.1)
|
||||
inherited_resources (1.12.0)
|
||||
actionpack (>= 5.2, < 6.2)
|
||||
has_scope (~> 0.6)
|
||||
railties (>= 5.0, < 6.1)
|
||||
railties (>= 5.2, < 6.2)
|
||||
responders (>= 2, < 4)
|
||||
jaro_winkler (1.5.4)
|
||||
jbuilder (2.10.0)
|
||||
jbuilder (2.10.1)
|
||||
activesupport (>= 5.0.0)
|
||||
jquery-rails (4.3.5)
|
||||
jquery-rails (4.4.0)
|
||||
rails-dom-testing (>= 1, < 3)
|
||||
railties (>= 4.2.0)
|
||||
thor (>= 0.14, < 2.0)
|
||||
json_spec (1.1.5)
|
||||
multi_json (~> 1.0)
|
||||
rspec (>= 2.0, < 4.0)
|
||||
kaminari (1.2.0)
|
||||
kaminari (1.2.1)
|
||||
activesupport (>= 4.1.0)
|
||||
kaminari-actionview (= 1.2.0)
|
||||
kaminari-activerecord (= 1.2.0)
|
||||
kaminari-core (= 1.2.0)
|
||||
kaminari-actionview (1.2.0)
|
||||
kaminari-actionview (= 1.2.1)
|
||||
kaminari-activerecord (= 1.2.1)
|
||||
kaminari-core (= 1.2.1)
|
||||
kaminari-actionview (1.2.1)
|
||||
actionview
|
||||
kaminari-core (= 1.2.0)
|
||||
kaminari-activerecord (1.2.0)
|
||||
kaminari-core (= 1.2.1)
|
||||
kaminari-activerecord (1.2.1)
|
||||
activerecord
|
||||
kaminari-core (= 1.2.0)
|
||||
kaminari-core (1.2.0)
|
||||
listen (3.2.1)
|
||||
kaminari-core (= 1.2.1)
|
||||
kaminari-core (1.2.1)
|
||||
listen (3.3.3)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
lograge (0.11.2)
|
||||
|
@ -156,92 +158,87 @@ GEM
|
|||
activesupport (>= 4)
|
||||
railties (>= 4)
|
||||
request_store (~> 1.0)
|
||||
loofah (2.4.0)
|
||||
loofah (2.8.0)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.5.9)
|
||||
mail (2.7.1)
|
||||
mini_mime (>= 0.1.1)
|
||||
marcel (0.3.3)
|
||||
mimemagic (~> 0.3.2)
|
||||
method_source (0.9.2)
|
||||
mimemagic (0.3.4)
|
||||
method_source (1.0.0)
|
||||
mimemagic (0.3.5)
|
||||
mini_mime (1.0.2)
|
||||
mini_portile2 (2.4.0)
|
||||
minitest (5.14.0)
|
||||
mock_redis (0.22.0)
|
||||
minitest (5.14.2)
|
||||
mock_redis (0.26.0)
|
||||
msgpack (1.3.3)
|
||||
multi_json (1.14.1)
|
||||
nio4r (2.5.2)
|
||||
nokogiri (1.10.9)
|
||||
multi_json (1.15.0)
|
||||
nio4r (2.5.4)
|
||||
nokogiri (1.10.10)
|
||||
mini_portile2 (~> 2.4.0)
|
||||
orm_adapter (0.5.0)
|
||||
parallel (1.19.1)
|
||||
paranoia (2.4.2)
|
||||
activerecord (>= 4.0, < 6.1)
|
||||
parser (2.7.0.4)
|
||||
ast (~> 2.4.0)
|
||||
parallel (1.20.1)
|
||||
paranoia (2.4.3)
|
||||
activerecord (>= 4.0, < 6.2)
|
||||
parser (2.7.2.0)
|
||||
ast (~> 2.4.1)
|
||||
pg (1.2.3)
|
||||
polyamorous (2.3.2)
|
||||
activerecord (>= 5.2.1)
|
||||
premailer (1.11.1)
|
||||
premailer (1.14.2)
|
||||
addressable
|
||||
css_parser (>= 1.6.0)
|
||||
htmlentities (>= 4.0.0)
|
||||
premailer-rails (1.11.1)
|
||||
actionmailer (>= 3)
|
||||
premailer (~> 1.7, >= 1.7.9)
|
||||
pry (0.12.2)
|
||||
coderay (~> 1.1.0)
|
||||
method_source (~> 0.9.0)
|
||||
pry (0.13.1)
|
||||
coderay (~> 1.1)
|
||||
method_source (~> 1.0)
|
||||
pry-rails (0.3.9)
|
||||
pry (>= 0.10.4)
|
||||
public_suffix (4.0.4)
|
||||
puma (4.3.3)
|
||||
public_suffix (4.0.6)
|
||||
puma (5.1.1)
|
||||
nio4r (~> 2.0)
|
||||
rack (2.2.2)
|
||||
rack-protection (2.0.8.1)
|
||||
rack
|
||||
rack (2.2.3)
|
||||
rack-proxy (0.6.5)
|
||||
rack
|
||||
rack-test (1.1.0)
|
||||
rack (>= 1.0, < 3)
|
||||
rails (6.0.2.2)
|
||||
actioncable (= 6.0.2.2)
|
||||
actionmailbox (= 6.0.2.2)
|
||||
actionmailer (= 6.0.2.2)
|
||||
actionpack (= 6.0.2.2)
|
||||
actiontext (= 6.0.2.2)
|
||||
actionview (= 6.0.2.2)
|
||||
activejob (= 6.0.2.2)
|
||||
activemodel (= 6.0.2.2)
|
||||
activerecord (= 6.0.2.2)
|
||||
activestorage (= 6.0.2.2)
|
||||
activesupport (= 6.0.2.2)
|
||||
bundler (>= 1.3.0)
|
||||
railties (= 6.0.2.2)
|
||||
rails (6.1.0)
|
||||
actioncable (= 6.1.0)
|
||||
actionmailbox (= 6.1.0)
|
||||
actionmailer (= 6.1.0)
|
||||
actionpack (= 6.1.0)
|
||||
actiontext (= 6.1.0)
|
||||
actionview (= 6.1.0)
|
||||
activejob (= 6.1.0)
|
||||
activemodel (= 6.1.0)
|
||||
activerecord (= 6.1.0)
|
||||
activestorage (= 6.1.0)
|
||||
activesupport (= 6.1.0)
|
||||
bundler (>= 1.15.0)
|
||||
railties (= 6.1.0)
|
||||
sprockets-rails (>= 2.0.0)
|
||||
rails-dom-testing (2.0.3)
|
||||
activesupport (>= 4.2.0)
|
||||
nokogiri (>= 1.6)
|
||||
rails-html-sanitizer (1.3.0)
|
||||
loofah (~> 2.3)
|
||||
railties (6.0.2.2)
|
||||
actionpack (= 6.0.2.2)
|
||||
activesupport (= 6.0.2.2)
|
||||
railties (6.1.0)
|
||||
actionpack (= 6.1.0)
|
||||
activesupport (= 6.1.0)
|
||||
method_source
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.20.3, < 2.0)
|
||||
thor (~> 1.0)
|
||||
rainbow (3.0.0)
|
||||
rake (13.0.1)
|
||||
ransack (2.3.2)
|
||||
activerecord (>= 5.2.1)
|
||||
activesupport (>= 5.2.1)
|
||||
rake (13.0.2)
|
||||
ransack (2.4.0)
|
||||
activerecord (>= 5.2.4)
|
||||
activesupport (>= 5.2.4)
|
||||
i18n
|
||||
polyamorous (= 2.3.2)
|
||||
rb-fsevent (0.10.3)
|
||||
rb-fsevent (0.10.4)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
redis (4.1.3)
|
||||
redis (4.2.5)
|
||||
redis-actionpack (5.2.0)
|
||||
actionpack (>= 5, < 7)
|
||||
redis-rack (>= 2.1.0, < 3)
|
||||
|
@ -249,58 +246,64 @@ GEM
|
|||
redis-activesupport (5.2.0)
|
||||
activesupport (>= 3, < 7)
|
||||
redis-store (>= 1.3, < 2)
|
||||
redis-rack (2.1.2)
|
||||
redis-rack (2.1.3)
|
||||
rack (>= 2.0.8, < 3)
|
||||
redis-store (>= 1.2, < 2)
|
||||
redis-rails (5.0.2)
|
||||
redis-actionpack (>= 5.0, < 6)
|
||||
redis-activesupport (>= 5.0, < 6)
|
||||
redis-store (>= 1.2, < 2)
|
||||
redis-store (1.8.2)
|
||||
redis-store (1.9.0)
|
||||
redis (>= 4, < 5)
|
||||
regexp_parser (2.0.0)
|
||||
request_store (1.5.0)
|
||||
rack (>= 1.4)
|
||||
responders (3.0.0)
|
||||
responders (3.0.1)
|
||||
actionpack (>= 5.0)
|
||||
railties (>= 5.0)
|
||||
rexml (3.2.4)
|
||||
rspec (3.9.0)
|
||||
rspec-core (~> 3.9.0)
|
||||
rspec-expectations (~> 3.9.0)
|
||||
rspec-mocks (~> 3.9.0)
|
||||
rspec-core (3.9.1)
|
||||
rspec-support (~> 3.9.1)
|
||||
rspec-expectations (3.9.1)
|
||||
rspec (3.10.0)
|
||||
rspec-core (~> 3.10.0)
|
||||
rspec-expectations (~> 3.10.0)
|
||||
rspec-mocks (~> 3.10.0)
|
||||
rspec-core (3.10.0)
|
||||
rspec-support (~> 3.10.0)
|
||||
rspec-expectations (3.10.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.9.0)
|
||||
rspec-mocks (3.9.1)
|
||||
rspec-support (~> 3.10.0)
|
||||
rspec-mocks (3.10.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.9.0)
|
||||
rspec-rails (3.9.1)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
railties (>= 3.0)
|
||||
rspec-core (~> 3.9.0)
|
||||
rspec-expectations (~> 3.9.0)
|
||||
rspec-mocks (~> 3.9.0)
|
||||
rspec-support (~> 3.9.0)
|
||||
rspec-sidekiq (3.0.3)
|
||||
rspec-support (~> 3.10.0)
|
||||
rspec-rails (4.0.1)
|
||||
actionpack (>= 4.2)
|
||||
activesupport (>= 4.2)
|
||||
railties (>= 4.2)
|
||||
rspec-core (~> 3.9)
|
||||
rspec-expectations (~> 3.9)
|
||||
rspec-mocks (~> 3.9)
|
||||
rspec-support (~> 3.9)
|
||||
rspec-sidekiq (3.1.0)
|
||||
rspec-core (~> 3.0, >= 3.0.0)
|
||||
sidekiq (>= 2.4.0)
|
||||
rspec-support (3.9.2)
|
||||
rubocop (0.80.1)
|
||||
jaro_winkler (~> 1.5.1)
|
||||
rspec-support (3.10.0)
|
||||
rubocop (1.6.1)
|
||||
parallel (~> 1.10)
|
||||
parser (>= 2.7.0.1)
|
||||
parser (>= 2.7.1.5)
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
regexp_parser (>= 1.8, < 3.0)
|
||||
rexml
|
||||
rubocop-ast (>= 1.2.0, < 2.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 1.4.0, < 1.7)
|
||||
rubocop-rails (2.4.2)
|
||||
unicode-display_width (>= 1.4.0, < 2.0)
|
||||
rubocop-ast (1.3.0)
|
||||
parser (>= 2.7.1.5)
|
||||
rubocop-rails (2.9.1)
|
||||
activesupport (>= 4.2.0)
|
||||
rack (>= 1.1)
|
||||
rubocop (>= 0.72.0)
|
||||
rubocop (>= 0.90.0, < 2.0)
|
||||
ruby-progressbar (1.10.1)
|
||||
sassc (2.2.1)
|
||||
ruby2_keywords (0.0.2)
|
||||
sassc (2.4.0)
|
||||
ffi (~> 1.9)
|
||||
sassc-rails (2.1.2)
|
||||
railties (>= 4.0.0)
|
||||
|
@ -308,95 +311,99 @@ GEM
|
|||
sprockets (> 3.0)
|
||||
sprockets-rails
|
||||
tilt
|
||||
semantic_range (2.3.1)
|
||||
shoulda-callback-matchers (1.1.4)
|
||||
activesupport (>= 3)
|
||||
shoulda-matchers (3.1.3)
|
||||
activesupport (>= 4.0.0)
|
||||
sidekiq (6.0.5)
|
||||
sidekiq (6.1.2)
|
||||
connection_pool (>= 2.2.2)
|
||||
rack (~> 2.0)
|
||||
rack-protection (>= 2.0.0)
|
||||
redis (>= 4.1.0)
|
||||
simple_form (5.0.2)
|
||||
redis (>= 4.2.0)
|
||||
simple_form (5.0.3)
|
||||
actionpack (>= 5.0)
|
||||
activemodel (>= 5.0)
|
||||
simplecov (0.18.5)
|
||||
simplecov (0.20.0)
|
||||
docile (~> 1.1)
|
||||
simplecov-html (~> 0.11)
|
||||
simplecov-html (0.12.2)
|
||||
spring (2.1.0)
|
||||
simplecov_json_formatter (~> 0.1)
|
||||
simplecov-html (0.12.3)
|
||||
simplecov_json_formatter (0.1.2)
|
||||
spring (2.1.1)
|
||||
spring-watcher-listen (2.0.1)
|
||||
listen (>= 2.7, < 4.0)
|
||||
spring (>= 1.2, < 3.0)
|
||||
sprockets (4.0.0)
|
||||
sprockets (4.0.2)
|
||||
concurrent-ruby (~> 1.0)
|
||||
rack (> 1, < 3)
|
||||
sprockets-rails (3.2.1)
|
||||
sprockets-rails (3.2.2)
|
||||
actionpack (>= 4.0)
|
||||
activesupport (>= 4.0)
|
||||
sprockets (>= 3.0.0)
|
||||
thor (1.0.1)
|
||||
thread_safe (0.3.6)
|
||||
tilt (2.0.10)
|
||||
tzinfo (1.2.6)
|
||||
thread_safe (~> 0.1)
|
||||
unicode-display_width (1.6.1)
|
||||
tzinfo (2.0.4)
|
||||
concurrent-ruby (~> 1.0)
|
||||
unicode-display_width (1.7.0)
|
||||
validates_email_format_of (1.6.3)
|
||||
i18n
|
||||
warden (1.2.8)
|
||||
rack (>= 2.0.6)
|
||||
webpacker (4.2.2)
|
||||
activesupport (>= 4.2)
|
||||
warden (1.2.9)
|
||||
rack (>= 2.0.9)
|
||||
webpacker (5.2.1)
|
||||
activesupport (>= 5.2)
|
||||
rack-proxy (>= 0.6.1)
|
||||
railties (>= 4.2)
|
||||
websocket-driver (0.7.1)
|
||||
railties (>= 5.2)
|
||||
semantic_range (>= 2.3.0)
|
||||
websocket-driver (0.7.3)
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.4)
|
||||
zeitwerk (2.3.0)
|
||||
websocket-extensions (0.1.5)
|
||||
zeitwerk (2.4.2)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
x86_64-darwin-18
|
||||
x86_64-linux-musl
|
||||
|
||||
DEPENDENCIES
|
||||
activeadmin (~> 2.6)
|
||||
arctic_admin
|
||||
bootsnap (>= 1.4)
|
||||
bulma-rails (~> 0.8.0)
|
||||
database_cleaner (~> 1.7)
|
||||
activeadmin (~> 2.9)
|
||||
arctic_admin (~> 3.3)
|
||||
bootsnap (>= 1.5)
|
||||
bulma-rails (~> 0.9.1)
|
||||
database_cleaner (~> 1.8)
|
||||
devise (~> 4.7)
|
||||
factory_bot_rails (~> 5.1)
|
||||
faker (~> 2.10)
|
||||
font_awesome5_rails (~> 1.1)
|
||||
jbuilder (~> 2.9)
|
||||
factory_bot_rails (~> 6.1)
|
||||
faker (~> 2.15)
|
||||
font_awesome5_rails (~> 1.3)
|
||||
jbuilder (~> 2.10)
|
||||
json_spec (~> 1.1)
|
||||
listen (~> 3.2)
|
||||
listen (~> 3.3)
|
||||
lograge (~> 0.11)
|
||||
mock_redis (~> 0.17)
|
||||
multi_json (~> 1.14)
|
||||
multi_json (~> 1.15)
|
||||
paranoia (~> 2.4)
|
||||
pg (~> 1.2)
|
||||
premailer-rails (~> 1.11)
|
||||
pry-rails
|
||||
puma (~> 4.2)
|
||||
rails (~> 6.0)
|
||||
puma (~> 5.1)
|
||||
rails (~> 6.1)
|
||||
redis-rails (~> 5.0)
|
||||
responders (~> 3.0)
|
||||
rspec-rails (~> 3.9)
|
||||
rspec-rails (~> 4.0)
|
||||
rspec-sidekiq (~> 3.0)
|
||||
rubocop
|
||||
rubocop-rails
|
||||
sassc-rails (~> 2.1)
|
||||
shoulda-callback-matchers (~> 1.1)
|
||||
shoulda-matchers (~> 3.1)
|
||||
sidekiq (~> 6.0)
|
||||
sidekiq (~> 6.1)
|
||||
simple_form (~> 5.0)
|
||||
simplecov (~> 0.16)
|
||||
spring
|
||||
spring-watcher-listen (~> 2.0)
|
||||
validates_email_format_of (~> 1.6)
|
||||
webpacker (~> 4.2)
|
||||
webpacker (~> 5.2)
|
||||
|
||||
RUBY VERSION
|
||||
ruby 2.6.5p114
|
||||
ruby 2.7.2p137
|
||||
|
||||
BUNDLED WITH
|
||||
2.0.2
|
||||
2.2.2
|
||||
|
|
|
@ -12,10 +12,10 @@ This repo is a designed to be a Dockerized Rails 6 template:
|
|||
## Setup
|
||||
|
||||
- `bundle`
|
||||
- `Download latest copy of FontAwesome and replace vendor/fontawesome-pro/** (npm auth access has expired)`
|
||||
- `yarn install --check-files`
|
||||
- `Find/replace all TODO`
|
||||
- `docker-compose up --build`
|
||||
- `FONTAWESOME_NPM_AUTH_TOKEN=CHANGE_ME yarn add @fortawesome/fontawesome-pro`
|
||||
|
||||
### Dependencies
|
||||
|
||||
|
@ -56,7 +56,6 @@ To start the application using docker compose locally:
|
|||
| `DB_MIN_CONNECTIONS` | Db Minimum Connections | 5
|
||||
| `DB_SOCKET_TIMEOUT` | Db socket timeout | 5
|
||||
| `DB_WAIT_QUEUE_TIMEOUT` | Db Wait queue timeout | 5
|
||||
| `FONTAWESOME_NPM_AUTH_TOKEN` | FontAwesome Auth token | -
|
||||
| `LOG_LEVEL` | Log level | warn
|
||||
| `REDIS_URL` | Redis Url | redis://localhost:6379/0
|
||||
| `SMTP_HOST` | Smpt address | `localhost`
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
// $sidebar-width: 242px;
|
||||
|
||||
// Active Admin's got SASS!
|
||||
@import "active_admin/mixins";
|
||||
// @import "active_admin/mixins";
|
||||
@import "arctic_admin/base";
|
||||
|
||||
// Overriding any non-variable SASS must be done after the fact.
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
$primary-gradient: linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%);
|
||||
|
||||
@import "bulma"; // https://bulma.io/documentation/
|
||||
@import "./devise";
|
||||
@import "./shared/all";
|
||||
|
||||
html {
|
||||
background-image: radial-gradient(circle at 13% 47%, rgba(140, 140, 140,0.03) 0%, rgba(140, 140, 140,0.03) 25%,transparent 25%, transparent 100%),radial-gradient(circle at 28% 63%, rgba(143, 143, 143,0.03) 0%, rgba(143, 143, 143,0.03) 16%,transparent 16%, transparent 100%),radial-gradient(circle at 81% 56%, rgba(65, 65, 65,0.03) 0%, rgba(65, 65, 65,0.03) 12%,transparent 12%, transparent 100%),radial-gradient(circle at 26% 48%, rgba(60, 60, 60,0.03) 0%, rgba(60, 60, 60,0.03) 6%,transparent 6%, transparent 100%),radial-gradient(circle at 97% 17%, rgba(150, 150, 150,0.03) 0%, rgba(150, 150, 150,0.03) 56%,transparent 56%, transparent 100%),radial-gradient(circle at 50% 100%, rgba(25, 25, 25,0.03) 0%, rgba(25, 25, 25,0.03) 36%,transparent 36%, transparent 100%),radial-gradient(circle at 55% 52%, rgba(69, 69, 69,0.03) 0%, rgba(69, 69, 69,0.03) 6%,transparent 6%, transparent 100%),linear-gradient(90deg, rgb(255,255,255),rgb(255,255,255));
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
#registrations, #passwords {
|
||||
padding-top: $size-1;
|
||||
}
|
||||
|
||||
#registrations-column {
|
||||
background-color: $white;
|
||||
padding: $size-6;
|
||||
}
|
||||
|
||||
#registrations-column-form, #registrations-column-form-submit-button,
|
||||
#registration-edit-account-deletion-container, #registrations-edit-passwords,
|
||||
#registrations-edit-update-password, #passwords-column-form, #unlocks-column-form,
|
||||
#confirmations-column-form {
|
||||
padding: $size-3;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
@import "./spacing";
|
|
@ -0,0 +1,12 @@
|
|||
.top-p__1 {
|
||||
padding-top: $size-1;
|
||||
}
|
||||
|
||||
.with-background-p__6 {
|
||||
background-color: $white;
|
||||
padding: $size-6;
|
||||
}
|
||||
|
||||
.p__3 {
|
||||
padding: $size-3;
|
||||
}
|
|
@ -1 +1,2 @@
|
|||
require("./navbar")
|
||||
require("./notification")
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
class User < ApplicationRecord
|
||||
acts_as_paranoid
|
||||
|
||||
before
|
||||
|
||||
# Include default devise modules. Others available are:
|
||||
# :omniauthable
|
||||
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="container is-fluid" id="passwords">
|
||||
<div class="container is-fluid top-p__1">
|
||||
<div class="columns is-centered is-mobile">
|
||||
<div id="registrations-column" class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop">
|
||||
<div class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop with-background-p__6">
|
||||
<section class="hero is-primary">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
|
@ -11,7 +11,7 @@
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<div id="confirmations-column-form">
|
||||
<div class="p__3">
|
||||
<%= simple_form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f| %>
|
||||
<div class="field">
|
||||
<%= f.label :email, class: "label" %>
|
||||
|
@ -33,7 +33,7 @@
|
|||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p class="control" id="registrations-column-form-submit-button">
|
||||
<p class="control p__3">
|
||||
<%= f.button :submit, "Resend confirmation", class: "button is-primary is-fullwidth is-rounded" %>
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="container is-fluid" id="passwords">
|
||||
<div class="container is-fluid top-p__1">
|
||||
<div class="columns is-centered is-mobile">
|
||||
<div id="registrations-column" class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop">
|
||||
<div class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop with-background-p__6">
|
||||
<section class="hero is-primary">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
|
@ -11,7 +11,7 @@
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<div id="passwords-column-form">
|
||||
<div class="p__3">
|
||||
<%= simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %>
|
||||
<%= f.input :reset_password_token, as: :hidden %>
|
||||
<%= f.full_error :reset_password_token %>
|
||||
|
@ -53,7 +53,7 @@
|
|||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p class="control" id="registrations-column-form-submit-button">
|
||||
<p class="control p__3">
|
||||
<%= f.button :submit, "Update password", class: "button is-primary is-fullwidth is-rounded" %>
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="container is-fluid" id="passwords">
|
||||
<div class="container is-fluid top-p__1">
|
||||
<div class="columns is-centered is-mobile">
|
||||
<div id="registrations-column" class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop">
|
||||
<div class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop with-background-p__6">
|
||||
<section class="hero is-primary">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
|
@ -11,7 +11,7 @@
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<div id="passwords-column-form">
|
||||
<div class="p__3">
|
||||
<%= simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %>
|
||||
<div class="field">
|
||||
<%= f.label :email, class: "label" %>
|
||||
|
@ -32,7 +32,7 @@
|
|||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p class="control" id="registrations-column-form-submit-button">
|
||||
<p class="control p__3">
|
||||
<%= f.button :submit, "Reset password", class: "button is-primary is-fullwidth is-rounded" %>
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="container is-fluid" id="registrations" data-controller="notification">
|
||||
<div class="container is-fluid top-p__1" data-controller="notification">
|
||||
<div class="columns is-centered">
|
||||
<div id="registrations-column" class="column is-four-fifths is-two-thirds-tablet is-half-desktop">
|
||||
<div class="p__3 column is-four-fifths is-two-thirds-tablet is-half-desktop">
|
||||
<section class="hero is-primary">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
|
@ -11,7 +11,7 @@
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<div id="registrations-column-form">
|
||||
<div class="p__3">
|
||||
<% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
|
||||
<div class="notification is-warning">
|
||||
<button class="delete"></button>
|
||||
|
@ -35,8 +35,8 @@
|
|||
<%= f.full_error :email, class: "help is-danger" %>
|
||||
</div>
|
||||
|
||||
<div id="registrations-edit-passwords">
|
||||
<%= link_to "Change password", "#", id: "registration-edit-password-button", class: "button is-fullwidth is-rounded" %>
|
||||
<div class="p__3">
|
||||
<%= link_to "Change password", "#", id: "registration-edit-password-button", class: "p__3 button is-fullwidth is-rounded" %>
|
||||
|
||||
<div class="toggleable" id="registrations-edit-update-password">
|
||||
<div class="notification">
|
||||
|
@ -88,7 +88,7 @@
|
|||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p class="control" id="registrations-column-form-submit-button">
|
||||
<p class="control p__3">
|
||||
<%= f.button :submit, "Update Account", class: "button is-primary is-fullwidth is-rounded" %>
|
||||
</p>
|
||||
</div>
|
||||
|
@ -111,7 +111,7 @@
|
|||
<div class="message-body">
|
||||
<strong>Warning!</strong> Account deletion is permanant and can not be recovered.
|
||||
|
||||
<div class="is-centered" id="registration-edit-account-deletion-container">
|
||||
<div class="is-centered p__3">
|
||||
<%= link_to "Delete My Account", registration_path(resource_name),
|
||||
data: { confirm: "Are you sure?" }, method: :delete,
|
||||
class: "button is-danger is-two-thirds is-rounded" %>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="container is-fluid" id="registrations">
|
||||
<div class="container is-fluid top-p__1">
|
||||
<div class="columns is-centered is-mobile">
|
||||
<div id="registrations-column" class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop">
|
||||
<div class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop with-background-p__6">
|
||||
<section class="hero is-primary">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
|
@ -11,7 +11,7 @@
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<div id="registrations-column-form">
|
||||
<div class="p__3">
|
||||
<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
|
||||
<div class="field">
|
||||
<%= f.label :email, class: "label" %>
|
||||
|
@ -58,7 +58,7 @@
|
|||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p class="control" id="registrations-column-form-submit-button">
|
||||
<p class="control p__3">
|
||||
<%= f.button :submit, "Sign up", class: "button is-primary is-fullwidth is-rounded" %>
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="container is-fluid" id="registrations">
|
||||
<div class="container is-fluid top-p__1">
|
||||
<div class="columns is-centered">
|
||||
<div id="registrations-column" class="column is-four-fifths is-two-thirds-tablet is-half-desktop">
|
||||
<div class="column is-four-fifths is-two-thirds-tablet is-half-desktop with-background-p__6">
|
||||
<section class="hero is-primary">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
|
@ -11,7 +11,7 @@
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<div id="registrations-column-form">
|
||||
<div class="p__3">
|
||||
<%= simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
|
||||
<div class="field">
|
||||
<%= f.label :email, class: "label" %>
|
||||
|
@ -45,7 +45,7 @@
|
|||
<%= f.label :remember_me, class: "checkbox" %>
|
||||
|
||||
<div class="field">
|
||||
<p class="control" id="registrations-column-form-submit-button">
|
||||
<p class="control p__3">
|
||||
<%= f.button :submit, "Sign in", class: "button is-primary is-fullwidth is-rounded" %>
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="container is-fluid" id="passwords">
|
||||
<div class="container is-fluid top-p__1">
|
||||
<div class="columns is-centered is-mobile">
|
||||
<div id="registrations-column" class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop">
|
||||
<div class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop with-background-p__6">
|
||||
<section class="hero is-primary">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
|
@ -11,7 +11,7 @@
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<div id="unlocks-column-form">
|
||||
<div class="p__3">
|
||||
<%= simple_form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f| %>
|
||||
<div class="field">
|
||||
<%= f.label :email, class: "label" %>
|
||||
|
@ -32,7 +32,7 @@
|
|||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p class="control" id="registrations-column-form-submit-button">
|
||||
<p class="control p__3">
|
||||
<%= f.button :submit, "Send unlock instructions", class: "button is-primary is-fullwidth is-rounded" %>
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div id="home-index">
|
||||
<div class="home-index">
|
||||
<section class="hero is-medium is-primary is-bold">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
|
|
|
@ -56,9 +56,7 @@ module.exports = function(api) {
|
|||
[
|
||||
'@babel/plugin-transform-runtime',
|
||||
{
|
||||
helpers: false,
|
||||
regenerator: true,
|
||||
corejs: false
|
||||
helpers: false
|
||||
}
|
||||
],
|
||||
[
|
||||
|
|
19
bin/webpack
19
bin/webpack
|
@ -1,19 +1,18 @@
|
|||
#!/usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
ENV['RAILS_ENV'] ||= ENV['RACK_ENV'] || 'development'
|
||||
ENV['NODE_ENV'] ||= 'development'
|
||||
ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development"
|
||||
ENV["NODE_ENV"] ||= "development"
|
||||
|
||||
require 'pathname'
|
||||
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile',
|
||||
Pathname.new(__FILE__).realpath)
|
||||
require "pathname"
|
||||
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
||||
Pathname.new(__FILE__).realpath)
|
||||
|
||||
require 'bundler/setup'
|
||||
require "bundler/setup"
|
||||
|
||||
require 'webpacker'
|
||||
require 'webpacker/webpack_runner'
|
||||
require "webpacker"
|
||||
require "webpacker/webpack_runner"
|
||||
|
||||
APP_ROOT = File.expand_path('..', __dir__)
|
||||
APP_ROOT = File.expand_path("..", __dir__)
|
||||
Dir.chdir(APP_ROOT) do
|
||||
Webpacker::WebpackRunner.run(ARGV)
|
||||
end
|
||||
|
|
|
@ -1,19 +1,18 @@
|
|||
#!/usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
ENV['RAILS_ENV'] ||= ENV['RACK_ENV'] || 'development'
|
||||
ENV['NODE_ENV'] ||= 'development'
|
||||
ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development"
|
||||
ENV["NODE_ENV"] ||= "development"
|
||||
|
||||
require 'pathname'
|
||||
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile',
|
||||
Pathname.new(__FILE__).realpath)
|
||||
require "pathname"
|
||||
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
||||
Pathname.new(__FILE__).realpath)
|
||||
|
||||
require 'bundler/setup'
|
||||
require "bundler/setup"
|
||||
|
||||
require 'webpacker'
|
||||
require 'webpacker/dev_server_runner'
|
||||
require "webpacker"
|
||||
require "webpacker/dev_server_runner"
|
||||
|
||||
APP_ROOT = File.expand_path('..', __dir__)
|
||||
APP_ROOT = File.expand_path("..", __dir__)
|
||||
Dir.chdir(APP_ROOT) do
|
||||
Webpacker::DevServerRunner.run(ARGV)
|
||||
end
|
||||
|
|
|
@ -1,11 +1,3 @@
|
|||
const { environment } = require('@rails/webpacker')
|
||||
const webpack = require('webpack')
|
||||
|
||||
environment.plugins.prepend('Provide',
|
||||
new webpack.ProvidePlugin({
|
||||
$: 'jquery/src/jquery',
|
||||
jQuery: 'jquery/src/jquery'
|
||||
})
|
||||
)
|
||||
|
||||
module.exports = environment
|
||||
|
|
|
@ -6,18 +6,17 @@ default: &default
|
|||
public_root_path: public
|
||||
public_output_path: packs
|
||||
cache_path: tmp/cache/webpacker
|
||||
check_yarn_integrity: false
|
||||
webpack_compile_output: true
|
||||
|
||||
# Additional paths webpack should lookup modules
|
||||
# ['app/assets', 'engine/foo/app/assets']
|
||||
resolved_paths: []
|
||||
additional_paths: []
|
||||
|
||||
# Reload manifest.json on all requests so we reload latest compiled packs
|
||||
cache_manifest: false
|
||||
|
||||
# Extract and emit a css file
|
||||
extract_css: true
|
||||
extract_css: false
|
||||
|
||||
static_assets_extensions:
|
||||
- .jpg
|
||||
|
@ -50,22 +49,15 @@ default: &default
|
|||
|
||||
development:
|
||||
<<: *default
|
||||
compile: false
|
||||
|
||||
# Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules
|
||||
# check_yarn_integrity: true
|
||||
check_yarn_integrity: false
|
||||
compile: true
|
||||
|
||||
# Reference: https://webpack.js.org/configuration/dev-server/
|
||||
dev_server:
|
||||
https: false
|
||||
# Non-docker: localhost
|
||||
host: webpacker
|
||||
host: localhost
|
||||
port: 3035
|
||||
# Non-docker: localhost:3035
|
||||
public: webpacker:3035
|
||||
public: localhost:3035
|
||||
hmr: false
|
||||
# hmr: true
|
||||
# Inline should be set to true if using HMR
|
||||
inline: true
|
||||
overlay: true
|
||||
|
@ -77,7 +69,6 @@ development:
|
|||
headers:
|
||||
'Access-Control-Allow-Origin': '*'
|
||||
watch_options:
|
||||
poll: true
|
||||
ignored: '**/node_modules/**'
|
||||
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
# of editing this file, please use the migrations feature of Active Record to
|
||||
# incrementally modify your database, and then regenerate this schema definition.
|
||||
#
|
||||
# This file is the source Rails uses to define your schema when running `rails
|
||||
# db:schema:load`. When creating a new database, `rails db:schema:load` tends to
|
||||
# This file is the source Rails uses to define your schema when running `bin/rails
|
||||
# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
|
||||
# be faster and is potentially less error prone than running all of your
|
||||
# migrations from scratch. Old migrations may fail to apply correctly if those
|
||||
# migrations use external dependencies or application code.
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
version: "2.1"
|
||||
---
|
||||
version: "2.1"
|
||||
services:
|
||||
mailcatcher:
|
||||
image: jeanberu/mailcatcher:0.6.5
|
||||
|
@ -7,22 +8,22 @@ services:
|
|||
- "1025:1025"
|
||||
|
||||
postgres:
|
||||
image: "postgres:11.5-alpine"
|
||||
image: "postgres:13-alpine"
|
||||
environment:
|
||||
POSTGRES_USER: "user"
|
||||
POSTGRES_PASSWORD: "password"
|
||||
ports:
|
||||
- "5432:5432"
|
||||
volumes:
|
||||
- /usr/local/var/postgres/data:/var/lib/postgresql/data
|
||||
- ./tmp/postgres/data:/var/lib/postgresql/data
|
||||
|
||||
redis:
|
||||
image: redis:5.0-alpine
|
||||
image: redis:6.0-alpine
|
||||
command: redis-server
|
||||
expose:
|
||||
- "6379"
|
||||
volumes:
|
||||
- /usr/local/var/redis/data:/var/lib/redis/data
|
||||
- ./tmp/redis/data:/var/lib/redis/data
|
||||
healthcheck:
|
||||
test: "redis-cli ping"
|
||||
interval: 5s
|
||||
|
@ -38,20 +39,20 @@ services:
|
|||
volumes:
|
||||
- .:/app
|
||||
env_file:
|
||||
- '.env.docker'
|
||||
- ".env.docker"
|
||||
|
||||
webpacker:
|
||||
build: .
|
||||
environment:
|
||||
- WEBPACKER_DEV_SERVER_HOST=0.0.0.0
|
||||
env_file:
|
||||
- '.env.docker'
|
||||
- ".env.docker"
|
||||
command: ./bin/webpack-dev-server
|
||||
volumes:
|
||||
- .:/app
|
||||
ports:
|
||||
- '3035:3035'
|
||||
- '8080:8080'
|
||||
- "3035:3035"
|
||||
- "8080:8080"
|
||||
|
||||
app:
|
||||
build: .
|
||||
|
@ -68,4 +69,4 @@ services:
|
|||
stdin_open: true
|
||||
tty: true
|
||||
env_file:
|
||||
- '.env.docker'
|
||||
- ".env.docker"
|
||||
|
|
|
@ -2,15 +2,16 @@
|
|||
"name": "app",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-pro/": "file:./vendor/fontawesome-pro",
|
||||
"@rails/actioncable": "^6.0.0",
|
||||
"@rails/ujs": "^6.0.0",
|
||||
"@rails/webpacker": "4.2.2",
|
||||
"@rails/webpacker": "5.2.1",
|
||||
"jquery": "^3.4.1",
|
||||
"stimulus": "^1.1.1",
|
||||
"stimulus": "^2.0.0",
|
||||
"turbolinks": "^5.2.0"
|
||||
},
|
||||
"version": "0.1.0",
|
||||
"devDependencies": {
|
||||
"webpack-dev-server": "^3.10.3"
|
||||
"webpack-dev-server": "^3.11.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,10 +8,7 @@ set -e
|
|||
# cd to project root
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
export PROJECT_NAME="app" RAILS_ENV="test" RACK_ENV="test"
|
||||
|
||||
printf "\n===> Setting $RAILS_ENV environment ...\n"
|
||||
docker-compose run -e RAILS_ENV=$RAILS_ENV app rails db:environment:set
|
||||
export PROJECT_NAME="app_test" RAILS_ENV="test" RACK_ENV="test"
|
||||
|
||||
# setup test database
|
||||
printf "\n===> Migrating $RAILS_ENV database ...\n"
|
||||
|
@ -24,17 +21,16 @@ printf "\n** **"
|
|||
printf "\n** docker-compose run -e RAILS_ENV=$RAILS_ENV app rake db:create **"
|
||||
printf "\n** **"
|
||||
printf "\n*************************************************************"
|
||||
printf "\n*************************************************************"
|
||||
docker-compose run -e RAILS_ENV=$RAILS_ENV app rake db:drop db:create db:migrate
|
||||
printf "\n*************************************************************\n"
|
||||
|
||||
# run tests
|
||||
printf "\n===> Running tests ...\n"
|
||||
docker-compose run -e RAILS_ENV=$RAILS_ENV app rails db:environment:set
|
||||
|
||||
printf "\n===> Running tests ...\n";
|
||||
|
||||
if [ -n "$1" ]; then
|
||||
# pass arguments to test call. This is useful for calling a single test.
|
||||
docker-compose --project-name=$PROJECT_NAME run -e RAILS_ENV=$RAILS_ENV --rm app rspec "$1"
|
||||
docker-compose run -e RAILS_ENV=$RAILS_ENV app rspec "$1"
|
||||
else
|
||||
docker-compose --project-name=$PROJECT_NAME run -e RAILS_ENV=$RAILS_ENV --rm app rspec
|
||||
docker-compose run -e RAILS_ENV=$RAILS_ENV app rspec
|
||||
fi
|
||||
|
||||
docker-compose down
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,18 @@
|
|||
Font Awesome Pro License
|
||||
------------------------
|
||||
|
||||
Font Awesome Pro is commercial software that requires a paid license. Full
|
||||
Font Awesome Pro license: https://fontawesome.com/license.
|
||||
|
||||
# Commercial License
|
||||
The Font Awesome Pro commercial license allows you to pay for FA Pro once, own
|
||||
it, and use it just about everywhere you'd like.
|
||||
|
||||
# Attribution
|
||||
Attribution is not required by the Font Awesome Pro commercial license.
|
||||
|
||||
# Brand Icons
|
||||
All brand icons are trademarks of their respective owners. The use of these
|
||||
trademarks does not indicate endorsement of the trademark holder by Font
|
||||
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
|
||||
to represent the company, product, or service to which they refer.**
|
|
@ -0,0 +1,3 @@
|
|||
console.log(`Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
License - https://fontawesome.com/license (Commercial License)
|
||||
`)
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,15 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Brands';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-brands-400.eot");
|
||||
src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); }
|
||||
|
||||
.fab {
|
||||
font-family: 'Font Awesome 5 Brands';
|
||||
font-weight: 400; }
|
|
@ -0,0 +1,5 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands";font-weight:400}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,15 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-light-300.eot");
|
||||
src: url("../webfonts/fa-light-300.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-light-300.woff2") format("woff2"), url("../webfonts/fa-light-300.woff") format("woff"), url("../webfonts/fa-light-300.ttf") format("truetype"), url("../webfonts/fa-light-300.svg#fontawesome") format("svg"); }
|
||||
|
||||
.fal {
|
||||
font-family: 'Font Awesome 5 Pro';
|
||||
font-weight: 300; }
|
|
@ -0,0 +1,5 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:300;font-display:block;src:url(../webfonts/fa-light-300.eot);src:url(../webfonts/fa-light-300.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-light-300.woff2) format("woff2"),url(../webfonts/fa-light-300.woff) format("woff"),url(../webfonts/fa-light-300.ttf) format("truetype"),url(../webfonts/fa-light-300.svg#fontawesome) format("svg")}.fal{font-family:"Font Awesome 5 Pro";font-weight:300}
|
|
@ -0,0 +1,15 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-regular-400.eot");
|
||||
src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); }
|
||||
|
||||
.far {
|
||||
font-family: 'Font Awesome 5 Pro';
|
||||
font-weight: 400; }
|
|
@ -0,0 +1,5 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Pro";font-weight:400}
|
|
@ -0,0 +1,16 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Pro';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-solid-900.eot");
|
||||
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }
|
||||
|
||||
.fa,
|
||||
.fas {
|
||||
font-family: 'Font Awesome 5 Pro';
|
||||
font-weight: 900; }
|
|
@ -0,0 +1,5 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Pro";font-weight:900}
|
|
@ -0,0 +1,371 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
svg:not(:root).svg-inline--fa {
|
||||
overflow: visible; }
|
||||
|
||||
.svg-inline--fa {
|
||||
display: inline-block;
|
||||
font-size: inherit;
|
||||
height: 1em;
|
||||
overflow: visible;
|
||||
vertical-align: -.125em; }
|
||||
.svg-inline--fa.fa-lg {
|
||||
vertical-align: -.225em; }
|
||||
.svg-inline--fa.fa-w-1 {
|
||||
width: 0.0625em; }
|
||||
.svg-inline--fa.fa-w-2 {
|
||||
width: 0.125em; }
|
||||
.svg-inline--fa.fa-w-3 {
|
||||
width: 0.1875em; }
|
||||
.svg-inline--fa.fa-w-4 {
|
||||
width: 0.25em; }
|
||||
.svg-inline--fa.fa-w-5 {
|
||||
width: 0.3125em; }
|
||||
.svg-inline--fa.fa-w-6 {
|
||||
width: 0.375em; }
|
||||
.svg-inline--fa.fa-w-7 {
|
||||
width: 0.4375em; }
|
||||
.svg-inline--fa.fa-w-8 {
|
||||
width: 0.5em; }
|
||||
.svg-inline--fa.fa-w-9 {
|
||||
width: 0.5625em; }
|
||||
.svg-inline--fa.fa-w-10 {
|
||||
width: 0.625em; }
|
||||
.svg-inline--fa.fa-w-11 {
|
||||
width: 0.6875em; }
|
||||
.svg-inline--fa.fa-w-12 {
|
||||
width: 0.75em; }
|
||||
.svg-inline--fa.fa-w-13 {
|
||||
width: 0.8125em; }
|
||||
.svg-inline--fa.fa-w-14 {
|
||||
width: 0.875em; }
|
||||
.svg-inline--fa.fa-w-15 {
|
||||
width: 0.9375em; }
|
||||
.svg-inline--fa.fa-w-16 {
|
||||
width: 1em; }
|
||||
.svg-inline--fa.fa-w-17 {
|
||||
width: 1.0625em; }
|
||||
.svg-inline--fa.fa-w-18 {
|
||||
width: 1.125em; }
|
||||
.svg-inline--fa.fa-w-19 {
|
||||
width: 1.1875em; }
|
||||
.svg-inline--fa.fa-w-20 {
|
||||
width: 1.25em; }
|
||||
.svg-inline--fa.fa-pull-left {
|
||||
margin-right: .3em;
|
||||
width: auto; }
|
||||
.svg-inline--fa.fa-pull-right {
|
||||
margin-left: .3em;
|
||||
width: auto; }
|
||||
.svg-inline--fa.fa-border {
|
||||
height: 1.5em; }
|
||||
.svg-inline--fa.fa-li {
|
||||
width: 2em; }
|
||||
.svg-inline--fa.fa-fw {
|
||||
width: 1.25em; }
|
||||
|
||||
.fa-layers svg.svg-inline--fa {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0; }
|
||||
|
||||
.fa-layers {
|
||||
display: inline-block;
|
||||
height: 1em;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
vertical-align: -.125em;
|
||||
width: 1em; }
|
||||
.fa-layers svg.svg-inline--fa {
|
||||
-webkit-transform-origin: center center;
|
||||
transform-origin: center center; }
|
||||
|
||||
.fa-layers-text, .fa-layers-counter {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
text-align: center; }
|
||||
|
||||
.fa-layers-text {
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
-webkit-transform: translate(-50%, -50%);
|
||||
transform: translate(-50%, -50%);
|
||||
-webkit-transform-origin: center center;
|
||||
transform-origin: center center; }
|
||||
|
||||
.fa-layers-counter {
|
||||
background-color: #ff253a;
|
||||
border-radius: 1em;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: #fff;
|
||||
height: 1.5em;
|
||||
line-height: 1;
|
||||
max-width: 5em;
|
||||
min-width: 1.5em;
|
||||
overflow: hidden;
|
||||
padding: .25em;
|
||||
right: 0;
|
||||
text-overflow: ellipsis;
|
||||
top: 0;
|
||||
-webkit-transform: scale(0.25);
|
||||
transform: scale(0.25);
|
||||
-webkit-transform-origin: top right;
|
||||
transform-origin: top right; }
|
||||
|
||||
.fa-layers-bottom-right {
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
top: auto;
|
||||
-webkit-transform: scale(0.25);
|
||||
transform: scale(0.25);
|
||||
-webkit-transform-origin: bottom right;
|
||||
transform-origin: bottom right; }
|
||||
|
||||
.fa-layers-bottom-left {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: auto;
|
||||
top: auto;
|
||||
-webkit-transform: scale(0.25);
|
||||
transform: scale(0.25);
|
||||
-webkit-transform-origin: bottom left;
|
||||
transform-origin: bottom left; }
|
||||
|
||||
.fa-layers-top-right {
|
||||
right: 0;
|
||||
top: 0;
|
||||
-webkit-transform: scale(0.25);
|
||||
transform: scale(0.25);
|
||||
-webkit-transform-origin: top right;
|
||||
transform-origin: top right; }
|
||||
|
||||
.fa-layers-top-left {
|
||||
left: 0;
|
||||
right: auto;
|
||||
top: 0;
|
||||
-webkit-transform: scale(0.25);
|
||||
transform: scale(0.25);
|
||||
-webkit-transform-origin: top left;
|
||||
transform-origin: top left; }
|
||||
|
||||
.fa-lg {
|
||||
font-size: 1.33333em;
|
||||
line-height: 0.75em;
|
||||
vertical-align: -.0667em; }
|
||||
|
||||
.fa-xs {
|
||||
font-size: .75em; }
|
||||
|
||||
.fa-sm {
|
||||
font-size: .875em; }
|
||||
|
||||
.fa-1x {
|
||||
font-size: 1em; }
|
||||
|
||||
.fa-2x {
|
||||
font-size: 2em; }
|
||||
|
||||
.fa-3x {
|
||||
font-size: 3em; }
|
||||
|
||||
.fa-4x {
|
||||
font-size: 4em; }
|
||||
|
||||
.fa-5x {
|
||||
font-size: 5em; }
|
||||
|
||||
.fa-6x {
|
||||
font-size: 6em; }
|
||||
|
||||
.fa-7x {
|
||||
font-size: 7em; }
|
||||
|
||||
.fa-8x {
|
||||
font-size: 8em; }
|
||||
|
||||
.fa-9x {
|
||||
font-size: 9em; }
|
||||
|
||||
.fa-10x {
|
||||
font-size: 10em; }
|
||||
|
||||
.fa-fw {
|
||||
text-align: center;
|
||||
width: 1.25em; }
|
||||
|
||||
.fa-ul {
|
||||
list-style-type: none;
|
||||
margin-left: 2.5em;
|
||||
padding-left: 0; }
|
||||
.fa-ul > li {
|
||||
position: relative; }
|
||||
|
||||
.fa-li {
|
||||
left: -2em;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: 2em;
|
||||
line-height: inherit; }
|
||||
|
||||
.fa-border {
|
||||
border: solid 0.08em #eee;
|
||||
border-radius: .1em;
|
||||
padding: .2em .25em .15em; }
|
||||
|
||||
.fa-pull-left {
|
||||
float: left; }
|
||||
|
||||
.fa-pull-right {
|
||||
float: right; }
|
||||
|
||||
.fa.fa-pull-left,
|
||||
.fas.fa-pull-left,
|
||||
.far.fa-pull-left,
|
||||
.fal.fa-pull-left,
|
||||
.fab.fa-pull-left {
|
||||
margin-right: .3em; }
|
||||
|
||||
.fa.fa-pull-right,
|
||||
.fas.fa-pull-right,
|
||||
.far.fa-pull-right,
|
||||
.fal.fa-pull-right,
|
||||
.fab.fa-pull-right {
|
||||
margin-left: .3em; }
|
||||
|
||||
.fa-spin {
|
||||
-webkit-animation: fa-spin 2s infinite linear;
|
||||
animation: fa-spin 2s infinite linear; }
|
||||
|
||||
.fa-pulse {
|
||||
-webkit-animation: fa-spin 1s infinite steps(8);
|
||||
animation: fa-spin 1s infinite steps(8); }
|
||||
|
||||
@-webkit-keyframes fa-spin {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
@keyframes fa-spin {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
.fa-rotate-90 {
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
|
||||
-webkit-transform: rotate(90deg);
|
||||
transform: rotate(90deg); }
|
||||
|
||||
.fa-rotate-180 {
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
|
||||
-webkit-transform: rotate(180deg);
|
||||
transform: rotate(180deg); }
|
||||
|
||||
.fa-rotate-270 {
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
|
||||
-webkit-transform: rotate(270deg);
|
||||
transform: rotate(270deg); }
|
||||
|
||||
.fa-flip-horizontal {
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
|
||||
-webkit-transform: scale(-1, 1);
|
||||
transform: scale(-1, 1); }
|
||||
|
||||
.fa-flip-vertical {
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
|
||||
-webkit-transform: scale(1, -1);
|
||||
transform: scale(1, -1); }
|
||||
|
||||
.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
|
||||
-webkit-transform: scale(-1, -1);
|
||||
transform: scale(-1, -1); }
|
||||
|
||||
:root .fa-rotate-90,
|
||||
:root .fa-rotate-180,
|
||||
:root .fa-rotate-270,
|
||||
:root .fa-flip-horizontal,
|
||||
:root .fa-flip-vertical,
|
||||
:root .fa-flip-both {
|
||||
-webkit-filter: none;
|
||||
filter: none; }
|
||||
|
||||
.fa-stack {
|
||||
display: inline-block;
|
||||
height: 2em;
|
||||
position: relative;
|
||||
width: 2.5em; }
|
||||
|
||||
.fa-stack-1x,
|
||||
.fa-stack-2x {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0; }
|
||||
|
||||
.svg-inline--fa.fa-stack-1x {
|
||||
height: 1em;
|
||||
width: 1.25em; }
|
||||
|
||||
.svg-inline--fa.fa-stack-2x {
|
||||
height: 2em;
|
||||
width: 2.5em; }
|
||||
|
||||
.fa-inverse {
|
||||
color: #fff; }
|
||||
|
||||
.sr-only {
|
||||
border: 0;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: 1px; }
|
||||
|
||||
.sr-only-focusable:active, .sr-only-focusable:focus {
|
||||
clip: auto;
|
||||
height: auto;
|
||||
margin: 0;
|
||||
overflow: visible;
|
||||
position: static;
|
||||
width: auto; }
|
||||
|
||||
.svg-inline--fa .fa-primary {
|
||||
fill: var(--fa-primary-color, currentColor);
|
||||
opacity: 1;
|
||||
opacity: var(--fa-primary-opacity, 1); }
|
||||
|
||||
.svg-inline--fa .fa-secondary {
|
||||
fill: var(--fa-secondary-color, currentColor);
|
||||
opacity: 0.4;
|
||||
opacity: var(--fa-secondary-opacity, 0.4); }
|
||||
|
||||
.svg-inline--fa.fa-swap-opacity .fa-primary {
|
||||
opacity: 0.4;
|
||||
opacity: var(--fa-secondary-opacity, 0.4); }
|
||||
|
||||
.svg-inline--fa.fa-swap-opacity .fa-secondary {
|
||||
opacity: 1;
|
||||
opacity: var(--fa-primary-opacity, 1); }
|
||||
|
||||
.svg-inline--fa mask .fa-primary,
|
||||
.svg-inline--fa mask .fa-secondary {
|
||||
fill: black; }
|
||||
|
||||
.fad.fa-inverse {
|
||||
color: #fff; }
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,998 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
||||
(factory((global['fontawesome-pro-conflict-detection'] = {})));
|
||||
}(this, (function (exports) { 'use strict';
|
||||
|
||||
function _typeof(obj) {
|
||||
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
||||
_typeof = function (obj) {
|
||||
return typeof obj;
|
||||
};
|
||||
} else {
|
||||
_typeof = function (obj) {
|
||||
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
||||
};
|
||||
}
|
||||
|
||||
return _typeof(obj);
|
||||
}
|
||||
|
||||
function _defineProperty(obj, key, value) {
|
||||
if (key in obj) {
|
||||
Object.defineProperty(obj, key, {
|
||||
value: value,
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
writable: true
|
||||
});
|
||||
} else {
|
||||
obj[key] = value;
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
function _objectSpread(target) {
|
||||
for (var i = 1; i < arguments.length; i++) {
|
||||
var source = arguments[i] != null ? arguments[i] : {};
|
||||
var ownKeys = Object.keys(source);
|
||||
|
||||
if (typeof Object.getOwnPropertySymbols === 'function') {
|
||||
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
|
||||
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
||||
}));
|
||||
}
|
||||
|
||||
ownKeys.forEach(function (key) {
|
||||
_defineProperty(target, key, source[key]);
|
||||
});
|
||||
}
|
||||
|
||||
return target;
|
||||
}
|
||||
|
||||
var _WINDOW = {};
|
||||
var _DOCUMENT = {};
|
||||
|
||||
try {
|
||||
if (typeof window !== 'undefined') _WINDOW = window;
|
||||
if (typeof document !== 'undefined') _DOCUMENT = document;
|
||||
} catch (e) {}
|
||||
|
||||
var _ref = _WINDOW.navigator || {},
|
||||
_ref$userAgent = _ref.userAgent,
|
||||
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
|
||||
|
||||
var WINDOW = _WINDOW;
|
||||
var DOCUMENT = _DOCUMENT;
|
||||
var IS_BROWSER = !!WINDOW.document;
|
||||
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
|
||||
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
|
||||
|
||||
var functions = [];
|
||||
|
||||
var listener = function listener() {
|
||||
DOCUMENT.removeEventListener('DOMContentLoaded', listener);
|
||||
loaded = 1;
|
||||
functions.map(function (fn) {
|
||||
return fn();
|
||||
});
|
||||
};
|
||||
|
||||
var loaded = false;
|
||||
|
||||
if (IS_DOM) {
|
||||
loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);
|
||||
if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);
|
||||
}
|
||||
|
||||
function domready (fn) {
|
||||
if (!IS_DOM) return;
|
||||
loaded ? setTimeout(fn, 0) : functions.push(fn);
|
||||
}
|
||||
|
||||
function report (_ref) {
|
||||
var nodesTested = _ref.nodesTested,
|
||||
nodesFound = _ref.nodesFound;
|
||||
var timedOutTests = {};
|
||||
|
||||
for (var key in nodesFound) {
|
||||
if (!(nodesTested.conflict[key] || nodesTested.noConflict[key])) {
|
||||
timedOutTests[key] = nodesFound[key];
|
||||
}
|
||||
}
|
||||
|
||||
var conflictsCount = Object.keys(nodesTested.conflict).length;
|
||||
|
||||
if (conflictsCount > 0) {
|
||||
console.info("%cConflict".concat(conflictsCount > 1 ? 's' : '', " found:"), 'color: darkred; font-size: large');
|
||||
var data = {};
|
||||
|
||||
for (var _key in nodesTested.conflict) {
|
||||
var item = nodesTested.conflict[_key];
|
||||
data[_key] = {
|
||||
'tagName': item.tagName,
|
||||
'src/href': item.src || item.href || 'n/a',
|
||||
'innerText excerpt': item.innerText && item.innerText !== '' ? item.innerText.slice(0, 200) + '...' : '(empty)'
|
||||
};
|
||||
}
|
||||
|
||||
console.table(data);
|
||||
}
|
||||
|
||||
var noConflictsCount = Object.keys(nodesTested.noConflict).length;
|
||||
|
||||
if (noConflictsCount > 0) {
|
||||
console.info("%cNo conflict".concat(noConflictsCount > 1 ? 's' : '', " found with ").concat(noConflictsCount == 1 ? 'this' : 'these', ":"), 'color: green; font-size: large');
|
||||
var _data = {};
|
||||
|
||||
for (var _key2 in nodesTested.noConflict) {
|
||||
var _item = nodesTested.noConflict[_key2];
|
||||
_data[_key2] = {
|
||||
'tagName': _item.tagName,
|
||||
'src/href': _item.src || _item.href || 'n/a',
|
||||
'innerText excerpt': _item.innerText && _item.innerText !== '' ? _item.innerText.slice(0, 200) + '...' : '(empty)'
|
||||
};
|
||||
}
|
||||
|
||||
console.table(_data);
|
||||
}
|
||||
|
||||
var timeOutCount = Object.keys(timedOutTests).length;
|
||||
|
||||
if (timeOutCount > 0) {
|
||||
console.info("%cLeftovers--we timed out before collecting test results for ".concat(timeOutCount == 1 ? 'this' : 'these', ":"), 'color: blue; font-size: large');
|
||||
var _data2 = {};
|
||||
|
||||
for (var _key3 in timedOutTests) {
|
||||
var _item2 = timedOutTests[_key3];
|
||||
_data2[_key3] = {
|
||||
'tagName': _item2.tagName,
|
||||
'src/href': _item2.src || _item2.href || 'n/a',
|
||||
'innerText excerpt': _item2.innerText && _item2.innerText !== '' ? _item2.innerText.slice(0, 200) + '...' : '(empty)'
|
||||
};
|
||||
}
|
||||
|
||||
console.table(_data2);
|
||||
}
|
||||
}
|
||||
|
||||
var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
||||
|
||||
function createCommonjsModule(fn, module) {
|
||||
return module = { exports: {} }, fn(module, module.exports), module.exports;
|
||||
}
|
||||
|
||||
var md5 = createCommonjsModule(function (module) {
|
||||
|
||||
(function ($) {
|
||||
/**
|
||||
* Add integers, wrapping at 2^32.
|
||||
* This uses 16-bit operations internally to work around bugs in interpreters.
|
||||
*
|
||||
* @param {number} x First integer
|
||||
* @param {number} y Second integer
|
||||
* @returns {number} Sum
|
||||
*/
|
||||
|
||||
function safeAdd(x, y) {
|
||||
var lsw = (x & 0xffff) + (y & 0xffff);
|
||||
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
||||
return msw << 16 | lsw & 0xffff;
|
||||
}
|
||||
/**
|
||||
* Bitwise rotate a 32-bit number to the left.
|
||||
*
|
||||
* @param {number} num 32-bit number
|
||||
* @param {number} cnt Rotation count
|
||||
* @returns {number} Rotated number
|
||||
*/
|
||||
|
||||
|
||||
function bitRotateLeft(num, cnt) {
|
||||
return num << cnt | num >>> 32 - cnt;
|
||||
}
|
||||
/**
|
||||
* Basic operation the algorithm uses.
|
||||
*
|
||||
* @param {number} q q
|
||||
* @param {number} a a
|
||||
* @param {number} b b
|
||||
* @param {number} x x
|
||||
* @param {number} s s
|
||||
* @param {number} t t
|
||||
* @returns {number} Result
|
||||
*/
|
||||
|
||||
|
||||
function md5cmn(q, a, b, x, s, t) {
|
||||
return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
|
||||
}
|
||||
/**
|
||||
* Basic operation the algorithm uses.
|
||||
*
|
||||
* @param {number} a a
|
||||
* @param {number} b b
|
||||
* @param {number} c c
|
||||
* @param {number} d d
|
||||
* @param {number} x x
|
||||
* @param {number} s s
|
||||
* @param {number} t t
|
||||
* @returns {number} Result
|
||||
*/
|
||||
|
||||
|
||||
function md5ff(a, b, c, d, x, s, t) {
|
||||
return md5cmn(b & c | ~b & d, a, b, x, s, t);
|
||||
}
|
||||
/**
|
||||
* Basic operation the algorithm uses.
|
||||
*
|
||||
* @param {number} a a
|
||||
* @param {number} b b
|
||||
* @param {number} c c
|
||||
* @param {number} d d
|
||||
* @param {number} x x
|
||||
* @param {number} s s
|
||||
* @param {number} t t
|
||||
* @returns {number} Result
|
||||
*/
|
||||
|
||||
|
||||
function md5gg(a, b, c, d, x, s, t) {
|
||||
return md5cmn(b & d | c & ~d, a, b, x, s, t);
|
||||
}
|
||||
/**
|
||||
* Basic operation the algorithm uses.
|
||||
*
|
||||
* @param {number} a a
|
||||
* @param {number} b b
|
||||
* @param {number} c c
|
||||
* @param {number} d d
|
||||
* @param {number} x x
|
||||
* @param {number} s s
|
||||
* @param {number} t t
|
||||
* @returns {number} Result
|
||||
*/
|
||||
|
||||
|
||||
function md5hh(a, b, c, d, x, s, t) {
|
||||
return md5cmn(b ^ c ^ d, a, b, x, s, t);
|
||||
}
|
||||
/**
|
||||
* Basic operation the algorithm uses.
|
||||
*
|
||||
* @param {number} a a
|
||||
* @param {number} b b
|
||||
* @param {number} c c
|
||||
* @param {number} d d
|
||||
* @param {number} x x
|
||||
* @param {number} s s
|
||||
* @param {number} t t
|
||||
* @returns {number} Result
|
||||
*/
|
||||
|
||||
|
||||
function md5ii(a, b, c, d, x, s, t) {
|
||||
return md5cmn(c ^ (b | ~d), a, b, x, s, t);
|
||||
}
|
||||
/**
|
||||
* Calculate the MD5 of an array of little-endian words, and a bit length.
|
||||
*
|
||||
* @param {Array} x Array of little-endian words
|
||||
* @param {number} len Bit length
|
||||
* @returns {Array<number>} MD5 Array
|
||||
*/
|
||||
|
||||
|
||||
function binlMD5(x, len) {
|
||||
/* append padding */
|
||||
x[len >> 5] |= 0x80 << len % 32;
|
||||
x[(len + 64 >>> 9 << 4) + 14] = len;
|
||||
var i;
|
||||
var olda;
|
||||
var oldb;
|
||||
var oldc;
|
||||
var oldd;
|
||||
var a = 1732584193;
|
||||
var b = -271733879;
|
||||
var c = -1732584194;
|
||||
var d = 271733878;
|
||||
|
||||
for (i = 0; i < x.length; i += 16) {
|
||||
olda = a;
|
||||
oldb = b;
|
||||
oldc = c;
|
||||
oldd = d;
|
||||
a = md5ff(a, b, c, d, x[i], 7, -680876936);
|
||||
d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
|
||||
c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
|
||||
b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
|
||||
a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
|
||||
d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
|
||||
c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
|
||||
b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
|
||||
a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
|
||||
d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
|
||||
c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
|
||||
b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
|
||||
a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
|
||||
d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
|
||||
c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
|
||||
b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
|
||||
a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
|
||||
d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
|
||||
c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
|
||||
b = md5gg(b, c, d, a, x[i], 20, -373897302);
|
||||
a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
|
||||
d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
|
||||
c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
|
||||
b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
|
||||
a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
|
||||
d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
|
||||
c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
|
||||
b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
|
||||
a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
|
||||
d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
|
||||
c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
|
||||
b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
|
||||
a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
|
||||
d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
|
||||
c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
|
||||
b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
|
||||
a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
|
||||
d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
|
||||
c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
|
||||
b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
|
||||
a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
|
||||
d = md5hh(d, a, b, c, x[i], 11, -358537222);
|
||||
c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
|
||||
b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
|
||||
a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
|
||||
d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
|
||||
c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
|
||||
b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
|
||||
a = md5ii(a, b, c, d, x[i], 6, -198630844);
|
||||
d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
|
||||
c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
|
||||
b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
|
||||
a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
|
||||
d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
|
||||
c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
|
||||
b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
|
||||
a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
|
||||
d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
|
||||
c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
|
||||
b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
|
||||
a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
|
||||
d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
|
||||
c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
|
||||
b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
|
||||
a = safeAdd(a, olda);
|
||||
b = safeAdd(b, oldb);
|
||||
c = safeAdd(c, oldc);
|
||||
d = safeAdd(d, oldd);
|
||||
}
|
||||
|
||||
return [a, b, c, d];
|
||||
}
|
||||
/**
|
||||
* Convert an array of little-endian words to a string
|
||||
*
|
||||
* @param {Array<number>} input MD5 Array
|
||||
* @returns {string} MD5 string
|
||||
*/
|
||||
|
||||
|
||||
function binl2rstr(input) {
|
||||
var i;
|
||||
var output = '';
|
||||
var length32 = input.length * 32;
|
||||
|
||||
for (i = 0; i < length32; i += 8) {
|
||||
output += String.fromCharCode(input[i >> 5] >>> i % 32 & 0xff);
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
/**
|
||||
* Convert a raw string to an array of little-endian words
|
||||
* Characters >255 have their high-byte silently ignored.
|
||||
*
|
||||
* @param {string} input Raw input string
|
||||
* @returns {Array<number>} Array of little-endian words
|
||||
*/
|
||||
|
||||
|
||||
function rstr2binl(input) {
|
||||
var i;
|
||||
var output = [];
|
||||
output[(input.length >> 2) - 1] = undefined;
|
||||
|
||||
for (i = 0; i < output.length; i += 1) {
|
||||
output[i] = 0;
|
||||
}
|
||||
|
||||
var length8 = input.length * 8;
|
||||
|
||||
for (i = 0; i < length8; i += 8) {
|
||||
output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32;
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
/**
|
||||
* Calculate the MD5 of a raw string
|
||||
*
|
||||
* @param {string} s Input string
|
||||
* @returns {string} Raw MD5 string
|
||||
*/
|
||||
|
||||
|
||||
function rstrMD5(s) {
|
||||
return binl2rstr(binlMD5(rstr2binl(s), s.length * 8));
|
||||
}
|
||||
/**
|
||||
* Calculates the HMAC-MD5 of a key and some data (raw strings)
|
||||
*
|
||||
* @param {string} key HMAC key
|
||||
* @param {string} data Raw input string
|
||||
* @returns {string} Raw MD5 string
|
||||
*/
|
||||
|
||||
|
||||
function rstrHMACMD5(key, data) {
|
||||
var i;
|
||||
var bkey = rstr2binl(key);
|
||||
var ipad = [];
|
||||
var opad = [];
|
||||
var hash;
|
||||
ipad[15] = opad[15] = undefined;
|
||||
|
||||
if (bkey.length > 16) {
|
||||
bkey = binlMD5(bkey, key.length * 8);
|
||||
}
|
||||
|
||||
for (i = 0; i < 16; i += 1) {
|
||||
ipad[i] = bkey[i] ^ 0x36363636;
|
||||
opad[i] = bkey[i] ^ 0x5c5c5c5c;
|
||||
}
|
||||
|
||||
hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
|
||||
return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));
|
||||
}
|
||||
/**
|
||||
* Convert a raw string to a hex string
|
||||
*
|
||||
* @param {string} input Raw input string
|
||||
* @returns {string} Hex encoded string
|
||||
*/
|
||||
|
||||
|
||||
function rstr2hex(input) {
|
||||
var hexTab = '0123456789abcdef';
|
||||
var output = '';
|
||||
var x;
|
||||
var i;
|
||||
|
||||
for (i = 0; i < input.length; i += 1) {
|
||||
x = input.charCodeAt(i);
|
||||
output += hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f);
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
/**
|
||||
* Encode a string as UTF-8
|
||||
*
|
||||
* @param {string} input Input string
|
||||
* @returns {string} UTF8 string
|
||||
*/
|
||||
|
||||
|
||||
function str2rstrUTF8(input) {
|
||||
return unescape(encodeURIComponent(input));
|
||||
}
|
||||
/**
|
||||
* Encodes input string as raw MD5 string
|
||||
*
|
||||
* @param {string} s Input string
|
||||
* @returns {string} Raw MD5 string
|
||||
*/
|
||||
|
||||
|
||||
function rawMD5(s) {
|
||||
return rstrMD5(str2rstrUTF8(s));
|
||||
}
|
||||
/**
|
||||
* Encodes input string as Hex encoded string
|
||||
*
|
||||
* @param {string} s Input string
|
||||
* @returns {string} Hex encoded string
|
||||
*/
|
||||
|
||||
|
||||
function hexMD5(s) {
|
||||
return rstr2hex(rawMD5(s));
|
||||
}
|
||||
/**
|
||||
* Calculates the raw HMAC-MD5 for the given key and data
|
||||
*
|
||||
* @param {string} k HMAC key
|
||||
* @param {string} d Input string
|
||||
* @returns {string} Raw MD5 string
|
||||
*/
|
||||
|
||||
|
||||
function rawHMACMD5(k, d) {
|
||||
return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));
|
||||
}
|
||||
/**
|
||||
* Calculates the Hex encoded HMAC-MD5 for the given key and data
|
||||
*
|
||||
* @param {string} k HMAC key
|
||||
* @param {string} d Input string
|
||||
* @returns {string} Raw MD5 string
|
||||
*/
|
||||
|
||||
|
||||
function hexHMACMD5(k, d) {
|
||||
return rstr2hex(rawHMACMD5(k, d));
|
||||
}
|
||||
/**
|
||||
* Calculates MD5 value for a given string.
|
||||
* If a key is provided, calculates the HMAC-MD5 value.
|
||||
* Returns a Hex encoded string unless the raw argument is given.
|
||||
*
|
||||
* @param {string} string Input string
|
||||
* @param {string} [key] HMAC key
|
||||
* @param {boolean} raw Raw oytput switch
|
||||
* @returns {string} MD5 output
|
||||
*/
|
||||
|
||||
|
||||
function md5(string, key, raw) {
|
||||
if (!key) {
|
||||
if (!raw) {
|
||||
return hexMD5(string);
|
||||
}
|
||||
|
||||
return rawMD5(string);
|
||||
}
|
||||
|
||||
if (!raw) {
|
||||
return hexHMACMD5(key, string);
|
||||
}
|
||||
|
||||
return rawHMACMD5(key, string);
|
||||
}
|
||||
|
||||
if (module.exports) {
|
||||
module.exports = md5;
|
||||
} else {
|
||||
$.md5 = md5;
|
||||
}
|
||||
})(commonjsGlobal);
|
||||
});
|
||||
|
||||
function md5ForNode(node) {
|
||||
if (null === node || 'object' !== _typeof(node)) return undefined;
|
||||
|
||||
if (node.src) {
|
||||
return md5(node.src);
|
||||
} else if (node.href) {
|
||||
return md5(node.href);
|
||||
} else if (node.innerText && '' !== node.innerText) {
|
||||
// eslint-disable-line yoda
|
||||
return md5(node.innerText);
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
var diagScriptId = 'fa-kits-diag';
|
||||
var nodeUnderTestId = 'fa-kits-node-under-test';
|
||||
var md5Attr = 'data-md5';
|
||||
var detectionIgnoreAttr = 'data-fa-detection-ignore';
|
||||
var timeoutAttr = 'data-fa-detection-timeout';
|
||||
var resultsCollectionMaxWaitAttr = 'data-fa-detection-results-collection-max-wait';
|
||||
|
||||
var silenceErrors = function silenceErrors(e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
};
|
||||
|
||||
function pollUntil(_ref) {
|
||||
var _ref$fn = _ref.fn,
|
||||
fn = _ref$fn === void 0 ? function () {
|
||||
return true;
|
||||
} : _ref$fn,
|
||||
_ref$initialDuration = _ref.initialDuration,
|
||||
initialDuration = _ref$initialDuration === void 0 ? 1 : _ref$initialDuration,
|
||||
_ref$maxDuration = _ref.maxDuration,
|
||||
maxDuration = _ref$maxDuration === void 0 ? WINDOW.FontAwesomeDetection.timeout : _ref$maxDuration,
|
||||
_ref$showProgress = _ref.showProgress,
|
||||
showProgress = _ref$showProgress === void 0 ? false : _ref$showProgress,
|
||||
progressIndicator = _ref.progressIndicator;
|
||||
return new Promise(function (resolve, reject) {
|
||||
// eslint-disable-line compat/compat
|
||||
function poll(duration, cumulativeDuration) {
|
||||
setTimeout(function () {
|
||||
var result = fn();
|
||||
|
||||
if (showProgress) {
|
||||
console.info(progressIndicator);
|
||||
}
|
||||
|
||||
if (!!result) {
|
||||
// eslint-disable-line no-extra-boolean-cast
|
||||
resolve(result);
|
||||
} else {
|
||||
var nextDuration = 250;
|
||||
var nextCumulativeDuration = nextDuration + cumulativeDuration;
|
||||
|
||||
if (nextCumulativeDuration <= maxDuration) {
|
||||
poll(nextDuration, nextCumulativeDuration);
|
||||
} else {
|
||||
reject('timeout'); // eslint-disable-line prefer-promise-reject-errors
|
||||
}
|
||||
}
|
||||
}, duration);
|
||||
}
|
||||
|
||||
poll(initialDuration, 0);
|
||||
});
|
||||
}
|
||||
|
||||
function detectWebfontConflicts() {
|
||||
var linkTags = Array.from(DOCUMENT.getElementsByTagName('link')).filter(function (t) {
|
||||
return !t.hasAttribute(detectionIgnoreAttr);
|
||||
});
|
||||
var styleTags = Array.from(DOCUMENT.getElementsByTagName('style')).filter(function (t) {
|
||||
if (t.hasAttribute(detectionIgnoreAttr)) {
|
||||
return false;
|
||||
} // If the browser has loaded the FA5 CSS, let's not test that <style> element.
|
||||
// Its enough that we'll be testing for traces of the corresponding JS being loaded, and testing
|
||||
// this <style> would only produce a false negative anyway.
|
||||
|
||||
|
||||
if (WINDOW.FontAwesomeConfig && t.innerText.match(new RegExp("svg:not\\(:root\\)\\.".concat(WINDOW.FontAwesomeConfig.replacementClass)))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
function runDiag(scriptOrLinkTag, md5) {
|
||||
var diagFrame = DOCUMENT.createElement('iframe'); // Using "visibility: hidden; position: absolute" instead of "display: none;" because
|
||||
// Firefox will not return the expected results for getComputedStyle if our iframe has display: none.
|
||||
|
||||
diagFrame.setAttribute('style', 'visibility: hidden; position: absolute; height: 0; width: 0;');
|
||||
var testIconId = 'fa-test-icon-' + md5;
|
||||
var iTag = DOCUMENT.createElement('i');
|
||||
iTag.setAttribute('class', 'fa fa-coffee');
|
||||
iTag.setAttribute('id', testIconId);
|
||||
var diagScript = DOCUMENT.createElement('script');
|
||||
diagScript.setAttribute('id', diagScriptId); // WARNING: this function will be toString()'d and assigned to innerText of the diag script
|
||||
// element that we'll be putting into a diagnostic iframe.
|
||||
// That means that this code won't compile until after the outer script has run and injected
|
||||
// this code into the iframe. There are some compile time errors that might occur there.
|
||||
// For example, using single line (double-slash) comments like this one inside that function
|
||||
// will probably cause it to choke. Chrome will show an error like this:
|
||||
// Uncaught SyntaxError: Unexpected end of input
|
||||
|
||||
var diagScriptFun = function diagScriptFun(nodeUnderTestId, testIconId, md5, parentOrigin) {
|
||||
parent.FontAwesomeDetection.__pollUntil({
|
||||
fn: function fn() {
|
||||
var iEl = document.getElementById(testIconId);
|
||||
var computedStyle = window.getComputedStyle(iEl);
|
||||
var fontFamily = computedStyle.getPropertyValue('font-family');
|
||||
|
||||
if (!!fontFamily.match(/FontAwesome/) || !!fontFamily.match(/Font Awesome 5/)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}).then(function () {
|
||||
var node = document.getElementById(nodeUnderTestId);
|
||||
parent.postMessage({
|
||||
type: 'fontawesome-conflict',
|
||||
technology: 'webfont',
|
||||
href: node.href,
|
||||
innerText: node.innerText,
|
||||
tagName: node.tagName,
|
||||
md5: md5
|
||||
}, parentOrigin);
|
||||
}).catch(function (e) {
|
||||
var node = document.getElementById(nodeUnderTestId);
|
||||
|
||||
if (e === 'timeout') {
|
||||
parent.postMessage({
|
||||
type: 'no-conflict',
|
||||
technology: 'webfont',
|
||||
href: node.src,
|
||||
innerText: node.innerText,
|
||||
tagName: node.tagName,
|
||||
md5: md5
|
||||
}, parentOrigin);
|
||||
} else {
|
||||
console.error(e);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var parentOrigin = WINDOW.location.origin === 'file://' ? '*' : WINDOW.location.origin;
|
||||
diagScript.innerText = "(".concat(diagScriptFun.toString(), ")('").concat(nodeUnderTestId, "', '").concat(testIconId || 'foo', "', '").concat(md5, "', '").concat(parentOrigin, "');");
|
||||
|
||||
diagFrame.onload = function () {
|
||||
diagFrame.contentWindow.addEventListener('error', silenceErrors, true);
|
||||
diagFrame.contentDocument.head.appendChild(diagScript);
|
||||
diagFrame.contentDocument.head.appendChild(scriptOrLinkTag);
|
||||
diagFrame.contentDocument.body.appendChild(iTag);
|
||||
};
|
||||
|
||||
domready(function () {
|
||||
return DOCUMENT.body.appendChild(diagFrame);
|
||||
});
|
||||
}
|
||||
|
||||
var cssByMD5 = {};
|
||||
|
||||
for (var i = 0; i < linkTags.length; i++) {
|
||||
var linkUnderTest = DOCUMENT.createElement('link');
|
||||
linkUnderTest.setAttribute('id', nodeUnderTestId);
|
||||
linkUnderTest.setAttribute('href', linkTags[i].href);
|
||||
linkUnderTest.setAttribute('rel', linkTags[i].rel);
|
||||
var md5ForLink = md5ForNode(linkTags[i]);
|
||||
linkUnderTest.setAttribute(md5Attr, md5ForLink);
|
||||
cssByMD5[md5ForLink] = linkTags[i];
|
||||
runDiag(linkUnderTest, md5ForLink);
|
||||
}
|
||||
|
||||
for (var _i = 0; _i < styleTags.length; _i++) {
|
||||
var styleUnderTest = DOCUMENT.createElement('style');
|
||||
styleUnderTest.setAttribute('id', nodeUnderTestId);
|
||||
var md5ForStyle = md5ForNode(styleTags[_i]);
|
||||
styleUnderTest.setAttribute(md5Attr, md5ForStyle);
|
||||
styleUnderTest.innerText = styleTags[_i].innerText;
|
||||
cssByMD5[md5ForStyle] = styleTags[_i];
|
||||
runDiag(styleUnderTest, md5ForStyle);
|
||||
}
|
||||
|
||||
return cssByMD5;
|
||||
}
|
||||
|
||||
function detectSvgConflicts(currentScript) {
|
||||
var scripts = Array.from(DOCUMENT.scripts).filter(function (t) {
|
||||
return !t.hasAttribute(detectionIgnoreAttr) && t !== currentScript;
|
||||
});
|
||||
var scriptsByMD5 = {};
|
||||
|
||||
var _loop = function _loop(scriptIdx) {
|
||||
var diagFrame = DOCUMENT.createElement('iframe');
|
||||
diagFrame.setAttribute('style', 'display:none;');
|
||||
var scriptUnderTest = DOCUMENT.createElement('script');
|
||||
scriptUnderTest.setAttribute('id', nodeUnderTestId);
|
||||
var md5ForScript = md5ForNode(scripts[scriptIdx]);
|
||||
scriptUnderTest.setAttribute(md5Attr, md5ForScript);
|
||||
scriptsByMD5[md5ForScript] = scripts[scriptIdx];
|
||||
|
||||
if (scripts[scriptIdx].src !== '') {
|
||||
scriptUnderTest.src = scripts[scriptIdx].src;
|
||||
}
|
||||
|
||||
if (scripts[scriptIdx].innerText !== '') {
|
||||
scriptUnderTest.innerText = scripts[scriptIdx].innerText;
|
||||
}
|
||||
|
||||
scriptUnderTest.async = true;
|
||||
var diagScript = DOCUMENT.createElement('script');
|
||||
diagScript.setAttribute('id', diagScriptId);
|
||||
var parentOrigin = WINDOW.location.origin === 'file://' ? '*' : WINDOW.location.origin;
|
||||
|
||||
var diagScriptFun = function diagScriptFun(nodeUnderTestId, md5, parentOrigin) {
|
||||
parent.FontAwesomeDetection.__pollUntil({
|
||||
fn: function fn() {
|
||||
return !!window.FontAwesomeConfig || !!window.FontAwesomeKitConfig;
|
||||
}
|
||||
}).then(function () {
|
||||
var scriptNode = document.getElementById(nodeUnderTestId);
|
||||
parent.postMessage({
|
||||
type: 'fontawesome-conflict',
|
||||
technology: 'js',
|
||||
src: scriptNode.src,
|
||||
innerText: scriptNode.innerText,
|
||||
tagName: scriptNode.tagName,
|
||||
md5: md5
|
||||
}, parentOrigin);
|
||||
}).catch(function (e) {
|
||||
var scriptNode = document.getElementById(nodeUnderTestId);
|
||||
|
||||
if (e === 'timeout') {
|
||||
parent.postMessage({
|
||||
type: 'no-conflict',
|
||||
src: scriptNode.src,
|
||||
innerText: scriptNode.innerText,
|
||||
tagName: scriptNode.tagName,
|
||||
md5: md5
|
||||
}, parentOrigin);
|
||||
} else {
|
||||
console.error(e);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
diagScript.innerText = "(".concat(diagScriptFun.toString(), ")('").concat(nodeUnderTestId, "', '").concat(md5ForScript, "', '").concat(parentOrigin, "');");
|
||||
|
||||
diagFrame.onload = function () {
|
||||
diagFrame.contentWindow.addEventListener('error', silenceErrors, true);
|
||||
diagFrame.contentDocument.head.appendChild(diagScript);
|
||||
diagFrame.contentDocument.head.appendChild(scriptUnderTest);
|
||||
};
|
||||
|
||||
domready(function () {
|
||||
return DOCUMENT.body.appendChild(diagFrame);
|
||||
});
|
||||
};
|
||||
|
||||
for (var scriptIdx = 0; scriptIdx < scripts.length; scriptIdx++) {
|
||||
_loop(scriptIdx);
|
||||
}
|
||||
|
||||
return scriptsByMD5;
|
||||
}
|
||||
|
||||
function setDoneResults(_ref2) {
|
||||
var nodesTested = _ref2.nodesTested,
|
||||
nodesFound = _ref2.nodesFound;
|
||||
WINDOW.FontAwesomeDetection = WINDOW.FontAwesomeDetection || {};
|
||||
WINDOW.FontAwesomeDetection.nodesTested = nodesTested;
|
||||
WINDOW.FontAwesomeDetection.nodesFound = nodesFound;
|
||||
WINDOW.FontAwesomeDetection.detectionDone = true;
|
||||
}
|
||||
|
||||
function conflictDetection() {
|
||||
var report$$1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};
|
||||
var nodesTested = {
|
||||
conflict: {},
|
||||
noConflict: {}
|
||||
};
|
||||
|
||||
WINDOW.onmessage = function (e) {
|
||||
if (WINDOW.location.origin === 'file://' || e.origin === WINDOW.location.origin) {
|
||||
if (e && e.data) {
|
||||
if (e.data.type === 'fontawesome-conflict') {
|
||||
nodesTested.conflict[e.data.md5] = e.data;
|
||||
} else if (e.data.type === 'no-conflict') {
|
||||
nodesTested.noConflict[e.data.md5] = e.data;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var scriptsToTest = detectSvgConflicts(DOCUMENT.currentScript);
|
||||
var cssToTest = detectWebfontConflicts();
|
||||
|
||||
var nodesFound = _objectSpread({}, scriptsToTest, cssToTest);
|
||||
|
||||
var testCount = Object.keys(scriptsToTest).length + Object.keys(cssToTest).length; // The resultsCollectionMaxWait allows for the time between when the tests running under
|
||||
// child iframes call postMessage with their results, and when the parent window
|
||||
// receives and handles those events with window.onmessage.
|
||||
// Making it configurable allows us to test the scenario where this timeout is exceeded.
|
||||
// Naming it something very different from "timeout" is to help avoid the potential ambiguity between
|
||||
// these two timeout-related settings.
|
||||
|
||||
var masterTimeout = WINDOW.FontAwesomeDetection.timeout + WINDOW.FontAwesomeDetection.resultsCollectionMaxWait;
|
||||
console.group('Font Awesome Detector');
|
||||
|
||||
if (testCount === 0) {
|
||||
console.info('%cAll Good!', 'color: green; font-size: large');
|
||||
console.info('We didn\'t find anything that needs testing for conflicts. Ergo, no conflicts.');
|
||||
} else {
|
||||
console.info("Testing ".concat(testCount, " possible conflicts."));
|
||||
console.info("We'll wait about ".concat(Math.round(WINDOW.FontAwesomeDetection.timeout / 10) / 100, " seconds while testing these and\n") + "then up to another ".concat(Math.round(WINDOW.FontAwesomeDetection.resultsCollectionMaxWait / 10) / 100, " to allow the browser time\n") + "to accumulate the results. But we'll probably be outta here way before then.\n\n");
|
||||
console.info("You can adjust those durations by assigning values to these attributes on the <script> element that loads this detection:");
|
||||
console.info("\t%c".concat(timeoutAttr, "%c: milliseconds to wait for each test before deciding whether it's a conflict."), 'font-weight: bold;', 'font-size: normal;');
|
||||
console.info("\t%c".concat(resultsCollectionMaxWaitAttr, "%c: milliseconds to wait for the browser to accumulate test results before giving up."), 'font-weight: bold;', 'font-size: normal;');
|
||||
pollUntil({
|
||||
// Give this overall timer a little extra cushion
|
||||
maxDuration: masterTimeout,
|
||||
showProgress: true,
|
||||
progressIndicator: 'waiting...',
|
||||
fn: function fn() {
|
||||
return Object.keys(nodesTested.conflict).length + Object.keys(nodesTested.noConflict).length >= testCount;
|
||||
}
|
||||
}).then(function () {
|
||||
console.info('DONE!');
|
||||
setDoneResults({
|
||||
nodesTested: nodesTested,
|
||||
nodesFound: nodesFound
|
||||
});
|
||||
report$$1({
|
||||
nodesTested: nodesTested,
|
||||
nodesFound: nodesFound
|
||||
});
|
||||
console.groupEnd();
|
||||
}).catch(function (e) {
|
||||
if (e === 'timeout') {
|
||||
console.info('TIME OUT! We waited until we got tired. Here\'s what we found:');
|
||||
setDoneResults({
|
||||
nodesTested: nodesTested,
|
||||
nodesFound: nodesFound
|
||||
});
|
||||
report$$1({
|
||||
nodesTested: nodesTested,
|
||||
nodesFound: nodesFound
|
||||
});
|
||||
} else {
|
||||
console.info('Whoops! We hit an error:', e);
|
||||
console.info('Here\'s what we\'d found up until that error:');
|
||||
setDoneResults({
|
||||
nodesTested: nodesTested,
|
||||
nodesFound: nodesFound
|
||||
});
|
||||
report$$1({
|
||||
nodesTested: nodesTested,
|
||||
nodesFound: nodesFound
|
||||
});
|
||||
}
|
||||
|
||||
console.groupEnd();
|
||||
});
|
||||
}
|
||||
} // Allow clients to access, and in some cases, override some properties
|
||||
|
||||
var initialConfig = WINDOW.FontAwesomeDetection || {}; // These can be overridden
|
||||
|
||||
var _default = {
|
||||
report: report,
|
||||
timeout: +(DOCUMENT.currentScript.getAttribute(timeoutAttr) || "2000"),
|
||||
resultsCollectionMaxWait: +(DOCUMENT.currentScript.getAttribute(resultsCollectionMaxWaitAttr) || "5000")
|
||||
};
|
||||
|
||||
var _config = _objectSpread({}, _default, initialConfig, {
|
||||
// These cannot be overridden
|
||||
__pollUntil: pollUntil,
|
||||
md5ForNode: md5ForNode,
|
||||
detectionDone: false,
|
||||
nodesTested: null,
|
||||
nodesFound: null
|
||||
});
|
||||
|
||||
WINDOW.FontAwesomeDetection = _config;
|
||||
|
||||
var PRODUCTION = function () {
|
||||
try {
|
||||
return process.env.NODE_ENV === 'production';
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}();
|
||||
|
||||
function bunker(fn) {
|
||||
try {
|
||||
fn();
|
||||
} catch (e) {
|
||||
if (!PRODUCTION) {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bunker(function () {
|
||||
if (IS_BROWSER && IS_DOM) {
|
||||
conflictDetection(window.FontAwesomeDetection.report);
|
||||
}
|
||||
});
|
||||
|
||||
exports.conflictDetection = conflictDetection;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,19 @@
|
|||
// Animated Icons
|
||||
// --------------------------
|
||||
|
||||
.@{fa-css-prefix}-spin {
|
||||
animation: fa-spin 2s infinite linear;
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-pulse {
|
||||
animation: fa-spin 1s infinite steps(8);
|
||||
}
|
||||
|
||||
@keyframes fa-spin {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
// Bordered & Pulled
|
||||
// -------------------------
|
||||
|
||||
.@{fa-css-prefix}-border {
|
||||
border-radius: .1em;
|
||||
border: solid .08em @fa-border-color;
|
||||
padding: .2em .25em .15em;
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-pull-left { float: left; }
|
||||
.@{fa-css-prefix}-pull-right { float: right; }
|
||||
|
||||
.@{fa-css-prefix}, .fas, .far, .fal, .fab {
|
||||
&.@{fa-css-prefix}-pull-left { margin-right: .3em; }
|
||||
&.@{fa-css-prefix}-pull-right { margin-left: .3em; }
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
// Base Class Definition
|
||||
// -------------------------
|
||||
|
||||
.@{fa-css-prefix}, .fas, .far, .fal, .fad, .fab {
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
display: inline-block;
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
text-rendering: auto;
|
||||
line-height: 1;
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
// Fixed Width Icons
|
||||
// -------------------------
|
||||
.@{fa-css-prefix}-fw {
|
||||
text-align: center;
|
||||
width: (20em / 16);
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,27 @@
|
|||
// Icon Sizes
|
||||
// -------------------------
|
||||
|
||||
.larger(@factor) when (@factor > 0) {
|
||||
.larger((@factor - 1));
|
||||
|
||||
.@{fa-css-prefix}-@{factor}x {
|
||||
font-size: (@factor * 1em);
|
||||
}
|
||||
}
|
||||
|
||||
/* makes the font 33% larger relative to the icon container */
|
||||
.@{fa-css-prefix}-lg {
|
||||
font-size: (4em / 3);
|
||||
line-height: (3em / 4);
|
||||
vertical-align: -.0667em;
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-xs {
|
||||
font-size: .75em;
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-sm {
|
||||
font-size: .875em;
|
||||
}
|
||||
|
||||
.larger(10);
|
|
@ -0,0 +1,18 @@
|
|||
// List Icons
|
||||
// -------------------------
|
||||
|
||||
.@{fa-css-prefix}-ul {
|
||||
list-style-type: none;
|
||||
margin-left: (@fa-li-width * 5/4);
|
||||
padding-left: 0;
|
||||
|
||||
> li { position: relative; }
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-li {
|
||||
left: -@fa-li-width;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: @fa-li-width;
|
||||
line-height: inherit;
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
// Mixins
|
||||
// --------------------------
|
||||
|
||||
.fa-icon() {
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
display: inline-block;
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
font-weight: normal;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.fa-icon-rotate(@degrees, @rotation) {
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})";
|
||||
transform: rotate(@degrees);
|
||||
}
|
||||
|
||||
.fa-icon-flip(@horiz, @vert, @rotation) {
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)";
|
||||
transform: scale(@horiz, @vert);
|
||||
}
|
||||
|
||||
|
||||
// Only display content to screen readers. A la Bootstrap 4.
|
||||
//
|
||||
// See: http://a11yproject.com/posts/how-to-hide-content/
|
||||
|
||||
.sr-only() {
|
||||
border: 0;
|
||||
clip: rect(0,0,0,0);
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
}
|
||||
|
||||
// Use in conjunction with .sr-only to only display content when it's focused.
|
||||
//
|
||||
// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
|
||||
//
|
||||
// Credit: HTML5 Boilerplate
|
||||
|
||||
.sr-only-focusable() {
|
||||
&:active,
|
||||
&:focus {
|
||||
clip: auto;
|
||||
height: auto;
|
||||
margin: 0;
|
||||
overflow: visible;
|
||||
position: static;
|
||||
width: auto;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
// Rotated & Flipped Icons
|
||||
// -------------------------
|
||||
|
||||
.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
|
||||
.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
|
||||
.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
|
||||
|
||||
.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
|
||||
.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
|
||||
.@{fa-css-prefix}-flip-both, .@{fa-css-prefix}-flip-horizontal.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(-1, -1, 2); }
|
||||
|
||||
// Hook for IE8-9
|
||||
// -------------------------
|
||||
|
||||
:root {
|
||||
.@{fa-css-prefix}-rotate-90,
|
||||
.@{fa-css-prefix}-rotate-180,
|
||||
.@{fa-css-prefix}-rotate-270,
|
||||
.@{fa-css-prefix}-flip-horizontal,
|
||||
.@{fa-css-prefix}-flip-vertical,
|
||||
.@{fa-css-prefix}-flip-both {
|
||||
filter: none;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
// Screen Readers
|
||||
// -------------------------
|
||||
|
||||
.sr-only { .sr-only(); }
|
||||
.sr-only-focusable { .sr-only-focusable(); }
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,22 @@
|
|||
// Stacked Icons
|
||||
// -------------------------
|
||||
|
||||
.@{fa-css-prefix}-stack {
|
||||
display: inline-block;
|
||||
height: 2em;
|
||||
line-height: 2em;
|
||||
position: relative;
|
||||
vertical-align: middle;
|
||||
width: 2em;
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
|
||||
left: 0;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-stack-1x { line-height: inherit; }
|
||||
.@{fa-css-prefix}-stack-2x { font-size: 2em; }
|
||||
.@{fa-css-prefix}-inverse { color: @fa-inverse; }
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,23 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
@import "_variables.less";
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Brands';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: @fa-font-display;
|
||||
src: url('@{fa-font-path}/fa-brands-400.eot');
|
||||
src: url('@{fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'),
|
||||
url('@{fa-font-path}/fa-brands-400.woff2') format('woff2'),
|
||||
url('@{fa-font-path}/fa-brands-400.woff') format('woff'),
|
||||
url('@{fa-font-path}/fa-brands-400.ttf') format('truetype'),
|
||||
url('@{fa-font-path}/fa-brands-400.svg#fontawesome') format('svg');
|
||||
}
|
||||
|
||||
.fab {
|
||||
font-family: 'Font Awesome 5 Brands';
|
||||
font-weight: 400;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,16 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
@import "_variables.less";
|
||||
@import "_mixins.less";
|
||||
@import "_core.less";
|
||||
@import "_larger.less";
|
||||
@import "_fixed-width.less";
|
||||
@import "_list.less";
|
||||
@import "_bordered-pulled.less";
|
||||
@import "_animated.less";
|
||||
@import "_rotated-flipped.less";
|
||||
@import "_stacked.less";
|
||||
@import "_icons.less";
|
||||
@import "_screen-reader.less";
|
|
@ -0,0 +1,23 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
@import "_variables.less";
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: @fa-font-display;
|
||||
src: url('@{fa-font-path}/fa-light-300.eot');
|
||||
src: url('@{fa-font-path}/fa-light-300.eot?#iefix') format('embedded-opentype'),
|
||||
url('@{fa-font-path}/fa-light-300.woff2') format('woff2'),
|
||||
url('@{fa-font-path}/fa-light-300.woff') format('woff'),
|
||||
url('@{fa-font-path}/fa-light-300.ttf') format('truetype'),
|
||||
url('@{fa-font-path}/fa-light-300.svg#fontawesome') format('svg');
|
||||
}
|
||||
|
||||
.fal {
|
||||
font-family: 'Font Awesome 5 Pro';
|
||||
font-weight: 300;
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
@import "_variables.less";
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: @fa-font-display;
|
||||
src: url('@{fa-font-path}/fa-regular-400.eot');
|
||||
src: url('@{fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'),
|
||||
url('@{fa-font-path}/fa-regular-400.woff2') format('woff2'),
|
||||
url('@{fa-font-path}/fa-regular-400.woff') format('woff'),
|
||||
url('@{fa-font-path}/fa-regular-400.ttf') format('truetype'),
|
||||
url('@{fa-font-path}/fa-regular-400.svg#fontawesome') format('svg');
|
||||
}
|
||||
|
||||
.far {
|
||||
font-family: 'Font Awesome 5 Pro';
|
||||
font-weight: 400;
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
@import "_variables.less";
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Pro';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
font-display: @fa-font-display;
|
||||
src: url('@{fa-font-path}/fa-solid-900.eot');
|
||||
src: url('@{fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'),
|
||||
url('@{fa-font-path}/fa-solid-900.woff2') format('woff2'),
|
||||
url('@{fa-font-path}/fa-solid-900.woff') format('woff'),
|
||||
url('@{fa-font-path}/fa-solid-900.ttf') format('truetype'),
|
||||
url('@{fa-font-path}/fa-solid-900.svg#fontawesome') format('svg');
|
||||
}
|
||||
|
||||
.fa,
|
||||
.fas {
|
||||
font-family: 'Font Awesome 5 Pro';
|
||||
font-weight: 900;
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
/*!
|
||||
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
*/
|
||||
@import '_variables.less';
|
||||
@import '_shims.less';
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,298 @@
|
|||
area-chart:
|
||||
name: chart-area
|
||||
arrow-circle-o-down:
|
||||
name: arrow-alt-circle-down
|
||||
prefix: far
|
||||
arrow-circle-o-left:
|
||||
name: arrow-alt-circle-left
|
||||
prefix: far
|
||||
arrow-circle-o-right:
|
||||
name: arrow-alt-circle-right
|
||||
prefix: far
|
||||
arrow-circle-o-up:
|
||||
name: arrow-alt-circle-up
|
||||
prefix: far
|
||||
arrows:
|
||||
name: arrows-alt
|
||||
arrows-alt:
|
||||
name: expand-arrows-alt
|
||||
arrows-h:
|
||||
name: arrows-alt-h
|
||||
arrows-v:
|
||||
name: arrows-alt-v
|
||||
bar-chart:
|
||||
name: chart-bar
|
||||
prefix: far
|
||||
bitbucket-square:
|
||||
name: bitbucket
|
||||
prefix: fab
|
||||
calendar:
|
||||
name: calendar-alt
|
||||
calendar-o:
|
||||
name: calendar
|
||||
prefix: far
|
||||
caret-square-o-down:
|
||||
name: caret-square-down
|
||||
prefix: far
|
||||
caret-square-o-left:
|
||||
name: caret-square-left
|
||||
prefix: far
|
||||
caret-square-o-right:
|
||||
name: caret-square-right
|
||||
prefix: far
|
||||
caret-square-o-up:
|
||||
name: caret-square-up
|
||||
prefix: far
|
||||
cc:
|
||||
name: closed-captioning
|
||||
prefix: far
|
||||
chain-broken:
|
||||
name: unlink
|
||||
circle-o-notch:
|
||||
name: circle-notch
|
||||
circle-thin:
|
||||
name: circle
|
||||
prefix: far
|
||||
clipboard:
|
||||
prefix: far
|
||||
clone:
|
||||
prefix: far
|
||||
cloud-download:
|
||||
name: cloud-download-alt
|
||||
cloud-upload:
|
||||
name: cloud-upload-alt
|
||||
code-fork:
|
||||
name: code-branch
|
||||
comment-alt:
|
||||
name: comment-dots
|
||||
prefix: far
|
||||
commenting:
|
||||
name: comment-dots
|
||||
compass:
|
||||
prefix: far
|
||||
compress:
|
||||
name: compress-alt
|
||||
copyright:
|
||||
prefix: far
|
||||
creative-commons:
|
||||
prefix: fab
|
||||
credit-card:
|
||||
prefix: far
|
||||
credit-card-alt:
|
||||
name: credit-card
|
||||
cutlery:
|
||||
name: utensils
|
||||
diamond:
|
||||
name: gem
|
||||
prefix: far
|
||||
eercast:
|
||||
name: sellcast
|
||||
prefix: fab
|
||||
eur:
|
||||
name: euro-sign
|
||||
exchange:
|
||||
name: exchange-alt
|
||||
expand:
|
||||
name: expand-alt
|
||||
external-link:
|
||||
name: external-link-alt
|
||||
external-link-square:
|
||||
name: external-link-square-alt
|
||||
eye:
|
||||
prefix: far
|
||||
eye-dropper:
|
||||
name: eye-dropper
|
||||
prefix: far
|
||||
eye-slash:
|
||||
prefix: far
|
||||
eyedropper:
|
||||
name: eye-dropper
|
||||
facebook:
|
||||
name: facebook-f
|
||||
prefix: fab
|
||||
facebook-official:
|
||||
name: facebook
|
||||
prefix: fab
|
||||
file-text:
|
||||
name: file-alt
|
||||
files-o:
|
||||
name: copy
|
||||
prefix: far
|
||||
floppy-o:
|
||||
name: save
|
||||
prefix: far
|
||||
gbp:
|
||||
name: pound-sign
|
||||
glass:
|
||||
name: glass-martini
|
||||
google-plus:
|
||||
name: google-plus-g
|
||||
prefix: fab
|
||||
google-plus-circle:
|
||||
name: google-plus
|
||||
prefix: fab
|
||||
google-plus-official:
|
||||
name: google-plus
|
||||
prefix: fab
|
||||
hand-o-down:
|
||||
name: hand-point-down
|
||||
prefix: far
|
||||
hand-o-left:
|
||||
name: hand-point-left
|
||||
prefix: far
|
||||
hand-o-right:
|
||||
name: hand-point-right
|
||||
prefix: far
|
||||
hand-o-up:
|
||||
name: hand-point-up
|
||||
prefix: far
|
||||
header:
|
||||
name: heading
|
||||
id-badge:
|
||||
prefix: far
|
||||
ils:
|
||||
name: shekel-sign
|
||||
inr:
|
||||
name: rupee-sign
|
||||
intersex:
|
||||
name: transgender
|
||||
jpy:
|
||||
name: yen-sign
|
||||
krw:
|
||||
name: won-sign
|
||||
level-down:
|
||||
name: level-down-alt
|
||||
level-up:
|
||||
name: level-up-alt
|
||||
life-ring:
|
||||
prefix: far
|
||||
line-chart:
|
||||
name: chart-line
|
||||
linkedin:
|
||||
name: linkedin-in
|
||||
prefix: fab
|
||||
linkedin-square:
|
||||
name: linkedin
|
||||
prefix: fab
|
||||
list-alt:
|
||||
prefix: far
|
||||
long-arrow-down:
|
||||
name: long-arrow-alt-down
|
||||
long-arrow-left:
|
||||
name: long-arrow-alt-left
|
||||
long-arrow-right:
|
||||
name: long-arrow-alt-right
|
||||
long-arrow-up:
|
||||
name: long-arrow-alt-up
|
||||
map-marker:
|
||||
name: map-marker-alt
|
||||
meanpath:
|
||||
name: font-awesome
|
||||
prefix: fab
|
||||
mobile:
|
||||
name: mobile-alt
|
||||
money:
|
||||
name: money-bill-alt
|
||||
prefix: far
|
||||
object-group:
|
||||
prefix: far
|
||||
object-ungroup:
|
||||
prefix: far
|
||||
paste:
|
||||
prefix: far
|
||||
pencil:
|
||||
name: pencil-alt
|
||||
pencil-square:
|
||||
name: pen-square
|
||||
pencil-square-o:
|
||||
name: edit
|
||||
prefix: far
|
||||
picture:
|
||||
name: image
|
||||
pie-chart:
|
||||
name: chart-pie
|
||||
refresh:
|
||||
name: sync
|
||||
registered:
|
||||
prefix: far
|
||||
repeat:
|
||||
name: redo
|
||||
rub:
|
||||
name: ruble-sign
|
||||
scissors:
|
||||
name: cut
|
||||
shield:
|
||||
name: shield-alt
|
||||
sign-in:
|
||||
name: sign-in-alt
|
||||
sign-out:
|
||||
name: sign-out-alt
|
||||
sliders:
|
||||
name: sliders-h
|
||||
sort-alpha-asc:
|
||||
name: sort-alpha-down
|
||||
sort-alpha-desc:
|
||||
name: sort-alpha-down-alt
|
||||
sort-amount-asc:
|
||||
name: sort-amount-down
|
||||
sort-amount-desc:
|
||||
name: sort-amount-down-alt
|
||||
sort-asc:
|
||||
name: sort-up
|
||||
sort-desc:
|
||||
name: sort-down
|
||||
sort-numeric-asc:
|
||||
name: sort-numeric-down
|
||||
sort-numeric-desc:
|
||||
name: sort-numeric-down-alt
|
||||
spoon:
|
||||
name: utensil-spoon
|
||||
star-half-empty:
|
||||
name: star-half
|
||||
star-half-full:
|
||||
name: star-half
|
||||
support:
|
||||
name: life-ring
|
||||
prefix: far
|
||||
tablet:
|
||||
name: tablet-alt
|
||||
tachometer:
|
||||
name: tachometer-alt
|
||||
television:
|
||||
name: tv
|
||||
thumb-tack:
|
||||
name: thumbtack
|
||||
thumbs-o-down:
|
||||
name: thumbs-down
|
||||
prefix: far
|
||||
thumbs-o-up:
|
||||
name: thumbs-up
|
||||
prefix: far
|
||||
ticket:
|
||||
name: ticket-alt
|
||||
trash:
|
||||
name: trash-alt
|
||||
trash-o:
|
||||
name: trash-alt
|
||||
prefix: far
|
||||
try:
|
||||
name: lira-sign
|
||||
usd:
|
||||
name: dollar-sign
|
||||
video-camera:
|
||||
name: video
|
||||
vimeo:
|
||||
name: vimeo-v
|
||||
prefix: fab
|
||||
volume-control-phone:
|
||||
name: phone-volume
|
||||
wheelchair-alt:
|
||||
name: accessible-icon
|
||||
prefix: fab
|
||||
window-maximize:
|
||||
prefix: far
|
||||
window-restore:
|
||||
prefix: far
|
||||
youtube-play:
|
||||
name: youtube
|
||||
prefix: fab
|
|
@ -0,0 +1,852 @@
|
|||
accusoft:
|
||||
icons:
|
||||
- accusoft
|
||||
label: Accusoft
|
||||
url: 'https://www.accusoft.com'
|
||||
administrator-technology:
|
||||
icons:
|
||||
- stream
|
||||
label: Administrator Technology
|
||||
url: 'https://administrator.de'
|
||||
adversal:
|
||||
icons:
|
||||
- adversal
|
||||
label: Adversal
|
||||
url: 'https://www.adversal.com'
|
||||
affiliatetheme:
|
||||
icons:
|
||||
- affiliatetheme
|
||||
label: affiliatetheme
|
||||
url: 'https://affiliatetheme.io/en'
|
||||
algolia:
|
||||
icons:
|
||||
- algolia
|
||||
label: Algolia
|
||||
url: 'http://www.algolia.com'
|
||||
amazon-web-services:
|
||||
icons:
|
||||
- aws
|
||||
label: Amazon Web Services
|
||||
url: 'https://aws.amazon.com'
|
||||
amilia:
|
||||
icons:
|
||||
- amilia
|
||||
label: Amilia
|
||||
url: 'http://www.amilia.com'
|
||||
angry-creative:
|
||||
icons:
|
||||
- angrycreative
|
||||
label: Angry Creative
|
||||
url: 'https://angrycreative.se'
|
||||
app-signal:
|
||||
icons:
|
||||
- stroopwafel
|
||||
label: AppSignal
|
||||
url: 'https://appsignal.com'
|
||||
apper-systems-ab:
|
||||
icons:
|
||||
- apper
|
||||
label: Apper Systems AB
|
||||
url: 'http://www.apper.com'
|
||||
'asymmetrik,ltd':
|
||||
icons:
|
||||
- asymmetrik
|
||||
label: 'Asymmetrik, Ltd.'
|
||||
url: 'http://asymmetrik.com'
|
||||
ausmed-education:
|
||||
icons:
|
||||
- user-nurse
|
||||
label: Ausmed Education
|
||||
url: 'https://www.ausmed.com.au'
|
||||
avianex:
|
||||
icons:
|
||||
- avianex
|
||||
label: avianex
|
||||
url: 'https://www.avianex.de'
|
||||
bi-mobject:
|
||||
icons:
|
||||
- bimobject
|
||||
label: BIMobject
|
||||
url: 'http://bimobject.com'
|
||||
bity:
|
||||
icons:
|
||||
- bity
|
||||
label: Bity
|
||||
url: 'http://bity.com'
|
||||
blackpulp-designs:
|
||||
icons:
|
||||
- pray
|
||||
label: Blackpulp Designs
|
||||
url: 'https://www.blackpulp.com'
|
||||
blissbook:
|
||||
icons:
|
||||
- pen-fancy
|
||||
label: Blissbook
|
||||
url: 'https://blissbook.com'
|
||||
büromöbel-experte-gmb-h &co-kg:
|
||||
icons:
|
||||
- buromobelexperte
|
||||
label: Büromöbel-Experte GmbH & Co. KG.
|
||||
url: 'https://www.bueromoebel-experte.de'
|
||||
c-panel:
|
||||
icons:
|
||||
- cpanel
|
||||
label: cPanel
|
||||
url: 'http://cpanel.com'
|
||||
centercode:
|
||||
icons:
|
||||
- centercode
|
||||
label: Centercode
|
||||
url: 'https://www.centercode.com'
|
||||
cibltd:
|
||||
icons:
|
||||
- drum-steelpan
|
||||
label: Comprehensive Insurance Brokers Limited
|
||||
url: 'http://www.cibltd.com'
|
||||
clear-blue-technologies:
|
||||
icons:
|
||||
- solar-panel
|
||||
label: Clear Blue Technologies
|
||||
url: 'http://www.clearbluetechnologies.com'
|
||||
cloudflare:
|
||||
icons:
|
||||
- cloudflare
|
||||
label: Cloudflare
|
||||
url: 'https://www.cloudflare.com'
|
||||
cloudscale-ch:
|
||||
icons:
|
||||
- cloudscale
|
||||
label: cloudscale.ch
|
||||
url: 'https://www.cloudscale.ch'
|
||||
cloudsmith:
|
||||
icons:
|
||||
- cloudsmith
|
||||
label: Cloudsmith
|
||||
url: 'https://cloudsmith.io'
|
||||
cloudversify:
|
||||
icons:
|
||||
- cloudversify
|
||||
label: cloudversify
|
||||
url: 'https://www.cloudversify.com'
|
||||
cuttlefish:
|
||||
icons:
|
||||
- cuttlefish
|
||||
label: Cuttlefish
|
||||
url: 'http://wearecuttlefish.com'
|
||||
cymedica:
|
||||
icons:
|
||||
- wave-square
|
||||
label: CyMedica
|
||||
url: 'https://www.cymedicaortho.com'
|
||||
darren-wiebe:
|
||||
icons:
|
||||
- church
|
||||
label: Darren Wiebe
|
||||
deploy-dog:
|
||||
icons:
|
||||
- deploydog
|
||||
label: deploy.dog
|
||||
url: 'http://deploy.dog'
|
||||
deskpro:
|
||||
icons:
|
||||
- deskpro
|
||||
label: Deskpro
|
||||
url: 'http://www.deskpro.com'
|
||||
discourse:
|
||||
icons:
|
||||
- discourse
|
||||
label: Discourse
|
||||
url: 'https://discourse.org'
|
||||
doc-hub:
|
||||
icons:
|
||||
- dochub
|
||||
label: DocHub
|
||||
url: 'https://dochub.com'
|
||||
draft2-digital:
|
||||
icons:
|
||||
- draft2digital
|
||||
label: Draft2Digital
|
||||
url: 'http://draft2digital.com'
|
||||
dyalog-apl:
|
||||
icons:
|
||||
- dyalog
|
||||
label: Dyalog APL
|
||||
url: 'http://www.dyalog.com'
|
||||
econopublish:
|
||||
icons:
|
||||
- hat-cowboy-side
|
||||
label: EconoPublish
|
||||
url: 'https://www.econopublish.com'
|
||||
firstdraft:
|
||||
icons:
|
||||
- firstdraft
|
||||
label: firstdraft
|
||||
url: 'http://www.firstdraft.com'
|
||||
fleetplan:
|
||||
icons:
|
||||
- helicopter
|
||||
label: FLEETPLAN
|
||||
url: 'https://www.fleetplan.net'
|
||||
getaroom:
|
||||
icons:
|
||||
- archway
|
||||
- dumbbell
|
||||
- hotel
|
||||
- map-marked
|
||||
- map-marked-alt
|
||||
- monument
|
||||
- spa
|
||||
- swimmer
|
||||
- swimming-pool
|
||||
label: getaroom
|
||||
url: 'https://www.getaroom.com'
|
||||
git-kraken:
|
||||
icons:
|
||||
- gitkraken
|
||||
label: GitKraken
|
||||
url: 'https://www.gitkraken.com'
|
||||
gofore:
|
||||
icons:
|
||||
- gofore
|
||||
label: Gofore
|
||||
url: 'http://gofore.com'
|
||||
'gripfire,inc':
|
||||
icons:
|
||||
- gripfire
|
||||
label: 'Gripfire, Inc.'
|
||||
url: 'http://gripfire.io'
|
||||
guilded:
|
||||
icons:
|
||||
- guilded
|
||||
label: Guilded
|
||||
url: 'https://www.guilded.gg'
|
||||
harvard-medical-school:
|
||||
icons:
|
||||
- allergies
|
||||
- ambulance
|
||||
- band-aid
|
||||
- briefcase-medical
|
||||
- burn
|
||||
- capsules
|
||||
- diagnoses
|
||||
- dna
|
||||
- file-medical
|
||||
- file-medical-alt
|
||||
- first-aid
|
||||
- heart
|
||||
- heartbeat
|
||||
- hospital
|
||||
- hospital-alt
|
||||
- hospital-symbol
|
||||
- id-card-alt
|
||||
- notes-medical
|
||||
- pills
|
||||
- plus
|
||||
- prescription-bottle
|
||||
- prescription-bottle-alt
|
||||
- procedures
|
||||
- smoking
|
||||
- stethoscope
|
||||
- syringe
|
||||
- tablets
|
||||
- thermometer
|
||||
- user-md
|
||||
- vial
|
||||
- vials
|
||||
- weight
|
||||
- x-ray
|
||||
label: Harvard Medical School
|
||||
url: 'https://hms.harvard.edu'
|
||||
hips:
|
||||
icons:
|
||||
- hips
|
||||
label: Hips
|
||||
url: 'https://hips.com'
|
||||
hire-a-helper:
|
||||
icons:
|
||||
- archive
|
||||
- blanket
|
||||
- box-alt
|
||||
- box-fragile
|
||||
- box-full
|
||||
- box-open
|
||||
- box-up
|
||||
- boxes-alt
|
||||
- container-storage
|
||||
- couch
|
||||
- dolly
|
||||
- dolly-empty
|
||||
- fragile
|
||||
- lamp
|
||||
- loveseat
|
||||
- people-carry
|
||||
- person-carry
|
||||
- person-dolly
|
||||
- person-dolly-empty
|
||||
- ramp-loading
|
||||
- route
|
||||
- sign
|
||||
- suitcase
|
||||
- tape
|
||||
- truck-container
|
||||
- truck-couch
|
||||
- truck-loading
|
||||
- truck-moving
|
||||
- truck-ramp
|
||||
- wine-glass
|
||||
label: HireAHelper
|
||||
url: 'https://www.hireahelper.com'
|
||||
hive:
|
||||
icons:
|
||||
- hive
|
||||
label: Hive Blockchain Network
|
||||
url: 'https://hive.io'
|
||||
hornbill:
|
||||
icons:
|
||||
- hornbill
|
||||
label: Hornbill
|
||||
url: 'https://www.hornbill.com'
|
||||
hotjar:
|
||||
icons:
|
||||
- hotjar
|
||||
label: Hotjar
|
||||
url: 'https://www.hotjar.com'
|
||||
hub-spot:
|
||||
icons:
|
||||
- hubspot
|
||||
label: HubSpot
|
||||
url: 'http://www.HubSpot.com'
|
||||
in-site-systems:
|
||||
icons:
|
||||
- toolbox
|
||||
label: InSite Systems
|
||||
url: 'https://www.insitesystems.com'
|
||||
innosoft:
|
||||
icons:
|
||||
- innosoft
|
||||
label: Innosoft
|
||||
url: 'https://innosoft.com.sa'
|
||||
inspira-bvba:
|
||||
icons:
|
||||
- chess-knight
|
||||
label: Inspira bvba
|
||||
url: 'https://www.inspira.be'
|
||||
instalod:
|
||||
icons:
|
||||
- instalod
|
||||
label: InstaLOD
|
||||
url: 'https://instalod.com'
|
||||
joe-emison:
|
||||
icons:
|
||||
- blender-phone
|
||||
label: Joe Emison
|
||||
joget:
|
||||
icons:
|
||||
- joget
|
||||
label: Joget
|
||||
url: 'http://www.joget.org'
|
||||
jon-galloway:
|
||||
icons:
|
||||
- crow
|
||||
label: Jon Galloway
|
||||
kevin-barone:
|
||||
icons:
|
||||
- file-contract
|
||||
label: Kevin Barone
|
||||
key-cdn:
|
||||
icons:
|
||||
- keycdn
|
||||
label: KeyCDN
|
||||
url: 'https://www.keycdn.com'
|
||||
korvue:
|
||||
icons:
|
||||
- korvue
|
||||
label: Korvue
|
||||
url: 'https://korvue.com'
|
||||
max-elman:
|
||||
icons:
|
||||
- frog
|
||||
label: Max Elman
|
||||
med-apps:
|
||||
icons:
|
||||
- medapps
|
||||
label: MedApps
|
||||
url: 'http://medapps.com.au'
|
||||
medapps:
|
||||
icons:
|
||||
- book-medical
|
||||
- book-user
|
||||
- books-medical
|
||||
- clinic-medical
|
||||
- clipboard-user
|
||||
- comment-alt-medical
|
||||
- comment-medical
|
||||
- crutch
|
||||
- crutches
|
||||
- disease
|
||||
- files-medical
|
||||
- head-side-brain
|
||||
- head-side-medical
|
||||
- hospital-user
|
||||
- hospitals
|
||||
- laptop-medical
|
||||
- pager
|
||||
- stretcher
|
||||
- user-md-chat
|
||||
- users-medical
|
||||
- walker
|
||||
label: MedApps
|
||||
url: 'https://medapps.com.au'
|
||||
megaport:
|
||||
icons:
|
||||
- megaport
|
||||
label: Megaport
|
||||
url: 'https://www.megaport.com'
|
||||
mix:
|
||||
icons:
|
||||
- mix
|
||||
label: Mix
|
||||
url: 'http://mix.com'
|
||||
mizuni:
|
||||
icons:
|
||||
- mizuni
|
||||
label: Mizuni
|
||||
url: 'http://www.mizuni.com'
|
||||
mrt:
|
||||
icons:
|
||||
- medrt
|
||||
label: MRT
|
||||
url: 'https://medrt.co.jp'
|
||||
mylogin-info:
|
||||
icons:
|
||||
- user-shield
|
||||
label: mylogin.info
|
||||
url: 'https://www.mylogin.info'
|
||||
napster:
|
||||
icons:
|
||||
- napster
|
||||
label: Napster
|
||||
url: 'http://www.napster.com'
|
||||
nimblr:
|
||||
icons:
|
||||
- nimblr
|
||||
label: Nimblr
|
||||
url: 'https://nimblr.ai'
|
||||
nompse:
|
||||
icons:
|
||||
- chalkboard
|
||||
- chalkboard-teacher
|
||||
label: Nomp.se
|
||||
url: 'https://nomp.se'
|
||||
ns8:
|
||||
icons:
|
||||
- ns8
|
||||
label: NS8
|
||||
url: 'https://www.ns8.com'
|
||||
nutritionix:
|
||||
icons:
|
||||
- nutritionix
|
||||
label: Nutritionix
|
||||
url: 'http://www.nutritionix.com'
|
||||
octopus-deploy:
|
||||
icons:
|
||||
- octopus-deploy
|
||||
label: Octopus Deploy
|
||||
url: 'https://octopus.com'
|
||||
page4-corporation:
|
||||
icons:
|
||||
- page4
|
||||
label: page4 Corporation
|
||||
url: 'https://en.page4.com'
|
||||
pal-fed:
|
||||
icons:
|
||||
- palfed
|
||||
label: PalFed
|
||||
url: 'https://www.palfed.com'
|
||||
patch-patrol:
|
||||
icons:
|
||||
- vest
|
||||
- vest-patches
|
||||
label: Patch Patrol
|
||||
url: 'https://patchpatrol.com'
|
||||
pcsg:
|
||||
icons:
|
||||
- horse-head
|
||||
label: PCSG
|
||||
url: 'https://www.pcsg.de'
|
||||
perbyte:
|
||||
icons:
|
||||
- perbyte
|
||||
label: PerByte
|
||||
url: 'https://www.perbyte.com'
|
||||
phabricator:
|
||||
icons:
|
||||
- phabricator
|
||||
label: Phabricator
|
||||
url: 'http://phacility.com'
|
||||
promo-wizard:
|
||||
icons:
|
||||
- hat-wizard
|
||||
label: Promo Wizard
|
||||
url: 'https://promowizard.co.uk'
|
||||
pulse-eight:
|
||||
icons:
|
||||
- volume-mute
|
||||
label: Pulse-Eight
|
||||
url: 'https://pulse-eight.com'
|
||||
purely-interactive:
|
||||
icons:
|
||||
- kiwi-bird
|
||||
label: Purely Interactive
|
||||
url: 'https://www.purelyinteractive.ca'
|
||||
pushed:
|
||||
icons:
|
||||
- pushed
|
||||
label: Pushed
|
||||
url: 'https://pushed.co'
|
||||
quin-scape:
|
||||
icons:
|
||||
- quinscape
|
||||
label: QuinScape
|
||||
url: 'https://www.quinscape.de'
|
||||
reacteurope:
|
||||
icons:
|
||||
- reacteurope
|
||||
label: ReactEurope
|
||||
url: 'https://www.react-europe.org'
|
||||
readme-io:
|
||||
icons:
|
||||
- readme
|
||||
label: Readme.io
|
||||
url: 'http://readme.io'
|
||||
red-river:
|
||||
icons:
|
||||
- red-river
|
||||
label: red river
|
||||
url: 'https://river.red'
|
||||
replyd:
|
||||
icons:
|
||||
- replyd
|
||||
label: replyd
|
||||
resolving:
|
||||
icons:
|
||||
- resolving
|
||||
label: Resolving
|
||||
url: 'https://resolving.com'
|
||||
rev-io:
|
||||
icons:
|
||||
- rev
|
||||
label: Rev.io
|
||||
url: 'https://rev.io'
|
||||
rock-rms:
|
||||
icons:
|
||||
- rockrms
|
||||
label: Rock RMS
|
||||
url: 'http://rockrms.com'
|
||||
rocket-chat:
|
||||
icons:
|
||||
- comment
|
||||
- comment-alt
|
||||
- comment-alt-check
|
||||
- comment-alt-dots
|
||||
- comment-alt-edit
|
||||
- comment-alt-exclamation
|
||||
- comment-alt-lines
|
||||
- comment-alt-minus
|
||||
- comment-alt-plus
|
||||
- comment-alt-slash
|
||||
- comment-alt-smile
|
||||
- comment-alt-times
|
||||
- comment-check
|
||||
- comment-dots
|
||||
- comment-edit
|
||||
- comment-exclamation
|
||||
- comment-lines
|
||||
- comment-minus
|
||||
- comment-plus
|
||||
- comment-slash
|
||||
- comment-smile
|
||||
- comment-times
|
||||
- comments
|
||||
- comments-alt
|
||||
- frown
|
||||
- meh
|
||||
- phone
|
||||
- phone-plus
|
||||
- phone-slash
|
||||
- poo
|
||||
- quote-left
|
||||
- quote-right
|
||||
- rocketchat
|
||||
- smile
|
||||
- smile-plus
|
||||
- video
|
||||
- video-plus
|
||||
- video-slash
|
||||
label: Rocket.Chat
|
||||
url: 'https://rocket.chat'
|
||||
rodney-oliver:
|
||||
icons:
|
||||
- folder-minus
|
||||
- folder-plus
|
||||
label: Rodney Oliver
|
||||
schlix:
|
||||
icons:
|
||||
- schlix
|
||||
label: SCHLIX
|
||||
url: 'http://schlix.com'
|
||||
search-eng-in:
|
||||
icons:
|
||||
- searchengin
|
||||
label: SearchEng.in
|
||||
url: 'http://searcheng.in'
|
||||
service-stack:
|
||||
icons:
|
||||
- servicestack
|
||||
label: ServiceStack
|
||||
url: 'https://servicestack.net'
|
||||
shawn-storie:
|
||||
icons:
|
||||
- teeth
|
||||
- teeth-open
|
||||
label: Shawn Storie
|
||||
shopware:
|
||||
icons:
|
||||
- shopware
|
||||
label: Shopware
|
||||
url: 'https://shopware.de'
|
||||
shp:
|
||||
icons:
|
||||
- school
|
||||
label: SHP
|
||||
url: 'http://shp.com'
|
||||
silicon-barn-inc:
|
||||
icons:
|
||||
- project-diagram
|
||||
label: Silicon Barn Inc
|
||||
url: 'https://siliconbarn.com'
|
||||
sistrix:
|
||||
icons:
|
||||
- sistrix
|
||||
label: SISTRIX
|
||||
url: 'https://www.sistrix.de'
|
||||
smup:
|
||||
icons:
|
||||
- shoe-prints
|
||||
label: Smup
|
||||
url: 'https://www.atomsoftware.com.au'
|
||||
speakap:
|
||||
icons:
|
||||
- speakap
|
||||
label: Speakap
|
||||
url: 'https://speakap.com'
|
||||
stay-linked:
|
||||
icons:
|
||||
- barcode-alt
|
||||
- barcode-read
|
||||
- barcode-scan
|
||||
- box
|
||||
- box-check
|
||||
- boxes
|
||||
- clipboard-check
|
||||
- clipboard-list
|
||||
- conveyor-belt
|
||||
- conveyor-belt-alt
|
||||
- dolly
|
||||
- dolly-empty
|
||||
- dolly-flatbed
|
||||
- dolly-flatbed-alt
|
||||
- dolly-flatbed-empty
|
||||
- forklift
|
||||
- hand-holding-box
|
||||
- hand-receiving
|
||||
- inventory
|
||||
- pallet
|
||||
- pallet-alt
|
||||
- scanner
|
||||
- scanner-keyboard
|
||||
- scanner-touchscreen
|
||||
- shipping-fast
|
||||
- shipping-timed
|
||||
- tablet-rugged
|
||||
- truck
|
||||
- warehouse
|
||||
- warehouse-alt
|
||||
label: StayLinked
|
||||
url: 'https://www.staylinked.com'
|
||||
sticker-mule:
|
||||
icons:
|
||||
- sticker-mule
|
||||
label: Sticker Mule
|
||||
url: 'https://stickermule.com'
|
||||
studio-vinari:
|
||||
icons:
|
||||
- studiovinari
|
||||
label: Studio Vinari
|
||||
url: 'https://studiovinari.com'
|
||||
supple:
|
||||
icons:
|
||||
- ad
|
||||
- analytics
|
||||
- badge-check
|
||||
- badge-dollar
|
||||
- badge-percent
|
||||
- bullhorn
|
||||
- bullseye
|
||||
- bullseye-arrow
|
||||
- bullseye-pointer
|
||||
- comment-alt-dollar
|
||||
- comment-dollar
|
||||
- comments-alt-dollar
|
||||
- comments-dollar
|
||||
- envelope-open-dollar
|
||||
- envelope-open-text
|
||||
- funnel-dollar
|
||||
- gift-card
|
||||
- lightbulb-dollar
|
||||
- lightbulb-exclamation
|
||||
- lightbulb-on
|
||||
- lightbulb-slash
|
||||
- mail-bulk
|
||||
- megaphone
|
||||
- poll
|
||||
- poll-h
|
||||
- search-dollar
|
||||
- search-location
|
||||
- supple
|
||||
- user-crown
|
||||
- users-crown
|
||||
label: Supple
|
||||
url: 'https://supple.com.au'
|
||||
the-red-yeti:
|
||||
icons:
|
||||
- the-red-yeti
|
||||
label: The Red Yeti
|
||||
url: 'http://theredyeti.com'
|
||||
the-us-sunnah-foundation:
|
||||
icons:
|
||||
- book-heart
|
||||
- box-heart
|
||||
- box-usd
|
||||
- dollar-sign
|
||||
- donate
|
||||
- dove
|
||||
- gift
|
||||
- globe
|
||||
- hand-heart
|
||||
- hand-holding-heart
|
||||
- hand-holding-seedling
|
||||
- hand-holding-usd
|
||||
- hand-holding-water
|
||||
- hands-heart
|
||||
- hands-helping
|
||||
- hands-usd
|
||||
- handshake
|
||||
- handshake-alt
|
||||
- heart
|
||||
- heart-circle
|
||||
- heart-square
|
||||
- home-heart
|
||||
- leaf
|
||||
- leaf-heart
|
||||
- parachute-box
|
||||
- piggy-bank
|
||||
- ribbon
|
||||
- seedling
|
||||
- usd-circle
|
||||
- usd-square
|
||||
label: The us-Sunnah Foundation
|
||||
url: 'https://www.ussunnah.org'
|
||||
themeco:
|
||||
icons:
|
||||
- themeco
|
||||
label: Themeco
|
||||
url: 'https://theme.co'
|
||||
think-peaks:
|
||||
icons:
|
||||
- think-peaks
|
||||
label: Think Peaks
|
||||
url: 'https://thinkpeaks.com/'
|
||||
typo3:
|
||||
icons:
|
||||
- typo3
|
||||
label: Typo3
|
||||
url: 'https://typo3.org'
|
||||
uncharted:
|
||||
icons:
|
||||
- uncharted
|
||||
label: Uncharted Software
|
||||
url: 'https://uncharted.software'
|
||||
uniregistry:
|
||||
icons:
|
||||
- uniregistry
|
||||
label: Uniregistry
|
||||
url: 'https://uniregistry.com'
|
||||
us-sunnah-foundation:
|
||||
icons:
|
||||
- ussunnah
|
||||
label: us-Sunnah Foundation
|
||||
url: 'https://www.ussunnah.org'
|
||||
vaadin:
|
||||
icons:
|
||||
- vaadin
|
||||
label: Vaadin
|
||||
url: 'http://vaadin.com'
|
||||
via:
|
||||
icons:
|
||||
- car-crash
|
||||
- draw-circle
|
||||
- draw-polygon
|
||||
- draw-square
|
||||
- house-damage
|
||||
- layer-group
|
||||
- layer-minus
|
||||
- layer-plus
|
||||
- skull-crossbones
|
||||
- user-injured
|
||||
label: VIA Traffic Software Solutions
|
||||
url: 'https://www.via.software'
|
||||
victor-costan:
|
||||
icons:
|
||||
- otter
|
||||
label: Staphany Park and Victor Costan
|
||||
vnv:
|
||||
icons:
|
||||
- vnv
|
||||
label: VNV
|
||||
url: 'https://www.vnv.ch'
|
||||
watchman-monitoring:
|
||||
icons:
|
||||
- watchman-monitoring
|
||||
label: Watchman Monitoring
|
||||
url: 'https://www.watchmanmonitoring.com'
|
||||
weedable:
|
||||
icons:
|
||||
- bong
|
||||
- cannabis
|
||||
- hippo
|
||||
- joint
|
||||
- mortar-pestle
|
||||
- prescription
|
||||
label: Weedable
|
||||
url: 'https://www.weedable.com'
|
||||
whmcs:
|
||||
icons:
|
||||
- whmcs
|
||||
label: WHMCS
|
||||
url: 'https://www.whmcs.com'
|
||||
wodu:
|
||||
icons:
|
||||
- wodu
|
||||
label: Wodu Media
|
||||
url: 'https://www.wodu.com'
|
||||
workrails:
|
||||
icons:
|
||||
- briefcase
|
||||
label: WorkRails
|
||||
url: 'https://www.workrails.com'
|
||||
wpressr:
|
||||
icons:
|
||||
- wpressr
|
||||
label: wpressr
|
||||
url: 'https://wpressr.com'
|
|
@ -0,0 +1,58 @@
|
|||
{
|
||||
"description": "The iconic font, CSS, and SVG framework",
|
||||
"keywords": [
|
||||
"font",
|
||||
"awesome",
|
||||
"fontawesome",
|
||||
"icon",
|
||||
"svg",
|
||||
"bootstrap"
|
||||
],
|
||||
"homepage": "https://fontawesome.com",
|
||||
"bugs": {
|
||||
"url": "http://github.com/FortAwesome/Font-Awesome/issues"
|
||||
},
|
||||
"author": {
|
||||
"name": "Dave Gandy",
|
||||
"email": "dave@fontawesome.com",
|
||||
"web": "http://twitter.com/davegandy"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Brian Talbot",
|
||||
"web": "http://twitter.com/talbs"
|
||||
},
|
||||
{
|
||||
"name": "Travis Chase",
|
||||
"web": "http://twitter.com/supercodepoet"
|
||||
},
|
||||
{
|
||||
"name": "Rob Madole",
|
||||
"web": "http://twitter.com/robmadole"
|
||||
},
|
||||
{
|
||||
"name": "Geremia Taglialatela",
|
||||
"web": "http://twitter.com/gtagliala"
|
||||
},
|
||||
{
|
||||
"name": "Mike Wilkerson",
|
||||
"web": "http://twitter.com/mw77"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/FortAwesome/Font-Awesome"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"dependencies": {},
|
||||
"version": "5.15.1",
|
||||
"name": "@fortawesome/fontawesome-pro",
|
||||
"main": "js/fontawesome.js",
|
||||
"style": "css/fontawesome.css",
|
||||
"license": "UNLICENSED",
|
||||
"scripts": {
|
||||
"postinstall": "node attribution.js"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
// Animated Icons
|
||||
// --------------------------
|
||||
|
||||
.#{$fa-css-prefix}-spin {
|
||||
animation: fa-spin 2s infinite linear;
|
||||
}
|
||||
|
||||
.#{$fa-css-prefix}-pulse {
|
||||
animation: fa-spin 1s infinite steps(8);
|
||||
}
|
||||
|
||||
@keyframes fa-spin {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
// Bordered & Pulled
|
||||
// -------------------------
|
||||
|
||||
.#{$fa-css-prefix}-border {
|
||||
border: solid .08em $fa-border-color;
|
||||
border-radius: .1em;
|
||||
padding: .2em .25em .15em;
|
||||
}
|
||||
|
||||
.#{$fa-css-prefix}-pull-left { float: left; }
|
||||
.#{$fa-css-prefix}-pull-right { float: right; }
|
||||
|
||||
.#{$fa-css-prefix},
|
||||
.fas,
|
||||
.far,
|
||||
.fal,
|
||||
.fab {
|
||||
&.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
|
||||
&.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
// Base Class Definition
|
||||
// -------------------------
|
||||
|
||||
.#{$fa-css-prefix},
|
||||
.fas,
|
||||
.far,
|
||||
.fal,
|
||||
.fad,
|
||||
.fab {
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
display: inline-block;
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
text-rendering: auto;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
%fa-icon {
|
||||
@include fa-icon;
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
// Fixed Width Icons
|
||||
// -------------------------
|
||||
.#{$fa-css-prefix}-fw {
|
||||
text-align: center;
|
||||
width: $fa-fw-width;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue