From 3fe740839d2da7db455c403b8e06f45526bdaf58 Mon Sep 17 00:00:00 2001 From: Thomas Maas Date: Fri, 7 Sep 2018 17:05:47 +0200 Subject: [PATCH 1/4] Jekyl Basics --- .gitignore | 4 +++ Gemfile | 30 +++++++++++++++++++++ Gemfile.lock | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++ _config.yml | 44 ++++++++++++++++++++++++++++++- 4 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 Gemfile.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f38fae7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +_site +.sass-cache +.jekyll-metadata +*.DS_Store diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..6d3120f --- /dev/null +++ b/Gemfile @@ -0,0 +1,30 @@ +source "https://rubygems.org" + +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +gem "jekyll", "~> 3.7.3" + +# This is the default theme for new Jekyll sites. You may change this to anything you like. +gem "minima", "~> 2.0" + +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +# gem "github-pages", group: :jekyll_plugins + +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.6" +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.0" if Gem.win_platform? + diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..c112c0c --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,74 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + colorator (1.1.0) + concurrent-ruby (1.0.5) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + eventmachine (1.2.7) + ffi (1.9.25) + forwardable-extended (2.6.0) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.7.3) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (~> 1.14) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-feed (0.10.0) + jekyll (~> 3.3) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.5.0) + jekyll (~> 3.3) + jekyll-watch (2.0.0) + listen (~> 3.0) + kramdown (1.16.2) + liquid (4.0.0) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + mercenary (0.3.6) + minima (2.5.0) + jekyll (~> 3.5) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + pathutil (0.16.1) + forwardable-extended (~> 2.6) + public_suffix (2.0.5) + rb-fsevent (0.10.3) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) + rouge (2.2.1) + ruby_dep (1.5.0) + safe_yaml (1.0.4) + sass (3.5.6) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + +PLATFORMS + ruby + +DEPENDENCIES + jekyll (~> 3.7.3) + jekyll-feed (~> 0.6) + minima (~> 2.0) + tzinfo-data + +BUNDLED WITH + 1.16.3 diff --git a/_config.yml b/_config.yml index c419263..42b7dd5 100644 --- a/_config.yml +++ b/_config.yml @@ -1 +1,43 @@ -theme: jekyll-theme-cayman \ No newline at end of file +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. + +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. +title: 3scale API Management +3scale_product_version: 2.2 # used for deep linking to the correct docs on red hat. +email: your-email@example.com +description: >- # this means to ignore newlines until "baseurl:" + Share, secure, distribute, control, and monetize your APIs. +baseurl: "" # the subpath of your site, e.g. /blog +url: "" # the base hostname & protocol for your site, e.g. http://example.com +twitter_username: 3scale +github_username: 3scale +#permalink: pretty + +# Build settings +markdown: kramdown +theme: minima +plugins: + - jekyll-feed + +# Exclude from processing. +# The following items will not be processed, by default. Create a custom list +# to override the default setting. +# exclude: +# - Gemfile +# - Gemfile.lock +# - node_modules +# - vendor/bundle/ +# - vendor/cache/ +# - vendor/gems/ +# - vendor/ruby/ From 4dac3bce9d9b0fc871d888b6bc7764a2cc4f162e Mon Sep 17 00:00:00 2001 From: Thomas Maas Date: Fri, 7 Sep 2018 17:08:48 +0200 Subject: [PATCH 2/4] import theme --- 404.html | 15 ++ _includes/disqus_comments.html | 20 ++ _includes/footer.html | 35 ++++ _includes/google-analytics.html | 12 ++ _includes/head.html | 13 ++ _includes/header.html | 34 ++++ _includes/icon-github.html | 1 + _includes/icon-github.svg | 1 + _includes/icon-twitter.html | 1 + _includes/icon-twitter.svg | 1 + _includes/social.html | 14 ++ _layouts/default.html | 20 ++ _layouts/home.html | 12 ++ _layouts/page.html | 11 ++ _layouts/post.html | 27 +++ _posts/2018-07-17-welcome-to-jekyll.md | 25 +++ _sass/minima.scss | 88 +++++++++ _sass/minima/_base.scss | 255 +++++++++++++++++++++++++ _sass/minima/_layout.scss | 254 ++++++++++++++++++++++++ _sass/minima/_syntax-highlighting.scss | 71 +++++++ assets/main.scss | 5 + assets/minima-social-icons.svg | 33 ++++ 22 files changed, 948 insertions(+) create mode 100644 404.html create mode 100644 _includes/disqus_comments.html create mode 100644 _includes/footer.html create mode 100644 _includes/google-analytics.html create mode 100644 _includes/head.html create mode 100644 _includes/header.html create mode 100644 _includes/icon-github.html create mode 100644 _includes/icon-github.svg create mode 100644 _includes/icon-twitter.html create mode 100644 _includes/icon-twitter.svg create mode 100644 _includes/social.html create mode 100644 _layouts/default.html create mode 100644 _layouts/home.html create mode 100644 _layouts/page.html create mode 100644 _layouts/post.html create mode 100644 _posts/2018-07-17-welcome-to-jekyll.md create mode 100644 _sass/minima.scss create mode 100644 _sass/minima/_base.scss create mode 100644 _sass/minima/_layout.scss create mode 100644 _sass/minima/_syntax-highlighting.scss create mode 100644 assets/main.scss create mode 100644 assets/minima-social-icons.svg diff --git a/404.html b/404.html new file mode 100644 index 0000000..76c6662 --- /dev/null +++ b/404.html @@ -0,0 +1,15 @@ +--- +layout: page +heading: 404 Not found… +title: + +--- + +
+
+

