From 11ce24e14598d88806252cee5be63a162b9f301b Mon Sep 17 00:00:00 2001
From: "Alex A. Naanou"
Date: Wed, 20 Sep 2023 16:31:25 +0300
Subject: [PATCH] cleanup:separating versions...
Signed-off-by: Alex A. Naanou
---
package.json | 2 +-
scripts/bootstrap.js | 64 -
v2/bootstrap.js | 6 +
{bootstrap => v2/bootstrap}/Doc.html | 0
{bootstrap => v2/bootstrap}/Doc/About.md | 0
{bootstrap => v2/bootstrap}/Doc/Macros.md | 0
{bootstrap => v2/bootstrap}/Doc/Path.md | 0
{bootstrap => v2/bootstrap}/Doc/Templates.md | 0
.../bootstrap}/System/settings.json | 0
{bootstrap => v2/bootstrap}/System/style.css | 0
{bootstrap => v2/bootstrap}/Templates.html | 0
.../bootstrap}/Templates/EmptyOutline.html | 0
.../bootstrap}/Templates/EmptyPage.html | 0
.../bootstrap}/Templates/EmptyToDo.html | 0
.../bootstrap}/Templates/_css.html | 0
.../bootstrap}/Templates/_edit.html | 0
.../bootstrap}/Templates/_outline.html | 0
.../bootstrap}/Templates/_raw.txt | 0
.../bootstrap}/Templates/_todo.html | 0
.../bootstrap}/Templates/_view.html | 0
.../bootstrap}/Templates/all_pages.html | 0
.../bootstrap}/Templates/macros.html | 0
.../bootstrap}/Templates/outline.html | 0
.../bootstrap}/Templates/pages.html | 0
.../bootstrap}/Templates/todo.html | 0
.../bootstrap}/Templates/tree.html | 0
{bootstrap => v2/bootstrap}/Test/slot.html | 0
{bootstrap => v2/bootstrap}/TestTodo.md | 0
{bootstrap => v2/bootstrap}/TestTodo/01.html | 0
{bootstrap => v2/bootstrap}/TestTodo/02.html | 0
{bootstrap => v2/bootstrap}/TestTodo/03.html | 0
{bootstrap => v2/bootstrap}/TestTodo/04.html | 0
.../bootstrap}/Theme/CLI/tree.txt | 0
browser.js => v2/browser.js | 0
v2/css/fonts.css | 230 +
v2/css/fonts/Open_Sans/LICENSE.txt | 202 +
v2/css/fonts/Open_Sans/OpenSans-Bold.ttf | Bin 0 -> 224592 bytes
.../fonts/Open_Sans/OpenSans-BoldItalic.ttf | Bin 0 -> 213292 bytes
v2/css/fonts/Open_Sans/OpenSans-ExtraBold.ttf | Bin 0 -> 222584 bytes
.../Open_Sans/OpenSans-ExtraBoldItalic.ttf | Bin 0 -> 213420 bytes
v2/css/fonts/Open_Sans/OpenSans-Italic.ttf | Bin 0 -> 212896 bytes
v2/css/fonts/Open_Sans/OpenSans-Light.ttf | Bin 0 -> 222412 bytes
.../fonts/Open_Sans/OpenSans-LightItalic.ttf | Bin 0 -> 213128 bytes
v2/css/fonts/Open_Sans/OpenSans-Regular.ttf | Bin 0 -> 217360 bytes
v2/css/fonts/Open_Sans/OpenSans-Semibold.ttf | Bin 0 -> 221328 bytes
.../Open_Sans/OpenSans-SemiboldItalic.ttf | Bin 0 -> 212820 bytes
v2/css/fonts/Work_Sans/OFL.txt | 92 +
v2/css/fonts/Work_Sans/WorkSans-Black.ttf | Bin 0 -> 139644 bytes
v2/css/fonts/Work_Sans/WorkSans-Bold.ttf | Bin 0 -> 143920 bytes
v2/css/fonts/Work_Sans/WorkSans-ExtraBold.ttf | Bin 0 -> 146244 bytes
.../fonts/Work_Sans/WorkSans-ExtraLight.ttf | Bin 0 -> 135500 bytes
v2/css/fonts/Work_Sans/WorkSans-Light.ttf | Bin 0 -> 136980 bytes
v2/css/fonts/Work_Sans/WorkSans-Medium.ttf | Bin 0 -> 143036 bytes
v2/css/fonts/Work_Sans/WorkSans-Regular.ttf | Bin 0 -> 135828 bytes
v2/css/fonts/Work_Sans/WorkSans-SemiBold.ttf | Bin 0 -> 142548 bytes
v2/css/fonts/Work_Sans/WorkSans-Thin.ttf | Bin 0 -> 135044 bytes
v2/css/spinner.css | 44 +
v2/ext-lib/FileSaver.js | 247 +
v2/ext-lib/README | 1 +
v2/ext-lib/compat.js | 280 +
v2/ext-lib/index.js | 184 +
v2/ext-lib/jquery-ui.min.js | 13 +
v2/ext-lib/jquery.js | 4 +
v2/ext-lib/jquery.ui.touch.js | 209 +
v2/ext-lib/jszip.js | 11577 ++++++++
v2/ext-lib/jszip.min.js | 13 +
v2/ext-lib/peer.min.js | 2 +
v2/ext-lib/pouchdb.find.js | 6798 +++++
v2/ext-lib/pouchdb.find.min.js | 8 +
v2/ext-lib/pouchdb.indexeddb.js | 5152 ++++
v2/ext-lib/pouchdb.indexeddb.min.js | 2 +
v2/ext-lib/pouchdb.js | 13146 +++++++++
v2/ext-lib/pouchdb.localstorage.js | 21765 +++++++++++++++
v2/ext-lib/pouchdb.localstorage.min.js | 45 +
v2/ext-lib/pouchdb.memory.js | 22008 ++++++++++++++++
v2/ext-lib/pouchdb.memory.min.js | 45 +
v2/ext-lib/pouchdb.min.js | 7 +
v2/ext-lib/require.js | 2142 ++
v2/ext-lib/showdown.js | 5157 ++++
v2/ext-lib/showdown.js.map | 1 +
v2/ext-lib/showdown.min.js | 3 +
v2/ext-lib/showdown.min.js.map | 1 +
v2/ext-lib/umd.js | 1 +
pwiki2.html => v2/index.html | 0
v2/manifest.json | 24 +
v2/package.json | 35 +
{pwiki => v2/pwiki}/dom/README | 0
v2/pwiki/dom/textarea.js | 32 +
{pwiki => v2/pwiki}/dom/toc.js | 0
{pwiki => v2/pwiki}/dom/wikiword.js | 0
{pwiki => v2/pwiki}/filters/base.js | 0
{pwiki => v2/pwiki}/filters/markdown.js | 0
{pwiki => v2/pwiki}/index.js | 0
{pwiki => v2/pwiki}/page.js | 1 -
{pwiki => v2/pwiki}/parser.js | 0
{pwiki => v2/pwiki}/path.js | 0
{pwiki => v2/pwiki}/store/base.js | 0
{pwiki => v2/pwiki}/store/file.js | 0
{pwiki => v2/pwiki}/store/indexeddb.js | 0
{pwiki => v2/pwiki}/store/localstorage.js | 0
{pwiki => v2/pwiki}/store/pouchdb.js | 0
101 files changed, 89477 insertions(+), 66 deletions(-)
delete mode 100755 scripts/bootstrap.js
create mode 100755 v2/bootstrap.js
rename {bootstrap => v2/bootstrap}/Doc.html (100%)
rename {bootstrap => v2/bootstrap}/Doc/About.md (100%)
rename {bootstrap => v2/bootstrap}/Doc/Macros.md (100%)
rename {bootstrap => v2/bootstrap}/Doc/Path.md (100%)
rename {bootstrap => v2/bootstrap}/Doc/Templates.md (100%)
rename {bootstrap => v2/bootstrap}/System/settings.json (100%)
rename {bootstrap => v2/bootstrap}/System/style.css (100%)
rename {bootstrap => v2/bootstrap}/Templates.html (100%)
rename {bootstrap => v2/bootstrap}/Templates/EmptyOutline.html (100%)
rename {bootstrap => v2/bootstrap}/Templates/EmptyPage.html (100%)
rename {bootstrap => v2/bootstrap}/Templates/EmptyToDo.html (100%)
rename {bootstrap => v2/bootstrap}/Templates/_css.html (100%)
rename {bootstrap => v2/bootstrap}/Templates/_edit.html (100%)
rename {bootstrap => v2/bootstrap}/Templates/_outline.html (100%)
rename {bootstrap => v2/bootstrap}/Templates/_raw.txt (100%)
rename {bootstrap => v2/bootstrap}/Templates/_todo.html (100%)
rename {bootstrap => v2/bootstrap}/Templates/_view.html (100%)
rename {bootstrap => v2/bootstrap}/Templates/all_pages.html (100%)
rename {bootstrap => v2/bootstrap}/Templates/macros.html (100%)
rename {bootstrap => v2/bootstrap}/Templates/outline.html (100%)
rename {bootstrap => v2/bootstrap}/Templates/pages.html (100%)
rename {bootstrap => v2/bootstrap}/Templates/todo.html (100%)
rename {bootstrap => v2/bootstrap}/Templates/tree.html (100%)
rename {bootstrap => v2/bootstrap}/Test/slot.html (100%)
rename {bootstrap => v2/bootstrap}/TestTodo.md (100%)
rename {bootstrap => v2/bootstrap}/TestTodo/01.html (100%)
rename {bootstrap => v2/bootstrap}/TestTodo/02.html (100%)
rename {bootstrap => v2/bootstrap}/TestTodo/03.html (100%)
rename {bootstrap => v2/bootstrap}/TestTodo/04.html (100%)
rename {bootstrap => v2/bootstrap}/Theme/CLI/tree.txt (100%)
rename browser.js => v2/browser.js (100%)
create mode 100755 v2/css/fonts.css
create mode 100755 v2/css/fonts/Open_Sans/LICENSE.txt
create mode 100755 v2/css/fonts/Open_Sans/OpenSans-Bold.ttf
create mode 100755 v2/css/fonts/Open_Sans/OpenSans-BoldItalic.ttf
create mode 100755 v2/css/fonts/Open_Sans/OpenSans-ExtraBold.ttf
create mode 100755 v2/css/fonts/Open_Sans/OpenSans-ExtraBoldItalic.ttf
create mode 100755 v2/css/fonts/Open_Sans/OpenSans-Italic.ttf
create mode 100755 v2/css/fonts/Open_Sans/OpenSans-Light.ttf
create mode 100755 v2/css/fonts/Open_Sans/OpenSans-LightItalic.ttf
create mode 100755 v2/css/fonts/Open_Sans/OpenSans-Regular.ttf
create mode 100755 v2/css/fonts/Open_Sans/OpenSans-Semibold.ttf
create mode 100755 v2/css/fonts/Open_Sans/OpenSans-SemiboldItalic.ttf
create mode 100755 v2/css/fonts/Work_Sans/OFL.txt
create mode 100755 v2/css/fonts/Work_Sans/WorkSans-Black.ttf
create mode 100755 v2/css/fonts/Work_Sans/WorkSans-Bold.ttf
create mode 100755 v2/css/fonts/Work_Sans/WorkSans-ExtraBold.ttf
create mode 100755 v2/css/fonts/Work_Sans/WorkSans-ExtraLight.ttf
create mode 100755 v2/css/fonts/Work_Sans/WorkSans-Light.ttf
create mode 100755 v2/css/fonts/Work_Sans/WorkSans-Medium.ttf
create mode 100755 v2/css/fonts/Work_Sans/WorkSans-Regular.ttf
create mode 100755 v2/css/fonts/Work_Sans/WorkSans-SemiBold.ttf
create mode 100755 v2/css/fonts/Work_Sans/WorkSans-Thin.ttf
create mode 100755 v2/css/spinner.css
create mode 100755 v2/ext-lib/FileSaver.js
create mode 100755 v2/ext-lib/README
create mode 100755 v2/ext-lib/compat.js
create mode 100755 v2/ext-lib/index.js
create mode 100755 v2/ext-lib/jquery-ui.min.js
create mode 100755 v2/ext-lib/jquery.js
create mode 100755 v2/ext-lib/jquery.ui.touch.js
create mode 100755 v2/ext-lib/jszip.js
create mode 100755 v2/ext-lib/jszip.min.js
create mode 100755 v2/ext-lib/peer.min.js
create mode 100755 v2/ext-lib/pouchdb.find.js
create mode 100755 v2/ext-lib/pouchdb.find.min.js
create mode 100755 v2/ext-lib/pouchdb.indexeddb.js
create mode 100755 v2/ext-lib/pouchdb.indexeddb.min.js
create mode 100755 v2/ext-lib/pouchdb.js
create mode 100755 v2/ext-lib/pouchdb.localstorage.js
create mode 100755 v2/ext-lib/pouchdb.localstorage.min.js
create mode 100755 v2/ext-lib/pouchdb.memory.js
create mode 100755 v2/ext-lib/pouchdb.memory.min.js
create mode 100755 v2/ext-lib/pouchdb.min.js
create mode 100755 v2/ext-lib/require.js
create mode 100755 v2/ext-lib/showdown.js
create mode 100755 v2/ext-lib/showdown.js.map
create mode 100755 v2/ext-lib/showdown.min.js
create mode 100755 v2/ext-lib/showdown.min.js.map
create mode 100755 v2/ext-lib/umd.js
rename pwiki2.html => v2/index.html (100%)
create mode 100755 v2/manifest.json
create mode 100755 v2/package.json
rename {pwiki => v2/pwiki}/dom/README (100%)
create mode 100755 v2/pwiki/dom/textarea.js
rename {pwiki => v2/pwiki}/dom/toc.js (100%)
rename {pwiki => v2/pwiki}/dom/wikiword.js (100%)
rename {pwiki => v2/pwiki}/filters/base.js (100%)
rename {pwiki => v2/pwiki}/filters/markdown.js (100%)
rename {pwiki => v2/pwiki}/index.js (100%)
rename {pwiki => v2/pwiki}/page.js (96%)
rename {pwiki => v2/pwiki}/parser.js (100%)
rename {pwiki => v2/pwiki}/path.js (100%)
rename {pwiki => v2/pwiki}/store/base.js (100%)
rename {pwiki => v2/pwiki}/store/file.js (100%)
rename {pwiki => v2/pwiki}/store/indexeddb.js (100%)
rename {pwiki => v2/pwiki}/store/localstorage.js (100%)
rename {pwiki => v2/pwiki}/store/pouchdb.js (100%)
diff --git a/package.json b/package.json
index 45379a6..0a77401 100755
--- a/package.json
+++ b/package.json
@@ -13,7 +13,7 @@
"ig-actions": "*",
"ig-features": "*",
"ig-object": "*",
- "ig-types": "^6.9.4",
+ "ig-types": "^6.26.2",
"jszip": "*",
"medium-editor": "^5.23.3",
"medium-editor-markdown": "^3.2.2",
diff --git a/scripts/bootstrap.js b/scripts/bootstrap.js
deleted file mode 100755
index 0cdb3cb..0000000
--- a/scripts/bootstrap.js
+++ /dev/null
@@ -1,64 +0,0 @@
-/**********************************************************************
-*
-*
-*
-**********************************************************************/
-
-var fs = require('fs')
-var glob = require('glob')
-
-
-/*********************************************************************/
-
-var bootstrap = {}
-
-var BOOTSTRAP_TEMPLATE =
-`// This file is generated automatically, all changes made here will be lost.
-
-var Bootstrap = $BOOTSTRAP
-
-typeof(module) != "undefined"
- && (module.exports = Bootstrap)`
-
-
-// XXX add support for json...
-glob('bootstrap/**/*.@(tpl|md|css|html|txt)')
- .on('match', function(path){
- var p = path
- .replace('bootstrap/', '')
- .replace(/\.(json|txt|md|css|html|txt)/, '')
- console.log('Found:', p)
- bootstrap[p] = {
- text: fs.readFileSync(path).toString(),
- } })
- .on('end', function(){
-
- // extra root stuff...
- if(fs.existsSync('README.md')){
- console.log('Setting:', 'About')
- bootstrap['Doc/About'] = {
- text: fs.readFileSync('README.md').toString(),
- } }
- if(!bootstrap.WikiHome){
- console.log('Setting:', 'WikiHome')
- bootstrap.WikiHome = {
- text: '@include(Doc/About)'
- } }
- if(fs.existsSync('LICENSE')){
- console.log('Setting:', 'LICENSE')
- bootstrap['LICENSE'] = {
- text: `${
- fs.readFileSync('LICENSE').toString()
- }`,
- } }
-
- var txt = BOOTSTRAP_TEMPLATE
- .replace(/\$BOOTSTRAP/g, JSON.stringify(bootstrap))
-
- console.log('Writing:', 'bootstrap.js')
- fs.writeFileSync('bootstrap.js', txt) })
-
-
-
-/**********************************************************************
-* vim:set ts=4 sw=4 : */
diff --git a/v2/bootstrap.js b/v2/bootstrap.js
new file mode 100755
index 0000000..5163f79
--- /dev/null
+++ b/v2/bootstrap.js
@@ -0,0 +1,6 @@
+// This file is generated automatically, all changes made here will be lost.
+
+var Bootstrap = {"Doc":{"text":"@include(./About)\r\n"},"Templates":{"text":"\r\nXXX Genereal template description...\r\n
\r\n\r\n\r\n\t \r\n\t\r\n\t\r\n\t\t
@quote(./raw) \r\n\t
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"},"TestTodo":{"text":"[Templates/outline/_edit]\r\n\r\n@include(./todo)\r\n"},"Doc/About":{"text":"#  Portable Wiki (pWiki)\n\n_NOTE: the project is currently in prototype phase, thus while most things \nare likely to change, the implementation / API **will definitely** change! ;)_\n\n\n### Project goals / main features:\n\n- _Simple embeddable Wiki_\n\n To be used as a zero-workflow app documentation platform, i.e. \n documentation that can be created, edited, tweaked and updated in-app \n without requiring setting up and maintaining a write-convert-embed \n workflow.\n\n This was a requirement on the _\\ImageGrid.Viewer_ project and as a \n side-effect pWiki hosts it's own documentation too.\n\n- _Pluggable storage and synchronization_ mechanisms\n\n A set of tools and API's to enable data synchronization between pWiki\n instances.\n\n- _Self-hosted[*]_ and flexible user interface\n\n The pWiki interface is implemented as a set of pWiki pages and \n templates within pWiki itself (see: [Templates] / [/bootstrap](bootstrap)), \n this enables the user to customize the look feel and to some extent \n the function of the interface from within pWiki, without touching the \n code.\n\n [*]: \"Self-hosted\" here is meant in the old-school meaning of the word, \n i.e. hosted on the client.\n\n- pWiki _portable app_\n\n This is a simple note / todo / outline app.\n\n The pWiki app is a stand-alone instance of pWiki wrapped in an app \n supporting all major desktop as well as mobile platforms.\n\n The app serves the following goals:\n\n - a simple and functional note / todo / outline app (_obviously_)\n - an external/portable Wiki editor, as an alternative for \n in-target-app documentation editor with ability to seamlesly \n synchronize with the target app pWiki instance.\n - a stand-alone testing platform and reference implementation for \n pWiki components.\n\n### General Documentation:\n\n\n\n- [General info](README.md) - This document.\n- [Bootstrap path](bootstrap/Doc/Path.md) - Path mechanics.\n- [Bootstrap macros](bootstrap/Doc/Macros.md) - Macro documentation\n\n \n\n\n\n\n### Project:\n\n- The project on [GitHub](https://github.com/flynx/pWiki)\n- pWiki [live demo (hosted on Gitgub)](https://flynx.github.io/pWiki/) _– \nThe data is stored in sessionStorage on the client, closing the tab/browser \nwill reset the wiki._\n\n\n### License and Copyright\n\npWiki is developed by [Alex A. Naanou](https://github.com/flynx) and \nlicensed under the [3-Clause BSD License](LICENSE)\n \n\n\n\n\n\n"},"Doc/Macros":{"text":"#  pWiki Macros\r\n\r\n## Syntax\r\n\r\nAny macro can be used in any of the two forms, either _inline_ or _HTML-like_.\r\n\r\nInline:\r\n```\r\n@macro-name(value)\r\n```\r\n\r\nHTML-style:\r\n```\r\n\r\n\r\n\r\n ...text...\r\n \r\n```\r\n\r\nThe two forms are almost identical, with the only difference being that the \r\ninline form does not support body text (note that some macros may provide\r\nthis functionality as an argument, namely `slot`).\r\n\r\nThe two forms exist to fill two distinct functions:\r\n- inline: compatible with attribute values and short\r\n- html-like: element-like, simpler when dealing with html\r\n\r\n\r\n\r\n### Escaping macros\r\n\r\nMacros can be escaped for inclusion in the page, the two types of macros \r\nare escaped a bit differently:\r\n\r\n- inline macros -- escaped by preceding with a \"\\\"\r\n\r\n ```\r\n \\\\@include(\\SomePage)\r\n ```\r\n\r\n Displayed in page as:\r\n\r\n \\@include(\\SomePage)\r\n\r\n \r\n _NOTE: if displayed on github, this will show an extra \"\\\" in both \r\n cases, this should be ignored as pWiki will consume the escaping \"\\\" \r\n in both the code example and the preview._\r\n \r\n\r\n\r\n- html-like macros -- escaped _the HTML way_\r\n\r\n ```\r\n <include src=\"\\SomePage\"\\>\r\n ```\r\n\r\n Displayed in page as:\r\n\r\n <include src=\"\\SomePage\"\\\\>\r\n\r\n\r\n\r\n### Conditional comments\r\n\r\nIn addition to HTML and filter-specific comments pWiki provides two types\r\nof conditional comments that serve two specific functions:\r\n\r\nShow something in pWiki but hide it in HTML:\r\n```\r\n\r\n```\r\n\r\nShow something in HTML but hide in pWiki:\r\n\r\n<pwiki-comment> ... </pwiki-comment>\r\n \r\n\r\n\r\nThis will enable writing documents (mainly in _markdown_) that are usable \r\nbot from within pWiki as well as outside.\r\n\r\n\r\n## Macros\r\n\r\n### now ()\r\n\r\nGet current date in seconds since epoch, this is equivalet Javascript's\r\n`Date.now()`.\r\n\r\nThis is mostly used for automatically creating paths (see: todo / outline)\r\n\r\nThis is different from `$NOW` in path (see: Doc/Path) in that this gets \r\nthe date once per page load, i.e. the date changes on page load, while \r\n`$NOW` is set every time the path is used, i.e. on every click or script\r\nuse.\r\n\r\n**Example:**\r\n```\r\n\\@now()\r\n```\r\n\r\nWill produce: `1471389217848` \r\n\r\n\r\n\r\n\r\n\r\n### filter (name)\r\n\r\nEnable or disable a page filter.\r\n\r\nA filter is a way to transform the page source.\r\n\r\nArguments:\r\n- `name` -- filter name. If name is preceded with a '-' then it \r\nwill be forced off. This is useful for disabling _default_ filters, or \r\nfilters added previously in templates.\r\n\r\nFilters:\r\n- wikiword (default)\r\n- markdown\r\n\r\n**Example:**\r\n\r\n\r\n\r\n\r\n\r\n- [bootstrap \\_edit](/bootstrap/Templates/_edit.html) – _see the \r\nmacro at the end of the page._\r\n \r\n\r\n\r\n\r\n### include (src isolated text)\r\n\r\nInclude a page. The included page is rendered independently from current\r\npage and is inserted as-is in macro body.\r\n\r\nNote that this will produce a `include` tag in the code that contains \r\nthe included page, this makes this tag not suitable for use anywhere \r\nbut an html element body.\r\n\r\nArguments:\r\n- `src` -- path to source page.\r\n- `isolated` -- prevent slots from included page from affecting the including page. \r\n- `text` -- is used when recursive include is detected and ignored otherwise.\r\n\r\n_For examples see `slot` macro exaples below._\r\n\r\n\r\n\r\n### source (src) / quote (src)\r\n\r\nInsert a page without rendering. This is similar to include but will not\r\nrender the page. \r\n\r\nThe difference between `source` and `quote` is:\r\n- _source_ includes the page as-is\r\n- _quotes_ escapes the page (i.e. _quotes_ it's source) for its code to \r\n display in the rendered HTML correctly.\r\n\r\nArguments:\r\n- `src` -- path to source page.\r\n\r\n**Example:**\r\n\r\n\r\n- [bootstrap css](/bootstrap/Templates/_css.html)\r\n \r\n\r\n\r\n\r\n\r\n### slot (name text)\r\n\r\nDefine or fill a slot.\r\n\r\nFirst occurrence of a `name` will _define_ a slot and fill it with `text`.\r\nEach new occurrence of a name will change slot content.\r\n\r\n**Example:**\r\n\r\n\r\n- [bootstrap view](/bootstrap/Templates/_view.html)\r\n- [bootstrap edit](/bootstrap/Templates/_edit.html)\r\n \r\n\r\n\r\n\r\n\r\n### macro (name src sort) / else ()\r\n\r\nApply macro to source page and include the result.\r\n\r\nThis is similar to include but does not require a separate page.\r\n\r\nBoth `name` and `src` are optional.\r\n\r\nIf `name` is given a _named macro_ is defined. This macro can be later \r\nreferenced (used) by name. A named macro can be redefined/overridden.\r\n\r\nIf `src` is given a macro is applied to a specific page or range of pages\r\n(see: WikiPath).\r\n\r\nFor a macro to be useful it must have a body (`text`), either defined as\r\na named macro or in the current macro.\r\n\r\nArguments:\r\n- `name` -- macro name (optional).\r\n- `src` -- path to source page (optional).\r\n- `sort` -- space separated list of methods to use for item sorting\r\n\r\n\r\n`else` macro is applicable inside `macro`. it is used when the `src` path\r\nof `macro` matches no pages.\r\n\r\n**Example:**\r\n\r\n\r\n- [bootstrap pages](/bootstrap/Templates/pages.html)\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n"},"Doc/Path":{"text":"#  pWiki Path\r\n\r\nA Wiki is a set of _pages_, each uniquely defined by it's _title_. Titles \r\nare traditionally formatted as WikiWords. pWiki closely follows this \r\nculture, while not restricting either page title formatting nor page \r\nnesting (nested paths), though in the general case following the Wiki \r\nstyle is recommended.\r\n\r\n\r\n\r\n## Basic terminology\r\n\r\n**Path** \r\n_One or more strings (or parts) separated by \"/\" that identifies a view._\r\n\r\nWe call the last _part_ in a path sequence a _title_.\r\n\r\nWe call the sub-path without the _title_ a _basedir_ or simply _dir_.\r\n\r\nIn pWiki, there is no distinction between a page and a _directory_, thus\r\nwe do not use the later term, instead, we may use the term _sub-page_.\r\n\r\nPaths are case sensitive.\r\n\r\n\r\n**Page** \r\n_A set of data associated with a path._\r\n\r\nA page is identified by it's path, but this does not require every\r\nsub-path of that path to exist -- the full path is the identifier.\r\n\r\nNot every path _identifies_ a page, but every path _resolves_ to a page.\r\n\r\nSome pages are _bootstrapped_, i.e. are predefined in pWiki, these pages\r\ncan be overridden but can not be removed. This is done to make it simple \r\nto revert to the default state if something goes wrong.\r\n\r\n\r\n**View** \r\n_A path that resolves to a page that may or may not be at (identified by) \r\nthat specific path._\r\n\r\nA _view's_ path may match that of a specific page or may not match any\r\npage directly, but any view will resolve to a page via the _acquisition \r\nprocess_\r\n\r\nAny page is a view, every view resolves to a page, but not every view \r\nis a page.\r\n\r\n(see: _Page acquisiton_ below)\r\n\r\n\r\n**\\WikiWord** \r\n_A WikiWork is a specially formated string that is treated as a link in\r\npage text_\r\n\r\nIn pWiki a simple WikiWord is any string starting with a capital letter,\r\nmust contain at least and one more capital letter and can consist of \r\nletters, numbers, underscores (WikiWord itself is a good example)\r\n\r\nA WikiWord path (_WikiPath_) is a set of path parts separated by '/' the\r\nfirst part must start with a capital letter and the rest can contain \r\nletters, numbers and/or underscores (example: Path/to/somepage).\r\n\r\n_Note that this is not actually a part of the path specification but it \r\nis part of the Wiki culture and a convenient way to automatically link \r\nto pages (handled by pWiki macros when rendering pages)._\r\n\r\n\r\n\r\n**Special path characters** \r\nTitles of _user pages_ must not contain the leading underscore `_` \r\ncharacter, such paths are used internally.\r\n\r\n\r\n\r\n## Page acquisition\r\n\r\npWiki path system differs from how traditional file system paths are \r\nhandled. In pWiki if a path does not reference a page directly (i.e. \r\nit's a _view_), a search is conducted to find an alternative page. This \r\nsearch is called _page acquisition_.\r\n\r\n**Acquisition process:** \r\n_A set of rules defining how a page is retrieved via a path._\r\n\r\n\r\nThis is used as a simple and uniform mechanism to:\r\n- Get default pages for specific situations \r\n Like [Templates/EmptyPage] to handle the _page not found_ condition.\r\n- Define generic templates/pages accessible by multiple pages in path \r\n A good example would be the viewer used to show this page [Templates/\\_view]\r\n and all of it's _chrome_ like the path in the header and links in the \r\n footer (seen: when viewing through pWiki) \r\n- Overload default templates/pages\r\n\r\n\r\n### The acquisition order/rules:\r\n\r\n1. if _path_ matches a specific page, target _page_ is found \r\n1. if _path_ does not match a page:\r\n 1. if _title_ matches a page in the parent _path_, _page_ is found\r\n 1. repeat until we either have a match or reach root (empty _basedir_)\r\n1. if no match is found, check if title exists in [Templates] in _basedir_\r\n1. if no match is found, check if title exists in [/System]\r\n1. if no match is found, repeat process for `EmptyPage` instead of _title_\r\n\r\n\r\n**Example:** \r\n\r\nFor path `Path/To/Page` the following paths are checked in order \r\nand the first matching page is returned:\r\n\r\n- _Check path as-is then go up:_\r\n - `Path/To/Page` \r\n - `Path/Page`\r\n - `Page`\r\n- _Check in `Templates`, in path and up:_\r\n - `Path/To/Templates/Page`\r\n - `Path/Templates/Page`\r\n - `Templates/Page`\r\n- _Check root `System`:_\r\n - `System/Page`\r\n- _Check `EmptyPage` in path, then in templates:_\r\n - `Path/To/EmptyPage`\r\n - `Path/EmptyPage`\r\n - `EmptyPage`\r\n - `Path/To/Templates/EmptyPage`\r\n - `Path/Templates/EmptyPage`\r\n - `Templates/EmptyPage` _(This is guaranteed to exist)_\r\n\r\n\r\n**Exceptions:**\r\n\r\n- `System/settings` is global and _can not be overloaded_ for use as \r\nsystem configuration. This is done for security reasons.\r\n\r\n\r\n\r\n## Default pages\r\n\r\n**EmptyPage** \r\nA page resolved when a page does not exist. Used as a template for \r\nnew/empty pages.\r\n\r\nThis page is guaranteed to exist by the system.\r\n\r\nLocated at: Templates/EmptyPage\r\n\r\n\r\n**EmptyToDo** \r\nUsed as a template for new/empty ToDo pages.\r\n\r\nLocated at: Templates/EmptyToDo\r\n\r\n\r\n**EmptyOutline** \r\nUsed as a template for new/empty outline pages.\r\n\r\nLocated at: Templates/EmptyOutline\r\n\r\n\r\n**NoMatch** \r\nReturned when pattern matches no pages.\r\n\r\n\r\n\r\n## Relative and absolute paths\r\n\r\npWiki follows the traditional path semantics with one addition, the \">>\"\r\nthat is similar to \"..\" but works in the opposite direction, consuming \r\nthe next, i.e. child, path element instead of parent.\r\n\r\nTo illustrate the relative and absolute mechanics:\r\n\r\n| Title\t\t\t\t| Source Page | Path\t\t\t\t | Resolves to\t\t\t\t|\r\n|-------------------|-------------|-----------------------|-------------------------|\r\n| \".\" - current\t\t| \\SourcePage | \\\\./Target/Page\t\t | \\SourcePage/Target/Page |\r\n| \"..\" - parent\t\t| \\SourcePage | \\\\../Target/Page\t | \\Target/Page\t\t\t|\r\n| \">>\"\t\t| \\SourcePage | >>\\/Target/Page | \\SourcePage/Page\t\t|\r\n| \"/\" - root dir\t| \\SourcePage | \\/Target/Page\t\t | \\/Target/Page\t\t\t|\r\n\r\n\r\n_Note that neither a leading \"..\" at root level, nor a trailing \">>\" \r\nin any path, will have any effect, and will simply be ignored (e.g. \r\n\"\\/../Page\" is same as \"/Page\" and \"\\Path/>>\" is the same as \"Path\")_\r\n\r\n\r\n\r\n## Path patterns\r\n\r\nPath patterns are used to match/iterate multiple pages. The syntax is \r\nsimilar to path glob patterns.\r\n\r\n- \"\\*\" - matches any page in a sub-path on one level\r\n- \"\\*\\*\" - matches any page in a sub-path recursively\r\n\r\nNote that neither will match parts of paths that do not explicitly \r\nidentify pages.\r\n\r\n\r\n**Example:**\r\n\r\nXXX revise...\r\n\r\nFor the following paths:\r\n\r\n```\r\nWikiHome\r\nSomePage\r\nPath/to/OtherPage\r\nPath/Page\r\n```\r\n\r\nPatterns and their matches:\r\n- `*` will match:\r\n\t- WikiHome\r\n\t- SomePage\r\n- `**` will match:\r\n\t- WikiHome\r\n\t- SomePage\r\n\t- Path/to/OtherPage\r\n\t- Path/Page\r\n- `\\Path/*` will match:\r\n\t- Path/Page\r\n\r\nNote that neither `\\Path` nor `\\Path/to` does not refer to any real pages,\r\nthus neither is matched by any of the patterns explicitly.\r\n\r\n\r\n\r\n## Path actions\r\n\r\nXXX path elements that perform actions on pages but do not actually \r\ncorrespond to actual pages.\r\n\r\n\r\n\r\n## Path variables\r\n\r\nPath variables are resolved when path is resolved or accessed.\r\n\r\n**`$NOW`** \r\nReplaced with the current time.\r\n\r\n_Also see the `\\@now()` macro: [Doc/Macros]._\r\n\r\n\r\n**`$PATH`** \r\nReplaced with current page path.\r\n\r\n\r\n**`$BASE`** \r\nReplaced with current page basedir.\r\n\r\n\r\n**`$TITLE`** \r\nReplaced with current page title.\r\n\r\n\r\n**`$INDEX`** \r\nReplaced with current page index in pattern matching.\r\n\r\n\r\n\r\n\r\n\r\n"},"Doc/Templates":{"text":"XXX Document the template structure here XXX\r\n"},"System/style":{"text":"body {\r\n\tfont-family: /*worksans,*/ opensans, sans-serif;\r\n\r\n}\r\n\r\n.title img {\r\n\tvertical-align: middle;\r\n}\r\n\r\nh1, h2, h3 {\r\n\tborder-bottom: solid 1px rgba(0, 0, 0, 0.1);\r\n\tpadding-bottom: 5px;\r\n}\r\nh2, h3 {\r\n\tborder-bottom: solid 1px rgba(0, 0, 0, 0.05);\r\n}\r\n\r\n\r\n/* tables */\r\ntable {\r\n\twidth: 100%;\r\n}\r\ntable, td, th {\r\n\tborder-bottom: solid 1px gray;\r\n\tborder-collapse: collapse;\r\n}\r\ntd, th {\r\n\ttext-align: left;\r\n\tpadding: 5px;\r\n}\r\ntr:hover {\r\n\tbackground-color: rgba(0, 0, 0, 0.05);\r\n}\r\n\r\n\r\n.raw,\r\n.text {\r\n\tdisplay: block;\r\n}\r\n\r\n.item.checked {\r\n\topacity: 0.3;\r\n}\r\n.item.checked:hover {\r\n\topacity: 0.8;\r\n}\r\n.item.checked .item-content * {\r\n\ttext-decoration: line-through;\r\n}\r\n\r\n.button {\r\n\ttext-decoration: none;\r\n}\r\n.button:last-child {\r\n\tmargin-right: 5px;\r\n}\r\n\r\n.separator~* {\r\n\tfloat: right;\r\n}\r\n\r\npre {\r\n\tdisplay: block;\r\n\tbackground-color: rgba(0, 0, 0, 0.05);\r\n\tpadding: 10px;\r\n\tpadding-bottom: 15px;\r\n\r\n\t-moz-tab-size: 4;\r\n\t-o-tab-size: 4;\r\n\ttab-size: 4;\r\n}\r\n\r\n.item:hover {\r\n\tbackground-color: rgba(0, 0, 0, 0.05);\r\n}\r\n.item .button {\r\n\tdisplay: none;\r\n}\r\n.item:hover .button {\r\n\tdisplay: inline-block;\r\n}\r\n\r\n.sort-handle {\r\n\topacity: 0.1;\r\n\tpadding-left: 5px;\r\n\tpadding-right: 5px;\r\n\tcursor: pointer;\r\n\ttext-decoration: none;\r\n}\r\n.item:hover .sort-handle {\r\n\topacity: 0.3;\r\n}\r\n.sort-placeholder {\r\n\tdisplay: block;\r\n}\r\n\r\n/* @filter(-wikiword) */\r\n/* @filter(text) */\r\n/* vim:set ts=4 sw=4 ft=css : */\r\n"},"Templates/all_pages":{"text":"\r\n\t\r\n\t\t[@source(./path)]\r\n\t\t
\r\n\t\t× \r\n\t \r\n\t\r\n\t\tNo pages...\r\n\t \r\n \r\n\r\n\r\n"},"Templates/EmptyOutline":{"text":"@include(./outline)\r\n"},"Templates/EmptyPage":{"text":"\r\n\r\nPage @include(./path) is empty. \r\n\r\nLinks to this page: \r\n@include(./links) \r\n\r\n\r\n"},"Templates/EmptyToDo":{"text":"@include(./todo)\r\n"},"Templates/macros":{"text":"\r\n\t× \r\n \r\n\r\n\r\n\r\n"},"Templates/outline":{"text":"\r\n\r\n\r\n\t \r\n \r\n\r\n\r\n\t× \r\n \r\n\r\n\r\n\r\n\t\r\n\t\t+\r\n\t \r\n
\r\n\r\n\t
\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t☰ \r\n\t\t\t\t\r\n\t\t\t\t \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t \r\n\t\t\t
\r\n\t\t
\r\n\t \r\n
\r\n\r\n\r\n"},"Templates/pages":{"text":"\r\n\t\r\n\t\t[@source(./path)]\r\n\t\t
\r\n\t\t× \r\n\t \r\n\t\r\n\t\tNo pages...\r\n\t \r\n \r\n\r\n\r\n"},"Templates/todo":{"text":"\r\n\t \r\n \r\n\r\n\r\n\r\n\r\n"},"Templates/tree":{"text":"\r\n\t
\r\n\t\t\r\n\t\t\r\n\t\t\t \r\n\t\t
\r\n\t \r\n
\r\n\r\n\r\n"},"Templates/_css":{"text":"\r\n"},"Templates/_edit":{"text":"\r\n\r\n(view ) \r\n\r\n@source(../title) \r\n\r\n\r\n\t
\r\n \r\n\r\n\r\n\r\n"},"Templates/_outline":{"text":"\r\n\r\n@source(../title) \r\n\r\n\r\n\t@include(../outline)\r\n \r\n\r\n\r\n"},"Templates/_raw":{"text":"@source(..)\r\n"},"Templates/_todo":{"text":"\r\n\r\n@source(../title) \r\n\r\n\r\n\t@include(../todo)\r\n \r\n\r\n\r\n"},"Templates/_view":{"text":"\r\n@include(./style/_css)\r\n\r\n\r\n\t
☰ \r\n\r\n\t[@source(../path)]\r\n\r\n\t
(edit ) \r\n\r\n\t
\r\n\r\n\t+ \r\n \r\n\r\n \r\n\t\r\n\t\t@source(../title) \r\n\t \r\n \r\n\r\n\r\n\t\r\n\t\t\r\n\t \r\n
\r\n\r\n \r\nhome \r\n\r\n\r\n"},"Test/slot":{"text":"\r\n \r\n\r\n"},"TestTodo/01":{"text":"item 1\n"},"TestTodo/02":{"text":"item 2\n"},"TestTodo/03":{"text":"item 3\n"},"TestTodo/04":{"text":"item 4\n"},"Theme/CLI/tree":{"text":"@source(../name)\n \n"},"WikiHome":{"text":"@include(Doc/About)"},"LICENSE":{"text":"Copyright (c) 2016-2019, Alex A. Naanou\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"}}
+
+typeof(module) != "undefined"
+ && (module.exports = Bootstrap)
\ No newline at end of file
diff --git a/bootstrap/Doc.html b/v2/bootstrap/Doc.html
similarity index 100%
rename from bootstrap/Doc.html
rename to v2/bootstrap/Doc.html
diff --git a/bootstrap/Doc/About.md b/v2/bootstrap/Doc/About.md
similarity index 100%
rename from bootstrap/Doc/About.md
rename to v2/bootstrap/Doc/About.md
diff --git a/bootstrap/Doc/Macros.md b/v2/bootstrap/Doc/Macros.md
similarity index 100%
rename from bootstrap/Doc/Macros.md
rename to v2/bootstrap/Doc/Macros.md
diff --git a/bootstrap/Doc/Path.md b/v2/bootstrap/Doc/Path.md
similarity index 100%
rename from bootstrap/Doc/Path.md
rename to v2/bootstrap/Doc/Path.md
diff --git a/bootstrap/Doc/Templates.md b/v2/bootstrap/Doc/Templates.md
similarity index 100%
rename from bootstrap/Doc/Templates.md
rename to v2/bootstrap/Doc/Templates.md
diff --git a/bootstrap/System/settings.json b/v2/bootstrap/System/settings.json
similarity index 100%
rename from bootstrap/System/settings.json
rename to v2/bootstrap/System/settings.json
diff --git a/bootstrap/System/style.css b/v2/bootstrap/System/style.css
similarity index 100%
rename from bootstrap/System/style.css
rename to v2/bootstrap/System/style.css
diff --git a/bootstrap/Templates.html b/v2/bootstrap/Templates.html
similarity index 100%
rename from bootstrap/Templates.html
rename to v2/bootstrap/Templates.html
diff --git a/bootstrap/Templates/EmptyOutline.html b/v2/bootstrap/Templates/EmptyOutline.html
similarity index 100%
rename from bootstrap/Templates/EmptyOutline.html
rename to v2/bootstrap/Templates/EmptyOutline.html
diff --git a/bootstrap/Templates/EmptyPage.html b/v2/bootstrap/Templates/EmptyPage.html
similarity index 100%
rename from bootstrap/Templates/EmptyPage.html
rename to v2/bootstrap/Templates/EmptyPage.html
diff --git a/bootstrap/Templates/EmptyToDo.html b/v2/bootstrap/Templates/EmptyToDo.html
similarity index 100%
rename from bootstrap/Templates/EmptyToDo.html
rename to v2/bootstrap/Templates/EmptyToDo.html
diff --git a/bootstrap/Templates/_css.html b/v2/bootstrap/Templates/_css.html
similarity index 100%
rename from bootstrap/Templates/_css.html
rename to v2/bootstrap/Templates/_css.html
diff --git a/bootstrap/Templates/_edit.html b/v2/bootstrap/Templates/_edit.html
similarity index 100%
rename from bootstrap/Templates/_edit.html
rename to v2/bootstrap/Templates/_edit.html
diff --git a/bootstrap/Templates/_outline.html b/v2/bootstrap/Templates/_outline.html
similarity index 100%
rename from bootstrap/Templates/_outline.html
rename to v2/bootstrap/Templates/_outline.html
diff --git a/bootstrap/Templates/_raw.txt b/v2/bootstrap/Templates/_raw.txt
similarity index 100%
rename from bootstrap/Templates/_raw.txt
rename to v2/bootstrap/Templates/_raw.txt
diff --git a/bootstrap/Templates/_todo.html b/v2/bootstrap/Templates/_todo.html
similarity index 100%
rename from bootstrap/Templates/_todo.html
rename to v2/bootstrap/Templates/_todo.html
diff --git a/bootstrap/Templates/_view.html b/v2/bootstrap/Templates/_view.html
similarity index 100%
rename from bootstrap/Templates/_view.html
rename to v2/bootstrap/Templates/_view.html
diff --git a/bootstrap/Templates/all_pages.html b/v2/bootstrap/Templates/all_pages.html
similarity index 100%
rename from bootstrap/Templates/all_pages.html
rename to v2/bootstrap/Templates/all_pages.html
diff --git a/bootstrap/Templates/macros.html b/v2/bootstrap/Templates/macros.html
similarity index 100%
rename from bootstrap/Templates/macros.html
rename to v2/bootstrap/Templates/macros.html
diff --git a/bootstrap/Templates/outline.html b/v2/bootstrap/Templates/outline.html
similarity index 100%
rename from bootstrap/Templates/outline.html
rename to v2/bootstrap/Templates/outline.html
diff --git a/bootstrap/Templates/pages.html b/v2/bootstrap/Templates/pages.html
similarity index 100%
rename from bootstrap/Templates/pages.html
rename to v2/bootstrap/Templates/pages.html
diff --git a/bootstrap/Templates/todo.html b/v2/bootstrap/Templates/todo.html
similarity index 100%
rename from bootstrap/Templates/todo.html
rename to v2/bootstrap/Templates/todo.html
diff --git a/bootstrap/Templates/tree.html b/v2/bootstrap/Templates/tree.html
similarity index 100%
rename from bootstrap/Templates/tree.html
rename to v2/bootstrap/Templates/tree.html
diff --git a/bootstrap/Test/slot.html b/v2/bootstrap/Test/slot.html
similarity index 100%
rename from bootstrap/Test/slot.html
rename to v2/bootstrap/Test/slot.html
diff --git a/bootstrap/TestTodo.md b/v2/bootstrap/TestTodo.md
similarity index 100%
rename from bootstrap/TestTodo.md
rename to v2/bootstrap/TestTodo.md
diff --git a/bootstrap/TestTodo/01.html b/v2/bootstrap/TestTodo/01.html
similarity index 100%
rename from bootstrap/TestTodo/01.html
rename to v2/bootstrap/TestTodo/01.html
diff --git a/bootstrap/TestTodo/02.html b/v2/bootstrap/TestTodo/02.html
similarity index 100%
rename from bootstrap/TestTodo/02.html
rename to v2/bootstrap/TestTodo/02.html
diff --git a/bootstrap/TestTodo/03.html b/v2/bootstrap/TestTodo/03.html
similarity index 100%
rename from bootstrap/TestTodo/03.html
rename to v2/bootstrap/TestTodo/03.html
diff --git a/bootstrap/TestTodo/04.html b/v2/bootstrap/TestTodo/04.html
similarity index 100%
rename from bootstrap/TestTodo/04.html
rename to v2/bootstrap/TestTodo/04.html
diff --git a/bootstrap/Theme/CLI/tree.txt b/v2/bootstrap/Theme/CLI/tree.txt
similarity index 100%
rename from bootstrap/Theme/CLI/tree.txt
rename to v2/bootstrap/Theme/CLI/tree.txt
diff --git a/browser.js b/v2/browser.js
similarity index 100%
rename from browser.js
rename to v2/browser.js
diff --git a/v2/css/fonts.css b/v2/css/fonts.css
new file mode 100755
index 0000000..6a96ac2
--- /dev/null
+++ b/v2/css/fonts.css
@@ -0,0 +1,230 @@
+/**********************************************************************
+*
+*
+**********************************************************************/
+
+/* Open Sans
+* - line spacing a bit too large...
+*/
+@font-face {
+ font-family: OpenSans;
+ src: url(fonts/Open_Sans/OpenSans-Regular.ttf)
+}
+@font-face {
+ font-family: OpenSans;
+ src: url(fonts/Open_Sans/OpenSans-Bold.ttf)
+ font-weight: bold;
+}
+@font-face {
+ font-family: OpenSans;
+ src: url(fonts/Open_Sans/OpenSans-Italic.ttf)
+ font-style: italic;
+}
+@font-face {
+ font-family: OpenSans;
+ src: url(fonts/Open_Sans/OpenSans-BoldItalic.ttf)
+ font-weight: bold;
+ font-style: italic;
+}
+@font-face {
+ font-family: OpenSans;
+ src: url(fonts/Open_Sans/OpenSans-ExtraBold.ttf)
+ font-weight: bolder;
+}
+@font-face {
+ font-family: OpenSans;
+ src: url(fonts/Open_Sans/OpenSans-ExtraBoldItalic.ttf)
+ font-weight: bolder;
+ font-style: italic;
+}
+@font-face {
+ font-family: OpenSans;
+ src: url(fonts/Open_Sans/OpenSans-Light.ttf)
+ font-weight: lighter;
+}
+@font-face {
+ font-family: OpenSans;
+ src: url(fonts/Open_Sans/OpenSans-LightItalic.ttf)
+ font-weight: lighter;
+ font-style: italic;
+}
+
+
+
+/* Work Sans
+* - does not have an explicit italic face but seems to look ok when
+* slanted programmatically...
+*/
+@font-face {
+ font-family: WorkSans;
+ src: url(fonts/Work_Sans/WorkSans-Thin.ttf);
+ font-weight: 100;
+}
+@font-face {
+ font-family: WorkSans;
+ src: url(fonts/Work_Sans/WorkSans-ExtraLight.ttf);
+ font-weight: 200;
+}
+@font-face {
+ font-family: WorkSans;
+ src: url(fonts/Work_Sans/WorkSans-Light.ttf);
+ font-weight: 300;
+}
+@font-face {
+ font-family: WorkSans;
+ src: url(fonts/Work_Sans/WorkSans-Regular.ttf);
+ font-weight: 400;
+}
+@font-face {
+ font-family: WorkSans;
+ src: url(fonts/Work_Sans/WorkSans-Medium.ttf);
+ font-weight: 500;
+}
+@font-face {
+ font-family: WorkSans;
+ src: url(fonts/Work_Sans/WorkSans-SemiBold.ttf);
+ font-weight: 600;
+}
+@font-face {
+ font-family: WorkSans;
+ src: url(fonts/Work_Sans/WorkSans-Bold.ttf);
+ font-weight: 700;
+}
+@font-face {
+ font-family: WorkSans;
+ src: url(fonts/Work_Sans/WorkSans-ExtraBold.ttf);
+ font-weight: 800;
+}
+@font-face {
+ font-family: WorkSans;
+ src: url(fonts/Work_Sans/WorkSans-Black.ttf);
+ font-weight: 900;
+}
+
+
+
+/* Source Sans Pro */
+/*
+@font-face {
+ font-family: SourceSansPro;
+ src: url(fonts/Source_Sans_Pro/SourceSansPro-Regular.ttf)
+}
+@font-face {
+ font-family: SourceSansPro;
+ src: url(fonts/Source_Sans_Pro/SourceSansPro-Bold.ttf)
+ font-weight: bold;
+}
+@font-face {
+ font-family: SourceSansPro;
+ src: url(fonts/Source_Sans_Pro/SourceSansPro-Italic.ttf)
+ font-style: italic;
+}
+@font-face {
+ font-family: SourceSansPro;
+ src: url(fonts/Source_Sans_Pro/SourceSansPro-BoldItalic.ttf)
+ font-weight: bold;
+ font-style: italic;
+}
+@font-face {
+ font-family: SourceSansPro;
+ src: url(fonts/Source_Sans_Pro/SourceSansPro-ExtraBold.ttf)
+ font-weight: bolder;
+}
+@font-face {
+ font-family: SourceSansPro;
+ src: url(fonts/Source_Sans_Pro/SourceSansPro-ExtraBoldItalic.ttf)
+ font-weight: bolder;
+ font-style: italic;
+}
+@font-face {
+ font-family: SourceSansPro;
+ src: url(fonts/Source_Sans_Pro/SourceSansPro-Light.ttf)
+ font-weight: lighter;
+}
+@font-face {
+ font-family: SourceSansPro;
+ src: url(fonts/Source_Sans_Pro/SourceSansPro-LightItalic.ttf)
+ font-weight: lighter;
+ font-style: italic;
+}
+*/
+
+
+
+/* Arimo
+* - bold face a bit too narrow
+*/
+/*
+@font-face {
+ font-family: Arimo;
+ src: url(fonts/Arimo/Arimo-Regular.ttf)
+}
+@font-face {
+ font-family: Arimo;
+ src: url(fonts/Arimo/Arimo-Bold.ttf)
+ font-weight: bold;
+}
+@font-face {
+ font-family: Arimo;
+ src: url(fonts/Arimo/Arimo-Italic.ttf)
+ font-style: italic;
+}
+@font-face {
+ font-family: Arimo;
+ src: url(fonts/Arimo/Arimo-BoldItalic.ttf)
+ font-weight: bold;
+ font-style: italic;
+}
+*/
+
+
+
+/* Roboto */
+/*
+@font-face {
+ font-family: Roboto;
+ src: url(fonts/Roboto/Roboto-Regular.ttf)
+}
+@font-face {
+ font-family: Roboto;
+ src: url(fonts/Roboto/Roboto-Bold.ttf)
+ font-weight: bold;
+}
+@font-face {
+ font-family: Roboto;
+ src: url(fonts/Roboto/Roboto-Italic.ttf)
+ font-style: italic;
+}
+@font-face {
+ font-family: Roboto;
+ src: url(fonts/Roboto/Roboto-BoldItalic.ttf)
+ font-weight: bold;
+ font-style: italic;
+}
+@font-face {
+ font-family: Roboto;
+ src: url(fonts/Roboto/Roboto-ExtraBold.ttf)
+ font-weight: bolder;
+}
+@font-face {
+ font-family: Roboto;
+ src: url(fonts/Roboto/Roboto-ExtraBoldItalic.ttf)
+ font-weight: bolder;
+ font-style: italic;
+}
+@font-face {
+ font-family: Roboto;
+ src: url(fonts/Roboto/Roboto-Light.ttf)
+ font-weight: lighter;
+}
+@font-face {
+ font-family: Roboto;
+ src: url(fonts/Roboto/Roboto-LightItalic.ttf)
+ font-weight: lighter;
+ font-style: italic;
+}
+*/
+
+
+
+/*********************************************************************/
diff --git a/v2/css/fonts/Open_Sans/LICENSE.txt b/v2/css/fonts/Open_Sans/LICENSE.txt
new file mode 100755
index 0000000..75b5248
--- /dev/null
+++ b/v2/css/fonts/Open_Sans/LICENSE.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
diff --git a/v2/css/fonts/Open_Sans/OpenSans-Bold.ttf b/v2/css/fonts/Open_Sans/OpenSans-Bold.ttf
new file mode 100755
index 0000000000000000000000000000000000000000..fd79d43bea0293ac1b20e8aca1142627983d2c07
GIT binary patch
literal 224592
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