diff --git a/source/v8/CNAME b/source/v8/CNAME new file mode 100644 index 0000000..e873526 --- /dev/null +++ b/source/v8/CNAME @@ -0,0 +1 @@ +www.pixijselementals.com \ No newline at end of file diff --git a/source/v8/android-chrome-192x192.png b/source/v8/android-chrome-192x192.png new file mode 100644 index 0000000..589a731 Binary files /dev/null and b/source/v8/android-chrome-192x192.png differ diff --git a/source/v8/android-chrome-512x512.png b/source/v8/android-chrome-512x512.png new file mode 100644 index 0000000..9c1fb25 Binary files /dev/null and b/source/v8/android-chrome-512x512.png differ diff --git a/source/v8/apple-touch-icon.png b/source/v8/apple-touch-icon.png new file mode 100644 index 0000000..452c2e2 Binary files /dev/null and b/source/v8/apple-touch-icon.png differ diff --git a/source/v8/favicon-16x16.png b/source/v8/favicon-16x16.png new file mode 100644 index 0000000..f6aeb19 Binary files /dev/null and b/source/v8/favicon-16x16.png differ diff --git a/source/v8/favicon-32x32.png b/source/v8/favicon-32x32.png new file mode 100644 index 0000000..84bdf7f Binary files /dev/null and b/source/v8/favicon-32x32.png differ diff --git a/source/v8/favicon.ico b/source/v8/favicon.ico new file mode 100644 index 0000000..cd36b8a Binary files /dev/null and b/source/v8/favicon.ico differ diff --git a/source/v8/fonts/slate.eot b/source/v8/fonts/slate.eot new file mode 100644 index 0000000..13c4839 Binary files /dev/null and b/source/v8/fonts/slate.eot differ diff --git a/source/v8/fonts/slate.svg b/source/v8/fonts/slate.svg new file mode 100644 index 0000000..671eae4 --- /dev/null +++ b/source/v8/fonts/slate.svg @@ -0,0 +1,14 @@ + + + +Generated by IcoMoon + + + + + + + + + + diff --git a/source/v8/fonts/slate.ttf b/source/v8/fonts/slate.ttf new file mode 100644 index 0000000..ace9a46 Binary files /dev/null and b/source/v8/fonts/slate.ttf differ diff --git a/source/v8/fonts/slate.woff b/source/v8/fonts/slate.woff new file mode 100644 index 0000000..1e72e0e Binary files /dev/null and b/source/v8/fonts/slate.woff differ diff --git a/source/v8/fonts/slate.woff2 b/source/v8/fonts/slate.woff2 new file mode 100644 index 0000000..7c585a7 Binary files /dev/null and b/source/v8/fonts/slate.woff2 differ diff --git a/source/v8/images/logo.png b/source/v8/images/logo.png new file mode 100644 index 0000000..dfad9d9 Binary files /dev/null and b/source/v8/images/logo.png differ diff --git a/source/v8/images/navbar.png b/source/v8/images/navbar.png new file mode 100644 index 0000000..df38e90 Binary files /dev/null and b/source/v8/images/navbar.png differ diff --git a/source/v8/includes/_00-WIP.md b/source/v8/includes/_00-WIP.md new file mode 100644 index 0000000..5c840c1 --- /dev/null +++ b/source/v8/includes/_00-WIP.md @@ -0,0 +1,3 @@ +# Coming Soon + +👀 \ No newline at end of file diff --git a/source/v8/index.html.md b/source/v8/index.html.md new file mode 100644 index 0000000..f214e8a --- /dev/null +++ b/source/v8/index.html.md @@ -0,0 +1,19 @@ +--- +title: PixiJS Elementals v8 + +language_tabs: + +toc_footers: + - + +includes: + - 00-WIP + + +search: true + +code_clipboard: true +--- + + + diff --git a/source/v8/javascripts/all.js b/source/v8/javascripts/all.js new file mode 100644 index 0000000..daf4f01 --- /dev/null +++ b/source/v8/javascripts/all.js @@ -0,0 +1,2 @@ +//= require ./all_nosearch +//= require ./app/_search diff --git a/source/v8/javascripts/all_nosearch.js b/source/v8/javascripts/all_nosearch.js new file mode 100644 index 0000000..402730e --- /dev/null +++ b/source/v8/javascripts/all_nosearch.js @@ -0,0 +1,27 @@ +//= require ./lib/_energize +//= require ./app/_copy +//= require ./app/_toc +//= require ./app/_lang + +function adjustLanguageSelectorWidth() { + const elem = $('.dark-box > .lang-selector'); + elem.width(elem.parent().width()); +} + +$(function() { + loadToc($('#toc'), '.toc-link', '.toc-list-h2', 10); + setupLanguages($('body').data('languages')); + $('.content').imagesLoaded( function() { + window.recacheHeights(); + window.refreshToc(); + }); + + $(window).resize(function() { + adjustLanguageSelectorWidth(); + }); + adjustLanguageSelectorWidth(); +}); + +window.onpopstate = function() { + activateLanguage(getLanguageFromQueryString()); +}; diff --git a/source/v8/javascripts/app/_copy.js b/source/v8/javascripts/app/_copy.js new file mode 100644 index 0000000..2cdadf9 --- /dev/null +++ b/source/v8/javascripts/app/_copy.js @@ -0,0 +1,15 @@ +function copyToClipboard(container) { + const el = document.createElement('textarea'); + el.value = container.textContent.replace(/\n$/, ''); + document.body.appendChild(el); + el.select(); + document.execCommand('copy'); + document.body.removeChild(el); +} + +function setupCodeCopy() { + $('pre.highlight').prepend('
Copy to Clipboard
'); + $('.copy-clipboard').on('click', function() { + copyToClipboard(this.parentNode.children[1]); + }); +} diff --git a/source/v8/javascripts/app/_lang.js b/source/v8/javascripts/app/_lang.js new file mode 100644 index 0000000..c1bd6b2 --- /dev/null +++ b/source/v8/javascripts/app/_lang.js @@ -0,0 +1,171 @@ +//= require ../lib/_jquery + +/* +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. +*/ +;(function () { + 'use strict'; + + var languages = []; + + window.setupLanguages = setupLanguages; + window.activateLanguage = activateLanguage; + window.getLanguageFromQueryString = getLanguageFromQueryString; + + function activateLanguage(language) { + if (!language) return; + if (language === "") return; + + $(".lang-selector a").removeClass('active'); + $(".lang-selector a[data-language-name='" + language + "']").addClass('active'); + for (var i=0; i < languages.length; i++) { + $(".highlight.tab-" + languages[i]).hide(); + $(".lang-specific." + languages[i]).hide(); + } + $(".highlight.tab-" + language).show(); + $(".lang-specific." + language).show(); + + window.recacheHeights(); + + // scroll to the new location of the position + if ($(window.location.hash).get(0)) { + $(window.location.hash).get(0).scrollIntoView(true); + } + } + + // parseURL and stringifyURL are from https://github.com/sindresorhus/query-string + // MIT licensed + // https://github.com/sindresorhus/query-string/blob/7bee64c16f2da1a326579e96977b9227bf6da9e6/license + function parseURL(str) { + if (typeof str !== 'string') { + return {}; + } + + str = str.trim().replace(/^(\?|#|&)/, ''); + + if (!str) { + return {}; + } + + return str.split('&').reduce(function (ret, param) { + var parts = param.replace(/\+/g, ' ').split('='); + var key = parts[0]; + var val = parts[1]; + + key = decodeURIComponent(key); + // missing `=` should be `null`: + // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters + val = val === undefined ? null : decodeURIComponent(val); + + if (!ret.hasOwnProperty(key)) { + ret[key] = val; + } else if (Array.isArray(ret[key])) { + ret[key].push(val); + } else { + ret[key] = [ret[key], val]; + } + + return ret; + }, {}); + }; + + function stringifyURL(obj) { + return obj ? Object.keys(obj).sort().map(function (key) { + var val = obj[key]; + + if (Array.isArray(val)) { + return val.sort().map(function (val2) { + return encodeURIComponent(key) + '=' + encodeURIComponent(val2); + }).join('&'); + } + + return encodeURIComponent(key) + '=' + encodeURIComponent(val); + }).join('&') : ''; + }; + + // gets the language set in the query string + function getLanguageFromQueryString() { + if (location.search.length >= 1) { + var language = parseURL(location.search).language; + if (language) { + return language; + } else if (jQuery.inArray(location.search.substr(1), languages) != -1) { + return location.search.substr(1); + } + } + + return false; + } + + // returns a new query string with the new language in it + function generateNewQueryString(language) { + var url = parseURL(location.search); + if (url.language) { + url.language = language; + return stringifyURL(url); + } + return language; + } + + // if a button is clicked, add the state to the history + function pushURL(language) { + if (!history) { return; } + var hash = window.location.hash; + if (hash) { + hash = hash.replace(/^#+/, ''); + } + history.pushState({}, '', '?' + generateNewQueryString(language) + '#' + hash); + + // save language as next default + if (localStorage) { + localStorage.setItem("language", language); + } + } + + function setupLanguages(l) { + var defaultLanguage = null; + if (localStorage) { + defaultLanguage = localStorage.getItem("language"); + } + + languages = l; + + var presetLanguage = getLanguageFromQueryString(); + if (presetLanguage && languages.includes(presetLanguage)) { + // the language is in the URL, so use that language! + activateLanguage(presetLanguage); + + if (localStorage) { + localStorage.setItem("language", presetLanguage); + } + } else if ((defaultLanguage !== null) && (jQuery.inArray(defaultLanguage, languages) != -1)) { + // the language was the last selected one saved in localstorage, so use that language! + activateLanguage(defaultLanguage); + } else { + // no language selected, so use the default + activateLanguage(languages[0]); + } + } + + // if we click on a language tab, activate that language + $(function() { + $(".lang-selector a").on("click", function() { + var language = $(this).data("language-name"); + pushURL(language); + activateLanguage(language); + return false; + }); + }); +})(); diff --git a/source/v8/javascripts/app/_search.js b/source/v8/javascripts/app/_search.js new file mode 100644 index 0000000..622aea6 --- /dev/null +++ b/source/v8/javascripts/app/_search.js @@ -0,0 +1,102 @@ +//= require ../lib/_lunr +//= require ../lib/_jquery +//= require ../lib/_jquery.highlight +;(function () { + 'use strict'; + + var content, searchResults; + var highlightOpts = { element: 'span', className: 'search-highlight' }; + var searchDelay = 0; + var timeoutHandle = 0; + var index; + + function populate() { + index = lunr(function(){ + + this.ref('id'); + this.field('title', { boost: 10 }); + this.field('body'); + this.pipeline.add(lunr.trimmer, lunr.stopWordFilter); + var lunrConfig = this; + + $('h1, h2').each(function() { + var title = $(this); + var body = title.nextUntil('h1, h2'); + lunrConfig.add({ + id: title.prop('id'), + title: title.text(), + body: body.text() + }); + }); + + }); + determineSearchDelay(); + } + + $(populate); + $(bind); + + function determineSearchDelay() { + if (index.tokenSet.toArray().length>5000) { + searchDelay = 300; + } + } + + function bind() { + content = $('.content'); + searchResults = $('.search-results'); + + $('#input-search').on('keyup',function(e) { + var wait = function() { + return function(executingFunction, waitTime){ + clearTimeout(timeoutHandle); + timeoutHandle = setTimeout(executingFunction, waitTime); + }; + }(); + wait(function(){ + search(e); + }, searchDelay); + }); + } + + function search(event) { + + var searchInput = $('#input-search')[0]; + + unhighlight(); + searchResults.addClass('visible'); + + // ESC clears the field + if (event.keyCode === 27) searchInput.value = ''; + + if (searchInput.value) { + var results = index.search(searchInput.value).filter(function(r) { + return r.score > 0.0001; + }); + + if (results.length) { + searchResults.empty(); + $.each(results, function (index, result) { + var elem = document.getElementById(result.ref); + searchResults.append("
  • " + $(elem).text() + "
  • "); + }); + highlight.call(searchInput); + } else { + searchResults.html('
  • '); + $('.search-results li').text('No Results Found for "' + searchInput.value + '"'); + } + } else { + unhighlight(); + searchResults.removeClass('visible'); + } + } + + function highlight() { + if (this.value) content.highlight(this.value, highlightOpts); + } + + function unhighlight() { + content.unhighlight(highlightOpts); + } +})(); + diff --git a/source/v8/javascripts/app/_toc.js b/source/v8/javascripts/app/_toc.js new file mode 100644 index 0000000..350280e --- /dev/null +++ b/source/v8/javascripts/app/_toc.js @@ -0,0 +1,122 @@ +//= require ../lib/_jquery +//= require ../lib/_imagesloaded.min +;(function () { + 'use strict'; + + var htmlPattern = /<[^>]*>/g; + var loaded = false; + + var debounce = function(func, waitTime) { + var timeout = false; + return function() { + if (timeout === false) { + setTimeout(function() { + func(); + timeout = false; + }, waitTime); + timeout = true; + } + }; + }; + + var closeToc = function() { + $(".toc-wrapper").removeClass('open'); + $("#nav-button").removeClass('open'); + }; + + function loadToc($toc, tocLinkSelector, tocListSelector, scrollOffset) { + var headerHeights = {}; + var pageHeight = 0; + var windowHeight = 0; + var originalTitle = document.title; + + var recacheHeights = function() { + headerHeights = {}; + pageHeight = $(document).height(); + windowHeight = $(window).height(); + + $toc.find(tocLinkSelector).each(function() { + var targetId = $(this).attr('href'); + if (targetId[0] === "#") { + headerHeights[targetId] = $("#" + $.escapeSelector(targetId.substring(1))).offset().top; + } + }); + }; + + var refreshToc = function() { + var currentTop = $(document).scrollTop() + scrollOffset; + + if (currentTop + windowHeight >= pageHeight) { + // at bottom of page, so just select last header by making currentTop very large + // this fixes the problem where the last header won't ever show as active if its content + // is shorter than the window height + currentTop = pageHeight + 1000; + } + + var best = null; + for (var name in headerHeights) { + if ((headerHeights[name] < currentTop && headerHeights[name] > headerHeights[best]) || best === null) { + best = name; + } + } + + // Catch the initial load case + if (currentTop == scrollOffset && !loaded) { + best = window.location.hash; + loaded = true; + } + + var $best = $toc.find("[href='" + best + "']").first(); + if (!$best.hasClass("active")) { + // .active is applied to the ToC link we're currently on, and its parent