Not Found :-(

+

The requested page could not be found.

+
+ +
+ diff --git a/_includes/disqus_comments.html b/_includes/disqus_comments.html new file mode 100644 index 0000000..d9400f2 --- /dev/null +++ b/_includes/disqus_comments.html @@ -0,0 +1,20 @@ +{%- if page.comments != false and jekyll.environment == "production" -%} + +
+ + +{%- endif -%} diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 0000000..db72885 --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,35 @@ +
+ + +
+ + + + + +
+ +
diff --git a/_includes/google-analytics.html b/_includes/google-analytics.html new file mode 100644 index 0000000..e9afb20 --- /dev/null +++ b/_includes/google-analytics.html @@ -0,0 +1,12 @@ + + diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000..4d8da4c --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,13 @@ + + + + + {%- seo -%} + + + + {%- feed_meta -%} + {%- if jekyll.environment == 'production' and site.google_analytics -%} + {%- include google-analytics.html -%} + {%- endif -%} + diff --git a/_includes/header.html b/_includes/header.html new file mode 100644 index 0000000..86803ba --- /dev/null +++ b/_includes/header.html @@ -0,0 +1,34 @@ + diff --git a/_includes/icon-github.html b/_includes/icon-github.html new file mode 100644 index 0000000..e501a16 --- /dev/null +++ b/_includes/icon-github.html @@ -0,0 +1 @@ +{% include icon-github.svg %}{{ include.username }} diff --git a/_includes/icon-github.svg b/_includes/icon-github.svg new file mode 100644 index 0000000..e6c5f6d --- /dev/null +++ b/_includes/icon-github.svg @@ -0,0 +1 @@ + diff --git a/_includes/icon-twitter.html b/_includes/icon-twitter.html new file mode 100644 index 0000000..e623dbd --- /dev/null +++ b/_includes/icon-twitter.html @@ -0,0 +1 @@ +{{ include.username }} diff --git a/_includes/icon-twitter.svg b/_includes/icon-twitter.svg new file mode 100644 index 0000000..efc0ecf --- /dev/null +++ b/_includes/icon-twitter.svg @@ -0,0 +1 @@ + diff --git a/_includes/social.html b/_includes/social.html new file mode 100644 index 0000000..44046b8 --- /dev/null +++ b/_includes/social.html @@ -0,0 +1,14 @@ + diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..733434c --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,20 @@ + + + + {%- include head.html -%} + + + + {%- include header.html -%} + +
+
+ {{ content }} +
+
+ + + + + + diff --git a/_layouts/home.html b/_layouts/home.html new file mode 100644 index 0000000..0eaef02 --- /dev/null +++ b/_layouts/home.html @@ -0,0 +1,12 @@ +--- +layout: default +--- + +
+ +

{{ page.heading }}

+ + + + +
diff --git a/_layouts/page.html b/_layouts/page.html new file mode 100644 index 0000000..e824cc0 --- /dev/null +++ b/_layouts/page.html @@ -0,0 +1,11 @@ +--- +layout: default +--- +
+

{{ page.heading }}

+ +
+ {{ content }} +
+ +
diff --git a/_layouts/post.html b/_layouts/post.html new file mode 100644 index 0000000..abf9696 --- /dev/null +++ b/_layouts/post.html @@ -0,0 +1,27 @@ +--- +layout: default +--- +
+ +
+

{{ page.title | escape }}

+ +
+ +
+ {{ content }} +
+ + {%- if site.disqus.shortname -%} + {%- include disqus_comments.html -%} + {%- endif -%} + + +
diff --git a/_posts/2018-07-17-welcome-to-jekyll.md b/_posts/2018-07-17-welcome-to-jekyll.md new file mode 100644 index 0000000..8e764d0 --- /dev/null +++ b/_posts/2018-07-17-welcome-to-jekyll.md @@ -0,0 +1,25 @@ +--- +layout: post +title: "Welcome to Jekyll!" +date: 2018-07-17 16:31:33 +0200 +categories: jekyll update +--- +You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. + +To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. + +Jekyll also offers powerful support for code snippets: + +{% highlight ruby %} +def print_hi(name) + puts "Hi, #{name}" +end +print_hi('Tom') +#=> prints 'Hi, Tom' to STDOUT. +{% endhighlight %} + +Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. + +[jekyll-docs]: https://jekyllrb.com/docs/home +[jekyll-gh]: https://github.com/jekyll/jekyll +[jekyll-talk]: https://talk.jekyllrb.com/ diff --git a/_sass/minima.scss b/_sass/minima.scss new file mode 100644 index 0000000..aed51fe --- /dev/null +++ b/_sass/minima.scss @@ -0,0 +1,88 @@ +@charset "utf-8"; + +// Define defaults for each variable. + +$base-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default; +$base-font-size: 16px !default; +$base-font-weight: 400 !default; +$small-font-size: $base-font-size * 0.875 !default; +$base-line-height: 1.5 !default; + +$spacing-unit: 3rem !default; + +$text-color: #111 !default; +$solid-background-color: rgba(#dadada, .95) !default; +$background-color: rgba(#dadada, .95) !default; +$light-background-color: rgba(white, 0.95); + +$brand-color: #FF7314 !default; + +$grey-color: #828282 !default; +$grey-color-light: lighten($grey-color, 40%) !default; +$grey-color-dark: darken($grey-color, 25%) !default; + +$table-text-align: left !default; + +// Width of the content area +$content-width: 100% !default; + +$on-palm: 600px !default; +$on-laptop: 800px !default; + +// Use media queries like this: +// @include media-query($on-palm) { +// .wrapper { +// padding-right: $spacing-unit / 2; +// padding-left: $spacing-unit / 2; +// } +// } +@mixin media-query($device) { + @media screen and (max-width: $device) { + @content; + } +} + +@mixin relative-font-size($ratio) { + font-size: $base-font-size * $ratio; +} + +//$minScreen: 1rem; +//$maxScreen: 20rem; +$minScreen: 320px; +$maxScreen: 4000px; +$minFont: 1rem; +$maxFont: 400rem; + +// http://madebymike.com.au/writing/precise-control-responsive-typography/ +// https://gist.github.com/indrekpaas/7f22e44ace49b5124eec +@mixin fluid-type($properties, $min-vw, $max-vw, $min-value, $max-value) { + & { + @each $property in $properties { + #{$property}: $min-value; + } + + @media screen and (min-width: $min-vw) { + @each $property in $properties { + #{$property}: calc(#{$min-value} + #{strip-unit($max-value - $min-value)} * ((100vw - #{$min-vw}) / #{strip-unit($max-vw - $min-vw)})); + } + } + + @media screen and (min-width: $max-vw) { + @each $property in $properties { + #{$property}: $max-value; + } + } + } +} + +@function strip-unit($value) { + @return $value / ($value * 0 + 1); +} + +// Import partials. +@import + "minima/base", + "minima/layout", + "minima/syntax-highlighting", + "3scale/layout" +; diff --git a/_sass/minima/_base.scss b/_sass/minima/_base.scss new file mode 100644 index 0000000..2cbd37e --- /dev/null +++ b/_sass/minima/_base.scss @@ -0,0 +1,255 @@ +/** + * Reset some basic elements + */ +body, h1, h2, h3, h4, h5, h6, +p, blockquote, pre, hr, +dl, dd, ol, ul, figure { + margin: 0; + padding: 0; +} + + + +/** + * Basic styling + */ +body { + font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family; + color: $text-color; + background-color: $background-color; + -webkit-text-size-adjust: 100%; + -webkit-font-feature-settings: "kern" 1; + -moz-font-feature-settings: "kern" 1; + -o-font-feature-settings: "kern" 1; + font-feature-settings: "kern" 1; + font-kerning: normal; + display: flex; + min-height: 100vh; + flex-direction: column; +} + + + +/** + * Set `margin-bottom` to maintain vertical rhythm + */ +h1, h2, h3, h4, h5, h6, +p, blockquote, pre, +ul, ol, dl, figure, +%vertical-rhythm { + margin-bottom: $spacing-unit / 2; +} + + + +/** + * `main` element + */ +main { + display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */ +} + + + +/** + * Images + */ +img { + max-width: 100%; + vertical-align: middle; +} + + + +/** + * Figures + */ +figure > img { + display: block; +} + +figcaption { + font-size: $small-font-size; +} + + + +/** + * Lists + */ +ul, ol { + margin-left: $spacing-unit; +} + +li { + > ul, + > ol { + margin-bottom: 0; + } +} + + + +/** + * Headings + */ +h1, h2, h3, h4, h5, h6 { + font-weight: $base-font-weight; +} + + + +/** + * Links + */ +a { + color: $text-color; + text-decoration: underline; + + &:visited { + color: $text-color; + } + + &:hover { + + color: $brand-color; + text-decoration: underline; + } + + .social-media-list &:hover { + text-decoration: none; + + .username { + text-decoration: underline; + } + } +} + + +/** + * Blockquotes + */ +blockquote { + color: $grey-color; + border-left: 4px solid $grey-color-light; + padding-left: $spacing-unit / 2; + @include relative-font-size(1.125); + letter-spacing: -1px; + font-style: italic; + + > :last-child { + margin-bottom: 0; + } +} + + + +/** + * Code formatting + */ +pre, +code { + @include relative-font-size(0.9375); + border: 1px solid $grey-color-light; + border-radius: 3px; + background-color: #eef; +} + +code { + padding: 1px 5px; +} + +pre { + padding: 8px 12px; + overflow-x: auto; + + > code { + border: 0; + padding-right: 0; + padding-left: 0; + } +} + + + +/** + * Wrapper + */ +.wrapper { + max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2)); + max-width: calc(#{$content-width} - (#{$spacing-unit} * 2)); + margin-right: auto; + margin-left: auto; + padding-right: $spacing-unit; + padding-left: $spacing-unit; + @extend %clearfix; + + @include media-query($on-laptop) { + max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit})); + max-width: calc(#{$content-width} - (#{$spacing-unit})); + padding-right: $spacing-unit / 2; + padding-left: $spacing-unit / 2; + } +} + + + +/** + * Clearfix + */ +%clearfix:after { + content: ""; + display: table; + clear: both; +} + + + +/** + * Icons + */ + +.svg-icon { + width: 16px; + height: 16px; + display: inline-block; + fill: #{$grey-color}; + padding-right: 5px; + vertical-align: text-top; +} + +.social-media-list { + li + li { + padding-top: 5px; + } +} + + + +/** + * Tables + */ +table { + margin-bottom: $spacing-unit; + width: 100%; + text-align: $table-text-align; + color: lighten($text-color, 18%); + border-collapse: collapse; + border: 1px solid $grey-color-light; + tr { + &:nth-child(even) { + background-color: lighten($grey-color-light, 6%); + } + } + th, td { + padding: ($spacing-unit / 3) ($spacing-unit / 2); + } + th { + background-color: lighten($grey-color-light, 3%); + border: 1px solid darken($grey-color-light, 4%); + border-bottom-color: darken($grey-color-light, 12%); + } + td { + border: 1px solid $grey-color-light; + } +} diff --git a/_sass/minima/_layout.scss b/_sass/minima/_layout.scss new file mode 100644 index 0000000..72ac91e --- /dev/null +++ b/_sass/minima/_layout.scss @@ -0,0 +1,254 @@ +/** + * Site header + */ +.site-header { + border-bottom: 1px solid $grey-color-light; + min-height: $spacing-unit * 1.865; + + // Positioning context for the mobile navigation icon + position: relative; +} + +.site-title { + @include relative-font-size(1.625); + font-weight: 300; + line-height: $base-line-height * $base-font-size * 2.25; + letter-spacing: -1px; + margin-bottom: 0; + float: left; + + &, + &:visited { + color: $grey-color-dark; + } +} + +.site-nav { + float: right; + line-height: $base-line-height * $base-font-size * 2.25; + + .nav-trigger { + display: none; + } + + .menu-icon { + display: none; + } + + .page-link { + color: $text-color; + line-height: $base-line-height; + + // Gaps between nav items, but not on the last one + &:not(:last-child) { + margin-right: 20px; + } + } + + @include media-query($on-palm) { + position: absolute; + top: 9px; + right: $spacing-unit / 2; + background-color: $background-color; + border: 1px solid $grey-color-light; + border-radius: 5px; + text-align: right; + + label[for="nav-trigger"] { + display: block; + float: right; + width: 36px; + height: 36px; + z-index: 2; + cursor: pointer; + } + + .menu-icon { + display: block; + float: right; + width: 36px; + height: 26px; + line-height: 0; + padding-top: 10px; + text-align: center; + + > svg { + fill: $grey-color-dark; + } + } + + input ~ .trigger { + clear: both; + display: none; + } + + input:checked ~ .trigger { + display: block; + padding-bottom: 5px; + } + + .page-link { + display: block; + padding: 5px 10px; + + &:not(:last-child) { + margin-right: 0; + } + margin-left: 20px; + } + } +} + + + +/** + * Site footer + */ +.site-footer { + border-top: 1px solid $grey-color-light; + padding: $spacing-unit 0; +} + +.footer-heading { + @include relative-font-size(1.125); + margin-bottom: $spacing-unit / 2; +} + +.contact-list, +.social-media-list { + list-style: none; + margin-left: 0; +} + +.footer-col-wrapper { + @include relative-font-size(0.9375); + color: $grey-color; + margin-left: -$spacing-unit / 2; + @extend %clearfix; +} + +.footer-col { + float: left; + margin-bottom: $spacing-unit / 2; + padding-left: $spacing-unit / 2; +} + +.footer-col-1 { + width: -webkit-calc(35% - (#{$spacing-unit} / 2)); + width: calc(35% - (#{$spacing-unit} / 2)); +} + +.footer-col-2 { + width: -webkit-calc(20% - (#{$spacing-unit} / 2)); + width: calc(20% - (#{$spacing-unit} / 2)); +} + +.footer-col-3 { + width: -webkit-calc(45% - (#{$spacing-unit} / 2)); + width: calc(45% - (#{$spacing-unit} / 2)); +} + +@include media-query($on-laptop) { + .footer-col-1, + .footer-col-2 { + width: -webkit-calc(50% - (#{$spacing-unit} / 2)); + width: calc(50% - (#{$spacing-unit} / 2)); + } + + .footer-col-3 { + width: -webkit-calc(100% - (#{$spacing-unit} / 2)); + width: calc(100% - (#{$spacing-unit} / 2)); + } +} + +@include media-query($on-palm) { + .footer-col { + float: none; + width: -webkit-calc(100% - (#{$spacing-unit} / 2)); + width: calc(100% - (#{$spacing-unit} / 2)); + } +} + + + +/** + * Page content + */ +.page-content { + padding: $spacing-unit 0; + flex: 1; +} + +.page-heading { + @include relative-font-size(2); +} + +.post-list-heading { + @include relative-font-size(1.75); +} + +.post-list { + margin-left: 0; + list-style: none; + + > li { + margin-bottom: $spacing-unit; + } +} + +.post-meta { + font-size: $small-font-size; + color: $grey-color; +} + +.post-link { + display: block; + @include relative-font-size(1.5); +} + + + +/** + * Posts + */ +.post-header { + margin-bottom: $spacing-unit; +} + +.post-title { + @include relative-font-size(2.625); + letter-spacing: -1px; + line-height: 1; + + @include media-query($on-laptop) { + @include relative-font-size(2.25); + } +} + +.post-content { + margin-bottom: $spacing-unit; + + h2 { + @include relative-font-size(2); + + @include media-query($on-laptop) { + @include relative-font-size(1.75); + } + } + + h3 { + @include relative-font-size(1.625); + + @include media-query($on-laptop) { + @include relative-font-size(1.375); + } + } + + h4 { + @include relative-font-size(1.25); + + @include media-query($on-laptop) { + @include relative-font-size(1.125); + } + } +} diff --git a/_sass/minima/_syntax-highlighting.scss b/_sass/minima/_syntax-highlighting.scss new file mode 100644 index 0000000..bccdb89 --- /dev/null +++ b/_sass/minima/_syntax-highlighting.scss @@ -0,0 +1,71 @@ +/** + * Syntax highlighting styles + */ +.highlight { + background: #fff; + @extend %vertical-rhythm; + + .highlighter-rouge & { + background: #eef; + } + + .c { color: #998; font-style: italic } // Comment + .err { color: #a61717; background-color: #e3d2d2 } // Error + .k { font-weight: bold } // Keyword + .o { font-weight: bold } // Operator + .cm { color: #998; font-style: italic } // Comment.Multiline + .cp { color: #999; font-weight: bold } // Comment.Preproc + .c1 { color: #998; font-style: italic } // Comment.Single + .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special + .gd { color: #000; background-color: #fdd } // Generic.Deleted + .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific + .ge { font-style: italic } // Generic.Emph + .gr { color: #a00 } // Generic.Error + .gh { color: #999 } // Generic.Heading + .gi { color: #000; background-color: #dfd } // Generic.Inserted + .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific + .go { color: #888 } // Generic.Output + .gp { color: #555 } // Generic.Prompt + .gs { font-weight: bold } // Generic.Strong + .gu { color: #aaa } // Generic.Subheading + .gt { color: #a00 } // Generic.Traceback + .kc { font-weight: bold } // Keyword.Constant + .kd { font-weight: bold } // Keyword.Declaration + .kp { font-weight: bold } // Keyword.Pseudo + .kr { font-weight: bold } // Keyword.Reserved + .kt { color: #458; font-weight: bold } // Keyword.Type + .m { color: #099 } // Literal.Number + .s { color: #d14 } // Literal.String + .na { color: #008080 } // Name.Attribute + .nb { color: #0086B3 } // Name.Builtin + .nc { color: #458; font-weight: bold } // Name.Class + .no { color: #008080 } // Name.Constant + .ni { color: #800080 } // Name.Entity + .ne { color: #900; font-weight: bold } // Name.Exception + .nf { color: #900; font-weight: bold } // Name.Function + .nn { color: #555 } // Name.Namespace + .nt { color: #000080 } // Name.Tag + .nv { color: #008080 } // Name.Variable + .ow { font-weight: bold } // Operator.Word + .w { color: #bbb } // Text.Whitespace + .mf { color: #099 } // Literal.Number.Float + .mh { color: #099 } // Literal.Number.Hex + .mi { color: #099 } // Literal.Number.Integer + .mo { color: #099 } // Literal.Number.Oct + .sb { color: #d14 } // Literal.String.Backtick + .sc { color: #d14 } // Literal.String.Char + .sd { color: #d14 } // Literal.String.Doc + .s2 { color: #d14 } // Literal.String.Double + .se { color: #d14 } // Literal.String.Escape + .sh { color: #d14 } // Literal.String.Heredoc + .si { color: #d14 } // Literal.String.Interpol + .sx { color: #d14 } // Literal.String.Other + .sr { color: #009926 } // Literal.String.Regex + .s1 { color: #d14 } // Literal.String.Single + .ss { color: #990073 } // Literal.String.Symbol + .bp { color: #999 } // Name.Builtin.Pseudo + .vc { color: #008080 } // Name.Variable.Class + .vg { color: #008080 } // Name.Variable.Global + .vi { color: #008080 } // Name.Variable.Instance + .il { color: #099 } // Literal.Number.Integer.Long +} diff --git a/assets/main.scss b/assets/main.scss new file mode 100644 index 0000000..c60ebe4 --- /dev/null +++ b/assets/main.scss @@ -0,0 +1,5 @@ +--- +# Only the main Sass file needs front matter (the dashes are enough) +--- + +@import "minima"; diff --git a/assets/minima-social-icons.svg b/assets/minima-social-icons.svg new file mode 100644 index 0000000..fa7399f --- /dev/null +++ b/assets/minima-social-icons.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4401972b8f309286f098031312fc7b527fdd8d85 Mon Sep 17 00:00:00 2001 From: Thomas Maas Date: Fri, 7 Sep 2018 17:09:13 +0200 Subject: [PATCH 3/4] 3scale pages, styles and js --- _sass/3scale/_base.sccs | 0 _sass/3scale/_layout.scss | 223 ++++++++++++++++++++++++ assets/404.js | 13 ++ assets/contribute.js | 13 ++ assets/features.js | 65 +++++++ assets/grasp.js | 350 ++++++++++++++++++++++++++++++++++++++ assets/leader-line.min.js | 2 + assets/use.js | 28 +++ contribute.md | 23 +++ grasp.md | 85 +++++++++ index.md | 125 ++++++++++---- use.md | 30 ++++ 12 files changed, 925 insertions(+), 32 deletions(-) create mode 100644 _sass/3scale/_base.sccs create mode 100644 _sass/3scale/_layout.scss create mode 100644 assets/404.js create mode 100644 assets/contribute.js create mode 100644 assets/features.js create mode 100644 assets/grasp.js create mode 100755 assets/leader-line.min.js create mode 100644 assets/use.js create mode 100644 contribute.md create mode 100644 grasp.md create mode 100644 use.md diff --git a/_sass/3scale/_base.sccs b/_sass/3scale/_base.sccs new file mode 100644 index 0000000..e69de29 diff --git a/_sass/3scale/_layout.scss b/_sass/3scale/_layout.scss new file mode 100644 index 0000000..dc3bb86 --- /dev/null +++ b/_sass/3scale/_layout.scss @@ -0,0 +1,223 @@ +body { + box-sizing: border-box; +} +.site-header { + background-color: $background-color; + position: fixed; + bottom: 0; + width: 100%; + min-height: 0; + padding: 3rem 0 0 0; + font-weight: bold; + z-index: 100; +} + + +.page-heading { + font-family: 'Overpass'; + font-size: 9vw; + //@include fluid-type(font-size, $minScreen, $maxScreen, 2rem, $maxFont); + margin-left: 10vw; + font-weight: 800; + text-align: right; + line-height: 1.2; + margin-top: calc(10vw * -0.2); + margin-bottom: 2.5vw; + + a { + text-decoration: none; + } +} + + +.post-content { + //font-family: 'Museo Slab'; + //font-size: 1.5vw; + margin-top: 6rem; + font-family: 'Overpass Mono'; + @include fluid-type(font-size, $minScreen, $maxScreen, 0.8rem, 25rem); + display: flex; + flex-wrap: wrap; + justify-content: space-between; + margin-left: -2rem; + margin-right: -2rem; + + h1 { + font-family: 'Overpass Mono'; + //font-size: 2vw;//font-weight: bold; + font-weight: bold + } +} + +.chapter { + //background-color: white; + //padding: 2rem; + margin: 0 2rem; + //width: 50%; + flex-grow: 1; + //flex-basis: 0; + flex-basis: 45%; + //flex: 1 1 20px; + display: flex; + flex-direction: row; + overflow: hidden; + //justify-content: center; + + &.focus { + position: relative; + z-index: 10; + } + + .summary { + padding: 1.5rem; + position: relative; + z-index: 10; + background-color: $light-background-color; + //flex-basis: 40%; + } + + &.client { + flex-basis: 100%; + margin-top: -10rem; + margin-bottom: -10rem; + font-size: 3vw; + background-color: transparent; + line-height: 1; + + h1 { + height: 6rem; + } + } + + &.api { + background-color: transparent; + font-size: 9vw; + line-height: 1; + } + + .policy-chain, + .feature-chain { + //box-sizing: content-box; + //margin-bottom: 0; + //margin-right: -2rem; + //margin-left: 1rem; + //position: absolute; + //bottom: 0; + //right: 0; + //width: 100%; + border-left: 1rem solid transparent; + //border-top: 1rem solid $background-color; + background-color: transparent; + display: flex; + flex-direction: column; + height: 100%; + margin-left: 0; + //justify-content: center; + } + + section { + //flex: 1 1; + //padding: 1.5rem; + position: relative; + flex-basis: 50%; + + h2 { + margin-bottom: 0; + } + } + + .policy, .feature { + box-sizing: content-box; + background-color: $light-background-color; + border-bottom: 1rem solid $solid-background-color; + border-right: 0; + border-left: 0; + padding: 0 1.5rem; + //padding-left: 1rem; + //margin-left: 1rem; + text-align: left; + //border-left: 1rem solid $background-color; + //padding: 0.5rem; + list-style: none; + //width: calc(100% + 1rem); + //width: 100%; + //margin-left: -1rem; + flex: 1; + display: flex; + justify-content: center; + flex-direction: column; + text-align: center; + + &:first-child { + border-top: 0; + } + &:last-child { + border-bottom: 0; + } + } + + .feature { + text-align: left; + } + + #policy2, + #policy3, + #policy4 { + position: relative; + //z-index: 5; + } + +} + + + +.site-nav { + @include fluid-type(font-size, $minScreen, $maxScreen, $minFont, 30rem); + float: none; + + a { + text-decoration: none; + } +} + +.page-heading .active, +.page-link.active { + color: $brand-color; +} + + +.chapter { + margin-bottom: 4rem; +} + +.nav-list { + list-style: none; + margin-left: 0; + margin-bottom: 0; + line-height: 1; +} + +.nav-list-item { + display: inline-block; + border-left: 0.1rem solid $text-color; + padding-bottom: 2rem; +} + +.page-link { + padding: 0 2rem 2rem 2rem; + position: relative; + top: -0.5rem; + + &:hover { + color: $brand-color; + } +} + +.nav-list-item:first-child { + border-left: 0; + margin-left: -2rem; +} + +ul { + margin-left: 1.5rem; +} diff --git a/assets/404.js b/assets/404.js new file mode 100644 index 0000000..2fb02ea --- /dev/null +++ b/assets/404.js @@ -0,0 +1,13 @@ +let nav_404 = document.getElementById('nav_404') + +let nav_contribute2contribute = new LeaderLine( + LeaderLine.pointAnchor(nav_404, {x: '-5%', y: '50%'}), + LeaderLine.pointAnchor(article_404, {x: '10%', y: 0 }), + { + color: '#FF7314', + startPlug: 'disc', + endPlug: 'arrow2', + //dash: {animation: false}, + path: 'straight' + } +); diff --git a/assets/contribute.js b/assets/contribute.js new file mode 100644 index 0000000..37a8c0e --- /dev/null +++ b/assets/contribute.js @@ -0,0 +1,13 @@ +let nav_contribute = document.getElementById('nav_contribute') + +let nav_contribute2contribute = new LeaderLine( + LeaderLine.pointAnchor(nav_contribute, {x: '-5%', y: '50%'}), + LeaderLine.pointAnchor(contribute, {x: '10%', y: 0 }), + { + color: '#FF7314', + startPlug: 'disc', + endPlug: 'arrow2', + //dash: {animation: false}, + path: 'straight' + } +); diff --git a/assets/features.js b/assets/features.js new file mode 100644 index 0000000..7786878 --- /dev/null +++ b/assets/features.js @@ -0,0 +1,65 @@ +let nav_share = document.getElementById('nav_share') +let nav_secure = document.getElementById('nav_secure') +let nav_distribute = document.getElementById('nav_distribute') +let nav_control = document.getElementById('nav_control') +let nav_monetize = document.getElementById('nav_monetize') + +let nav_share2share = new LeaderLine( + LeaderLine.pointAnchor(nav_share, {x: '28.5%', y: '55%'}), + LeaderLine.pointAnchor(share, {x: '10%', y: 0 }), + { + //color: '#aaa', + startPlug: 'disc', + endPlug: 'arrow2', + //dash: {animation: false}, + path: 'straight' + } +); + +let nav_secure2secure = new LeaderLine( + LeaderLine.pointAnchor(nav_secure, {x: '42.5%', y: '58%'}), + LeaderLine.pointAnchor(secure, {x: '10%', y: 0 }), + { + //color: '#00FF14', + startPlug: 'disc', + endPlug: 'arrow2', + //dash: {animation: false}, + path: 'straight' + } +); + +let nav_distribute2distribute = new LeaderLine( + LeaderLine.pointAnchor(nav_distribute, {x: '60%', y: '58%'}), + LeaderLine.pointAnchor(distribute, {x: '10%', y: 0 }), + { + //color: '#AABB14', + startPlug: 'disc', + endPlug: 'arrow2', + //dash: {animation: false}, + path: 'straight' + } +); + +let nav_control2control = new LeaderLine( + LeaderLine.pointAnchor(nav_control, {x: '83%', y: '58%'}), + LeaderLine.pointAnchor(control, {x: '10%', y: 0 }), + { + //color: '#DDFF22', + startPlug: 'disc', + endPlug: 'arrow2', + //dash: {animation: false}, + path: 'straight' + } +); + +let nav_monetize2monetize = new LeaderLine( + LeaderLine.pointAnchor(nav_monetize, {x: '71.6%', y: '25%'}), + LeaderLine.pointAnchor(monetize, {x: '10%', y: 0 }), + { + //color: '#FF7314', + startPlug: 'disc', + endPlug: 'arrow2', + //dash: {animation: false}, + path: 'straight' + } +); diff --git a/assets/grasp.js b/assets/grasp.js new file mode 100644 index 0000000..2a3da16 --- /dev/null +++ b/assets/grasp.js @@ -0,0 +1,350 @@ +let color_request = 'rgba(255, 115, 20, .8)' +let color_response = 'rgba(0, 136, 206, .8)' +let color_control = 'rgba(150, 150, 150, 0.5)' +let color_admin_portal = 'rgba(192, 192, 192, 0.5)' +let color_dev_portal = 'rgba(230, 230, 230, 0.5)' + +let caption_outline_color = '#dadada' + +let client = document.getElementById('client') +let apicast = document.getElementById('apicast') +let apisonator = document.getElementById('apisonator') +let apicenter = document.getElementById('apicenter') +let api = document.getElementById('api') + +let client2policy_chain = new LeaderLine( + LeaderLine.pointAnchor(client, {x: '77%', y: '100%'}), + LeaderLine.pointAnchor(policy_chain, {x: '95%', y: '25%'}), + { + color: color_request, + //startLabel: 'Request', + startLabel: LeaderLine.captionLabel('HTTP Request', {color: color_request, outlineColor: caption_outline_color, offset: [10, 0]}), + startPlug: 'disc', + endPlug: 'arrow2', + // dash: {animation: false}, + path: 'straight' + } +); + +let policy_chain2policy1 = new LeaderLine( + LeaderLine.pointAnchor(policy_chain, {x: '95%', y: '60%'}), + LeaderLine.pointAnchor(policy1, {x: '95%', y: '25%'}), + { + color: color_request, + startPlug: 'disc', + endPlug: 'arrow2', + // dash: {animation: false}, + path: 'straight' + } +); + + +//client2policy1.setOptions({startSocket: 'bottom', endSocket: 'top'}); + + + +let policy12policy2 = new LeaderLine( + LeaderLine.pointAnchor(policy1, {x: '95%', y: '60%'}), + LeaderLine.pointAnchor(policy2, {x: '95%', y: '25%'}), + { + color: color_request, + startPlug: 'disc', + endPlug: 'arrow2', + // dash: {animation: false}, + path: 'straight' + } +); + +let policy22policy3 = new LeaderLine( + LeaderLine.pointAnchor(policy2, {x: '95%', y: '60%'}), + LeaderLine.pointAnchor(policy3, {x: '95%', y: '25%'}), + { + color: color_request, + startPlug: 'disc', + endPlug: 'arrow2', + // dash: {animation: false}, + path: 'straight' + } +); + +let policy32policy4 = new LeaderLine( + LeaderLine.pointAnchor(policy3, {x: '95%', y: '60%'}), + LeaderLine.pointAnchor(policy4, {x: '95%', y: '25%'}), + { + color: color_request, + startPlug: 'disc', + endPlug: 'arrow2', + // dash: {animation: false}, + path: 'straight' + } +); + +let policy42policy5 = new LeaderLine( + LeaderLine.pointAnchor(policy4, {x: '95%', y: '60%'}), + LeaderLine.pointAnchor(policy5, {x: '95%', y: '35%'}), + { + color: color_request, + startPlug: 'disc', + endPlug: 'arrow2', + // dash: {animation: false}, + path: 'straight' + } +); +//policy12policy5.setOptions({startSocket: 'bottom', endSocket: 'top'}); + + +let policy52api = new LeaderLine( + LeaderLine.pointAnchor(policy5, {x: '95%', y: '75%'}), + LeaderLine.pointAnchor(api, {x: '100%', y: '50%'}), + { + color: color_request, + startPlug: 'disc', + endPlug: 'arrow2', + // dash: {animation: false}, + path: 'straight' + } +); + +//policy52api.setOptions({startSocket: 'bottom', endSocket: 'top'}); + + +let api2policy5 = new LeaderLine( + LeaderLine.pointAnchor(api, {x: '70%', y: 0}), + LeaderLine.pointAnchor(policy5, {x: '5%', y: '75%'}), + { + color: color_response, + startPlug: 'disc', + endPlug: 'arrow2', + // dash: {animation: false}, + path: 'straight' + } +); + +let policy52policy4 = new LeaderLine( + LeaderLine.pointAnchor(policy5, {x: '5%', y: '25%' }), + LeaderLine.pointAnchor(policy4, {x: '5%', y: '55%'}), + { + color: color_response, + startPlug: 'disc', + endPlug: 'arrow2', + // dash: {animation: false}, + path: 'straight' + } +); + +let policy42policy3 = new LeaderLine( + LeaderLine.pointAnchor(policy4, {x: '5%', y: '15%'}), + LeaderLine.pointAnchor(policy3, {x: '5%', y: '55%' }), + { + color: color_response, + startPlug: 'disc', + endPlug: 'arrow2', + // dash: {animation: false}, + path: 'straight' + } +); + +let policy32policy2 = new LeaderLine( + LeaderLine.pointAnchor(policy3, {x: '5%', y: '15%'}), + LeaderLine.pointAnchor(policy2, {x: '5%', y: '55%' }), + { + color: color_response, + startPlug: 'disc', + endPlug: 'arrow2', + // dash: {animation: false}, + path: 'straight' + } +); + +let policy22policy1 = new LeaderLine( + LeaderLine.pointAnchor(policy2, {x: '5%', y: '15%'}), + LeaderLine.pointAnchor(policy1, {x: '5%', y: '55%' }), + { + color: color_response, + startPlug: 'disc', + endPlug: 'arrow2', + // dash: {animation: false}, + path: 'straight' + } +); + +let policy12policy_chain = new LeaderLine( + LeaderLine.pointAnchor(policy1, {x: '5%', y: '15%'}), + LeaderLine.pointAnchor(policy_chain, {x: '5%', y: '55%' }), + { + color: color_response, + startPlug: 'disc', + endPlug: 'arrow2', + // dash: {animation: false}, + path: 'straight' + } +); + +let policy_chain2client = new LeaderLine( + LeaderLine.pointAnchor(policy_chain , {x: '5%', y: '15%'}), + LeaderLine.pointAnchor(client, {x: '10%', y: '100%'}), + { + color: color_response, + startPlug: 'disc', + endPlug: 'arrow2', + // dash: {animation: false}, + endLabel: 'Response', + endLabel: LeaderLine.captionLabel('HTTP Response', {color: color_response, outlineColor: caption_outline_color, offset: [10, 0]}), + path: 'straight', + } +); + +//api2policy5.setOptions({startSocket: 'left', endSocket: 'left'}); + + + +//policy52policy1.setOptions({startSocket: 'top', endSocket: 'bottom'}); + + + + + +//policy12client.setOptions({startSocket: 'top', endSocket: 'bottom'}); + + + + +let policy32authrep = new LeaderLine( + LeaderLine.pointAnchor(policy3, {x: '95%', y: '20%'}), + LeaderLine.pointAnchor(authenticate, {x: '5%', y: '15%'}), + { + color: color_control, + startPlug: 'disc', + endPlug: 'arrow2', + path: 'straight', + // dash: {animation: false}, + //endLabel: 'Control', + } +); + + + + +let authenticate2authorize = new LeaderLine( + LeaderLine.pointAnchor(authenticate, {x: '5%', y: '70%'}), + LeaderLine.pointAnchor(authorize, {x: '5%', y: '20%'}), + { + color: color_control, + startPlug: 'disc', + endPlug: 'arrow2', + path: 'straight', + // dash: {animation: false}, + } +); + +let authorize2policy3 = new LeaderLine( + LeaderLine.pointAnchor(authorize, {x: '5%', y: '70%'}), + LeaderLine.pointAnchor(policy3, {x: '95%', y: '60%'}), + { + color: color_control, + startPlug: 'disc', + endPlug: 'arrow2', + path: 'straight', + // dash: {animation: false}, + } +); + +let authorize2report = new LeaderLine( + LeaderLine.pointAnchor(authorize, {x: '5%', y: '70%'}), + LeaderLine.pointAnchor(report, {x: '5%', y: '20%'}), + { + color: color_control, + startPlug: 'disc', + endPlug: 'arrow2', + path: 'straight', + // dash: {animation: false}, + } +); + + + +// Apicenter + +let report2analytics = new LeaderLine( + LeaderLine.pointAnchor(report, {x: '80%', y: '50%'}), + LeaderLine.pointAnchor(analytics, {x: '80%', y: '50%'}), + { + color: color_admin_portal, + startPlug: 'disc', + endPlug: 'arrow2', + path: 'straight', + // dash: {animation: false}, + } +); + +let report2portal = new LeaderLine( + LeaderLine.pointAnchor(report, {x: '90%', y: '50%'}), + LeaderLine.pointAnchor(portal, {x: '90%', y: '50%'}), + { + color: color_admin_portal, + startPlug: 'disc', + endPlug: 'arrow2', + path: 'straight', + // dash: {animation: false}, + } +); + +let services2pisoni = new LeaderLine( + LeaderLine.pointAnchor(services, {x: '20%', y: '50%'}), + LeaderLine.pointAnchor(pisoni, {x: '20%', y: '50%'}), + { + color: color_admin_portal, + startPlug: 'disc', + endPlug: 'arrow2', + path: 'straight', + // dash: {animation: false}, + } +); + +let plans2pisoni = new LeaderLine( + LeaderLine.pointAnchor(plans, {x: '15%', y: '50%'}), + LeaderLine.pointAnchor(pisoni, {x: '15%', y: '50%'}), + { + color: color_admin_portal, + startPlug: 'disc', + endPlug: 'arrow2', + path: 'straight', + // dash: {animation: false}, + } +); + +let apps2pisoni = new LeaderLine( + LeaderLine.pointAnchor(apps, {x: '10%', y: '50%'}), + LeaderLine.pointAnchor(pisoni, {x: '10%', y: '50%'}), + { + color: color_admin_portal, + startPlug: 'disc', + endPlug: 'arrow2', + path: 'straight', + // dash: {animation: false}, + } +); + +let pisoni2internal_api = new LeaderLine( + LeaderLine.pointAnchor(pisoni, {x: '25%', y: '50%'}), + LeaderLine.pointAnchor(internal_api, {x: '25%', y: '50%'}), + { + color: color_admin_portal, + startPlug: 'disc', + endPlug: 'arrow2', + path: 'straight', + // dash: {animation: false}, + } +); + +let policy_chain2services = new LeaderLine( + LeaderLine.pointAnchor(policy_chain, {x: '100%', y: '50%'}), + LeaderLine.pointAnchor(services, {x: '100%', y: '50%'}), + { + color: color_admin_portal, + startPlug: 'arrow2', + endPlug: 'arrow2', + path: 'straight', + // dash: {animation: false}, + } +); diff --git a/assets/leader-line.min.js b/assets/leader-line.min.js new file mode 100755 index 0000000..d2c976a --- /dev/null +++ b/assets/leader-line.min.js @@ -0,0 +1,2 @@ +/*! LeaderLine v1.0.4 (c) anseki https://anseki.github.io/leader-line/ */ +var LeaderLine=function(){"use strict";var e,t,n,a,i,o,l,r,s,u,h,p,c,d="leader-line",f=1,y=2,m=3,S=4,g={top:f,right:y,bottom:m,left:S},_=1,v=2,E=3,x=4,b=5,k={straight:_,arc:v,fluid:E,magnet:x,grid:b},w="behind",O=d+"-defs",M='',I={disc:{elmId:"leader-line-disc",noRotate:!0,bBox:{left:-5,top:-5,width:10,height:10,right:5,bottom:5},widthR:2.5,heightR:2.5,bCircle:5,sideLen:5,backLen:5,overhead:0,outlineBase:1,outlineMax:4},square:{elmId:"leader-line-square",noRotate:!0,bBox:{left:-5,top:-5,width:10,height:10,right:5,bottom:5},widthR:2.5,heightR:2.5,bCircle:5,sideLen:5,backLen:5,overhead:0,outlineBase:1,outlineMax:4},arrow1:{elmId:"leader-line-arrow1",bBox:{left:-8,top:-8,width:16,height:16,right:8,bottom:8},widthR:4,heightR:4,bCircle:8,sideLen:8,backLen:8,overhead:8,outlineBase:2,outlineMax:1.5},arrow2:{elmId:"leader-line-arrow2",bBox:{left:-7,top:-8,width:11,height:16,right:4,bottom:8},widthR:2.75,heightR:4,bCircle:8,sideLen:8,backLen:7,overhead:4,outlineBase:1,outlineMax:1.75},arrow3:{elmId:"leader-line-arrow3",bBox:{left:-4,top:-5,width:12,height:10,right:8,bottom:5},widthR:3,heightR:2.5,bCircle:8,sideLen:5,backLen:4,overhead:8,outlineBase:1,outlineMax:2.5},hand:{elmId:"leader-line-hand",bBox:{left:-3,top:-12,width:40,height:24,right:37,bottom:12},widthR:10,heightR:6,bCircle:37,sideLen:12,backLen:3,overhead:37},crosshair:{elmId:"leader-line-crosshair",noRotate:!0,bBox:{left:-96,top:-96,width:192,height:192,right:96,bottom:96},widthR:48,heightR:48,bCircle:96,sideLen:96,backLen:96,overhead:0}},C={behind:w,disc:"disc",square:"square",arrow1:"arrow1",arrow2:"arrow2",arrow3:"arrow3",hand:"hand",crosshair:"crosshair"},L={disc:"disc",square:"square",arrow1:"arrow1",arrow2:"arrow2",arrow3:"arrow3",hand:"hand",crosshair:"crosshair"},A=[f,y,m,S],V="auto",P={x:"left",y:"top",width:"width",height:"height"},N=80,T=4,W=5,B=120,R=8,F=3.75,G=10,D=30,z=.5522847,j=.25*Math.PI,H=/^\s*(\-?[\d\.]+)\s*(\%)?\s*$/,U="http://www.w3.org/2000/svg",Z=!!document.uniqueID,Y=!(!window.chrome||!window.chrome.webstore),X="MozAppearance"in document.documentElement.style,q="-ms-scroll-limit"in document.documentElement.style&&"-ms-ime-align"in document.documentElement.style&&!window.navigator.msPointerEnabled,Q=!window.chrome&&"WebkitAppearance"in document.documentElement.style,K=Z||q?.2:.1,J={path:E,lineColor:"coral",lineSize:4,plugSE:[w,"arrow1"],plugSizeSE:[1,1],lineOutlineEnabled:!1,lineOutlineColor:"indianred",lineOutlineSize:.25,plugOutlineEnabledSE:[!1,!1],plugOutlineSizeSE:[1,1]},$=(h={}.toString,p={}.hasOwnProperty.toString,c=p.call(Object),function(e){var t,n;return e&&"[object Object]"===h.call(e)&&(!(t=Object.getPrototypeOf(e))||(n=t.hasOwnProperty("constructor")&&t.constructor)&&"function"==typeof n&&p.call(n)===c)}),ee=Number.isFinite||function(e){return"number"==typeof e&&window.isFinite(e)},te=function(){var e,t={ease:[.25,.1,.25,1],linear:[0,0,1,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]},n=1e3/60/2,a=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||function(e){setTimeout(e,n)},i=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame||function(e){clearTimeout(e)},o=Number.isFinite||function(e){return"number"==typeof e&&window.isFinite(e)},l=[],r=0;function s(){var t=Date.now(),o=!1;e&&(i.call(window,e),e=null),l.forEach(function(e){var a,i,l;if(e.framesStart){if((a=t-e.framesStart)>=e.duration&&e.count&&e.loopsLeft<=1)return l=e.frames[e.lastFrame=e.reverse?0:e.frames.length-1],e.frameCallback(l.value,!0,l.timeRatio,l.outputRatio),void(e.framesStart=null);if(a>e.duration){if(i=Math.floor(a/e.duration),e.count){if(i>=e.loopsLeft)return l=e.frames[e.lastFrame=e.reverse?0:e.frames.length-1],e.frameCallback(l.value,!0,l.timeRatio,l.outputRatio),void(e.framesStart=null);e.loopsLeft-=i}e.framesStart+=e.duration*i,a=t-e.framesStart}e.reverse&&(a=e.duration-a),l=e.frames[e.lastFrame=Math.round(a/n)],!1!==e.frameCallback(l.value,!1,l.timeRatio,l.outputRatio)?o=!0:e.framesStart=null}}),o&&(e=a.call(window,s))}function u(e,t){e.framesStart=Date.now(),null!=t&&(e.framesStart-=e.duration*(e.reverse?1-t:t)),e.loopsLeft=e.count,e.lastFrame=null,s()}return{add:function(e,a,i,o,s,h,p){var c,d,f,y,m,S,g,_,v,E,x,b,k,w=++r;function O(t,n){return{value:e(n),timeRatio:t,outputRatio:n}}if("string"==typeof s&&(s=t[s]),e=e||function(){},i=m&&(d.push(O(g.x,g.y)),m+=f);d.push(O(1,1))}return c={animId:w,frameCallback:a,duration:i,count:o,frames:d,reverse:!!h},l.push(c),!1!==p&&u(c,p),w},remove:function(e){var t;l.some(function(n,a){return n.animId===e&&(t=a,n.framesStart=null,!0)})&&l.splice(t,1)},start:function(e,t,n){l.some(function(a){return a.animId===e&&(a.reverse=!!t,u(a,n),!0)})},stop:function(e,t){var n;return l.some(function(a){return a.animId===e&&(t?null!=a.lastFrame&&(n=a.frames[a.lastFrame].timeRatio):(n=(Date.now()-a.framesStart)/a.duration,a.reverse&&(n=1-n),n<0?n=0:n>1&&(n=1)),a.framesStart=null,!0)}),n},validTiming:function(e){return"string"==typeof e?t[e]:Array.isArray(e)&&[0,1,2,3].every(function(t){return o(e[t])&&e[t]>=0&&e[t]<=1})?[e[0],e[1],e[2],e[3]]:null}}}(),ne=function(e){e.SVGPathElement.prototype.getPathData&&e.SVGPathElement.prototype.setPathData||function(){var t={Z:"Z",M:"M",L:"L",C:"C",Q:"Q",A:"A",H:"H",V:"V",S:"S",T:"T",z:"Z",m:"m",l:"l",c:"c",q:"q",a:"a",h:"h",v:"v",s:"s",t:"t"},n=function(e){this._string=e,this._currentIndex=0,this._endIndex=this._string.length,this._prevCommand=null,this._skipOptionalSpaces()},a=-1!==e.navigator.userAgent.indexOf("MSIE ");n.prototype={parseSegment:function(){var e=this._string[this._currentIndex],n=t[e]?t[e]:null;if(null===n){if(null===this._prevCommand)return null;if(null===(n=("+"===e||"-"===e||"."===e||e>="0"&&e<="9")&&"Z"!==this._prevCommand?"M"===this._prevCommand?"L":"m"===this._prevCommand?"l":this._prevCommand:null))return null}else this._currentIndex+=1;this._prevCommand=n;var a=null,i=n.toUpperCase();return"H"===i||"V"===i?a=[this._parseNumber()]:"M"===i||"L"===i||"T"===i?a=[this._parseNumber(),this._parseNumber()]:"S"===i||"Q"===i?a=[this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber()]:"C"===i?a=[this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber()]:"A"===i?a=[this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseArcFlag(),this._parseArcFlag(),this._parseNumber(),this._parseNumber()]:"Z"===i&&(this._skipOptionalSpaces(),a=[]),null===a||a.indexOf(null)>=0?null:{type:n,values:a}},hasMoreData:function(){return this._currentIndex"9")&&"."!==this._string[this._currentIndex])return null;for(var r=this._currentIndex;this._currentIndex="0"&&this._string[this._currentIndex]<="9";)this._currentIndex+=1;if(this._currentIndex!==r)for(var s=this._currentIndex-1,u=1;s>=r;)t+=u*(this._string[s]-"0"),s-=1,u*=10;if(this._currentIndex=this._endIndex||this._string[this._currentIndex]<"0"||this._string[this._currentIndex]>"9")return null;for(;this._currentIndex="0"&&this._string[this._currentIndex]<="9";)n*=10,a+=(this._string.charAt(this._currentIndex)-"0")/n,this._currentIndex+=1}if(this._currentIndex!==l&&this._currentIndex+1=this._endIndex||this._string[this._currentIndex]<"0"||this._string[this._currentIndex]>"9")return null;for(;this._currentIndex="0"&&this._string[this._currentIndex]<="9";)e*=10,e+=this._string[this._currentIndex]-"0",this._currentIndex+=1}var h=t+a;return h*=i,e&&(h*=Math.pow(10,o*e)),l===this._currentIndex?null:(this._skipOptionalSpacesOrDelimiter(),h)},_parseArcFlag:function(){if(this._currentIndex>=this._endIndex)return null;var e=null,t=this._string[this._currentIndex];if(this._currentIndex+=1,"0"===t)e=0;else{if("1"!==t)return null;e=1}return this._skipOptionalSpacesOrDelimiter(),e}};var i=function(e){if(!e||0===e.length)return[];var t=new n(e),a=[];if(t.initialCommandIsMoveTo())for(;t.hasMoreData();){var i=t.parseSegment();if(null===i)break;a.push(i)}return a},o=e.SVGPathElement.prototype.setAttribute,l=e.SVGPathElement.prototype.removeAttribute,r=e.Symbol?e.Symbol():"__cachedPathData",s=e.Symbol?e.Symbol():"__cachedNormalizedPathData",u=function(e,t,n,a,i,o,l,r,s,h){var p,c,d,f,y,m=function(e,t,n){return{x:e*Math.cos(n)-t*Math.sin(n),y:e*Math.sin(n)+t*Math.cos(n)}},S=(p=l,Math.PI*p/180),g=[];if(h)c=h[0],d=h[1],f=h[2],y=h[3];else{var _=m(e,t,-S);e=_.x,t=_.y;var v=m(n,a,-S),E=(e-(n=v.x))/2,x=(t-(a=v.y))/2,b=E*E/(i*i)+x*x/(o*o);b>1&&(i*=b=Math.sqrt(b),o*=b);var k=i*i,w=o*o,O=k*w-k*x*x-w*E*E,M=k*x*x+w*E*E,I=(r===s?-1:1)*Math.sqrt(Math.abs(O/M));f=I*i*x/o+(e+n)/2,y=I*-o*E/i+(t+a)/2,c=Math.asin(parseFloat(((t-y)/o).toFixed(9))),d=Math.asin(parseFloat(((a-y)/o).toFixed(9))),ed&&(c-=2*Math.PI),!s&&d>c&&(d-=2*Math.PI)}var C=d-c;if(Math.abs(C)>120*Math.PI/180){var L=d,A=n,V=a;d=s&&d>c?c+120*Math.PI/180*1:c+120*Math.PI/180*-1,n=f+i*Math.cos(d),a=y+o*Math.sin(d),g=u(n,a,A,V,i,o,l,0,s,[d,L,f,y])}C=d-c;var P=Math.cos(c),N=Math.sin(c),T=Math.cos(d),W=Math.sin(d),B=Math.tan(C/4),R=4/3*i*B,F=4/3*o*B,G=[e,t],D=[e+R*N,t-F*P],z=[n+R*W,a-F*T],j=[n,a];if(D[0]=2*G[0]-D[0],D[1]=2*G[1]-D[1],h)return[D,z,j].concat(g);g=[D,z,j].concat(g).join().split(",");var H=[],U=[];return g.forEach(function(e,t){t%2?U.push(m(g[t-1],g[t],S).y):U.push(m(g[t],g[t+1],S).x),6===U.length&&(H.push(U),U=[])}),H},h=function(e){return e.map(function(e){return{type:e.type,values:Array.prototype.slice.call(e.values)}})},p=function(e){var t=[],n=null,a=null,i=null,o=null,l=null,r=null,s=null;return e.forEach(function(e){if("M"===e.type){var h=e.values[0],p=e.values[1];t.push({type:"M",values:[h,p]}),r=h,s=p,o=h,l=p}else if("C"===e.type){var c=e.values[0],d=e.values[1],f=e.values[2],y=e.values[3];h=e.values[4],p=e.values[5];t.push({type:"C",values:[c,d,f,y,h,p]}),a=f,i=y,o=h,l=p}else if("L"===e.type){h=e.values[0],p=e.values[1];t.push({type:"L",values:[h,p]}),o=h,l=p}else if("H"===e.type){h=e.values[0];t.push({type:"L",values:[h,l]}),o=h}else if("V"===e.type){p=e.values[0];t.push({type:"L",values:[o,p]}),l=p}else if("S"===e.type){f=e.values[0],y=e.values[1],h=e.values[2],p=e.values[3];"C"===n||"S"===n?(m=o+(o-a),S=l+(l-i)):(m=o,S=l),t.push({type:"C",values:[m,S,f,y,h,p]}),a=f,i=y,o=h,l=p}else if("T"===e.type){h=e.values[0],p=e.values[1];"Q"===n||"T"===n?(c=o+(o-a),d=l+(l-i)):(c=o,d=l);var m=o+2*(c-o)/3,S=l+2*(d-l)/3,g=h+2*(c-h)/3,_=p+2*(d-p)/3;t.push({type:"C",values:[m,S,g,_,h,p]}),a=c,i=d,o=h,l=p}else if("Q"===e.type){c=e.values[0],d=e.values[1],h=e.values[2],p=e.values[3],m=o+2*(c-o)/3,S=l+2*(d-l)/3,g=h+2*(c-h)/3,_=p+2*(d-p)/3;t.push({type:"C",values:[m,S,g,_,h,p]}),a=c,i=d,o=h,l=p}else if("A"===e.type){var v=e.values[0],E=e.values[1],x=e.values[2],b=e.values[3],k=e.values[4];h=e.values[5],p=e.values[6];if(0===v||0===E)t.push({type:"C",values:[o,l,h,p,h,p]}),o=h,l=p;else if(o!==h||l!==p)u(o,l,h,p,v,E,x,b,k).forEach(function(e){t.push({type:"C",values:e}),o=h,l=p})}else"Z"===e.type&&(t.push(e),o=r,l=s);n=e.type}),t};e.SVGPathElement.prototype.setAttribute=function(e,t){"d"===e&&(this[r]=null,this[s]=null),o.call(this,e,t)},e.SVGPathElement.prototype.removeAttribute=function(e,t){"d"===e&&(this[r]=null,this[s]=null),l.call(this,e)},e.SVGPathElement.prototype.getPathData=function(e){if(e&&e.normalize){if(this[s])return h(this[s]);this[r]?c=h(this[r]):(c=i(this.getAttribute("d")||""),this[r]=h(c));var t=p((n=[],a=null,o=null,l=null,u=null,c.forEach(function(e){var t=e.type;if("M"===t){var i=e.values[0],r=e.values[1];n.push({type:"M",values:[i,r]}),l=i,u=r,a=i,o=r}else if("m"===t)i=a+e.values[0],r=o+e.values[1],n.push({type:"M",values:[i,r]}),l=i,u=r,a=i,o=r;else if("L"===t)i=e.values[0],r=e.values[1],n.push({type:"L",values:[i,r]}),a=i,o=r;else if("l"===t)i=a+e.values[0],r=o+e.values[1],n.push({type:"L",values:[i,r]}),a=i,o=r;else if("C"===t){var s=e.values[0],h=e.values[1],p=e.values[2],c=e.values[3];i=e.values[4],r=e.values[5],n.push({type:"C",values:[s,h,p,c,i,r]}),a=i,o=r}else"c"===t?(s=a+e.values[0],h=o+e.values[1],p=a+e.values[2],c=o+e.values[3],i=a+e.values[4],r=o+e.values[5],n.push({type:"C",values:[s,h,p,c,i,r]}),a=i,o=r):"Q"===t?(s=e.values[0],h=e.values[1],i=e.values[2],r=e.values[3],n.push({type:"Q",values:[s,h,i,r]}),a=i,o=r):"q"===t?(s=a+e.values[0],h=o+e.values[1],i=a+e.values[2],r=o+e.values[3],n.push({type:"Q",values:[s,h,i,r]}),a=i,o=r):"A"===t?(i=e.values[5],r=e.values[6],n.push({type:"A",values:[e.values[0],e.values[1],e.values[2],e.values[3],e.values[4],i,r]}),a=i,o=r):"a"===t?(i=a+e.values[5],r=o+e.values[6],n.push({type:"A",values:[e.values[0],e.values[1],e.values[2],e.values[3],e.values[4],i,r]}),a=i,o=r):"H"===t?(i=e.values[0],n.push({type:"H",values:[i]}),a=i):"h"===t?(i=a+e.values[0],n.push({type:"H",values:[i]}),a=i):"V"===t?(r=e.values[0],n.push({type:"V",values:[r]}),o=r):"v"===t?(r=o+e.values[0],n.push({type:"V",values:[r]}),o=r):"S"===t?(p=e.values[0],c=e.values[1],i=e.values[2],r=e.values[3],n.push({type:"S",values:[p,c,i,r]}),a=i,o=r):"s"===t?(p=a+e.values[0],c=o+e.values[1],i=a+e.values[2],r=o+e.values[3],n.push({type:"S",values:[p,c,i,r]}),a=i,o=r):"T"===t?(i=e.values[0],r=e.values[1],n.push({type:"T",values:[i,r]}),a=i,o=r):"t"===t?(i=a+e.values[0],r=o+e.values[1],n.push({type:"T",values:[i,r]}),a=i,o=r):"Z"!==t&&"z"!==t||(n.push({type:"Z",values:[]}),a=l,o=u)}),n));return this[s]=h(t),t}if(this[r])return h(this[r]);var n,a,o,l,u,c=i(this.getAttribute("d")||"");return this[r]=h(c),c},e.SVGPathElement.prototype.setPathData=function(e){if(0===e.length)a?this.setAttribute("d",""):this.removeAttribute("d");else{for(var t="",n=0,i=e.length;n0&&(t+=" "),t+=o.type,o.values&&o.values.length>0&&(t+=" "+o.values.join(" "))}this.setAttribute("d",t)}},e.SVGRectElement.prototype.getPathData=function(e){var t=this.x.baseVal.value,n=this.y.baseVal.value,a=this.width.baseVal.value,i=this.height.baseVal.value,o=this.hasAttribute("rx")?this.rx.baseVal.value:this.ry.baseVal.value,l=this.hasAttribute("ry")?this.ry.baseVal.value:this.rx.baseVal.value;o>a/2&&(o=a/2),l>i/2&&(l=i/2);var r=[{type:"M",values:[t+o,n]},{type:"H",values:[t+a-o]},{type:"A",values:[o,l,0,0,1,t+a,n+l]},{type:"V",values:[n+i-l]},{type:"A",values:[o,l,0,0,1,t+a-o,n+i]},{type:"H",values:[t+o]},{type:"A",values:[o,l,0,0,1,t,n+i-l]},{type:"V",values:[n+l]},{type:"A",values:[o,l,0,0,1,t+o,n]},{type:"Z",values:[]}];return r=r.filter(function(e){return"A"!==e.type||0!==e.values[0]&&0!==e.values[1]}),e&&!0===e.normalize&&(r=p(r)),r},e.SVGCircleElement.prototype.getPathData=function(e){var t=this.cx.baseVal.value,n=this.cy.baseVal.value,a=this.r.baseVal.value,i=[{type:"M",values:[t+a,n]},{type:"A",values:[a,a,0,0,1,t,n+a]},{type:"A",values:[a,a,0,0,1,t-a,n]},{type:"A",values:[a,a,0,0,1,t,n-a]},{type:"A",values:[a,a,0,0,1,t+a,n]},{type:"Z",values:[]}];return e&&!0===e.normalize&&(i=p(i)),i},e.SVGEllipseElement.prototype.getPathData=function(e){var t=this.cx.baseVal.value,n=this.cy.baseVal.value,a=this.rx.baseVal.value,i=this.ry.baseVal.value,o=[{type:"M",values:[t+a,n]},{type:"A",values:[a,i,0,0,1,t,n+i]},{type:"A",values:[a,i,0,0,1,t-a,n]},{type:"A",values:[a,i,0,0,1,t,n-i]},{type:"A",values:[a,i,0,0,1,t+a,n]},{type:"Z",values:[]}];return e&&!0===e.normalize&&(o=p(o)),o},e.SVGLineElement.prototype.getPathData=function(){return[{type:"M",values:[this.x1.baseVal.value,this.y1.baseVal.value]},{type:"L",values:[this.x2.baseVal.value,this.y2.baseVal.value]}]},e.SVGPolylineElement.prototype.getPathData=function(){for(var e=[],t=0;t-1&&(l.splice(t,1),!l.length&&u&&(s.call(window,u),u=null))}};t.default=p,e.exports=t.default}]),ie={line_altColor:{iniValue:!1},line_color:{},line_colorTra:{iniValue:!1},line_strokeWidth:{},plug_enabled:{iniValue:!1},plug_enabledSE:{hasSE:!0,iniValue:!1},plug_plugSE:{hasSE:!0,iniValue:w},plug_colorSE:{hasSE:!0},plug_colorTraSE:{hasSE:!0,iniValue:!1},plug_markerWidthSE:{hasSE:!0},plug_markerHeightSE:{hasSE:!0},lineOutline_enabled:{iniValue:!1},lineOutline_color:{},lineOutline_colorTra:{iniValue:!1},lineOutline_strokeWidth:{},lineOutline_inStrokeWidth:{},plugOutline_enabledSE:{hasSE:!0,iniValue:!1},plugOutline_plugSE:{hasSE:!0,iniValue:w},plugOutline_colorSE:{hasSE:!0},plugOutline_colorTraSE:{hasSE:!0,iniValue:!1},plugOutline_strokeWidthSE:{hasSE:!0},plugOutline_inStrokeWidthSE:{hasSE:!0},position_socketXYSE:{hasSE:!0,hasProps:!0},position_plugOverheadSE:{hasSE:!0},position_path:{},position_lineStrokeWidth:{},position_socketGravitySE:{hasSE:!0},path_pathData:{},path_edge:{hasProps:!0},viewBox_bBox:{hasProps:!0},viewBox_plugBCircleSE:{hasSE:!0},lineMask_enabled:{iniValue:!1},lineMask_outlineMode:{iniValue:!1},lineMask_x:{},lineMask_y:{},lineOutlineMask_x:{},lineOutlineMask_y:{},maskBGRect_x:{},maskBGRect_y:{},capsMaskAnchor_enabledSE:{hasSE:!0,iniValue:!1},capsMaskAnchor_pathDataSE:{hasSE:!0},capsMaskAnchor_strokeWidthSE:{hasSE:!0},capsMaskMarker_enabled:{iniValue:!1},capsMaskMarker_enabledSE:{hasSE:!0,iniValue:!1},capsMaskMarker_plugSE:{hasSE:!0,iniValue:w},capsMaskMarker_markerWidthSE:{hasSE:!0},capsMaskMarker_markerHeightSE:{hasSE:!0},caps_enabled:{iniValue:!1},attach_plugSideLenSE:{hasSE:!0},attach_plugBackLenSE:{hasSE:!0}},oe={show_on:{},show_effect:{},show_animOptions:{},show_animId:{},show_inAnim:{}},le="fade",re=[],se={},ue=0,he={},pe=0;function ce(e,t){var n,a;return typeof e!=typeof t||(n=$(e)?"obj":Array.isArray(e)?"array":"")!=($(t)?"obj":Array.isArray(t)?"array":"")||("obj"===n?ce(a=Object.keys(e).sort(),Object.keys(t).sort())||a.some(function(n){return ce(e[n],t[n])}):"array"===n?e.length!==t.length||e.some(function(e,n){return ce(e,t[n])}):e!==t)}function de(e){return e?$(e)?Object.keys(e).reduce(function(t,n){return t[n]=de(e[n]),t},{}):Array.isArray(e)?e.map(de):e:e}function fe(e){var t,n,a,i=1,o=e=(e+"").trim();function l(e){var t=1,n=H.exec(e);return n&&(t=parseFloat(n[1]),n[2]?t=t>=0&&t<=100?t/100:1:(t<0||t>1)&&(t=1)),t}return(t=/^(rgba|hsla|hwb|gray|device\-cmyk)\s*\(([\s\S]+)\)$/i.exec(e))?(n=t[1].toLowerCase(),a=t[2].trim().split(/\s*,\s*/),"rgba"===n&&4===a.length?(i=l(a[3]),o="rgb("+a.slice(0,3).join(", ")+")"):"hsla"===n&&4===a.length?(i=l(a[3]),o="hsl("+a.slice(0,3).join(", ")+")"):"hwb"===n&&4===a.length?(i=l(a[3]),o="hwb("+a.slice(0,3).join(", ")+")"):"gray"===n&&2===a.length?(i=l(a[1]),o="gray("+a[0]+")"):"device-cmyk"===n&&a.length>=5&&(i=l(a[4]),o="device-cmyk("+a.slice(0,4).join(", ")+")")):(t=/^\#(?:([\da-f]{6})([\da-f]{2})|([\da-f]{3})([\da-f]))$/i.exec(e))?t[1]?(i=parseInt(t[2],16)/255,o="#"+t[1]):(i=parseInt(t[4]+t[4],16)/255,o="#"+t[3]):"transparent"===e.toLocaleLowerCase()&&(i=0),[i,o]}function ye(e){return!(!e||e.nodeType!==Node.ELEMENT_NODE||"function"!=typeof e.getBoundingClientRect)}function me(e,t){var n,a,i,o,l={};if(!(i=e.ownerDocument))return console.error("Cannot get document that contains the element."),null;if(e.compareDocumentPosition(i)&Node.DOCUMENT_POSITION_DISCONNECTED)return console.error("A disconnected element was passed."),null;for(a in n=e.getBoundingClientRect())l[a]=n[a];if(!t){if(!(o=i.defaultView))return console.error("Cannot get window that contains the element."),null;l.left+=o.pageXOffset,l.right+=o.pageXOffset,l.top+=o.pageYOffset,l.bottom+=o.pageYOffset}return l}function Se(e,t){var n,a,i=[],o=e;for(t=t||window;;){if(!(n=o.ownerDocument))return console.error("Cannot get document that contains the element."),null;if(!(a=n.defaultView))return console.error("Cannot get window that contains the element."),null;if(a===t)break;if(!(o=a.frameElement))return console.error("`baseWindow` was not found."),null;i.unshift(o)}return i}function ge(e,t){var n,a,i=0,o=0;return(a=Se(e,t=t||window))?a.length?(a.forEach(function(e,t){var n,a,l=me(e,t>0);i+=l.left,o+=l.top,a=(n=e).ownerDocument.defaultView.getComputedStyle(n,""),l={left:n.clientLeft+parseFloat(a.paddingLeft),top:n.clientTop+parseFloat(a.paddingTop)},i+=l.left,o+=l.top}),(n=me(e,!0)).left+=i,n.right+=i,n.top+=o,n.bottom+=o,n):me(e):null}function _e(e,t){var n=e.x-t.x,a=e.y-t.y;return Math.sqrt(n*n+a*a)}function ve(e,t,n){var a=t.x-e.x,i=t.y-e.y;return{x:e.x+a*n,y:e.y+i*n,angle:Math.atan2(i,a)/(Math.PI/180)}}function Ee(e,t,n){var a=Math.atan2(e.y-t.y,t.x-e.x);return{x:t.x+Math.cos(a)*n,y:t.y+Math.sin(a)*n*-1}}function xe(e,t,n,a,i){var o=i*i,l=o*i,r=1-i,s=r*r,u=s*r,h=u*e.x+3*s*i*t.x+3*r*o*n.x+l*a.x,p=u*e.y+3*s*i*t.y+3*r*o*n.y+l*a.y,c=e.x+2*i*(t.x-e.x)+o*(n.x-2*t.x+e.x),d=e.y+2*i*(t.y-e.y)+o*(n.y-2*t.y+e.y),f=t.x+2*i*(n.x-t.x)+o*(a.x-2*n.x+t.x),y=t.y+2*i*(n.y-t.y)+o*(a.y-2*n.y+t.y),m=r*e.x+i*t.x,S=r*e.y+i*t.y,g=r*n.x+i*a.x,_=r*n.y+i*a.y,v=90-180*Math.atan2(c-f,d-y)/Math.PI;return{x:h,y:p,fromP2:{x:c,y:d},toP1:{x:f,y:y},fromP1:{x:m,y:S},toP2:{x:g,y:_},angle:v+=v>180?-180:180}}function be(e,t,n,a,i){function o(e,t,n,a,i){return e*(e*(-3*t+9*n-9*a+3*i)+6*t-12*n+6*a)-3*t+3*n}var l,r,s,u,h,p=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],c=0;return l=(i=null==i||i>1?1:i<0?0:i)/2,[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816].forEach(function(i,d){s=o(r=l*i+l,e.x,t.x,n.x,a.x),u=o(r,e.y,t.y,n.y,a.y),h=s*s+u*u,c+=p[d]*Math.sqrt(h)}),l*c}function ke(e,t,n,a,i){for(var o,l=.5,r=1-l;o=be(e,t,n,a,r),!(Math.abs(o-i)<=.01);)r+=(o-1&&e.events[t].splice(a,1)}function Le(e){l&&clearTimeout(l),re.push(e),l=setTimeout(function(){re.forEach(function(e){e()}),re=[]},0)}function Ae(e,t){e.reflowTargets.indexOf(t)<0&&e.reflowTargets.push(t)}function Ve(e){e.reflowTargets.forEach(function(e){var t;t=e,setTimeout(function(){var e=t.parentNode,n=t.nextSibling;e.insertBefore(e.removeChild(t),n)},0)}),e.reflowTargets=[]}function Pe(e,t,n,a,i,o,l){var s,u,h;"auto-start-reverse"===n?("boolean"!=typeof r&&(t.setAttribute("orient","auto-start-reverse"),r=t.orientType.baseVal===SVGMarkerElement.SVG_MARKER_ORIENT_UNKNOWN),r?t.setAttribute("orient",n):((s=i.createSVGTransform()).setRotate(180,0,0),o.transform.baseVal.appendItem(s),t.setAttribute("orient","auto"),h=!0)):(t.setAttribute("orient",n),!1===r&&o.transform.baseVal.clear()),u=t.viewBox.baseVal,h?(u.x=-a.right,u.y=-a.bottom):(u.x=a.left,u.y=a.top),u.width=a.width,u.height=a.height,Z&&Ae(e,l)}function Ne(e,t){return{prop:e?"markerEnd":"markerStart",orient:t?t.noRotate?"0":e?"auto":"auto-start-reverse":null}}function Te(e,t){Object.keys(t).forEach(function(n){var a=t[n];e[n]=null!=a.iniValue?a.hasSE?[a.iniValue,a.iniValue]:a.iniValue:a.hasSE?a.hasProps?[{},{}]:[]:a.hasProps?{}:null})}function We(e,t,n,a,i){return a!==t[n]&&(t[n]=a,i&&i.forEach(function(t){t(e,a,n)}),!0)}function Be(e){function t(e,t){return e+parseFloat(t)}var n=e.document,a=e.getComputedStyle(n.documentElement,""),i=e.getComputedStyle(n.body,""),o={x:0,y:0};return"static"!==i.position?(o.x-=[a.marginLeft,a.borderLeftWidth,a.paddingLeft,i.marginLeft,i.borderLeftWidth].reduce(t,0),o.y-=[a.marginTop,a.borderTopWidth,a.paddingTop,i.marginTop,i.borderTopWidth].reduce(t,0)):"static"!==a.position&&(o.x-=[a.marginLeft,a.borderLeftWidth].reduce(t,0),o.y-=[a.marginTop,a.borderTopWidth].reduce(t,0)),o}function Re(e){var t,n=e.document;n.getElementById(O)||(t=(new e.DOMParser).parseFromString(M,"image/svg+xml"),n.body.appendChild(t.documentElement),ne(e))}function Fe(e){var t,n,a,i,o,l,r,s,u,h,p,c,d,g,k,w,O,M,I,C=e.options,L=e.curStats,V=e.aplStats,P=L.position_socketXYSE,H=!1;function U(e,t){var n=t===f?{x:e.left+e.width/2,y:e.top}:t===y?{x:e.right,y:e.top+e.height/2}:t===m?{x:e.left+e.width/2,y:e.bottom}:{x:e.left,y:e.top+e.height/2};return n.socketId=t,n}function Z(e){return{x:e.x,y:e.y}}if(L.position_path=C.path,L.position_lineStrokeWidth=L.line_strokeWidth,L.position_socketGravitySE=t=de(C.socketGravitySE),n=[0,1].map(function(t){var n,a,i,o=C.anchorSE[t],l=e.optionIsAttach.anchorSE[t],r=!1!==l?he[o._id]:null,s=!1!==l&&r.conf.getStrokeWidth?r.conf.getStrokeWidth(r,e):0,u=!1!==l&&r.conf.getBBoxNest?r.conf.getBBoxNest(r,e,s):ge(o,e.baseWindow);return L.capsMaskAnchor_pathDataSE[t]=!1!==l&&r.conf.getPathData?r.conf.getPathData(r,e,s):(a=null!=(n=u).right?n.right:n.left+n.width,i=null!=n.bottom?n.bottom:n.top+n.height,[{type:"M",values:[n.left,n.top]},{type:"L",values:[a,n.top]},{type:"L",values:[a,i]},{type:"L",values:[n.left,i]},{type:"Z",values:[]}]),L.capsMaskAnchor_strokeWidthSE[t]=s,u}),r=-1,C.socketSE[0]&&C.socketSE[1]?(P[0]=U(n[0],C.socketSE[0]),P[1]=U(n[1],C.socketSE[1])):(C.socketSE[0]||C.socketSE[1]?(C.socketSE[0]?(o=0,l=1):(o=1,l=0),P[o]=U(n[o],C.socketSE[o]),(i=A.map(function(e){return U(n[l],e)})).forEach(function(e){var t=_e(e,P[o]);(t=0?m:f):P[e].socketId=P[e?0:1].x-n[e].left>=0?y:S:(t=P[e?0:1].x-n[e].left,a=P[e?0:1].y-n[e].top,P[e].socketId=Math.abs(t)>=Math.abs(a)?t>=0?y:S:a>=0?m:f))})),L.position_path!==V.position_path||L.position_lineStrokeWidth!==V.position_lineStrokeWidth||[0,1].some(function(e){return L.position_plugOverheadSE[e]!==V.position_plugOverheadSE[e]||(o=P[e],l=V.position_socketXYSE[e],o.x!==l.x||o.y!==l.y||o.socketId!==l.socketId)||(n=t[e],a=V.position_socketGravitySE[e],(i=null==n?"auto":Array.isArray(n)?"array":"number")!==(null==a?"auto":Array.isArray(a)?"array":"number")||("array"===i?n[0]!==a[0]||n[1]!==a[1]:n!==a));var n,a,i,o,l})){switch(e.pathList.baseVal=a=[],e.pathList.animVal=null,L.position_path){case _:a.push([Z(P[0]),Z(P[1])]);break;case v:c="number"==typeof t[0]&&t[0]>0||"number"==typeof t[1]&&t[1]>0,d=j*(c?-1:1),g=Math.atan2(P[1].y-P[0].y,P[1].x-P[0].x),k=-g+d,w=Math.PI-g-d,O=_e(P[0],P[1])/Math.sqrt(2)*z,M={x:P[0].x+Math.cos(k)*O,y:P[0].y+Math.sin(k)*O*-1},I={x:P[1].x+Math.cos(w)*O,y:P[1].y+Math.sin(w)*O*-1},a.push([Z(P[0]),M,I,Z(P[1])]);break;case E:case x:u=[t[0],L.position_path===x?0:t[1]],h=[],p=[],P.forEach(function(e,t){var n,a,i,o,l,r=u[t];Array.isArray(r)?n={x:r[0],y:r[1]}:"number"==typeof r?n=e.socketId===f?{x:0,y:-r}:e.socketId===y?{x:r,y:0}:e.socketId===m?{x:0,y:r}:{x:-r,y:0}:(a=P[t?0:1],o=(i=L.position_plugOverheadSE[t])>0?B+(i>R?(i-R)*F:0):N+(L.position_lineStrokeWidth>T?(L.position_lineStrokeWidth-T)*W:0),e.socketId===f?((l=(e.y-a.y)/2)=t.x:t.dirId===o?e.y>=t.y:e.x<=t.x}function d(e,t){return t.dirId===n||t.dirId===o?e.x===t.x:e.y===t.y}function f(e){return e[0]?{contain:0,notContain:1}:{contain:1,notContain:0}}function y(e,t,n){return Math.abs(t[n]-e[n])}function m(e,t,a){return"x"===a?e.x=2*D?m(s[t],s[a],"x"===u[t]?"y":"x"):"x"===u[t]?o:i)}))}else{if(l[0]&&l[1])return d(s[1],s[0])?r[1].push(s[1]):d(s[0],s[1])?r[0].push(s[0]):r[0].push("x"===u[0]?{x:s[1].x,y:s[0].y}:{x:s[0].x,y:s[1].y}),!1;l[0]!==l[1]?(t=f(l),r[t.notContain].push(s[t.notContain]),s[t.notContain]=p(s[t.notContain],D,y(s[t.notContain],s[t.contain],u[t.contain])>=D?m(s[t.notContain],s[t.contain],u[t.contain]):s[t.contain].dirId)):(a=[{x:s[0].x,y:s[0].y},{x:s[1].x,y:s[1].y}],r.forEach(function(e,t){var n=0===t?1:0,i=y(a[t],a[n],u[t]);i0?[i,d[0]]:d[1]<0?[n,-d[1]]:d[1]>0?[o,d[1]]:[e.socketId,0]:"number"!=typeof d?[e.socketId,D]:d>=0?[e.socketId,d]:[u(e.socketId),-d],c.dirId=h[0],d=h[1],r[a].push(c),s[a]=p(c,d)});S(););r[1].reverse(),r[0].concat(r[1]).forEach(function(t,n){var i={x:t.x,y:t.y};n>0&&a.push([e,i]),e=i})}()}s=[],L.position_plugOverheadSE.forEach(function(e,t){var i,o,l,r,u,h,p,c,d,m,g,_=!t;e>0?2===(i=a[o=_?0:a.length-1]).length?(s[o]=s[o]||_e.apply(null,i),s[o]>G&&(s[o]-eG&&(s[o]-ea.outlineMax&&(t=a.outlineMax),t*=2*a.outlineBase,E=We(g,v.plugOutline_strokeWidthSE,e,t)||E,E=We(g,v.plugOutline_inStrokeWidthSE,e,v.plugOutline_colorTraSE[e]?t-K/(v.line_strokeWidth/J.lineSize)/_.plugSizeSE[e]*2:t/2)||E)}),E)),(n.faces||pe.line||pe.plug||pe.lineOutline||pe.plugOutline)&&(pe.faces=(k=(x=t).curStats,O=x.aplStats,M=x.events,C=!1,!k.line_altColor&&We(x,O,"line_color",b=k.line_color,M.apl_line_color)&&(x.lineFace.style.stroke=b,C=!0),We(x,O,"line_strokeWidth",b=k.line_strokeWidth,M.apl_line_strokeWidth)&&(x.lineShape.style.strokeWidth=b+"px",C=!0,(X||Z)&&(Ae(x,x.lineShape),Z&&(Ae(x,x.lineFace),Ae(x,x.lineMaskCaps)))),We(x,O,"lineOutline_enabled",b=k.lineOutline_enabled,M.apl_lineOutline_enabled)&&(x.lineOutlineFace.style.display=b?"inline":"none",C=!0),k.lineOutline_enabled&&(We(x,O,"lineOutline_color",b=k.lineOutline_color,M.apl_lineOutline_color)&&(x.lineOutlineFace.style.stroke=b,C=!0),We(x,O,"lineOutline_strokeWidth",b=k.lineOutline_strokeWidth,M.apl_lineOutline_strokeWidth)&&(x.lineOutlineMaskShape.style.strokeWidth=b+"px",C=!0,Z&&(Ae(x,x.lineOutlineMaskCaps),Ae(x,x.lineOutlineFace))),We(x,O,"lineOutline_inStrokeWidth",b=k.lineOutline_inStrokeWidth,M.apl_lineOutline_inStrokeWidth)&&(x.lineMaskShape.style.strokeWidth=b+"px",C=!0,Z&&(Ae(x,x.lineOutlineMaskCaps),Ae(x,x.lineOutlineFace)))),We(x,O,"plug_enabled",b=k.plug_enabled,M.apl_plug_enabled)&&(x.plugsFace.style.display=b?"inline":"none",C=!0),k.plug_enabled&&[0,1].forEach(function(e){var t=k.plug_plugSE[e],n=t!==w?I[L[t]]:null,a=Ne(e,n);We(x,O.plug_enabledSE,e,b=k.plug_enabledSE[e],M.apl_plug_enabledSE)&&(x.plugsFace.style[a.prop]=b?"url(#"+x.plugMarkerIdSE[e]+")":"none",C=!0),k.plug_enabledSE[e]&&(We(x,O.plug_plugSE,e,t,M.apl_plug_plugSE)&&(x.plugFaceSE[e].href.baseVal="#"+n.elmId,Pe(x,x.plugMarkerSE[e],a.orient,n.bBox,x.svg,x.plugMarkerShapeSE[e],x.plugsFace),C=!0,X&&Ae(x,x.plugsFace)),We(x,O.plug_colorSE,e,b=k.plug_colorSE[e],M.apl_plug_colorSE)&&(x.plugFaceSE[e].style.fill=b,C=!0,(Y||Q||Z)&&!k.line_colorTra&&Ae(x,Z?x.lineMaskCaps:x.capsMaskLine)),["markerWidth","markerHeight"].forEach(function(t){var n="plug_"+t+"SE";We(x,O[n],e,b=k[n][e],M["apl_"+n])&&(x.plugMarkerSE[e][t].baseVal.value=b,C=!0)}),We(x,O.plugOutline_enabledSE,e,b=k.plugOutline_enabledSE[e],M.apl_plugOutline_enabledSE)&&(b?(x.plugFaceSE[e].style.mask="url(#"+x.plugMaskIdSE[e]+")",x.plugOutlineFaceSE[e].style.display="inline"):(x.plugFaceSE[e].style.mask="none",x.plugOutlineFaceSE[e].style.display="none"),C=!0),k.plugOutline_enabledSE[e]&&(We(x,O.plugOutline_plugSE,e,t,M.apl_plugOutline_plugSE)&&(x.plugOutlineFaceSE[e].href.baseVal=x.plugMaskShapeSE[e].href.baseVal=x.plugOutlineMaskShapeSE[e].href.baseVal="#"+n.elmId,[x.plugMaskSE[e],x.plugOutlineMaskSE[e]].forEach(function(e){e.x.baseVal.value=n.bBox.left,e.y.baseVal.value=n.bBox.top,e.width.baseVal.value=n.bBox.width,e.height.baseVal.value=n.bBox.height}),C=!0),We(x,O.plugOutline_colorSE,e,b=k.plugOutline_colorSE[e],M.apl_plugOutline_colorSE)&&(x.plugOutlineFaceSE[e].style.fill=b,C=!0,Z&&(Ae(x,x.lineMaskCaps),Ae(x,x.lineOutlineMaskCaps))),We(x,O.plugOutline_strokeWidthSE,e,b=k.plugOutline_strokeWidthSE[e],M.apl_plugOutline_strokeWidthSE)&&(x.plugOutlineMaskShapeSE[e].style.strokeWidth=b+"px",C=!0),We(x,O.plugOutline_inStrokeWidthSE,e,b=k.plugOutline_inStrokeWidthSE[e],M.apl_plugOutline_inStrokeWidthSE)&&(x.plugMaskShapeSE[e].style.strokeWidth=b+"px",C=!0)))}),C)),(n.position||pe.line||pe.plug)&&(pe.position=Fe(t)),(n.path||pe.position)&&(pe.path=(N=(A=t).curStats,T=A.aplStats,W=A.pathList.animVal||A.pathList.baseVal,B=N.path_edge,R=!1,W&&(B.x1=B.x2=W[0][0].x,B.y1=B.y2=W[0][0].y,N.path_pathData=V=we(W,function(e){e.xB.x2&&(B.x2=e.x),e.y>B.y2&&(B.y2=e.y)}),Me(V,T.path_pathData)&&(A.linePath.setPathData(V),T.path_pathData=V,R=!0,Z?(Ae(A,A.plugsFace),Ae(A,A.lineMaskCaps)):X&&Ae(A,A.linePath),A.events.apl_path&&A.events.apl_path.forEach(function(e){e(A,V)}))),R)),pe.viewBox=(z=(F=t).curStats,j=F.aplStats,H=z.path_edge,U=z.viewBox_bBox,q=j.viewBox_bBox,$=F.svg.viewBox.baseVal,ee=F.svg.style,te=!1,G=Math.max(z.line_strokeWidth/2,z.viewBox_plugBCircleSE[0]||0,z.viewBox_plugBCircleSE[1]||0),D={x1:H.x1-G,y1:H.y1-G,x2:H.x2+G,y2:H.y2+G},F.events.new_edge4viewBox&&F.events.new_edge4viewBox.forEach(function(e){e(F,D)}),U.x=z.lineMask_x=z.lineOutlineMask_x=z.maskBGRect_x=D.x1,U.y=z.lineMask_y=z.lineOutlineMask_y=z.maskBGRect_y=D.y1,U.width=D.x2-D.x1,U.height=D.y2-D.y1,["x","y","width","height"].forEach(function(e){var t;(t=U[e])!==q[e]&&($[e]=q[e]=t,ee[P[e]]=t+("x"===e||"y"===e?F.bodyOffset[e]:0)+"px",te=!0)}),te),pe.mask=(ie=(ne=t).curStats,oe=ne.aplStats,le=!1,ie.plug_enabled?[0,1].forEach(function(e){ie.capsMaskMarker_enabledSE[e]=ie.plug_enabledSE[e]&&ie.plug_colorTraSE[e]||ie.plugOutline_enabledSE[e]&&ie.plugOutline_colorTraSE[e]}):ie.capsMaskMarker_enabledSE[0]=ie.capsMaskMarker_enabledSE[1]=!1,ie.capsMaskMarker_enabled=ie.capsMaskMarker_enabledSE[0]||ie.capsMaskMarker_enabledSE[1],ie.lineMask_outlineMode=ie.lineOutline_enabled,ie.caps_enabled=ie.capsMaskMarker_enabled||ie.capsMaskAnchor_enabledSE[0]||ie.capsMaskAnchor_enabledSE[1],ie.lineMask_enabled=ie.caps_enabled||ie.lineMask_outlineMode,(ie.lineMask_enabled&&!ie.lineMask_outlineMode||ie.lineOutline_enabled)&&["x","y"].forEach(function(e){var t="maskBGRect_"+e;We(ne,oe,t,ae=ie[t])&&(ne.maskBGRect[e].baseVal.value=ae,le=!0)}),We(ne,oe,"lineMask_enabled",ae=ie.lineMask_enabled)&&(ne.lineFace.style.mask=ae?"url(#"+ne.lineMaskId+")":"none",le=!0,Q&&Ae(ne,ne.lineMask)),ie.lineMask_enabled&&(We(ne,oe,"lineMask_outlineMode",ae=ie.lineMask_outlineMode)&&(ae?(ne.lineMaskBG.style.display="none",ne.lineMaskShape.style.display="inline"):(ne.lineMaskBG.style.display="inline",ne.lineMaskShape.style.display="none"),le=!0),["x","y"].forEach(function(e){var t="lineMask_"+e;We(ne,oe,t,ae=ie[t])&&(ne.lineMask[e].baseVal.value=ae,le=!0)}),We(ne,oe,"caps_enabled",ae=ie.caps_enabled)&&(ne.lineMaskCaps.style.display=ne.lineOutlineMaskCaps.style.display=ae?"inline":"none",le=!0,Q&&Ae(ne,ne.capsMaskLine)),ie.caps_enabled&&([0,1].forEach(function(e){var t;We(ne,oe.capsMaskAnchor_enabledSE,e,ae=ie.capsMaskAnchor_enabledSE[e])&&(ne.capsMaskAnchorSE[e].style.display=ae?"inline":"none",le=!0,Q&&Ae(ne,ne.lineMask)),ie.capsMaskAnchor_enabledSE[e]&&(Me(t=ie.capsMaskAnchor_pathDataSE[e],oe.capsMaskAnchor_pathDataSE[e])&&(ne.capsMaskAnchorSE[e].setPathData(t),oe.capsMaskAnchor_pathDataSE[e]=t,le=!0),We(ne,oe.capsMaskAnchor_strokeWidthSE,e,ae=ie.capsMaskAnchor_strokeWidthSE[e])&&(ne.capsMaskAnchorSE[e].style.strokeWidth=ae+"px",le=!0))}),We(ne,oe,"capsMaskMarker_enabled",ae=ie.capsMaskMarker_enabled)&&(ne.capsMaskLine.style.display=ae?"inline":"none",le=!0),ie.capsMaskMarker_enabled&&[0,1].forEach(function(e){var t=ie.capsMaskMarker_plugSE[e],n=t!==w?I[L[t]]:null,a=Ne(e,n);We(ne,oe.capsMaskMarker_enabledSE,e,ae=ie.capsMaskMarker_enabledSE[e])&&(ne.capsMaskLine.style[a.prop]=ae?"url(#"+ne.lineMaskMarkerIdSE[e]+")":"none",le=!0),ie.capsMaskMarker_enabledSE[e]&&(We(ne,oe.capsMaskMarker_plugSE,e,t)&&(ne.capsMaskMarkerShapeSE[e].href.baseVal="#"+n.elmId,Pe(ne,ne.capsMaskMarkerSE[e],a.orient,n.bBox,ne.svg,ne.capsMaskMarkerShapeSE[e],ne.capsMaskLine),le=!0,X&&(Ae(ne,ne.capsMaskLine),Ae(ne,ne.lineFace))),["markerWidth","markerHeight"].forEach(function(t){var n="capsMaskMarker_"+t+"SE";We(ne,oe[n],e,ae=ie[n][e])&&(ne.capsMaskMarkerSE[e][t].baseVal.value=ae,le=!0)}))}))),ie.lineOutline_enabled&&["x","y"].forEach(function(e){var t="lineOutlineMask_"+e;We(ne,oe,t,ae=ie[t])&&(ne.lineOutlineMask[e].baseVal.value=ae,le=!0)}),le),n.effect&&(ue=(re=t).curStats,he=re.aplStats,Object.keys(e).forEach(function(t){var n=e[t],a=t+"_enabled",i=t+"_options",o=ue[i];We(re,he,a,se=ue[a])?(se&&(he[i]=de(o)),n[se?"init":"remove"](re)):se&&ce(o,he[i])&&(n.remove(re),he[a]=!0,he[i]=de(o),n.init(re))})),(Y||Q)&&pe.line&&!pe.path&&Ae(t,t.lineShape),Y&&pe.plug&&!pe.line&&Ae(t,t.plugsFace),Ve(t)}function ze(e,t){return{duration:ee(e.duration)&&e.duration>0?e.duration:t.duration,timing:te.validTiming(e.timing)?e.timing:de(t.timing)}}function je(e,n,a,i){var o,l=e.curStats,r=e.aplStats,s={};function u(){["show_on","show_effect","show_animOptions"].forEach(function(e){r[e]=l[e]})}l.show_on=n,a&&t[a]&&(l.show_effect=a,l.show_animOptions=ze($(i)?i:{},t[a].defaultAnimOptions)),s.show_on=l.show_on!==r.show_on,s.show_effect=l.show_effect!==r.show_effect,s.show_animOptions=ce(l.show_animOptions,r.show_animOptions),s.show_effect||s.show_animOptions?l.show_inAnim?(o=s.show_effect?t[r.show_effect].stop(e,!0,!0):t[r.show_effect].stop(e),u(),t[r.show_effect].init(e,o)):s.show_on&&(r.show_effect&&s.show_effect&&t[r.show_effect].stop(e,!0,!0),u(),t[r.show_effect].init(e)):s.show_on&&(u(),t[r.show_effect].start(e))}function He(e,t,n){var a={props:e,optionName:n};return!(!(e.attachments.indexOf(t)<0)||t.conf.bind&&!t.conf.bind(t,a))&&(e.attachments.push(t),t.boundTargets.push(a),!0)}function Ue(e,t,n){var a=e.attachments.indexOf(t);a>-1&&e.attachments.splice(a,1),t.boundTargets.some(function(n,i){return n.props===e&&(t.conf.unbind&&t.conf.unbind(t,n),a=i,!0)})&&(t.boundTargets.splice(a,1),n||Le(function(){t.boundTargets.length||o(t)}))}function Ze(o,l){var r,s,u=o.options,h={};function p(e,t,n,a,i){var o={};return n?null!=a?(o.container=e[n],o.key=a):(o.container=e,o.key=n):(o.container=e,o.key=t),o.default=i,o.acceptsAuto=null==o.default,o}function c(e,t,n,a,i,o,l){var r,s,u,h=p(e,n,i,o,l);return null!=t[n]&&(s=(t[n]+"").toLowerCase())&&(h.acceptsAuto&&s===V||(u=a[s]))&&u!==h.container[h.key]&&(h.container[h.key]=u,r=!0),null!=h.container[h.key]||h.acceptsAuto||(h.container[h.key]=h.default,r=!0),r}function f(e,t,n,a,i,o,l,r,s){var u,h,c,d,f=p(e,n,i,o,l);if(!a){if(null==f.default)throw new Error("Invalid `type`: "+n);a=typeof f.default}return null!=t[n]&&(f.acceptsAuto&&(t[n]+"").toLowerCase()===V||(c=h=t[n],("number"===(d=a)?ee(c):typeof c===d)&&(h=s&&"string"===a&&h?h.trim():h,1)&&(!r||r(h))))&&h!==f.container[f.key]&&(f.container[f.key]=h,u=!0),null!=f.container[f.key]||f.acceptsAuto||(f.container[f.key]=f.default,u=!0),u}if(l=l||{},["start","end"].forEach(function(e,t){var n=l[e],a=!1;if(n&&(ye(n)||(a=i(n,"anchor")))&&n!==u.anchorSE[t]){if(!1!==o.optionIsAttach.anchorSE[t]&&Ue(o,he[u.anchorSE[t]._id]),a&&!He(o,he[n._id],e))throw new Error("Can't bind attachment");u.anchorSE[t]=n,o.optionIsAttach.anchorSE[t]=a,s=h.position=!0}}),!u.anchorSE[0]||!u.anchorSE[1]||u.anchorSE[0]===u.anchorSE[1])throw new Error("`start` and `end` are required.");s&&(r=function(e,t){var n,a,i;if(!(n=Se(e))||!(a=Se(t)))throw new Error("Cannot get frames.");return n.length&&a.length&&(n.reverse(),a.reverse(),n.some(function(e){return a.some(function(t){return t===e&&(i=t.contentWindow,!0)})})),i||window}(!1!==o.optionIsAttach.anchorSE[0]?he[u.anchorSE[0]._id].element:u.anchorSE[0],!1!==o.optionIsAttach.anchorSE[1]?he[u.anchorSE[1]._id].element:u.anchorSE[1]))!==o.baseWindow&&(!function(n,a){var o,l,r,s,u,h,p,c,f,y,m=n.aplStats,S=a.document,g=d+"-"+n._id;function _(e){var t=l.appendChild(S.createElementNS(U,"mask"));return t.id=e,t.maskUnits.baseVal=SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE,[t.x,t.y,t.width,t.height].forEach(function(e){e.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX,0)}),t}function v(e){var t=l.appendChild(S.createElementNS(U,"marker"));return t.id=e,t.markerUnits.baseVal=SVGMarkerElement.SVG_MARKERUNITS_STROKEWIDTH,t.viewBox.baseVal||t.setAttribute("viewBox","0 0 0 0"),t}function E(e){return[e.width,e.height].forEach(function(e){e.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE,100)}),e}n.pathList={},Te(m,ie),Object.keys(e).forEach(function(t){var a=t+"_enabled";m[a]&&(e[t].remove(n),m[a]=!1)}),n.baseWindow&&n.svg&&n.baseWindow.document.body.removeChild(n.svg),n.baseWindow=a,Re(a),n.bodyOffset=Be(a),n.svg=o=S.createElementNS(U,"svg"),o.className.baseVal=d,o.viewBox.baseVal||o.setAttribute("viewBox","0 0 0 0"),n.defs=l=o.appendChild(S.createElementNS(U,"defs")),n.linePath=s=l.appendChild(S.createElementNS(U,"path")),s.id=u=g+"-line-path",s.className.baseVal=d+"-line-path",Q&&(s.style.fill="none"),n.lineShape=s=l.appendChild(S.createElementNS(U,"use")),s.id=h=g+"-line-shape",s.href.baseVal="#"+u,(r=l.appendChild(S.createElementNS(U,"g"))).id=p=g+"-caps",n.capsMaskAnchorSE=[0,1].map(function(){var e=r.appendChild(S.createElementNS(U,"path"));return e.className.baseVal=d+"-caps-mask-anchor",e}),n.lineMaskMarkerIdSE=[g+"-caps-mask-marker-0",g+"-caps-mask-marker-1"],n.capsMaskMarkerSE=[0,1].map(function(e){return v(n.lineMaskMarkerIdSE[e])}),n.capsMaskMarkerShapeSE=[0,1].map(function(e){var t=n.capsMaskMarkerSE[e].appendChild(S.createElementNS(U,"use"));return t.className.baseVal=d+"-caps-mask-marker-shape",t}),n.capsMaskLine=s=r.appendChild(S.createElementNS(U,"use")),s.className.baseVal=d+"-caps-mask-line",s.href.baseVal="#"+h,n.maskBGRect=s=E(l.appendChild(S.createElementNS(U,"rect"))),s.id=c=g+"-mask-bg-rect",s.className.baseVal=d+"-mask-bg-rect",Q&&(s.style.fill="white"),n.lineMask=E(_(n.lineMaskId=g+"-line-mask")),n.lineMaskBG=s=n.lineMask.appendChild(S.createElementNS(U,"use")),s.href.baseVal="#"+c,n.lineMaskShape=s=n.lineMask.appendChild(S.createElementNS(U,"use")),s.className.baseVal=d+"-line-mask-shape",s.href.baseVal="#"+u,s.style.display="none",n.lineMaskCaps=s=n.lineMask.appendChild(S.createElementNS(U,"use")),s.href.baseVal="#"+p,n.lineOutlineMask=E(_(f=g+"-line-outline-mask")),(s=n.lineOutlineMask.appendChild(S.createElementNS(U,"use"))).href.baseVal="#"+c,n.lineOutlineMaskShape=s=n.lineOutlineMask.appendChild(S.createElementNS(U,"use")),s.className.baseVal=d+"-line-outline-mask-shape",s.href.baseVal="#"+u,n.lineOutlineMaskCaps=s=n.lineOutlineMask.appendChild(S.createElementNS(U,"use")),s.href.baseVal="#"+p,n.face=o.appendChild(S.createElementNS(U,"g")),n.lineFace=s=n.face.appendChild(S.createElementNS(U,"use")),s.href.baseVal="#"+h,n.lineOutlineFace=s=n.face.appendChild(S.createElementNS(U,"use")),s.href.baseVal="#"+h,s.style.mask="url(#"+f+")",s.style.display="none",n.plugMaskIdSE=[g+"-plug-mask-0",g+"-plug-mask-1"],n.plugMaskSE=[0,1].map(function(e){return _(n.plugMaskIdSE[e])}),n.plugMaskShapeSE=[0,1].map(function(e){var t=n.plugMaskSE[e].appendChild(S.createElementNS(U,"use"));return t.className.baseVal=d+"-plug-mask-shape",t}),y=[],n.plugOutlineMaskSE=[0,1].map(function(e){return _(y[e]=g+"-plug-outline-mask-"+e)}),n.plugOutlineMaskShapeSE=[0,1].map(function(e){var t=n.plugOutlineMaskSE[e].appendChild(S.createElementNS(U,"use"));return t.className.baseVal=d+"-plug-outline-mask-shape",t}),n.plugMarkerIdSE=[g+"-plug-marker-0",g+"-plug-marker-1"],n.plugMarkerSE=[0,1].map(function(e){var t=v(n.plugMarkerIdSE[e]);return Q&&(t.markerUnits.baseVal=SVGMarkerElement.SVG_MARKERUNITS_USERSPACEONUSE),t}),n.plugMarkerShapeSE=[0,1].map(function(e){return n.plugMarkerSE[e].appendChild(S.createElementNS(U,"g"))}),n.plugFaceSE=[0,1].map(function(e){return n.plugMarkerShapeSE[e].appendChild(S.createElementNS(U,"use"))}),n.plugOutlineFaceSE=[0,1].map(function(e){var t=n.plugMarkerShapeSE[e].appendChild(S.createElementNS(U,"use"));return t.style.mask="url(#"+y[e]+")",t.style.display="none",t}),n.plugsFace=s=n.face.appendChild(S.createElementNS(U,"use")),s.className.baseVal=d+"-plugs-face",s.href.baseVal="#"+h,s.style.display="none",n.curStats.show_inAnim?(n.isShown=1,t[m.show_effect].stop(n,!0)):n.isShown||(o.style.visibility="hidden"),S.body.appendChild(o),[0,1,2].forEach(function(e){var t,a=n.options.labelSEM[e];a&&i(a,"label")&&(t=he[a._id]).conf.initSvg&&t.conf.initSvg(t,n)})}(o,r),h.line=h.plug=h.lineOutline=h.plugOutline=h.faces=h.effect=!0),h.position=c(u,l,"path",k,null,null,J.path)||h.position,h.position=c(u,l,"startSocket",g,"socketSE",0)||h.position,h.position=c(u,l,"endSocket",g,"socketSE",1)||h.position,[l.startSocketGravity,l.endSocketGravity].forEach(function(e,t){var n,a,i=!1;null!=e&&(Array.isArray(e)?ee(e[0])&&ee(e[1])&&(i=[e[0],e[1]],Array.isArray(u.socketGravitySE[t])&&(n=i,a=u.socketGravitySE[t],n.length===a.length&&n.every(function(e,t){return e===a[t]}))&&(i=!1)):((e+"").toLowerCase()===V?i=null:ee(e)&&e>=0&&(i=e),i===u.socketGravitySE[t]&&(i=!1)),!1!==i&&(u.socketGravitySE[t]=i,h.position=!0))}),h.line=f(u,l,"color",null,"lineColor",null,J.lineColor,null,!0)||h.line,h.line=f(u,l,"size",null,"lineSize",null,J.lineSize,function(e){return e>0})||h.line,["startPlug","endPlug"].forEach(function(e,t){h.plug=c(u,l,e,C,"plugSE",t,J.plugSE[t])||h.plug,h.plug=f(u,l,e+"Color","string","plugColorSE",t,null,null,!0)||h.plug,h.plug=f(u,l,e+"Size",null,"plugSizeSE",t,J.plugSizeSE[t],function(e){return e>0})||h.plug}),h.lineOutline=f(u,l,"outline",null,"lineOutlineEnabled",null,J.lineOutlineEnabled)||h.lineOutline,h.lineOutline=f(u,l,"outlineColor",null,"lineOutlineColor",null,J.lineOutlineColor,null,!0)||h.lineOutline,h.lineOutline=f(u,l,"outlineSize",null,"lineOutlineSize",null,J.lineOutlineSize,function(e){return e>0&&e<=.48})||h.lineOutline,["startPlugOutline","endPlugOutline"].forEach(function(e,t){h.plugOutline=f(u,l,e,null,"plugOutlineEnabledSE",t,J.plugOutlineEnabledSE[t])||h.plugOutline,h.plugOutline=f(u,l,e+"Color","string","plugOutlineColorSE",t,null,null,!0)||h.plugOutline,h.plugOutline=f(u,l,e+"Size",null,"plugOutlineSizeSE",t,J.plugOutlineSizeSE[t],function(e){return e>=1})||h.plugOutline}),["startLabel","endLabel","middleLabel"].forEach(function(e,t){var r,s,h,p=l[e],c=u.labelSEM[t]&&!o.optionIsAttach.labelSEM[t]?he[u.labelSEM[t]._id].text:u.labelSEM[t],d=!1;if((r="string"==typeof p)&&(p=p.trim()),(r||p&&(d=i(p,"label")))&&p!==c){if(u.labelSEM[t]&&(Ue(o,he[u.labelSEM[t]._id]),u.labelSEM[t]=""),p){if(d?(s=he[(h=p)._id]).boundTargets.slice().forEach(function(e){s.conf.removeOption(s,e)}):h=new a(n.captionLabel,[p]),!He(o,he[h._id],e))throw new Error("Can't bind attachment");u.labelSEM[t]=h}o.optionIsAttach.labelSEM[t]=d}}),Object.keys(e).forEach(function(t){var n,a,i=e[t],r=t+"_enabled",s=t+"_options";function p(e){var t={};return i.optionsConf.forEach(function(n){var a=n[0],i=n[3];null==n[4]||t[i]||(t[i]=[]),("function"==typeof a?a:"id"===a?c:f).apply(null,[t,e].concat(n.slice(1)))}),t}function d(e){var n,a=t+"_animOptions";return e.hasOwnProperty("animation")?$(e.animation)?n=o.curStats[a]=ze(e.animation,i.defaultAnimOptions):(n=!!e.animation,o.curStats[a]=n?ze({},i.defaultAnimOptions):null):(n=!!i.defaultEnabled,o.curStats[a]=n?ze({},i.defaultAnimOptions):null),n}l.hasOwnProperty(t)&&(n=l[t],$(n)?(o.curStats[r]=!0,a=o.curStats[s]=p(n),i.anim&&(o.curStats[s].animation=d(n))):(a=o.curStats[r]=!!n)&&(o.curStats[s]=p({}),i.anim&&(o.curStats[s].animation=d({}))),ce(a,u[t])&&(u[t]=a,h.effect=!0))}),De(o,h)}function Ye(n,a,i){var o={options:{anchorSE:[],socketSE:[],socketGravitySE:[],plugSE:[],plugColorSE:[],plugSizeSE:[],plugOutlineEnabledSE:[],plugOutlineColorSE:[],plugOutlineSizeSE:[],labelSEM:["","",""]},optionIsAttach:{anchorSE:[!1,!1],labelSEM:[!1,!1,!1]},curStats:{},aplStats:{},attachments:[],events:{},reflowTargets:[]};Te(o.curStats,ie),Te(o.aplStats,ie),Object.keys(e).forEach(function(t){var n=e[t].stats;Te(o.curStats,n),Te(o.aplStats,n),o.options[t]=!1}),Te(o.curStats,oe),Te(o.aplStats,oe),o.curStats.show_effect=le,o.curStats.show_animOptions=de(t[le].defaultAnimOptions),Object.defineProperty(this,"_id",{value:++ue}),o._id=this._id,se[this._id]=o,1===arguments.length&&(i=n,n=null),i=i||{},(n||a)&&(i=de(i),n&&(i.start=n),a&&(i.end=a)),o.isShown=o.aplStats.show_on=!i.hide,this.setOptions(i)}return e={dash:{stats:{dash_len:{},dash_gap:{},dash_maxOffset:{}},anim:!0,defaultAnimOptions:{duration:1e3,timing:"linear"},optionsConf:[["type","len","number",null,null,null,function(e){return e>0}],["type","gap","number",null,null,null,function(e){return e>0}]],init:function(t){Ie(t,"apl_line_strokeWidth",e.dash.update),t.lineFace.style.strokeDashoffset=0,e.dash.update(t)},remove:function(t){var n=t.curStats;Ce(t,"apl_line_strokeWidth",e.dash.update),n.dash_animId&&(te.remove(n.dash_animId),n.dash_animId=null),t.lineFace.style.strokeDasharray="none",t.lineFace.style.strokeDashoffset=0,Te(t.aplStats,e.dash.stats)},update:function(e){var t,n=e.curStats,a=e.aplStats,i=a.dash_options,o=!1;n.dash_len=i.len||2*a.line_strokeWidth,n.dash_gap=i.gap||a.line_strokeWidth,n.dash_maxOffset=n.dash_len+n.dash_gap,o=We(e,a,"dash_len",n.dash_len)||o,(o=We(e,a,"dash_gap",n.dash_gap)||o)&&(e.lineFace.style.strokeDasharray=a.dash_len+","+a.dash_gap),n.dash_animOptions?(o=We(e,a,"dash_maxOffset",n.dash_maxOffset),a.dash_animOptions&&(o||ce(n.dash_animOptions,a.dash_animOptions))&&(n.dash_animId&&(t=te.stop(n.dash_animId),te.remove(n.dash_animId)),a.dash_animOptions=null),a.dash_animOptions||(n.dash_animId=te.add(function(e){return(1-e)*a.dash_maxOffset+"px"},function(t){e.lineFace.style.strokeDashoffset=t},n.dash_animOptions.duration,0,n.dash_animOptions.timing,!1,t),a.dash_animOptions=de(n.dash_animOptions))):a.dash_animOptions&&(n.dash_animId&&(te.remove(n.dash_animId),n.dash_animId=null),e.lineFace.style.strokeDashoffset=0,a.dash_animOptions=null)}},gradient:{stats:{gradient_colorSE:{hasSE:!0},gradient_pointSE:{hasSE:!0,hasProps:!0}},optionsConf:[["type","startColor","string","colorSE",0,null,null,!0],["type","endColor","string","colorSE",1,null,null,!0]],init:function(t){var n,a=t.baseWindow.document,i=t.defs,o=d+"-"+t._id+"-gradient";t.efc_gradient_gradient=n=i.appendChild(a.createElementNS(U,"linearGradient")),n.id=o,n.gradientUnits.baseVal=SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE,[n.x1,n.y1,n.x2,n.y2].forEach(function(e){e.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX,0)}),t.efc_gradient_stopSE=[0,1].map(function(e){var n=t.efc_gradient_gradient.appendChild(a.createElementNS(U,"stop"));try{n.offset.baseVal=e}catch(t){if(t.code!==DOMException.NO_MODIFICATION_ALLOWED_ERR)throw t;n.setAttribute("offset",e)}return n}),Ie(t,"cur_plug_colorSE",e.gradient.update),Ie(t,"apl_path",e.gradient.update),t.curStats.line_altColor=!0,t.lineFace.style.stroke="url(#"+o+")",e.gradient.update(t)},remove:function(t){t.efc_gradient_gradient&&(t.defs.removeChild(t.efc_gradient_gradient),t.efc_gradient_gradient=t.efc_gradient_stopSE=null),Ce(t,"cur_plug_colorSE",e.gradient.update),Ce(t,"apl_path",e.gradient.update),t.curStats.line_altColor=!1,t.lineFace.style.stroke=t.curStats.line_color,Te(t.aplStats,e.gradient.stats)},update:function(e){var t,n,a=e.curStats,i=e.aplStats,o=i.gradient_options,l=e.pathList.animVal||e.pathList.baseVal;[0,1].forEach(function(e){a.gradient_colorSE[e]=o.colorSE[e]||a.plug_colorSE[e]}),n=l[0][0],a.gradient_pointSE[0]={x:n.x,y:n.y},n=(t=l[l.length-1])[t.length-1],a.gradient_pointSE[1]={x:n.x,y:n.y},[0,1].forEach(function(t){var n;We(e,i.gradient_colorSE,t,n=a.gradient_colorSE[t])&&(Q?(n=fe(n),e.efc_gradient_stopSE[t].style.stopColor=n[1],e.efc_gradient_stopSE[t].style.stopOpacity=n[0]):e.efc_gradient_stopSE[t].style.stopColor=n),["x","y"].forEach(function(o){(n=a.gradient_pointSE[t][o])!==i.gradient_pointSE[t][o]&&(e.efc_gradient_gradient[o+(t+1)].baseVal.value=i.gradient_pointSE[t][o]=n)})})}},dropShadow:{stats:{dropShadow_dx:{},dropShadow_dy:{},dropShadow_blur:{},dropShadow_color:{},dropShadow_opacity:{},dropShadow_x:{},dropShadow_y:{}},optionsConf:[["type","dx",null,null,null,2],["type","dy",null,null,null,4],["type","blur",null,null,null,3,function(e){return e>=0}],["type","color",null,null,null,"#000",null,!0],["type","opacity",null,null,null,.8,function(e){return e>=0&&e<=1}]],init:function(t){var n,a,i,o,l,r=t.baseWindow.document,s=t.defs,h=d+"-"+t._id+"-dropShadow",p=(n=r,a=h,l={},"boolean"!=typeof u&&(u=!!window.SVGFEDropShadowElement&&!Q),l.elmsAppend=[l.elmFilter=i=n.createElementNS(U,"filter")],i.filterUnits.baseVal=SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE,i.x.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX,0),i.y.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX,0),i.width.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE,100),i.height.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE,100),i.id=a,u?(l.elmOffset=l.elmBlur=o=i.appendChild(n.createElementNS(U,"feDropShadow")),l.styleFlood=o.style):(l.elmBlur=i.appendChild(n.createElementNS(U,"feGaussianBlur")),l.elmOffset=o=i.appendChild(n.createElementNS(U,"feOffset")),o.result.baseVal="offsetblur",o=i.appendChild(n.createElementNS(U,"feFlood")),l.styleFlood=o.style,(o=i.appendChild(n.createElementNS(U,"feComposite"))).in2.baseVal="offsetblur",o.operator.baseVal=SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_IN,(o=i.appendChild(n.createElementNS(U,"feMerge"))).appendChild(n.createElementNS(U,"feMergeNode")),o.appendChild(n.createElementNS(U,"feMergeNode")).in1.baseVal="SourceGraphic"),l);["elmFilter","elmOffset","elmBlur","styleFlood","elmsAppend"].forEach(function(e){t["efc_dropShadow_"+e]=p[e]}),p.elmsAppend.forEach(function(e){s.appendChild(e)}),t.face.setAttribute("filter","url(#"+h+")"),Ie(t,"new_edge4viewBox",e.dropShadow.adjustEdge),e.dropShadow.update(t)},remove:function(t){var n=t.defs;t.efc_dropShadow_elmsAppend&&(t.efc_dropShadow_elmsAppend.forEach(function(e){n.removeChild(e)}),t.efc_dropShadow_elmFilter=t.efc_dropShadow_elmOffset=t.efc_dropShadow_elmBlur=t.efc_dropShadow_styleFlood=t.efc_dropShadow_elmsAppend=null),Ce(t,"new_edge4viewBox",e.dropShadow.adjustEdge),De(t,{}),t.face.removeAttribute("filter"),Te(t.aplStats,e.dropShadow.stats)},update:function(e){var t,n,a=e.curStats,i=e.aplStats,o=i.dropShadow_options;a.dropShadow_dx=t=o.dx,We(e,i,"dropShadow_dx",t)&&(e.efc_dropShadow_elmOffset.dx.baseVal=t,n=!0),a.dropShadow_dy=t=o.dy,We(e,i,"dropShadow_dy",t)&&(e.efc_dropShadow_elmOffset.dy.baseVal=t,n=!0),a.dropShadow_blur=t=o.blur,We(e,i,"dropShadow_blur",t)&&(e.efc_dropShadow_elmBlur.setStdDeviation(t,t),n=!0),n&&De(e,{}),a.dropShadow_color=t=o.color,We(e,i,"dropShadow_color",t)&&(e.efc_dropShadow_styleFlood.floodColor=t),a.dropShadow_opacity=t=o.opacity,We(e,i,"dropShadow_opacity",t)&&(e.efc_dropShadow_styleFlood.floodOpacity=t)},adjustEdge:function(e,t){var n,a,i=e.curStats,o=e.aplStats;null!=i.dropShadow_dx&&(n=3*i.dropShadow_blur,(a={x1:t.x1-n+i.dropShadow_dx,y1:t.y1-n+i.dropShadow_dy,x2:t.x2+n+i.dropShadow_dx,y2:t.y2+n+i.dropShadow_dy}).x1t.x2&&(t.x2=a.x2),a.y2>t.y2&&(t.y2=a.y2),["x","y"].forEach(function(n){var a,l="dropShadow_"+n;i[l]=a=t[n+"1"],We(e,o,l,a)&&(e.efc_dropShadow_elmFilter[n].baseVal.value=a)}))}}},Object.keys(e).forEach(function(t){var n=e[t],a=n.stats;a[t+"_enabled"]={iniValue:!1},a[t+"_options"]={hasProps:!0},n.anim&&(a[t+"_animOptions"]={},a[t+"_animId"]={})}),t={none:{defaultAnimOptions:{},init:function(e,n){var a=e.curStats;a.show_animId&&(te.remove(a.show_animId),a.show_animId=null),t.none.start(e,n)},start:function(e,n){t.none.stop(e,!0)},stop:function(e,t,n){var a=e.curStats;return n=null!=n?n:e.aplStats.show_on,a.show_inAnim=!1,t&&Ge(e,n),n?1:0}},fade:{defaultAnimOptions:{duration:300,timing:"linear"},init:function(e,n){var a=e.curStats,i=e.aplStats;a.show_animId&&te.remove(a.show_animId),a.show_animId=te.add(function(e){return e},function(n,a){a?t.fade.stop(e,!0):(e.svg.style.opacity=n+"",Z&&(Ae(e,e.svg),Ve(e)))},i.show_animOptions.duration,1,i.show_animOptions.timing,null,!1),t.fade.start(e,n)},start:function(e,t){var n,a=e.curStats;a.show_inAnim&&(n=te.stop(a.show_animId)),Ge(e,1),a.show_inAnim=!0,te.start(a.show_animId,!e.aplStats.show_on,null!=t?t:n)},stop:function(e,t,n){var a,i=e.curStats;return n=null!=n?n:e.aplStats.show_on,a=i.show_inAnim?te.stop(i.show_animId):n?1:0,i.show_inAnim=!1,t&&(e.svg.style.opacity=n?"":"0",Ge(e,n)),a}},draw:{defaultAnimOptions:{duration:500,timing:[.58,0,.42,1]},init:function(e,n){var a=e.curStats,i=e.aplStats,o=e.pathList.baseVal,l=Oe(o),r=l.segsLen,s=l.lenAll;a.show_animId&&te.remove(a.show_animId),a.show_animId=te.add(function(e){var t,n,a,i,l=-1;if(0===e)n=[[o[0][0],o[0][0]]];else if(1===e)n=o;else{for(t=s*e,n=[];t>=r[++l];)n.push(o[l]),t-=r[l];t&&(2===(a=o[l]).length?n.push([a[0],ve(a[0],a[1],t/r[l])]):(i=xe(a[0],a[1],a[2],a[3],ke(a[0],a[1],a[2],a[3],t)),n.push([a[0],i.fromP1,i.fromP2,i])))}return n},function(n,a){a?t.draw.stop(e,!0):(e.pathList.animVal=n,De(e,{path:!0}))},i.show_animOptions.duration,1,i.show_animOptions.timing,null,!1),t.draw.start(e,n)},start:function(e,n){var a,i=e.curStats;i.show_inAnim&&(a=te.stop(i.show_animId)),Ge(e,1),i.show_inAnim=!0,Ie(e,"apl_position",t.draw.update),te.start(i.show_animId,!e.aplStats.show_on,null!=n?n:a)},stop:function(e,t,n){var a,i=e.curStats;return n=null!=n?n:e.aplStats.show_on,a=i.show_inAnim?te.stop(i.show_animId):n?1:0,i.show_inAnim=!1,t&&(n?(e.pathList.animVal=null,De(e,{path:!0})):(e.pathList.animVal=[[e.pathList.baseVal[0][0],e.pathList.baseVal[0][0]]],De(e,{path:!0})),Ge(e,n)),a},update:function(e){Ce(e,"apl_position",t.draw.update),e.curStats.show_inAnim?t.draw.init(e,t.draw.stop(e)):e.aplStats.show_animOptions={}}}},function(){function t(e){return function(t){var n={};n[e]=t,this.setOptions(n)}}[["start","anchorSE",0],["end","anchorSE",1],["color","lineColor"],["size","lineSize"],["startSocketGravity","socketGravitySE",0],["endSocketGravity","socketGravitySE",1],["startPlugColor","plugColorSE",0],["endPlugColor","plugColorSE",1],["startPlugSize","plugSizeSE",0],["endPlugSize","plugSizeSE",1],["outline","lineOutlineEnabled"],["outlineColor","lineOutlineColor"],["outlineSize","lineOutlineSize"],["startPlugOutline","plugOutlineEnabledSE",0],["endPlugOutline","plugOutlineEnabledSE",1],["startPlugOutlineColor","plugOutlineColorSE",0],["endPlugOutlineColor","plugOutlineColorSE",1],["startPlugOutlineSize","plugOutlineSizeSE",0],["endPlugOutlineSize","plugOutlineSizeSE",1]].forEach(function(e){var n=e[0],a=e[1],i=e[2];Object.defineProperty(Ye.prototype,n,{get:function(){var e=null!=i?se[this._id].options[a][i]:a?se[this._id].options[a]:se[this._id].options[n];return null==e?V:de(e)},set:t(n),enumerable:!0})}),[["path",k],["startSocket",g,"socketSE",0],["endSocket",g,"socketSE",1],["startPlug",C,"plugSE",0],["endPlug",C,"plugSE",1]].forEach(function(e){var n=e[0],a=e[1],i=e[2],o=e[3];Object.defineProperty(Ye.prototype,n,{get:function(){var e,t=null!=o?se[this._id].options[i][o]:i?se[this._id].options[i]:se[this._id].options[n];return t?Object.keys(a).some(function(n){return a[n]===t&&(e=n,!0)})?e:new Error("It's broken"):V},set:t(n),enumerable:!0})}),Object.keys(e).forEach(function(n){var a=e[n];Object.defineProperty(Ye.prototype,n,{get:function(){var e,t,i=se[this._id].options[n];return $(i)?(e=i,t=a.optionsConf.reduce(function(t,n){var a,i=n[0],o=n[1],l=n[2],r=n[3],s=n[4],u=null!=s?e[r][s]:r?e[r]:e[o];return t[o]="id"===i?u?Object.keys(l).some(function(e){return l[e]===u&&(a=e,!0)})?a:new Error("It's broken"):V:null==u?V:de(u),t},{}),a.anim&&(t.animation=de(e.animation)),t):i},set:t(n),enumerable:!0})}),["startLabel","endLabel","middleLabel"].forEach(function(e,n){Object.defineProperty(Ye.prototype,e,{get:function(){var e=se[this._id],t=e.options;return t.labelSEM[n]&&!e.optionIsAttach.labelSEM[n]?he[t.labelSEM[n]._id].text:t.labelSEM[n]||""},set:t(e),enumerable:!0})})}(),Ye.prototype.setOptions=function(e){return Ze(se[this._id],e),this},Ye.prototype.position=function(){return De(se[this._id],{position:!0}),this},Ye.prototype.remove=function(){var t=se[this._id],n=t.curStats;Object.keys(e).forEach(function(e){var t=e+"_animId";n[t]&&te.remove(n[t])}),n.show_animId&&te.remove(n.show_animId),t.attachments.slice().forEach(function(e){Ue(t,e)}),t.baseWindow&&t.svg&&t.baseWindow.document.body.removeChild(t.svg),delete se[this._id]},Ye.prototype.show=function(e,t){return je(se[this._id],!0,e,t),this},Ye.prototype.hide=function(e,t){return je(se[this._id],!1,e,t),this},o=function(e){e&&he[e._id]&&(e.boundTargets.slice().forEach(function(t){Ue(t.props,e,!0)}),e.conf.remove&&e.conf.remove(e),delete he[e._id])},a=function(){function e(e,t){var n,a={conf:e,curStats:{},aplStats:{},boundTargets:[]},i={};e.argOptions.every(function(e){return!(!t.length||("string"==typeof e.type?typeof t[0]!==e.type:"function"!=typeof e.type||!e.type(t[0])))&&(i[e.optionName]=t.shift(),!0)}),n=t.length&&$(t[0])?de(t[0]):{},Object.keys(i).forEach(function(e){n[e]=i[e]}),e.stats&&(Te(a.curStats,e.stats),Te(a.aplStats,e.stats)),Object.defineProperty(this,"_id",{value:++pe}),Object.defineProperty(this,"isRemoved",{get:function(){return!he[this._id]}}),a._id=this._id,e.init&&!e.init(a,n)||(he[this._id]=a)}return e.prototype.remove=function(){var e=this,t=he[e._id];t&&(t.boundTargets.slice().forEach(function(e){t.conf.removeOption(t,e)}),Le(function(){var t=he[e._id];t&&(console.error("LeaderLineAttachment was not removed by removeOption"),o(t))}))},e}(),window.LeaderLineAttachment=a,i=function(e,t){return e instanceof a&&(!(e.isRemoved||t&&he[e._id].conf.type!==t)||null)},n={pointAnchor:{type:"anchor",argOptions:[{optionName:"element",type:ye}],init:function(e,t){return e.element=n.pointAnchor.checkElement(t.element),e.x=n.pointAnchor.parsePercent(t.x,!0)||[.5,!0],e.y=n.pointAnchor.parsePercent(t.y,!0)||[.5,!0],!0},removeOption:function(e,t){var i=t.props,o={},l=e.element,r=i.options.anchorSE["start"===t.optionName?1:0];l===r&&(l=r===document.body?new a(n.pointAnchor,[l]):document.body),o[t.optionName]=l,Ze(i,o)},getBBoxNest:function(e,t){var n=ge(e.element,t.baseWindow),a=n.width,i=n.height;return n.width=n.height=0,n.left=n.right=n.left+e.x[0]*(e.x[1]?a:1),n.top=n.bottom=n.top+e.y[0]*(e.y[1]?i:1),n},parsePercent:function(e,t){var n,a,i=!1;return ee(e)?a=e:"string"==typeof e&&(n=H.exec(e))&&n[2]&&(i=0!==(a=parseFloat(n[1])/100)),null!=a&&(t||a>=0)?[a,i]:null},checkElement:function(e){if(null==e)e=document.body;else if(!ye(e))throw new Error("`element` must be Element");return e}},areaAnchor:{type:"anchor",argOptions:[{optionName:"element",type:ye},{optionName:"shape",type:"string"}],stats:{color:{},strokeWidth:{},elementWidth:{},elementHeight:{},elementLeft:{},elementTop:{},pathListRel:{},bBoxRel:{},pathData:{},viewBoxBBox:{hasProps:!0},dashLen:{},dashGap:{}},init:function(e,t){var a,i,o,l=[];return e.element=n.pointAnchor.checkElement(t.element),"string"==typeof t.color&&(e.color=t.color.trim()),"string"==typeof t.fillColor&&(e.fill=t.fillColor.trim()),ee(t.size)&&t.size>=0&&(e.size=t.size),t.dash&&(e.dash=!0,ee(t.dash.len)&&t.dash.len>0&&(e.dashLen=t.dash.len),ee(t.dash.gap)&&t.dash.gap>0&&(e.dashGap=t.dash.gap)),"circle"===t.shape?e.shape=t.shape:"polygon"===t.shape&&Array.isArray(t.points)&&t.points.length>=3&&t.points.every(function(t){var a={};return!(!(a.x=n.pointAnchor.parsePercent(t[0],!0))||!(a.y=n.pointAnchor.parsePercent(t[1],!0)))&&(l.push(a),(a.x[1]||a.y[1])&&(e.hasRatio=!0),!0)})?(e.shape=t.shape,e.points=l):(e.shape="rect",e.radius=ee(t.radius)&&t.radius>=0?t.radius:0),"rect"!==e.shape&&"circle"!==e.shape||(e.x=n.pointAnchor.parsePercent(t.x,!0)||[-.05,!0],e.y=n.pointAnchor.parsePercent(t.y,!0)||[-.05,!0],e.width=n.pointAnchor.parsePercent(t.width)||[1.1,!0],e.height=n.pointAnchor.parsePercent(t.height)||[1.1,!0],(e.x[1]||e.y[1]||e.width[1]||e.height[1])&&(e.hasRatio=!0)),a=e.element.ownerDocument,e.svg=i=a.createElementNS(U,"svg"),i.className.baseVal=d+"-areaAnchor",i.viewBox.baseVal||i.setAttribute("viewBox","0 0 0 0"),e.path=i.appendChild(a.createElementNS(U,"path")),e.path.style.fill=e.fill||"none",e.isShown=!1,i.style.visibility="hidden",a.body.appendChild(i),Re(o=a.defaultView),e.bodyOffset=Be(o),e.updateColor=function(){var t,n=e.curStats,a=e.aplStats,i=e.boundTargets.length?e.boundTargets[0].props.curStats:null;n.color=t=e.color||(i?i.line_color:J.lineColor),We(e,a,"color",t)&&(e.path.style.stroke=t)},e.updateShow=function(){Ge(e,e.boundTargets.some(function(e){return!0===e.props.isShown}))},!0},bind:function(e,t){var n=t.props;return e.color||Ie(n,"cur_line_color",e.updateColor),Ie(n,"svgShow",e.updateShow),Le(function(){e.updateColor(),e.updateShow()}),!0},unbind:function(e,t){var a=t.props;e.color||Ce(a,"cur_line_color",e.updateColor),Ce(a,"svgShow",e.updateShow),e.boundTargets.length>1&&Le(function(){e.updateColor(),e.updateShow(),n.areaAnchor.update(e)&&e.boundTargets.forEach(function(e){De(e.props,{position:!0})})})},removeOption:function(e,t){n.pointAnchor.removeOption(e,t)},remove:function(e){e.boundTargets.length&&(console.error("LeaderLineAttachment was not unbound by remove"),e.boundTargets.forEach(function(t){n.areaAnchor.unbind(e,t)})),e.svg.parentNode.removeChild(e.svg)},getStrokeWidth:function(e,t){return n.areaAnchor.update(e)&&e.boundTargets.length>1&&Le(function(){e.boundTargets.forEach(function(e){e.props!==t&&De(e.props,{position:!0})})}),e.curStats.strokeWidth},getPathData:function(e,t){var n=ge(e.element,t.baseWindow);return we(e.curStats.pathListRel,function(e){e.x+=n.left,e.y+=n.top})},getBBoxNest:function(e,t){var n=ge(e.element,t.baseWindow),a=e.curStats.bBoxRel;return{left:a.left+n.left,top:a.top+n.top,right:a.right+n.left,bottom:a.bottom+n.top,width:a.width,height:a.height}},update:function(e){var t,n,a,i,o,l,r,s,u,h,p,c,d,f,y,m,S,g,_,v,E,x,b,k,w,O,M,I,C,L,A,V,N=e.curStats,T=e.aplStats,W=e.boundTargets.length?e.boundTargets[0].props.curStats:null,B={};if(B.strokeWidth=We(e,N,"strokeWidth",null!=e.size?e.size:W?W.line_strokeWidth:J.lineSize),t=me(e.element),B.elementWidth=We(e,N,"elementWidth",t.width),B.elementHeight=We(e,N,"elementHeight",t.height),B.elementLeft=We(e,N,"elementLeft",t.left),B.elementTop=We(e,N,"elementTop",t.top),B.strokeWidth||e.hasRatio&&(B.elementWidth||B.elementHeight)){switch(e.shape){case"rect":(v={left:e.x[0]*(e.x[1]?t.width:1),top:e.y[0]*(e.y[1]?t.height:1),width:e.width[0]*(e.width[1]?t.width:1),height:e.height[0]*(e.height[1]?t.height:1)}).right=v.left+v.width,v.bottom=v.top+v.height,k=N.strokeWidth/2,x=(b=Math.min(v.width,v.height))?b/2*Math.SQRT2+k:0,(E=e.radius?e.radius<=x?e.radius:x:0)?(O=E-(w=(E-k)/Math.SQRT2),I=E*z,M=[{x:v.left-O,y:v.top+w},{x:v.left+w,y:v.top-O},{x:v.right-w,y:v.top-O},{x:v.right+O,y:v.top+w},{x:v.right+O,y:v.bottom-w},{x:v.right-w,y:v.bottom+O},{x:v.left+w,y:v.bottom+O},{x:v.left-O,y:v.bottom-w}],N.pathListRel=[[M[0],{x:M[0].x,y:M[0].y-I},{x:M[1].x-I,y:M[1].y},M[1]]],M[1].x!==M[2].x&&N.pathListRel.push([M[1],M[2]]),N.pathListRel.push([M[2],{x:M[2].x+I,y:M[2].y},{x:M[3].x,y:M[3].y-I},M[3]]),M[3].y!==M[4].y&&N.pathListRel.push([M[3],M[4]]),N.pathListRel.push([M[4],{x:M[4].x,y:M[4].y+I},{x:M[5].x+I,y:M[5].y},M[5]]),M[5].x!==M[6].x&&N.pathListRel.push([M[5],M[6]]),N.pathListRel.push([M[6],{x:M[6].x-I,y:M[6].y},{x:M[7].x,y:M[7].y+I},M[7]]),M[7].y!==M[0].y&&N.pathListRel.push([M[7],M[0]]),N.pathListRel.push([]),O=E-w+N.strokeWidth/2,M=[{x:v.left-O,y:v.top-O},{x:v.right+O,y:v.bottom+O}],N.bBoxRel={left:M[0].x,top:M[0].y,right:M[1].x,bottom:M[1].y,width:M[1].x-M[0].x,height:M[1].y-M[0].y}):(O=N.strokeWidth/2,M=[{x:v.left-O,y:v.top-O},{x:v.right+O,y:v.bottom+O}],N.pathListRel=[[M[0],{x:M[1].x,y:M[0].y}],[{x:M[1].x,y:M[0].y},M[1]],[M[1],{x:M[0].x,y:M[1].y}],[]],M=[{x:v.left-N.strokeWidth,y:v.top-N.strokeWidth},{x:v.right+N.strokeWidth,y:v.bottom+N.strokeWidth}],N.bBoxRel={left:M[0].x,top:M[0].y,right:M[1].x,bottom:M[1].y,width:M[1].x-M[0].x,height:M[1].y-M[0].y});break;case"circle":(r={left:e.x[0]*(e.x[1]?t.width:1),top:e.y[0]*(e.y[1]?t.height:1),width:e.width[0]*(e.width[1]?t.width:1),height:e.height[0]*(e.height[1]?t.height:1)}).width||r.height||(r.width=r.height=10),r.width||(r.width=r.height),r.height||(r.height=r.width),r.right=r.left+r.width,r.bottom=r.top+r.height,s=r.left+r.width/2,u=r.top+r.height/2,f=N.strokeWidth/2,y=r.width/2,m=r.height/2,h=y*Math.SQRT2+f,p=m*Math.SQRT2+f,c=h*z,d=p*z,_=[{x:s-h,y:u},{x:s,y:u-p},{x:s+h,y:u},{x:s,y:u+p}],N.pathListRel=[[_[0],{x:_[0].x,y:_[0].y-d},{x:_[1].x-c,y:_[1].y},_[1]],[_[1],{x:_[1].x+c,y:_[1].y},{x:_[2].x,y:_[2].y-d},_[2]],[_[2],{x:_[2].x,y:_[2].y+d},{x:_[3].x+c,y:_[3].y},_[3]],[_[3],{x:_[3].x-c,y:_[3].y},{x:_[0].x,y:_[0].y+d},_[0]],[]],S=h-y+N.strokeWidth/2,g=p-m+N.strokeWidth/2,_=[{x:r.left-S,y:r.top-g},{x:r.right+S,y:r.bottom+g}],N.bBoxRel={left:_[0].x,top:_[0].y,right:_[1].x,bottom:_[1].y,width:_[1].x-_[0].x,height:_[1].y-_[0].y};break;case"polygon":e.points.forEach(function(e){var n=e.x[0]*(e.x[1]?t.width:1),o=e.y[0]*(e.y[1]?t.height:1);a?(na.right&&(a.right=n),oa.bottom&&(a.bottom=o)):a={left:n,right:n,top:o,bottom:o},i?N.pathListRel.push([i,{x:n,y:o}]):N.pathListRel=[],i={x:n,y:o}}),N.pathListRel.push([]),o=N.strokeWidth/2,l=[{x:a.left-o,y:a.top-o},{x:a.right+o,y:a.bottom+o}],N.bBoxRel={left:l[0].x,top:l[0].y,right:l[1].x,bottom:l[1].y,width:l[1].x-l[0].x,height:l[1].y-l[0].y}}B.pathListRel=B.bBoxRel=!0}return(B.pathListRel||B.elementLeft||B.elementTop)&&(N.pathData=we(N.pathListRel,function(e){e.x+=t.left,e.y+=t.top})),We(e,T,"strokeWidth",n=N.strokeWidth)&&(e.path.style.strokeWidth=n+"px"),Me(n=N.pathData,T.pathData)&&(e.path.setPathData(n),T.pathData=n,B.pathData=!0),e.dash&&(!B.pathData&&(!B.strokeWidth||e.dashLen&&e.dashGap)||(N.dashLen=e.dashLen||2*N.strokeWidth,N.dashGap=e.dashGap||N.strokeWidth),B.dash=We(e,T,"dashLen",N.dashLen)||B.dash,B.dash=We(e,T,"dashGap",N.dashGap)||B.dash,B.dash&&(e.path.style.strokeDasharray=T.dashLen+","+T.dashGap)),C=N.viewBoxBBox,L=T.viewBoxBBox,A=e.svg.viewBox.baseVal,V=e.svg.style,C.x=N.bBoxRel.left+t.left,C.y=N.bBoxRel.top+t.top,C.width=N.bBoxRel.width,C.height=N.bBoxRel.height,["x","y","width","height"].forEach(function(t){(n=C[t])!==L[t]&&(A[t]=L[t]=n,V[P[t]]=n+("x"===t||"y"===t?e.bodyOffset[t]:0)+"px")}),B.strokeWidth||B.pathListRel||B.bBoxRel}},mouseHoverAnchor:{type:"anchor",argOptions:[{optionName:"element",type:ye},{optionName:"showEffectName",type:"string"}],style:{backgroundImage:"url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cG9seWdvbiBwb2ludHM9IjI0LDAgMCw4IDgsMTEgMCwxOSA1LDI0IDEzLDE2IDE2LDI0IiBmaWxsPSJjb3JhbCIvPjwvc3ZnPg==')",backgroundSize:"",backgroundRepeat:"no-repeat",backgroundColor:"#f8f881",cursor:"default"},hoverStyle:{backgroundImage:"none",backgroundColor:"#fadf8f"},padding:{top:1,right:15,bottom:1,left:2},minHeight:15,backgroundPosition:{right:2,top:2},backgroundSize:{width:12,height:12},dirKeys:[["top","Top"],["right","Right"],["bottom","Bottom"],["left","Left"]],init:function(e,a){var i,o,l,r,s,u,h,p,c,d,f,y=n.mouseHoverAnchor,m={};if(e.element=n.pointAnchor.checkElement(a.element),p=e.element,!((d=p.ownerDocument)&&(c=d.defaultView)&&c.HTMLElement&&p instanceof c.HTMLElement))throw new Error("`element` must be HTML element");return y.style.backgroundSize=y.backgroundSize.width+"px "+y.backgroundSize.height+"px",["style","hoverStyle"].forEach(function(t){var n=y[t];e[t]=Object.keys(n).reduce(function(e,t){return e[t]=n[t],e},{})}),"inline"===(i=e.element.ownerDocument.defaultView.getComputedStyle(e.element,"")).display?e.style.display="inline-block":"none"===i.display&&(e.style.display="block"),n.mouseHoverAnchor.dirKeys.forEach(function(t){var n=t[0],a="padding"+t[1];parseFloat(i[a])e.x2&&(e.x2=a.x2),a.y2>e.y2&&(e.y2=a.y2)},newText:function(e,t,n,a,i){var o,l,r,u,h,p;return(o=t.createElementNS(U,"text")).textContent=e,[o.x,o.y].forEach(function(e){var t=n.createSVGLength();t.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX,0),e.baseVal.initialize(t)}),"boolean"!=typeof s&&(s="paintOrder"in o.style),i&&!s?(r=t.createElementNS(U,"defs"),o.id=a,r.appendChild(o),(h=(l=t.createElementNS(U,"g")).appendChild(t.createElementNS(U,"use"))).href.baseVal="#"+a,(u=l.appendChild(t.createElementNS(U,"use"))).href.baseVal="#"+a,(p=h.style).strokeLinejoin="round",{elmPosition:o,styleText:o.style,styleFill:u.style,styleStroke:p,styleShow:l.style,elmsAppend:[r,l]}):(p=o.style,i&&(p.strokeLinejoin="round",p.paintOrder="stroke"),{elmPosition:o,styleText:p,styleFill:p,styleStroke:i?p:null,styleShow:p,elmsAppend:[o]})},getMidPoint:function(e,t){var n,a,i,o=Oe(e),l=o.segsLen,r=o.lenAll,s=-1;if((n=r/2+(t||0))<=0)return 2===(a=e[0]).length?ve(a[0],a[1],0):xe(a[0],a[1],a[2],a[3],0);if(n>=r)return 2===(a=e[e.length-1]).length?ve(a[0],a[1],1):xe(a[0],a[1],a[2],a[3],1);for(i=[];n>l[++s];)i.push(e[s]),n-=l[s];return 2===(a=e[s]).length?ve(a[0],a[1],n/l[s]):xe(a[0],a[1],a[2],a[3],ke(a[0],a[1],a[2],a[3],n))},initSvg:function(e,t){var a,i,o=n.captionLabel.newText(e.text,t.baseWindow.document,t.svg,d+"-captionLabel-"+e._id,e.outlineColor);["elmPosition","styleFill","styleShow","elmsAppend"].forEach(function(t){e[t]=o[t]}),e.isShown=!1,e.styleShow.visibility="hidden",n.captionLabel.textStyleProps.forEach(function(t){null!=e[t]&&(o.styleText[t]=e[t])}),o.elmsAppend.forEach(function(e){t.svg.appendChild(e)}),a=o.elmPosition.getBBox(),e.width=a.width,e.height=a.height,e.outlineColor&&(i=(i=a.height/9)>10?10:i<2?2:i,o.styleStroke.strokeWidth=i+"px",o.styleStroke.stroke=e.outlineColor),e.strokeWidth=i||0,Te(e.aplStats,n.captionLabel.stats),e.updateColor(t),e.refSocketXY?e.updateSocketXY(t):e.updatePath(t),Q&&De(t,{}),e.updateShow(t)},bind:function(e,t){var a=t.props;return e.color||Ie(a,"cur_line_color",e.updateColor),(e.refSocketXY="startLabel"===t.optionName||"endLabel"===t.optionName)?(e.socketIndex="startLabel"===t.optionName?0:1,Ie(a,"apl_position",e.updateSocketXY),e.offset||(Ie(a,"cur_attach_plugSideLenSE",e.updateSocketXY),Ie(a,"cur_line_strokeWidth",e.updateSocketXY))):Ie(a,"apl_path",e.updatePath),Ie(a,"svgShow",e.updateShow),Q&&Ie(a,"new_edge4viewBox",e.adjustEdge),n.captionLabel.initSvg(e,a),!0},unbind:function(e,t){var a=t.props;e.elmsAppend&&(e.elmsAppend.forEach(function(e){a.svg.removeChild(e)}),e.elmPosition=e.styleFill=e.styleShow=e.elmsAppend=null),Te(e.curStats,n.captionLabel.stats),Te(e.aplStats,n.captionLabel.stats),e.color||Ce(a,"cur_line_color",e.updateColor),e.refSocketXY?(Ce(a,"apl_position",e.updateSocketXY),e.offset||(Ce(a,"cur_attach_plugSideLenSE",e.updateSocketXY),Ce(a,"cur_line_strokeWidth",e.updateSocketXY))):Ce(a,"apl_path",e.updatePath),Ce(a,"svgShow",e.updateShow),Q&&(Ce(a,"new_edge4viewBox",e.adjustEdge),De(a,{}))},removeOption:function(e,t){var n=t.props,a={};a[t.optionName]="",Ze(n,a)},remove:function(e){e.boundTargets.length&&(console.error("LeaderLineAttachment was not unbound by remove"),e.boundTargets.forEach(function(t){n.captionLabel.unbind(e,t)}))}},pathLabel:{type:"label",argOptions:[{optionName:"text",type:"string"}],stats:{color:{},startOffset:{},pathData:{}},init:function(e,t){return"string"==typeof t.text&&(e.text=t.text.trim()),!!e.text&&("string"==typeof t.color&&(e.color=t.color.trim()),e.outlineColor="string"==typeof t.outlineColor?t.outlineColor.trim():"#fff",ee(t.lineOffset)&&(e.lineOffset=t.lineOffset),n.captionLabel.textStyleProps.forEach(function(n){null!=t[n]&&(e[n]=t[n])}),e.updateColor=function(t){n.captionLabel.updateColor(e,t)},e.updatePath=function(t){var a,i=e.curStats,o=e.aplStats,l=t.curStats,r=t.pathList.animVal||t.pathList.baseVal;r&&(i.pathData=a=n.pathLabel.getOffsetPathData(r,l.line_strokeWidth/2+e.strokeWidth/2+e.height/4,1.25*e.height),Me(a,o.pathData)&&(e.elmPath.setPathData(a),o.pathData=a,e.bBox=e.elmPosition.getBBox(),e.updateStartOffset(t)))},e.updateStartOffset=function(t){var n,a,i,o,l=e.curStats,r=e.aplStats,s=t.curStats;l.pathData&&((2!==e.semIndex||e.lineOffset)&&(n=l.pathData.reduce(function(e,t){var n,a=t.values;switch(t.type){case"M":o={x:a[0],y:a[1]};break;case"L":n={x:a[0],y:a[1]},o&&(e+=_e(o,n)),o=n;break;case"C":n={x:a[4],y:a[5]},o&&(e+=be(o,{x:a[0],y:a[1]},{x:a[2],y:a[3]},n)),o=n}return e},0),i=0===e.semIndex?0:1===e.semIndex?n:n/2,2!==e.semIndex&&(a=Math.max(s.attach_plugBackLenSE[e.semIndex]||0,s.line_strokeWidth/2)+e.strokeWidth/2+e.height/4,i=(i+=0===e.semIndex?a:-a)<0?0:i>n?n:i),e.lineOffset&&(i=(i+=e.lineOffset)<0?0:i>n?n:i),l.startOffset=i,We(e,r,"startOffset",i)&&(e.elmOffset.startOffset.baseVal.value=i)))},e.updateShow=function(t){n.captionLabel.updateShow(e,t)},Q&&(e.adjustEdge=function(t,a){e.bBox&&n.captionLabel.adjustEdge(a,e.bBox,e.strokeWidth/2)}),!0)},getOffsetPathData:function(e,t,n){var a,i,o=3,l=[];function r(e,t){return Math.abs(e.x-t.x)=0&&s<=Math.PI?i={type:"line",points:n,inside:!0}:(h=Ee(o[0],o[1],t),u=Ee(n[1],n[0],t),c=o[0],f=u,y=n[1],m=(d=h).x-c.x,S=d.y-c.y,g=y.x-f.x,_=y.y-f.y,v=(-S*(c.x-f.x)+m*(c.y-f.y))/(-g*S+m*_),E=(g*(c.y-f.y)-_*(c.x-f.x))/(-g*S+m*_),(p=v>=0&&v<=1&&E>=0&&E<=1?{x:c.x+E*m,y:c.y+E*S}:null)?(o[1]=p,i={type:"line",points:[p,n[1]]}):(o[1]=r(u,h)?u:h,i={type:"line",points:[u,n[1]]}),a.len=_e(o[0],o[1]))):i={type:"line",points:n},i.len=_e(i.points[0],i.points[1]),l.push(a=i)):(l.push({type:"cubic",points:function(e,t,n,a,i,o){for(var l,r,s=be(e,t,n,a)/o,u=1/(i>o?s*(i/o):s),h=[],p=0;r=(90-(l=xe(e,t,n,a,p)).angle)*(Math.PI/180),h.push({x:l.x+Math.cos(r)*i,y:l.y+Math.sin(r)*i*-1}),!(p>=1);)(p+=u)>1&&(p=1);return h}(e[0],e[1],e[2],e[3],t,16)}),a=null)}),a=null,l.forEach(function(e){var i;"line"===e.type?(e.inside&&(a.len>t?((i=a.points)[1]=Ee(i[0],i[1],-t),a.len=_e(i[0],i[1])):(a.points=null,a.len=0),e.len>t+n?((i=e.points)[0]=Ee(i[1],i[0],-(t+n)),e.len=_e(i[0],i[1])):(e.points=null,e.len=0)),a=e):a=null}),l.reduce(function(e,t){var n=t.points;return n&&(i&&r(n[0],i)||e.push({type:"M",values:[n[0].x,n[0].y]}),"line"===t.type?e.push({type:"L",values:[n[1].x,n[1].y]}):(n.shift(),n.forEach(function(t){e.push({type:"L",values:[t.x,t.y]})})),i=n[n.length-1]),e},[])},newText:function(e,t,n,a){var i,o,l,r,u,h,p,c,d,f;return(r=(l=t.createElementNS(U,"defs")).appendChild(t.createElementNS(U,"path"))).id=i=n+"-path",(h=(u=t.createElementNS(U,"text")).appendChild(t.createElementNS(U,"textPath"))).href.baseVal="#"+i,h.startOffset.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX,0),h.textContent=e,"boolean"!=typeof s&&(s="paintOrder"in u.style),a&&!s?(u.id=o=n+"-text",l.appendChild(u),(d=(p=t.createElementNS(U,"g")).appendChild(t.createElementNS(U,"use"))).href.baseVal="#"+o,(c=p.appendChild(t.createElementNS(U,"use"))).href.baseVal="#"+o,(f=d.style).strokeLinejoin="round",{elmPosition:u,elmPath:r,elmOffset:h,styleText:u.style,styleFill:c.style,styleStroke:f,styleShow:p.style,elmsAppend:[l,p]}):(f=u.style,a&&(f.strokeLinejoin="round",f.paintOrder="stroke"),{elmPosition:u,elmPath:r,elmOffset:h,styleText:f,styleFill:f,styleStroke:a?f:null,styleShow:f,elmsAppend:[l,u]})},initSvg:function(e,t){var a,i,o=n.pathLabel.newText(e.text,t.baseWindow.document,d+"-pathLabel-"+e._id,e.outlineColor);["elmPosition","elmPath","elmOffset","styleFill","styleShow","elmsAppend"].forEach(function(t){e[t]=o[t]}),e.isShown=!1,e.styleShow.visibility="hidden",n.captionLabel.textStyleProps.forEach(function(t){null!=e[t]&&(o.styleText[t]=e[t])}),o.elmsAppend.forEach(function(e){t.svg.appendChild(e)}),o.elmPath.setPathData([{type:"M",values:[0,100]},{type:"h",values:[100]}]),a=o.elmPosition.getBBox(),o.styleText.textAnchor=["start","end","middle"][e.semIndex],2!==e.semIndex||e.lineOffset||o.elmOffset.startOffset.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE,50),e.height=a.height,e.outlineColor&&(i=(i=a.height/9)>10?10:i<2?2:i,o.styleStroke.strokeWidth=i+"px",o.styleStroke.stroke=e.outlineColor),e.strokeWidth=i||0,Te(e.aplStats,n.pathLabel.stats),e.updateColor(t),e.updatePath(t),e.updateStartOffset(t),Q&&De(t,{}),e.updateShow(t)},bind:function(e,t){var a=t.props;return e.color||Ie(a,"cur_line_color",e.updateColor),Ie(a,"cur_line_strokeWidth",e.updatePath),Ie(a,"apl_path",e.updatePath),e.semIndex="startLabel"===t.optionName?0:"endLabel"===t.optionName?1:2,(2!==e.semIndex||e.lineOffset)&&Ie(a,"cur_attach_plugBackLenSE",e.updateStartOffset),Ie(a,"svgShow",e.updateShow),Q&&Ie(a,"new_edge4viewBox",e.adjustEdge),n.pathLabel.initSvg(e,a),!0},unbind:function(e,t){var a=t.props;e.elmsAppend&&(e.elmsAppend.forEach(function(e){a.svg.removeChild(e)}),e.elmPosition=e.elmPath=e.elmOffset=e.styleFill=e.styleShow=e.elmsAppend=null),Te(e.curStats,n.pathLabel.stats),Te(e.aplStats,n.pathLabel.stats),e.color||Ce(a,"cur_line_color",e.updateColor),Ce(a,"cur_line_strokeWidth",e.updatePath),Ce(a,"apl_path",e.updatePath),(2!==e.semIndex||e.lineOffset)&&Ce(a,"cur_attach_plugBackLenSE",e.updateStartOffset),Ce(a,"svgShow",e.updateShow),Q&&(Ce(a,"new_edge4viewBox",e.adjustEdge),De(a,{}))},removeOption:function(e,t){var n=t.props,a={};a[t.optionName]="",Ze(n,a)},remove:function(e){e.boundTargets.length&&(console.error("LeaderLineAttachment was not unbound by remove"),e.boundTargets.forEach(function(t){n.pathLabel.unbind(e,t)}))}}},Object.keys(n).forEach(function(e){Ye[e]=function(){return new a(n[e],Array.prototype.slice.call(arguments))}}),Ye.positionByWindowResize=!0,window.addEventListener("resize",ae.add(function(){Ye.positionByWindowResize&&Object.keys(se).forEach(function(e){De(se[e],{position:!0})})}),!1),Ye}(); \ No newline at end of file diff --git a/assets/use.js b/assets/use.js new file mode 100644 index 0000000..223c458 --- /dev/null +++ b/assets/use.js @@ -0,0 +1,28 @@ +let nav_use = document.getElementById('nav_use') +let nav_install = document.getElementById('nav_install') +let use = document.getElementById('use') +let install = document.getElementById('install') + +let nav_use2use = new LeaderLine( + LeaderLine.pointAnchor(nav_use, {x: '-10%', y: '50%'}), + LeaderLine.pointAnchor(use, {x: '10%', y: 0 }), + { + color: '#FF7314', + startPlug: 'disc', + endPlug: 'arrow2', + //dash: {animation: false}, + path: 'straight' + } +); + +let nav_install2install = new LeaderLine( + LeaderLine.pointAnchor(nav_install, {x: '50%', y: '100%'}), + LeaderLine.pointAnchor(install, {x: '10%', y: 0 }), + { + color: '#FF7314', + startPlug: 'disc', + endPlug: 'arrow2', + //dash: {animation: false}, + path: 'straight' + } +); diff --git a/contribute.md b/contribute.md new file mode 100644 index 0000000..143e670 --- /dev/null +++ b/contribute.md @@ -0,0 +1,23 @@ +--- +layout: page +title: Contribute +heading: Contribute
to grow +permalink: /contribute +order: 3 +--- + +
+
+

Contribute

+

This project is open to anyone

+
+
+
    +
  1. report a bug
  2. +
  3. fix a bug
  4. +
  5. request a feature
  6. +
  7. write a policy
  8. +
+
+
+ diff --git a/grasp.md b/grasp.md new file mode 100644 index 0000000..eecba3b --- /dev/null +++ b/grasp.md @@ -0,0 +1,85 @@ +--- +layout: page +heading: Grasp the inner workings +title: Grasp +permalink: /grasp +order: 2 +--- + + + + + +
+
+

+ + 3scale/apisonator +

+
    +
  • Listener accepts and enques requests to authorize and report
  • +
  • Worker performs background tasks off-loaded from the listener.
  • +
  • Rescheduler re-queues failed jobs.
  • + +
+
+
+
    +
  1. authenticator
  2. +
  3. authorizer
  4. +
  5. reporter
  6. +
  7. internal API
  8. +
+
+
+ +
+

API

+
+ +
+
+

+ + 3scale/apicenter +

+
    +
  • Rails app to manage API(s) & developers through GUI & API
  • +
  • Accounts, Applications, Messages, Plans, Billing, Limits, Rules, Policies.
  • +
  • Create and nurture a developer portal
  • +
+
+
+
    +
  1. pisoni
  2. +
  3. services
  4. +
  5. plans (rules & limits)
  6. +
  7. apps (auth)
  8. +
  9. analytics
  10. +
  11. developer portal
  12. +
+
+
+ diff --git a/index.md b/index.md index 4b110eb..13a970b 100644 --- a/index.md +++ b/index.md @@ -1,37 +1,98 @@ -## Welcome to GitHub Pages +--- +# You don't need to edit this file, it's empty on purpose. +# Edit theme's home layout instead if you wanna make some changes +# See: https://jekyllrb.com/docs/themes/#overriding-theme-defaults +layout: page +title: +title: 3scale API Management +heading: Share, secure, distribute, analyse, and monetize your APIs. +permalink: / +--- -You can use the [editor on GitHub](https://github.com/3scale/3scale.github.io/edit/master/index.md) to maintain and preview the content for your website in Markdown files. + -Whenever you commit to this repository, GitHub Pages will run [Jekyll](https://jekyllrb.com/) to rebuild the pages in your site, from the content in your Markdown files. +
+
+

+ + API Authentication +

+

Use one of the four different authentication patterns to issue credentials to access to your APIs.

+
+
+
    +
  1. API Key
  2. +
  3. App Id and Key pair
  4. +
  5. OAuth 2.0
  6. +
  7. OpenID Connect
  8. +
+
+
-### Markdown +
+
+

+ + Analytics +

+

Analyse your API's usage through daily averages, top applications and response codes.

+
+
+
    +
  1. feature chain
  2. +
  3. feature
  4. +
  5. feature
  6. +
+
+
-Markdown is a lightweight and easy-to-use syntax for styling your writing. It includes conventions for + -```markdown -Syntax highlighted code block - -# Header 1 -## Header 2 -### Header 3 - -- Bulleted -- List - -1. Numbered -2. List - -**Bold** and _Italic_ and `Code` text - -[Link](url) and ![Image](src) -``` - -For more details see [GitHub Flavored Markdown](https://guides.github.com/features/mastering-markdown/). - -### Jekyll Themes - -Your Pages site will use the layout and styles from the Jekyll theme you have selected in your [repository settings](https://github.com/3scale/3scale.github.io/settings). The name of this theme is saved in the Jekyll `_config.yml` configuration file. - -### Support or Contact - -Having trouble with Pages? Check out our [documentation](https://help.github.com/categories/github-pages-basics/) or [contact support](https://github.com/contact) and we’ll help you sort it out. +
+
+

+ + Billing +

+

Monetize your APIs through pricing rules, paid plans, automated billing and invoicing.

+
+
+
    +
  1. Pre-paid and Post-paid billing
  2. +
  3. VAT rates
  4. +
  5. Stripe, Adyen, and Braintree support
  6. +
+
+
+ diff --git a/use.md b/use.md new file mode 100644 index 0000000..89abbe0 --- /dev/null +++ b/use.md @@ -0,0 +1,30 @@ +--- +layout: page +title: Use +permalink: /use +order: 1 +heading: Use now,
Install later +--- + +
+
+

Use Now

+ +
+
+ + + From 7cc3da98b21e13a06fa65bbce1905b9e07a98908 Mon Sep 17 00:00:00 2001 From: Thomas Maas Date: Wed, 16 Jan 2019 17:59:36 +0100 Subject: [PATCH 4/4] proper 3scale theme and various update --- Gemfile | 8 +- Gemfile.lock | 183 +++++++++++- _config.yml | 5 +- _includes/head.html | 1 + _includes/header.html | 33 +-- _layouts/default.html | 4 +- _layouts/page.html | 4 +- _layouts/post.html | 5 +- ...7-adding-opentracing-support-to-apicast.md | 278 ++++++++++++++++++ _posts/2018-07-17-welcome-to-jekyll.md | 25 -- ...8-09-14-api-management-and-service-mesh.md | 36 +++ _sass/{minima.scss => 3scale.scss} | 29 +- _sass/3scale/_base.sccs | 0 _sass/{minima => 3scale}/_base.scss | 88 +++--- _sass/3scale/_layout.scss | 247 ++++++++++------ .../_syntax-highlighting.scss | 1 + _sass/minima/_layout.scss | 254 ---------------- apple-touch-icon.png | Bin 0 -> 18214 bytes assets/anim-event.min.js | 2 + assets/features.js | 42 +-- assets/leader-line.min.js | 4 +- assets/main.scss | 2 +- contribute.md | 9 +- favicon.ico | Bin 0 -> 85207 bytes grasp.md | 12 +- index.md | 59 ++-- use.md | 37 ++- 27 files changed, 833 insertions(+), 535 deletions(-) create mode 100644 _posts/2018-06-17-adding-opentracing-support-to-apicast.md delete mode 100644 _posts/2018-07-17-welcome-to-jekyll.md create mode 100644 _posts/2018-09-14-api-management-and-service-mesh.md rename _sass/{minima.scss => 3scale.scss} (75%) delete mode 100644 _sass/3scale/_base.sccs rename _sass/{minima => 3scale}/_base.scss (70%) rename _sass/{minima => 3scale}/_syntax-highlighting.scss (99%) delete mode 100644 _sass/minima/_layout.scss create mode 100644 apple-touch-icon.png create mode 100644 assets/anim-event.min.js create mode 100644 favicon.ico diff --git a/Gemfile b/Gemfile index 6d3120f..d7ad497 100644 --- a/Gemfile +++ b/Gemfile @@ -8,18 +8,18 @@ source "https://rubygems.org" # # This will help ensure the proper Jekyll version is running. # Happy Jekylling! -gem "jekyll", "~> 3.7.3" +# gem "jekyll", "~> 3.7.3" # This is the default theme for new Jekyll sites. You may change this to anything you like. -gem "minima", "~> 2.0" # If you want to use GitHub Pages, remove the "gem "jekyll"" above and # uncomment the line below. To upgrade, run `bundle update github-pages`. -# gem "github-pages", group: :jekyll_plugins +gem "github-pages", group: :jekyll_plugins # If you have any plugins, put them here! group :jekyll_plugins do - gem "jekyll-feed", "~> 0.6" + gem "jekyll-seo-tag", "~> 2.1" + gem "jekyll-feed", "~> 0.9" end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem diff --git a/Gemfile.lock b/Gemfile.lock index c112c0c..f109d02 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,16 +1,89 @@ GEM remote: https://rubygems.org/ specs: + activesupport (4.2.10) + i18n (~> 0.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) addressable (2.5.2) public_suffix (>= 2.0.2, < 4.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.11.1) colorator (1.1.0) + commonmarker (0.17.13) + ruby-enum (~> 0.5) concurrent-ruby (1.0.5) + dnsruby (1.61.2) + addressable (~> 2.5) em-websocket (0.5.1) eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) + ethon (0.11.0) + ffi (>= 1.3.0) eventmachine (1.2.7) + execjs (2.7.0) + faraday (0.15.4) + multipart-post (>= 1.2, < 3) ffi (1.9.25) forwardable-extended (2.6.0) + gemoji (3.0.0) + github-pages (190) + activesupport (= 4.2.10) + github-pages-health-check (= 1.8.1) + jekyll (= 3.7.3) + jekyll-avatar (= 0.6.0) + jekyll-coffeescript (= 1.1.1) + jekyll-commonmark-ghpages (= 0.1.5) + jekyll-default-layout (= 0.1.4) + jekyll-feed (= 0.10.0) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.9.4) + jekyll-mentions (= 1.4.1) + jekyll-optional-front-matter (= 0.3.0) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.2.0) + jekyll-redirect-from (= 0.14.0) + jekyll-relative-links (= 0.5.3) + jekyll-remote-theme (= 0.3.1) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.5.0) + jekyll-sitemap (= 1.2.0) + jekyll-swiss (= 0.4.0) + jekyll-theme-architect (= 0.1.1) + jekyll-theme-cayman (= 0.1.1) + jekyll-theme-dinky (= 0.1.1) + jekyll-theme-hacker (= 0.1.1) + jekyll-theme-leap-day (= 0.1.1) + jekyll-theme-merlot (= 0.1.1) + jekyll-theme-midnight (= 0.1.1) + jekyll-theme-minimal (= 0.1.1) + jekyll-theme-modernist (= 0.1.1) + jekyll-theme-primer (= 0.5.3) + jekyll-theme-slate (= 0.1.1) + jekyll-theme-tactile (= 0.1.1) + jekyll-theme-time-machine (= 0.1.1) + jekyll-titles-from-headings (= 0.5.1) + jemoji (= 0.10.1) + kramdown (= 1.16.2) + liquid (= 4.0.0) + listen (= 3.1.5) + mercenary (~> 0.3) + minima (= 2.5.0) + nokogiri (>= 1.8.2, < 2.0) + rouge (= 2.2.1) + terminal-table (~> 1.4) + github-pages-health-check (1.8.1) + addressable (~> 2.3) + dnsruby (~> 1.60) + octokit (~> 4.0) + public_suffix (~> 2.0) + typhoeus (~> 1.3) + html-pipeline (2.10.0) + activesupport (>= 2) + nokogiri (>= 1.4) http_parser.rb (0.6.0) i18n (0.9.5) concurrent-ruby (~> 1.0) @@ -27,14 +100,97 @@ GEM pathutil (~> 0.9) rouge (>= 1.7, < 4) safe_yaml (~> 1.0) + jekyll-avatar (0.6.0) + jekyll (~> 3.0) + jekyll-coffeescript (1.1.1) + coffee-script (~> 2.2) + coffee-script-source (~> 1.11.1) + jekyll-commonmark (1.2.0) + commonmarker (~> 0.14) + jekyll (>= 3.0, < 4.0) + jekyll-commonmark-ghpages (0.1.5) + commonmarker (~> 0.17.6) + jekyll-commonmark (~> 1) + rouge (~> 2) + jekyll-default-layout (0.1.4) + jekyll (~> 3.0) jekyll-feed (0.10.0) jekyll (~> 3.3) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-github-metadata (2.9.4) + jekyll (~> 3.1) + octokit (~> 4.0, != 4.4.0) + jekyll-mentions (1.4.1) + html-pipeline (~> 2.3) + jekyll (~> 3.0) + jekyll-optional-front-matter (0.3.0) + jekyll (~> 3.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.2.0) + jekyll (~> 3.0) + jekyll-redirect-from (0.14.0) + jekyll (~> 3.3) + jekyll-relative-links (0.5.3) + jekyll (~> 3.3) + jekyll-remote-theme (0.3.1) + jekyll (~> 3.5) + rubyzip (>= 1.2.1, < 3.0) jekyll-sass-converter (1.5.2) sass (~> 3.4) jekyll-seo-tag (2.5.0) jekyll (~> 3.3) + jekyll-sitemap (1.2.0) + jekyll (~> 3.3) + jekyll-swiss (0.4.0) + jekyll-theme-architect (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.5.3) + jekyll (~> 3.5) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.1) + jekyll (~> 3.3) jekyll-watch (2.0.0) listen (~> 3.0) + jemoji (0.10.1) + gemoji (~> 3.0) + html-pipeline (~> 2.2) + jekyll (~> 3.0) kramdown (1.16.2) liquid (4.0.0) listen (3.1.5) @@ -42,10 +198,17 @@ GEM rb-inotify (~> 0.9, >= 0.9.7) ruby_dep (~> 1.2) mercenary (0.3.6) + mini_portile2 (2.4.0) minima (2.5.0) jekyll (~> 3.5) jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) + minitest (5.11.3) + multipart-post (2.0.0) + nokogiri (1.10.0) + mini_portile2 (~> 2.4.0) + octokit (4.13.0) + sawyer (~> 0.8.0, >= 0.5.3) pathutil (0.16.1) forwardable-extended (~> 2.6) public_suffix (2.0.5) @@ -53,21 +216,35 @@ GEM rb-inotify (0.9.10) ffi (>= 0.5.0, < 2) rouge (2.2.1) + ruby-enum (0.7.2) + i18n ruby_dep (1.5.0) + rubyzip (1.2.2) safe_yaml (1.0.4) sass (3.5.6) sass-listen (~> 4.0.0) sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.8.1) + addressable (>= 2.3.5, < 2.6) + faraday (~> 0.8, < 1.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thread_safe (0.3.6) + typhoeus (1.3.1) + ethon (>= 0.9.0) + tzinfo (1.2.5) + thread_safe (~> 0.1) + unicode-display_width (1.4.1) PLATFORMS ruby DEPENDENCIES - jekyll (~> 3.7.3) - jekyll-feed (~> 0.6) - minima (~> 2.0) + github-pages + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) tzinfo-data BUNDLED WITH diff --git a/_config.yml b/_config.yml index 42b7dd5..8fdcf9d 100644 --- a/_config.yml +++ b/_config.yml @@ -14,7 +14,8 @@ # You can create any custom variable you would like, and they will be accessible # in the templates via {{ site.myvariable }}. title: 3scale API Management -3scale_product_version: 2.2 # used for deep linking to the correct docs on red hat. +3scale_docs_url: https://access.redhat.com/documentation/en-us/red_hat_3scale/ +3scale_product_version: 2.3 # used for deep linking to the correct docs on red hat. email: your-email@example.com description: >- # this means to ignore newlines until "baseurl:" Share, secure, distribute, control, and monetize your APIs. @@ -26,9 +27,9 @@ github_username: 3scale # Build settings markdown: kramdown -theme: minima plugins: - jekyll-feed + - jekyll-seo-tag # Exclude from processing. # The following items will not be processed, by default. Create a custom list diff --git a/_includes/head.html b/_includes/head.html index 4d8da4c..dc6596d 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -3,6 +3,7 @@ {%- seo -%} + diff --git a/_includes/header.html b/_includes/header.html index 86803ba..6a21e16 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -1,33 +1,22 @@