diff --git a/content/.vuepress/components/Sitemap.vue b/content/.vuepress/components/Sitemap.vue index 9015ba5..9e00c6d 100644 --- a/content/.vuepress/components/Sitemap.vue +++ b/content/.vuepress/components/Sitemap.vue @@ -20,5 +20,5 @@ export default { } }, name: 'Sitemap' -} +}; diff --git a/content/.vuepress/components/Whiteboard.vue b/content/.vuepress/components/Whiteboard.vue new file mode 100644 index 0000000..7d62b4b --- /dev/null +++ b/content/.vuepress/components/Whiteboard.vue @@ -0,0 +1,2418 @@ + + + + + \ No newline at end of file diff --git a/content/.vuepress/js/jquery.highlight.js b/content/.vuepress/js/jquery.highlight.js new file mode 100644 index 0000000..0c654a3 --- /dev/null +++ b/content/.vuepress/js/jquery.highlight.js @@ -0,0 +1,109 @@ +/* + * jQuery Highlight plugin + * + * Based on highlight v3 by Johann Burkard + * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html + * + * Code a little bit refactored and cleaned (in my humble opinion). + * Most important changes: + * - has an option to highlight only entire words (wordsOnly - false by default), + * - has an option to be case sensitive (caseSensitive - false by default) + * - highlight element tag and class names can be specified in options + * + * Usage: + * // wrap every occurrance of text 'lorem' in content + * // with (default options) + * $('#content').highlight('lorem'); + * + * // search for and highlight more terms at once + * // so you can save some time on traversing DOM + * $('#content').highlight(['lorem', 'ipsum']); + * $('#content').highlight('lorem ipsum'); + * + * // search only for entire word 'lorem' + * $('#content').highlight('lorem', { wordsOnly: true }); + * + * // don't ignore case during search of term 'lorem' + * $('#content').highlight('lorem', { caseSensitive: true }); + * + * // wrap every occurrance of term 'ipsum' in content + * // with + * $('#content').highlight('ipsum', { element: 'em', className: 'important' }); + * + * // remove default highlight + * $('#content').unhighlight(); + * + * // remove custom highlight + * $('#content').unhighlight({ element: 'em', className: 'important' }); + * + * + * Copyright (c) 2009 Bartek Szopka + * + * Licensed under MIT license. + * + */ + +jQuery.extend({ + highlight: function (node, re, nodeName, className) { + if (node.nodeType === 3) { + var match = node.data.match(re); + if (match) { + var highlight = document.createElement(nodeName || 'span'); + highlight.className = className || 'highlight'; + var wordNode = node.splitText(match.index); + wordNode.splitText(match[0].length); + var wordClone = wordNode.cloneNode(true); + highlight.appendChild(wordClone); + wordNode.parentNode.replaceChild(highlight, wordNode); + return 1; //skip added node in parent + } + } else if ((node.nodeType === 1 && node.childNodes) && // only element nodes that have children + !/(script|style)/i.test(node.tagName) && // ignore script and style nodes + !(node.tagName === nodeName.toUpperCase() && node.className === className)) { // skip if already highlighted + for (var i = 0; i < node.childNodes.length; i++) { + i += jQuery.highlight(node.childNodes[i], re, nodeName, className); + } + } + return 0; + } +}); + +jQuery.fn.unhighlight = function (options) { + var settings = { className: 'highlight', element: 'span' }; + jQuery.extend(settings, options); + + return this.find(settings.element + "." + settings.className).each(function () { + var parent = this.parentNode; + parent.replaceChild(this.firstChild, this); + parent.normalize(); + }).end(); +}; + +jQuery.fn.highlight = function (words, options) { + var settings = { className: 'highlight', element: 'span', caseSensitive: false, wordsOnly: false }; + jQuery.extend(settings, options); + + if (words.constructor === String) { + words = [words]; + } + words = jQuery.grep(words, function(word, i){ + return word != ''; + }); + words = jQuery.map(words, function(word, i) { + return word.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + }); + if (words.length == 0) { return this; }; + + var flag = settings.caseSensitive ? "" : "i"; + var pattern = "(" + words.join("|") + ")"; + if (settings.wordsOnly) { + pattern = "\\b" + pattern + "\\b"; + } + var re = new RegExp(pattern, flag); + + return this.each(function () { + jQuery.highlight(this, re, settings.element, settings.className); + }); +}; + + diff --git a/content/.vuepress/public/fonts/FontAwesome.otf b/content/.vuepress/public/fonts/FontAwesome.otf new file mode 100644 index 0000000..8b0f54e Binary files /dev/null and b/content/.vuepress/public/fonts/FontAwesome.otf differ diff --git a/content/.vuepress/public/fonts/fontawesome-webfont.eot b/content/.vuepress/public/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..7c79c6a Binary files /dev/null and b/content/.vuepress/public/fonts/fontawesome-webfont.eot differ diff --git a/content/.vuepress/public/fonts/fontawesome-webfont.svg b/content/.vuepress/public/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..45fdf33 --- /dev/null +++ b/content/.vuepress/public/fonts/fontawesome-webfont.svg @@ -0,0 +1,414 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/content/.vuepress/public/fonts/fontawesome-webfont.ttf b/content/.vuepress/public/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..e89738d Binary files /dev/null and b/content/.vuepress/public/fonts/fontawesome-webfont.ttf differ diff --git a/content/.vuepress/public/fonts/fontawesome-webfont.woff b/content/.vuepress/public/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..8c1748a Binary files /dev/null and b/content/.vuepress/public/fonts/fontawesome-webfont.woff differ diff --git a/content/.vuepress/public/whiteboard-logo.png b/content/.vuepress/public/whiteboard-logo.png new file mode 100644 index 0000000..fa1f13d Binary files /dev/null and b/content/.vuepress/public/whiteboard-logo.png differ diff --git a/content/.vuepress/public/whiteboard-navbar.png b/content/.vuepress/public/whiteboard-navbar.png new file mode 100644 index 0000000..df38e90 Binary files /dev/null and b/content/.vuepress/public/whiteboard-navbar.png differ diff --git a/content/.vuepress/scss/fonts/FontAwesome.otf b/content/.vuepress/scss/fonts/FontAwesome.otf new file mode 100644 index 0000000..8b0f54e Binary files /dev/null and b/content/.vuepress/scss/fonts/FontAwesome.otf differ diff --git a/content/.vuepress/scss/fonts/fontawesome-webfont.eot b/content/.vuepress/scss/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..7c79c6a Binary files /dev/null and b/content/.vuepress/scss/fonts/fontawesome-webfont.eot differ diff --git a/content/.vuepress/scss/fonts/fontawesome-webfont.svg b/content/.vuepress/scss/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..45fdf33 --- /dev/null +++ b/content/.vuepress/scss/fonts/fontawesome-webfont.svg @@ -0,0 +1,414 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/content/.vuepress/scss/fonts/fontawesome-webfont.ttf b/content/.vuepress/scss/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..e89738d Binary files /dev/null and b/content/.vuepress/scss/fonts/fontawesome-webfont.ttf differ diff --git a/content/.vuepress/scss/fonts/fontawesome-webfont.woff b/content/.vuepress/scss/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..8c1748a Binary files /dev/null and b/content/.vuepress/scss/fonts/fontawesome-webfont.woff differ diff --git a/content/.vuepress/scss/init/_normalize.scss b/content/.vuepress/scss/init/_normalize.scss new file mode 100644 index 0000000..7a5b0cb --- /dev/null +++ b/content/.vuepress/scss/init/_normalize.scss @@ -0,0 +1,578 @@ +/* ========================================================================== + Normalize.scss settings + ========================================================================== */ +/** + * Includes legacy browser support IE6/7 + * + * Set to false if you want to drop support for IE6 and IE7 + */ + +$legacy_browser_support: false !default; + +/* Base + ========================================================================== */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS and IE text size adjust after device orientation change, + * without disabling user zoom. + * 3. Corrects text resizing oddly in IE 6/7 when body `font-size` is set using + * `em` units. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ + @if $legacy_browser_support { + *font-size: 100%; /* 3 */ + } +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ + @if $legacy_browser_support { + *display: inline; + *zoom: 1; + } +} + +/** + * Prevents modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability of focused elements when they are also in an + * active/hover state. + */ + +a { + &:active, &:hover { + outline: 0; + }; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +@if $legacy_browser_support { + blockquote { + margin: 1em 40px; + } +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +@if $legacy_browser_support { + h2 { + font-size: 1.5em; + margin: 0.83em 0; + } + + h3 { + font-size: 1.17em; + margin: 1em 0; + } + + h4 { + font-size: 1em; + margin: 1.33em 0; + } + + h5 { + font-size: 0.83em; + margin: 1.67em 0; + } + + h6 { + font-size: 0.67em; + margin: 2.33em 0; + } +} + +/** + * Addresses styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +@if $legacy_browser_support { + + /** + * Addresses margins set differently in IE 6/7. + */ + + p, + pre { + *margin: 1em 0; + } + + /* + * Addresses CSS quotes not supported in IE 6/7. + */ + + q { + *quotes: none; + } + + /* + * Addresses `quotes` property not supported in Safari 4. + */ + + q:before, + q:after { + content: ''; + content: none; + } +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +@if $legacy_browser_support { + + /* ========================================================================== + Lists + ========================================================================== */ + + /* + * Addresses margins set differently in IE 6/7. + */ + + dl, + menu, + ol, + ul { + *margin: 1em 0; + } + + dd { + *margin: 0 0 0 40px; + } + + /* + * Addresses paddings set differently in IE 6/7. + */ + + menu, + ol, + ul { + *padding: 0 0 0 40px; + } + + /* + * Corrects list images handled incorrectly in IE 7. + */ + + nav ul, + nav ol { + *list-style: none; + *list-style-image: none; + } + +} + +/* Embedded content + ========================================================================== */ + +/** + * 1. Remove border when inside `a` element in IE 8/9/10. + * 2. Improves image quality when scaled in IE 7. + */ + +img { + border: 0; + @if $legacy_browser_support { + *-ms-interpolation-mode: bicubic; /* 2 */ + } +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + * Correct font family set oddly in IE 6, Safari 4/5, and Chrome. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + @if $legacy_browser_support { + _font-family: 'courier new', monospace; + } + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + * 4. Improves appearance and consistency in all browsers. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ + @if $legacy_browser_support { + vertical-align: baseline; /* 3 */ + *vertical-align: middle; /* 3 */ + } +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + * 4. Removes inner spacing in IE 7 without affecting normal text inputs. + * Known issue: inner spacing remains in IE 6. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ + @if $legacy_browser_support { + *overflow: visible; /* 4 */ + } +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + * Known issue: excess padding remains in IE 6. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ + @if $legacy_browser_support { + *height: 13px; /* 3 */ + *width: 13px; /* 3 */ + } +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome. + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + box-sizing: content-box; /* 2 */ +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + * 3. Corrects text not wrapping in Firefox 3. + * 4. Corrects alignment displayed oddly in IE 6/7. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ + @if $legacy_browser_support { + white-space: normal; /* 3 */ + *margin-left: -7px; /* 4 */ + } +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} diff --git a/content/.vuepress/scss/partials/_whiteboard_icons.scss b/content/.vuepress/scss/partials/_whiteboard_icons.scss new file mode 100644 index 0000000..24fd9a3 --- /dev/null +++ b/content/.vuepress/scss/partials/_whiteboard_icons.scss @@ -0,0 +1,38 @@ +@font-face { + font-family: FontAwesome; + font-style: normal; + font-weight: normal; + src: url($font-icon-path+".eot?v=#"+$font-icon-version); + src: url($font-icon-path+".eot?#iefix&v=#"+$font-icon-version) format("embedded-opentype"), url($font-icon-path+".woff?v=#"+$font-icon-version) format("woff"), url($font-icon-path+".ttf?v=#"+$font-icon-version) format("truetype"), url($font-icon-path+".svg#fontawesomeregular?v=#"+$font-icon-version) format("svg");; +} + +%icon { + font-family: 'FontAwesome'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; +} + +%icon-exclamation-sign { + @extend %icon; + content: "\f06a"; +} + +%icon-info-sign { + @extend %icon; + content: "\f05a"; +} + +%icon-ok-sign { + @extend %icon; + content: "\f058"; +} + +%icon-search { + @extend %icon; + content: "\f002"; +} + diff --git a/content/.vuepress/scss/partials/_whiteboard_style.scss b/content/.vuepress/scss/partials/_whiteboard_style.scss new file mode 100644 index 0000000..536a66d --- /dev/null +++ b/content/.vuepress/scss/partials/_whiteboard_style.scss @@ -0,0 +1,511 @@ +/* +Copyright 2008-2013 Concur Technologies, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); you may +not use this file except in compliance with the License. You may obtain +a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +License for the specific language governing permissions and limitations +under the License. +*/ +.whiteboard { + color: $main-text; + padding: 0; + margin: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + @extend %default-font; + background-color: $main-bg; + height: 100%; + -webkit-text-size-adjust: none; + /* Never autoresize text */ + #toc > ul > li > a > span { + float: right; + background-color: #2484FF; + border-radius: 40px; + width: 20px; + } + @mixin embossed-bg() { + background: linear-gradient(to bottom, rgba(black, 0.2), rgba(black, 0) 8px), linear-gradient(to top, rgba(black, 0.2), rgba(black, 0) 8px), linear-gradient(to bottom, rgba($nav-embossed-border-top, 1), rgba($nav-embossed-border-top, 0) 1.5px), linear-gradient(to top, rgba($nav-embossed-border-bottom, 1), rgba($nav-embossed-border-bottom, 0) 1.5px), $nav-subitem-bg; + } + .tocify-wrapper { + transition: left 0.3s ease-in-out; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + z-index: 30; + top: 64px; + left: 0; + bottom: 0; + width: $nav-width; + background-color: $nav-bg; + font-size: 13px; + font-weight: bold; + .lang-selector { + display: none; + a { + padding-top: 0.5em; + padding-bottom: 0.5em; + } + } + & > img { + display: block; + } + & > .search { + position: relative; + input { + background: $nav-bg; + border-width: 0 0 1px 0; + border-color: $search-box-border-color; + padding: 6px 0 6px 20px; + box-sizing: border-box; + margin: $nav-v-padding $nav-padding; + width: $nav-width - 30; + outline: none; + color: $nav-text; + border-radius: 0; + /* ios has a default border radius */ + } + &:before { + position: absolute; + top: 17px; + left: $nav-padding; + color: $nav-text; + @extend %icon-search; + } + } + img+.tocify { + margin-top: $logo-margin; + } + .search-results { + margin-top: 0; + box-sizing: border-box; + height: 0; + overflow-y: auto; + overflow-x: hidden; + transition-property: border-box, border-box; + transition-duration: 180ms; + transition-timing-function: ease-in-out; + &.visible { + height: 30%; + margin-bottom: 1em; + } + @include embossed-bg(); + li { + margin: 1em $nav-padding; + line-height: 1; + } + a { + color: $nav-text; + text-decoration: none; + &:hover { + text-decoration: underline; + } + } + } + .tocify-item>a, .toc-footer li { + padding: 0 $nav-padding 0 $nav-padding; + display: block; + overflow-x: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + ul, li { + list-style: none; + margin: 0; + padding: 0; + line-height: 28px; + } + li { + color: $nav-text; + transition-property: relative; + transition-timing-function: linear; + transition-duration: 230ms; + } + .tocify-focus { + box-shadow: 0px 1px 0px $nav-active-shadow; + background-color: $nav-active-bg; + color: $nav-active-text; + } + .tocify-subheader { + display: none; + + background-color: $nav-subitem-bg; + font-weight: 500; + .tocify-item>a { + padding-left: $nav-padding + $nav-indent; + font-size: 12px; + } + @include embossed-bg(); + & > li:last-child { + box-shadow: none; + } + .tocify-subheader { + display: none; + + background-color: $nav-subitem-bg; + font-weight: 500; + .tocify-item>a { + padding-left: $nav-padding + $nav-indent + $nav-indent * 3; + font-size: 12px; + @include embossed-bg(); + & > li:last-child { + box-shadow: none; + } + } + .tocify-subheader { + display: none; + + background-color: $nav-subitem-bg; + font-weight: 500; + .tocify-item>a { + padding-left: $nav-padding + $nav-indent + $nav-indent * 5; + font-size: 12px; + @include embossed-bg(); + & > li:last-child { + box-shadow: none; + } + } + } + } + } + .toc-footer { + padding: 1em 0; + margin-top: 1em; + border-top: 1px dashed $nav-footer-border-color; + li, a { + color: $nav-text; + text-decoration: none; + } + a:hover { + text-decoration: underline; + } + li { + font-size: 0.8em; + line-height: 1.7; + text-decoration: none; + } + } + } + #nav-button { + span { + display: block; + $side-pad: $main-padding / 2 - 8px; + padding: $side-pad $side-pad $side-pad; + background-color: rgba($main-bg, 0.7); + transform-origin: 0 0; + transform: rotate(-90deg) translate(-100%, 0); + border-radius: 0 0 0 5px; + } + padding: 0 1.5em 5em 0; + + display: none; + position: fixed; + top: 64px; + left: 0; + z-index: 100; + color: #000; + text-decoration: none; + font-weight: bold; + opacity: 0.7; + line-height: 16px; + img { + height: 16px; + vertical-align: 0; + } + transition: 0 0.3s ease-in-out; + &:hover { + opacity: 1; + } + &.open { + left: $nav-width; + } + } + .page-wrapper { + margin-left: $nav-width; + position: relative; + z-index: 10; + background-color: $main-bg; + min-height: 100%; + padding-bottom: 1px; + .dark-box { + width: $examples-width; + background-color: $examples-bg; + position: absolute; + right: 0; + top: 0; + bottom: 0; + } + .lang-selector { + position: fixed; + z-index: 50; + border-bottom: 5px solid $lang-select-active-bg; + } + } + .lang-selector { + background-color: $lang-select-bg; + width: 100%; + font-weight: bold; + a { + display: block; + float: 1; + color: $lang-select-text; + text-decoration: none; + padding: 0 10px; + line-height: 30px; + outline: 0; + &:active, &:focus { + background-color: $lang-select-pressed-bg; + color: $lang-select-pressed-text; + } + &.active { + background-color: $lang-select-active-bg; + color: $lang-select-active-text; + } + } + &:after { + content: ''; + clear: both; + display: block; + } + } + .content { + + position: relative; + z-index: 30; + &:after { + content: ''; + display: block; + clear: both; + } + & > h1, & > h2, & > h3, & > h4, & > h5, & > h6, & > p, & > table, & > ul, & > ol, & > aside, & > dl { + margin-right: $examples-width; + padding: 0 $main-padding; + box-sizing: border-box; + display: block; + text-shadow: $main-embossed-text-shadow; + } + & > ul, & > ol { + padding-left: $main-padding + 15px; + } + & > h1, & > h2, & > div { + clear: both; + } + h1 { + @extend %header-font; + font-size: 30px; + padding-top: 0.5em; + padding-bottom: 0.5em; + border-bottom: 1px solid #ccc; + margin-bottom: $h1-margin-bottom; + margin-top: 2em; + border-top: 1px solid #ddd; + background-image: linear-gradient(to bottom, white, #f9f9f9); + } + h1:first-child, div:first-child + h1 { + border-top-width: 0; + margin-top: 0; + } + h2 { + @extend %header-font; + font-size: 20px; + margin-top: 4em; + margin-bottom: 0; + border-top: 1px solid #ccc; + padding-top: 1.2em; + padding-bottom: 1.2em; + background-image: linear-gradient(to bottom, rgba(white, 0.4), rgba(white, 0)); + } + h1 + h2, h1 + div + h2 { + margin-top: $h1-margin-bottom * -1; + border-top: none; + } + h3, h4, h5, h6 { + @extend %header-font; + font-size: 15px; + margin-top: 2.5em; + margin-bottom: 0.8em; + } + h4, h5, h6 { + font-size: 10px; + } + hr { + margin: 2em 0; + border-top: 2px solid $examples-bg; + border-bottom: 2px solid $main-bg; + } + table { + margin-bottom: 1em; + overflow: auto; + th, td { + text-align: 1; + vertical-align: 0; + line-height: 1.6; + } + th { + padding: 5px 10px; + border-bottom: 1px solid #ccc; + vertical-align: 0; + } + td { + padding: 10px; + } + tr:last-child { + border-bottom: 1px solid #ccc; + } + tr:nth-child(odd) > td { + background-color: lighten($main-bg, 4.2%); + } + tr:nth-child(even) > td { + background-color: lighten($main-bg, 2.4%); + } + } + dt { + font-weight: bold; + } + dd { + margin-left: 15px; + } + p, li, dt, dd { + line-height: 1.6; + margin-top: 0; + } + img { + max-width: 100%; + } + code { + background-color: rgba(0, 0, 0, 0.05); + padding: 3px; + border-radius: 3px; + @extend %break-words; + @extend %code-font; + } + pre>code { + background-color: transparent; + padding: 0; + } + aside { + padding-top: 1em; + padding-bottom: 1em; + text-shadow: 0 1px 0 lighten($aside-notice-bg, 15%); + margin-top: 1.5em; + margin-bottom: 1.5em; + background: $aside-notice-bg; + line-height: 1.6; + &.warning { + background-color: $aside-warning-bg; + text-shadow: 0 1px 0 lighten($aside-warning-bg, 15%); + } + &.success { + background-color: $aside-success-bg; + text-shadow: 0 1px 0 lighten($aside-success-bg, 15%); + } + } + aside:before { + vertical-align: middle; + padding-right: 0.5em; + font-size: 14px; + } + aside.notice:before { + @extend %icon-info-sign; + } + aside.warning:before { + @extend %icon-exclamation-sign; + } + aside.success:before { + @extend %icon-ok-sign; + } + .search-highlight { + padding: 2px; + margin: -2px; + border-radius: 4px; + border: 1px solid #F7E633; + text-shadow: 1px 1px 0 #666666; + background: linear-gradient(to top left, #f7e633 0%, #f1d32f 100%); + } + } + .content { + pre, blockquote { + background-color: $code-bg; + color: #fff; + padding: 2em $main-padding; + margin: 0; + width: $examples-width; + float: right; + clear: right; + box-sizing: border-box; + text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.4); + & > p { + margin: 0; + } + a { + color: #fff; + text-decoration: none; + border-bottom: dashed 1px #ccc; + } + } + pre { + @extend %code-font; + } + blockquote { + & > p { + background-color: $code-annotation-bg; + border-radius: 5px; + padding: $code-annotation-padding; + color: #ccc; + border-top: 1px solid #000; + border-bottom: 1px solid #404040; + } + } + } + + + + + + @media (max-width: $tablet-width) { + .tocify-wrapper { + left: -1 * $nav-width; + &.open { + left: 0; + } + } + .page-wrapper { + margin-left: 0; + } + #nav-button { + display: block; + } + .tocify-wrapper .tocify-item > a { + padding-top: 0.3em; + padding-bottom: 0.3em; + } + } + @media (max-width: $phone-width) { + .dark-box { + display: none; + } + .tocify-wrapper .lang-selector { + display: block; + } + .page-wrapper .lang-selector { + display: none; + } + .content { + h1, h2, h3, h4, h5, h6, p, table, ul, ol, aside, dl { + margin-right: 0; + } + + pre, blockquote { + float: none; + width: auto; + } + } + } + +} \ No newline at end of file diff --git a/content/.vuepress/scss/partials/_whiteboard_variables.scss b/content/.vuepress/scss/partials/_whiteboard_variables.scss new file mode 100644 index 0000000..1645d43 --- /dev/null +++ b/content/.vuepress/scss/partials/_whiteboard_variables.scss @@ -0,0 +1,146 @@ +/* +Copyright 2008-2013 Concur Technologies, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); you may +not use this file except in compliance with the License. You may obtain +a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +License for the specific language governing permissions and limitations +under the License. +*/ + +//////////////////////////////////////////////////////////////////////////////// +// CUSTOMIZE WHITEBOARD +// +// Use these settings to help adjust the appearance of Whiteboard +//////////////////////////////////////////////////////////////////////////////// + +//////////////////// +// BACKGROUND COLORS +//////////////////// +$nav-bg: #393939; +$examples-bg: #393939; +$code-bg: #292929; +$code-annotation-bg: #1c1c1c; +$nav-subitem-bg: #262626; +$nav-active-bg: #2467af; +$lang-select-border: black; +$lang-select-bg: #222222; + +// feel free to change this to blue or something +$lang-select-active-bg: $examples-bg; + +// color of language tab bg when mouse is pressed +$lang-select-pressed-bg: #111111; + +$main-bg: #eaf2f6; +$aside-notice-bg: #8fbcd4; +$aside-warning-bg: #c97a7e; +$aside-success-bg: #6ac174; +$search-notice-bg: #c97a7e; + +//////////////////// +// TEXT COLORS +//////////////////// + +// main content text color +$main-text: #333333; + +// color of unselected language tab text +$nav-text: white; +$nav-active-text: white; +$lang-select-text: white; + +// color of selected language tab text +$lang-select-active-text: white; + +// color of language tab text when mouse is pressed +$lang-select-pressed-text: white; + +//////////////////// +// SIZES +//////////////////// + +// width of the navbar +$nav-width: 230px; + +// portion of the screen taken up by code examples +$examples-width: 50%; + +// margin between nav items and logo, ignored if search is active +$logo-margin: 20px; + +// padding to left and right of content & examples +$main-padding: 28px; + +// padding to left and right of navbar +$nav-padding: 15px; + +// padding used vertically around search boxes and results +$nav-v-padding: 10px; + +// extra padding for ToC subitems +$nav-indent: 10px; + +// padding inside code annotations +$code-annotation-padding: 13px; + +// padding under the largest header tags +$h1-margin-bottom: 21px; + +// min width before reverting to tablet size +$tablet-width: 930px; + +// min width before reverting to mobile size +$phone-width: $tablet-width - $nav-width; + +//////////////////// +// FONTS +//////////////////// + +%default-font { + font-family: "Helvetica Neue", Helvetica, Arial, "Microsoft Yahei","微软雅黑", STXihei, "华文细黑", sans-serif; + font-size: 13px; +} + +%header-font { + @extend %default-font; + font-weight: bold; +} + +%code-font { + font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif; + font-size: 12px; + line-height: 1.5; +} + +$font-icon: FontAwesome; +$font-icon-path: "../public/fonts/fontawesome-webfont"; +$font-icon-version: "4.0.3"; + +//////////////////// +// OTHER +//////////////////// + +$nav-active-shadow: black; +$nav-footer-border-color: #666666; +$nav-embossed-border-top: black; +$nav-embossed-border-bottom: #939393; +$main-embossed-text-shadow: 0px 1px 0px white; +$search-box-border-color: #666666; + +//////////////////////////////////////////////////////////////////////////////// +// INTERNAL +//////////////////////////////////////////////////////////////////////////////// +// These settings are probably best left alone. +%break-words { + word-break: break-all; + /* Non standard for webkit */ + word-break: break-word; + hyphens: auto; +} diff --git a/content/whiteboard-test.md b/content/whiteboard-test.md new file mode 100644 index 0000000..7c58bc6 --- /dev/null +++ b/content/whiteboard-test.md @@ -0,0 +1,3 @@ + + +test \ No newline at end of file diff --git a/package.json b/package.json index 24cfc2f..bd99275 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,10 @@ "express": "^4.16.3", "heroku-ssl-redirect": "0.0.4", "highlight.js": "^9.12.0", + "jquery": "2.1.3", + "jquery-ui": "^1.12.1", + "jquery.tocify": "^1.9.1", + "lunr": "0.5.7", "markdown-it-wikilinks": "^1.0.1", "node-sass": "^4.9.0", "redis": "^2.8.0", diff --git a/yarn.lock b/yarn.lock index d45d23a..8c18d46 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3926,6 +3926,18 @@ joi@^11.1.1: isemail "3.x.x" topo "2.x.x" +jquery-ui@^1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/jquery-ui/-/jquery-ui-1.12.1.tgz#bcb4045c8dd0539c134bc1488cdd3e768a7a9e51" + +jquery.tocify@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/jquery.tocify/-/jquery.tocify-1.9.1.tgz#ca1c0460fa781d2ea8ba14639027bd734b5cc35a" + +jquery@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-2.1.3.tgz#6ec55204673d505d39432c5bf5cfad10e1dbad2e" + js-base64@^2.1.8, js-base64@^2.1.9: version "2.4.5" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.5.tgz#e293cd3c7c82f070d700fc7a1ca0a2e69f101f92" @@ -4320,6 +4332,10 @@ lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2: pseudomap "^1.0.2" yallist "^2.1.2" +lunr@0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-0.5.7.tgz#e21a7c783225aad2b04c3e1bfa21b4d48a852e6f" + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"