[
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2016 \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# What is this?\nThis repository is 99.9% JSON.\n\n**Each JSON file is an iOS app. And an Android app. Simultaneously.**\n\nAnd when you play these JSON snippets on [Jasonette](https://www.jasonette.com), they instantly turn into native apps.\n\nHere's how it works: Jasonette interprets the JSON markup into native iOS and Android components. Just like how you use HTML to write a web page, you use JSON to write a native app, which you can publish to the app store.\n\nCheck out [the website](https://www.jasonette.com) to learn more.\n\nHere are some highlights of what these JSON files can turn into (hint: anything you can imagine):\n\n                  _                         |     _                                        \n-------------------------------------------|--------------------------------------------\n<br>[view/layer/dynamic.json](view/layer/dynamic.json)<br><br>[![assets/screen1.png](assets/screen1.png)](view/layer/dynamic.json)|<br> [view/layer/weather/index.json](view/layer/weather/index.json)<br><br>[![assets/screen2.png](assets/screen2.png)](view/layer/weather/index.json)\n<br>[view/section/index.json](view/section/index.json)<br><br>[![assets/screen3.png](assets/screen3.png)](view/section/index.json)|<br> [view/component/map/index.json](view/component/map/index.json)<br><br>[![assets/screen4.png](assets/screen4.png)](view/component/map/index.json)\n<br>[view/component/image.json](view/component/image/index.json)<br><br>[![assets/screen5.png](assets/screen5.png)](view/component/image/index.json)|<br> [view/layout/nested.json](view/layout/nested.json)<br><br>[![assets/screen6.png](assets/screen6.png)](view/layout/nested.json)\n<br>[action/timer/mario.json](action/timer/mario.json)<br><br>[![assets/screen7.gif](assets/screen7.gif)](action/timer/mario.json)      |                                            \n\n# How to use this?\n\nFirst of all, I recommend you check out the [website](https://www.jasonette.com) to quickly learn how this works.\n\n### 1. Recommended way\nJasonette ships with this repository's URL embedded by default, so if you just head over to [the website](https://www.jasonette.com) and follow the \"Get Started\" guide, you'll be able to try everything on this repository. (Note: The default root URL Jasonette ships with is [hello.json](https://github.com/Jasonette/Jasonpedia/blob/gh-pages/hello.json)).\n\n### 2. Manual way\nYou can also manually add JSON to Jasonette. If you want to try adding each individual JSON file in this repository, you just need to add their published URLs to Jasonette and run. You can learn how to do that at [Getting started guide](https://jasonette.github.io/documentation).\n\nJust remember, this repo uses [Github pages](https://pages.github.com) to publish the JSON, so all the files will be avaialbe under the `https://jasonette.github.io/Jasonpedia` base url.\n\nFor example the [hello.json](https://github.com/Jasonette/Jasonpedia/blob/gh-pages/hello.json) file in the root directory is directly available at [https://jasonette.github.io/Jasonpedia/hello.json](https://jasonette.github.io/Jasonpedia/hello.json), the [demo.json](https://github.com/Jasonette/Jasonpedia/blob/gh-pages/demo.json) is available at [https://jasonette.github.io/Jasonpedia/demo.json](https://jasonette.github.io/Jasonpedia/demo.json), and so forth.\n\n# The purpose of this repo\nThis repo serves multiple purposes:\n\n###1. Demo\nThis is the default JSON that ships with all Jasonette code, which means everyone who downloads Jasonette will get to play with what's on this repo as a starter project.\n\n###2. Test\nWhenever you write an [extension](https://jasonette.github.io/documentation/advanced/#extension) that may be useful to be merged into the main project,  write a test JSON to make sure:\n  - it works as intended\n  - it plays nice with the rest of Jasonette\n  - other people understand how to use it\n  - the syntax is consistent with the convention\n\n###3. Contribution\nContribution is encouraged for this repo. Feel free to share your JSON apps by sending pull requests.\n"
  },
  {
    "path": "action/addressbook.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Addressbook demo\",\n      \"description\": \"$util.addressbook accesses the addressbook and returns the array of contacts\",\n      \"tags\": [\n        \"contacts\",\n        \"addressbook\"\n      ],\n      \"preview\": \"http://i.imgur.com/TPTZ8Fv.png\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$util.addressbook\",\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"sections\": [\n            {\n              \"items\": {\n                \"{{#each $jason}}\": {\n                  \"type\": \"vertical\",\n                  \"style\": {\n                    \"padding\": \"5\",\n                    \"spacing\": \"5\"\n                  },\n                  \"components\": [\n                    {\n                      \"type\": \"label\",\n                      \"text\": \"{{name}}\"\n                    },\n                    {\n                      \"type\": \"label\",\n                      \"text\": \"{{JSON.stringify(phone)}}\"\n                    },\n                    {\n                      \"type\": \"label\",\n                      \"text\": \"{{JSON.stringify(email)}}\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "action/audio/vaultboy/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Vault boy\",\n      \"description\": \"Touch the vault boy to hear him laugh for you.\",\n      \"preview\": \"http://i.giphy.com/l41YybJPL0z2n1snm.gif\",\n      \"actions\": {\n        \"hahaha\": {\n          \"type\": \"$audio.play\",\n          \"options\": {\n            \"url\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/hahaha.mp3\"\n          }\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"style\": {\n          \"color\": \"#ffffff\",\n          \"background\": \"rgba(0,0,0,0)\"\n        }\n      },\n      \"style\": {\n        \"border\": \"none\",\n        \"background\": \"http://i.giphy.com/l41YybJPL0z2n1snm.gif\"\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"action\": {\n                \"trigger\": \"hahaha\"\n              },\n              \"type\": \"horizontal\",\n              \"style\": {\n                \"padding_right\": \"20\",\n                \"height\": \"300\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"label\",\n                  \"text\": \"Touch\\nme!\",\n                  \"style\": {\n                    \"color\": \"#ffffff\",\n                    \"size\": \"30\",\n                    \"padding\": \"0\",\n                    \"align\": \"right\",\n                    \"font\": \"HelveticaNeue-Bold\"\n                  }\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "action/geo/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"$geo\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$render\"\n        },\n        \"$pull\": {\n          \"type\": \"$flush\",\n          \"success\": {\n            \"type\": \"$reload\"\n          }\n        }\n      },\n      \"styles\": {\n        \"labels\": {\n          \"size\": \"14\",\n          \"font\": \"HelveticaNeue-Bold\",\n          \"align\": \"center\"\n        },\n        \"left\": {\n          \"bottom\": \"50\",\n          \"left\": \"50\",\n          \"width\": \"100\",\n          \"height\": \"100\",\n          \"corner_radius\": \"50\",\n          \"color\": \"#ffffff\",\n          \"background\": \"#F2E205\",\n          \"padding\": \"20\"\n        },\n        \"right\": {\n          \"bottom\": \"50\",\n          \"right\": \"50\",\n          \"width\": \"100\",\n          \"height\": \"100\",\n          \"corner_radius\": \"50\",\n          \"color\": \"#ffffff\",\n          \"background\": \"#CE2121\",\n          \"padding\": \"20\"\n        },\n        \"canvas\": {\n          \"width\": \"100%\",\n          \"height\": \"300\",\n          \"padding\": \"0\"\n        }\n      },\n      \"templates\": {\n        \"map\": {\n          \"style\": {\n            \"background\": \"#50BFFF\",\n            \"color\": \"#ffffff\"\n          },\n          \"header\": {\n            \"style\": {\n              \"background\": \"#50BFFF\",\n              \"color\": \"#ffffff\"\n            },\n            \"title\": \"$geo\"\n          },\n          \"layers\": [{\n            \"type\": \"label\",\n            \"text\": \"Display\",\n            \"class\": \"labels left\",\n            \"action\": {\n              \"type\": \"$geo.get\",\n              \"success\": {\n                \"type\": \"$render\",\n                \"options\": {\n                  \"template\": \"coord\"\n                }\n              }\n            }\n          }, {\n            \"type\": \"label\",\n            \"text\": \"Map\",\n            \"class\": \"labels right\",\n            \"action\": {\n              \"type\": \"$geo.get\",\n              \"success\": {\n                \"type\": \"$render\",\n                \"options\": {\n                  \"template\": \"map\"\n                }\n              }\n            }\n          }],\n          \"sections\": [{\n            \"items\": [{\n              \"type\": \"map\",\n              \"region\": {\n                \"coord\": \"{{$jason.coord}}\",\n                \"width\": \"100\",\n                \"height\": \"100\"\n              },\n              \"class\": \"canvas\"\n            }]\n          }]\n        },\n        \"coord\": {\n          \"style\": {\n            \"background\": \"#50BFFF\",\n            \"color\": \"#ffffff\"\n          },\n          \"header\": {\n            \"style\": {\n              \"background\": \"#50BFFF\",\n              \"color\": \"#ffffff\"\n            },\n            \"title\": \"$geo\"\n          },\n          \"layers\": [{\n            \"type\": \"label\",\n            \"text\": \"Display\",\n            \"class\": \"labels left\",\n            \"action\": {\n              \"type\": \"$geo.get\",\n              \"success\": {\n                \"type\": \"$render\",\n                \"options\": {\n                  \"template\": \"coord\"\n                }\n              }\n            }\n          }, {\n            \"type\": \"label\",\n            \"text\": \"Map\",\n            \"class\": \"labels right\",\n            \"action\": {\n              \"type\": \"$geo.get\",\n              \"success\": {\n                \"type\": \"$render\",\n                \"options\": {\n                  \"template\": \"map\"\n                }\n              }\n            }\n          }],\n          \"sections\": [{\n            \"items\": [{\n              \"type\": \"label\",\n              \"class\": \"labels canvas\",\n              \"text\": \"{{$jason.coord}}\"\n            }]\n          }]\n        },\n        \"body\": {\n          \"style\": {\n            \"background\": \"#50BFFF\",\n            \"color\": \"#ffffff\"\n          },\n          \"header\": {\n            \"style\": {\n              \"background\": \"#50BFFF\",\n              \"color\": \"#ffffff\"\n            },\n            \"title\": \"$geo\"\n          },\n          \"layers\": [{\n            \"type\": \"label\",\n            \"text\": \"Display\",\n            \"class\": \"labels left\",\n            \"action\": {\n              \"type\": \"$geo.get\",\n              \"success\": {\n                \"type\": \"$render\",\n                \"options\": {\n                  \"template\": \"coord\"\n                }\n              }\n            }\n          }, {\n            \"type\": \"label\",\n            \"text\": \"Map\",\n            \"class\": \"labels right\",\n            \"action\": {\n              \"type\": \"$geo.get\",\n              \"success\": {\n                \"type\": \"$render\",\n                \"options\": {\n                  \"template\": \"map\"\n                }\n              }\n            }\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "action/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Jasonette Actions\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-Bold\",\n          \"align\": \"center\",\n          \"background\": \"#ffffff\",\n          \"corner_radius\": \"3\",\n          \"size\": \"12\",\n          \"padding\": \"10\"\n        },\n        \"padded\": {\n          \"width\": \"150\",\n          \"align\": \"center\",\n          \"background\": \"#ffffff\",\n          \"font\": \"HelveticaNeue-Bold\",\n          \"height\": \"150\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        },\n        \"$pull\": {\n          \"type\": \"$flush\",\n          \"success\": {\n            \"type\": \"$reload\"\n          }\n        },\n        \"form_alert\": {\n          \"type\": \"$util.alert\",\n          \"options\": {\n            \"title\": \"Demo alert with input\",\n            \"description\": \"Try entering values and press OK\",\n            \"form\": [\n              {\n                \"name\": \"username\",\n                \"placeholder\": \"Enter username\"\n              },\n              {\n                \"name\": \"password\",\n                \"placeholder\": \"Enter password\",\n                \"type\": \"secure\"\n              }\n            ]\n          },\n          \"success\": {\n            \"type\": \"$util.alert\",\n            \"options\": {\n              \"title\": \"You have entered:\",\n              \"description\": \"{{$jason.username}} and {{$jason.password}}\"\n            }\n          }\n        }\n      }\n    },\n    \"body\": {\n      \"style\": {\n        \"background\": \"#8bb92d\",\n        \"color\": \"#ffffff\"\n      },\n      \"header\": {\n        \"style\": {\n          \"background\": \"#8bb92d\",\n          \"color\": \"#ffffff\"\n        },\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/action/index.json\",\n            \"view\": \"web\"\n          }\n        },\n        \"search\": {\n          \"name\": \"query\",\n          \"placeholder\": \"search actions\",\n          \"style\": {\n            \"dark\": \"true\",\n            \"color\": \"#ffffff\",\n            \"background\": \"#8bb92d\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"type\": \"horizontal\",\n          \"style\": {\n            \"background\": \"#ffffff\"\n          },\n          \"header\": {\n            \"type\": \"label\",\n            \"text\": \"$util\",\n            \"style\": {\n              \"background\": \"#ebebeb\"\n            }\n          },\n          \"items\": [\n            {\n              \"class\": \"padded\",\n              \"action\": {\n                \"type\": \"$util.banner\",\n                \"options\": {\n                  \"title\": \"Hello world\",\n                  \"description\": \"I'm a banner. I display a title and a description.\"\n                }\n              },\n              \"type\": \"label\",\n              \"text\": \"$util.banner\"\n            },\n            {\n              \"class\": \"padded\",\n              \"action\": {\n                \"type\": \"$util.toast\",\n                \"options\": {\n                  \"text\": \"I'm a toast. I display a simple text.\"\n                }\n              },\n              \"type\": \"label\",\n              \"text\": \"$util.toast\"\n            },\n            {\n              \"class\": \"padded\",\n              \"action\": {\n                \"type\": \"$util.alert\",\n                \"options\": {\n                  \"title\": \"Basic Alert\",\n                  \"description\": \"I'm a basic alert. I simply display an alert that needs to be dismissed before moving forward\"\n                }\n              },\n              \"type\": \"label\",\n              \"text\": \"$util.alert (basic)\"\n            },\n            {\n              \"class\": \"padded\",\n              \"action\": {\n                \"trigger\": \"form_alert\"\n              },\n              \"type\": \"label\",\n              \"text\": \"$util.alert (with input fields)\"\n            },\n            {\n              \"class\": \"padded\",\n              \"action\": {\n                \"type\": \"$util.picker\",\n                \"options\": {\n                  \"items\": [\n                    {\n                      \"text\": \"Trigger $util.banner\",\n                      \"action\": {\n                        \"type\": \"$util.banner\",\n                        \"options\": {\n                          \"title\": \"Hi I'm a banner\",\n                          \"description\": \"I'm triggered by a picker\"\n                        }\n                      }\n                    },\n                    {\n                      \"text\": \"Trigger $util.alert\",\n                      \"action\": {\n                        \"type\": \"$util.alert\",\n                        \"options\": {\n                          \"title\": \"Hi I'm an alert\",\n                          \"description\": \"I'm triggerred by an alert\"\n                        }\n                      }\n                    },\n                    {\n                      \"text\": \"Trigger $audio.play\",\n                      \"action\": {\n                        \"type\": \"$audio.play\",\n                        \"options\": {\n                          \"url\": \"https://s3.amazonaws.com/www.textcast.co/icons/yo.mp3\"\n                        }\n                      }\n                    }\n                  ]\n                }\n              },\n              \"type\": \"label\",\n              \"text\": \"$util.picker\"\n            },\n            {\n              \"class\": \"padded\",\n              \"action\": {\n                \"type\": \"$util.datepicker\",\n                \"success\": {\n                  \"type\": \"$util.banner\",\n                  \"options\": {\n                    \"title\": \"Selected time is\",\n                    \"description\": \"{{(new Date(parseInt($jason.value) * 1000)).toString()}}\"\n                  }\n                }\n              },\n              \"type\": \"label\",\n              \"text\": \"$util.datepicker\"\n            },\n            {\n              \"class\": \"padded\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/addressbook.json\"\n              },\n              \"type\": \"label\",\n              \"text\": \"$util.addressbook\"\n            }\n          ]\n        },\n        {\n          \"type\": \"horizontal\",\n          \"style\": {\n            \"background\": \"#ffffff\"\n          },\n          \"header\": {\n            \"type\": \"label\",\n            \"text\": \"$media\",\n            \"style\": {\n              \"background\": \"#ebebeb\"\n            }\n          },\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"$media.play\",\n              \"class\": \"padded\",\n              \"action\": {\n                \"type\": \"$media.play\",\n                \"options\": {\n                  \"url\": \"https://vo.fod4.com/v/25c17d6eb2/v600.mp4\"\n                }\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"$media.picker + $util.share (photo)\",\n              \"class\": \"padded\",\n              \"action\": {\n                \"type\": \"$media.picker\",\n                \"success\": {\n                  \"type\": \"$util.share\",\n                  \"options\": {\n                    \"items\": [\n                      {\n                        \"type\": \"image\",\n                        \"data\": \"{{$jason.data}}\"\n                      }\n                    ]\n                  }\n                }\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"class\": \"padded\",\n              \"text\": \"$media.camera + $util.share (photo)\",\n              \"action\": {\n                \"type\": \"$media.camera\",\n                \"success\": {\n                  \"type\": \"$util.share\",\n                  \"options\": {\n                    \"items\": [\n                      {\n                        \"type\": \"image\",\n                        \"data\": \"{{$jason.data}}\"\n                      }\n                    ]\n                  }\n                }\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"$media.camera + $util.share (photo with editing)\",\n              \"class\": \"padded\",\n              \"action\": {\n                \"type\": \"$media.camera\",\n                \"options\": {\n                  \"edit\": \"true\"\n                },\n                \"success\": {\n                  \"type\": \"$util.share\",\n                  \"options\": {\n                    \"items\": [\n                      {\n                        \"type\": \"image\",\n                        \"data\": \"{{$jason.data}}\"\n                      }\n                    ]\n                  }\n                }\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"$media.camera + $util.share (video)\",\n              \"class\": \"padded\",\n              \"action\": {\n                \"type\": \"$media.camera\",\n                \"options\": {\n                  \"type\": \"video\"\n                },\n                \"success\": {\n                  \"type\": \"$util.share\",\n                  \"options\": {\n                    \"items\": [\n                      {\n                        \"type\": \"video\",\n                        \"file_url\": \"{{$jason.file_url}}\"\n                      }\n                    ]\n                  }\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"header\": {\n            \"type\": \"label\",\n            \"text\": \"Barcode & QRCode scanning\",\n            \"style\": {\n              \"background\": \"#ebebeb\"\n            }\n          },\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"$vision\",\n              \"class\": \"bold\",\n              \"style\": {\n                \"align\": \"left\"\n              },\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/vision/index.json\"\n              }\n            }\n          ]\n        },\n        {\n          \"header\": {\n            \"type\": \"label\",\n            \"text\": \"$network & $session\",\n            \"style\": {\n              \"background\": \"#ebebeb\"\n            }\n          },\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"$network\",\n              \"class\": \"bold\",\n              \"style\": {\n                \"align\": \"left\"\n              },\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/network/index.json\"\n              }\n            }\n          ]\n        },\n        {\n          \"header\": {\n            \"type\": \"label\",\n            \"text\": \"Local variables\",\n            \"style\": {\n              \"background\": \"#ebebeb\"\n            }\n          },\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"Variable\",\n              \"class\": \"bold\",\n              \"style\": {\n                \"align\": \"left\"\n              },\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/variable/index.json\"\n              }\n            }\n          ]\n        },\n        {\n          \"header\": {\n            \"type\": \"label\",\n            \"text\": \"$lambda\",\n            \"style\": {\n              \"background\": \"#ebebeb\"\n            }\n          },\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"Triggering a action by name and utilizing its return values\",\n              \"class\": \"bold\",\n              \"style\": {\n                \"align\": \"left\"\n              },\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/lambda/index.json\"\n              }\n            }\n          ]\n        },\n        {\n          \"header\": {\n            \"type\": \"label\",\n            \"text\": \"Geo\",\n            \"style\": {\n              \"background\": \"#ebebeb\"\n            }\n          },\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"$geo.get\",\n              \"class\": \"bold\",\n              \"style\": {\n                \"align\": \"left\"\n              },\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/geo/index.json\"\n              }\n            }\n          ]\n        },\n        {\n          \"header\": {\n            \"type\": \"label\",\n            \"text\": \"JavaScript\",\n            \"style\": {\n              \"background\": \"#ebebeb\"\n            }\n          },\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"$script.include\",\n              \"class\": \"bold\",\n              \"style\": {\n                \"align\": \"left\"\n              },\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/script/index.json\"\n              }\n            }\n          ]\n        },\n        {\n          \"header\": {\n            \"type\": \"label\",\n            \"text\": \"Timer\",\n            \"style\": {\n              \"background\": \"#ebebeb\"\n            }\n          },\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"$timer\",\n              \"class\": \"bold\",\n              \"style\": {\n                \"align\": \"left\"\n              },\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/timer/index.json\"\n              }\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "action/lambda/cat.json",
    "content": "{\n  \"cats\": [\n    {\n      \"name\": \"Mr. Fisherman\",\n      \"image\": \"http://i.giphy.com/OmK8lulOMQ9XO.gif\",\n      \"status\": \"Busy fishing on the iPhone\"\n    }\n  ]\n}\n"
  },
  {
    "path": "action/lambda/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Trigger demo\",\n      \"styles\": {\n        \"code\": {\n          \"background\": \"#646464\",\n          \"color\": \"#ffffff\",\n          \"size\": \"11\",\n          \"font\": \"Courier\",\n          \"padding\": \"10\"\n        },\n        \"header\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"size\": \"15\",\n          \"background\": \"#F2D608\",\n          \"color\": \"#000000\"\n        }\n      },\n      \"actions\": {\n        \"banner\": {\n          \"type\": \"$util.banner\",\n          \"options\": {\n            \"title\": \"{{$jason.title}}\",\n            \"description\": \"{{$jason.description}}\"\n          }\n        },\n        \"banner2\": {\n          \"type\": \"$util.banner\",\n          \"options\": \"{{$jason}}\"\n        },\n        \"banner3\": {\n          \"type\": \"$util.banner\",\n          \"options\": {\n            \"title\": \"Banner3\",\n            \"description\": \"{{$jason.cats[0].status}}\"\n          }\n        }\n      },\n      \"data\": {\n        \"actions\": {\n          \"banner\": {\n            \"type\": \"$util.banner\",\n            \"options\": {\n              \"title\": \"{{$jason.title}}\",\n              \"description\": \"{{$jason.description}}\"\n            }\n          },\n          \"banner2\": {\n            \"type\": \"$util.banner\",\n            \"options\": \"{{$jason}}\"\n          },\n          \"banner3\": {\n            \"type\": \"$util.banner\",\n            \"options\": {\n              \"title\": \"Banner3\",\n              \"description\": \"{{$jason.cats[0].status}}\"\n            }\n          }\n        },\n        \"trigger_items\": [\n          {\n            \"action\": {\n              \"type\": \"$util.banner\",\n              \"options\": {\n                \"title\": \"Trigger\",\n                \"description\": \"it worked!\"\n              }\n            }\n          },\n          {\n            \"action\": {\n              \"trigger\": \"banner\",\n              \"options\": {\n                \"title\": \"Trigger\",\n                \"description\": \"it worked!\"\n              }\n            }\n          },\n          {\n            \"action\": {\n              \"trigger\": \"banner2\",\n              \"options\": {\n                \"title\": \"Trigger\",\n                \"description\": \"it worked!\"\n              }\n            }\n          },\n          {\n            \"action\": {\n              \"type\": \"$network.request\",\n              \"options\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/lambda/cat.json\"\n              },\n              \"success\": {\n                \"trigger\": \"banner3\"\n              }\n            }\n          },\n          {\n            \"action\": {\n              \"type\": \"$network.request\",\n              \"options\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/lambda/cat.json\"\n              },\n              \"success\": {\n                \"trigger\": \"banner2\",\n                \"options\": {\n                  \"title\": \"Banner2\",\n                  \"description\": \"{{$jason.cats[0].status}}\"\n                }\n              }\n            }\n          },\n          {\n            \"action\": {\n              \"type\": \"$network.request\",\n              \"options\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/lambda/cat.json\"\n              },\n              \"success\": [\n                {\n                  \"{{#if $jason && 'cats' in $jason}}\": {\n                    \"trigger\": \"banner2\",\n                    \"options\": {\n                      \"title\": \"Banner2\",\n                      \"description\": \"{{$jason.cats[0].status}}\"\n                    }\n                  }\n                },\n                {\n                  \"{{#else}}\": {\n                    \"type\": \"$util.toast\",\n                    \"options\": {\n                      \"text\": \"Error\"\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        ],\n        \"items\": [\n          {\n            \"action\": {\n              \"type\": \"$util.banner\",\n              \"options\": {\n                \"title\": \"Trigger\",\n                \"description\": \"it worked!\"\n              }\n            }\n          },\n          {\n            \"action\": {\n              \"type\": \"$lambda\",\n              \"options\": {\n                \"name\": \"banner\",\n                \"options\": {\n                  \"title\": \"Trigger\",\n                  \"description\": \"it worked!\"\n                }\n              }\n            }\n          },\n          {\n            \"action\": {\n              \"type\": \"$lambda\",\n              \"options\": {\n                \"name\": \"banner2\",\n                \"options\": {\n                  \"title\": \"Trigger\",\n                  \"description\": \"it worked!\"\n                }\n              }\n            }\n          },\n          {\n            \"action\": {\n              \"type\": \"$network.request\",\n              \"options\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/lambda/cat.json\"\n              },\n              \"success\": {\n                \"type\": \"$lambda\",\n                \"options\": {\n                  \"name\": \"banner3\"\n                }\n              }\n            }\n          },\n          {\n            \"action\": {\n              \"type\": \"$network.request\",\n              \"options\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/lambda/cat.json\"\n              },\n              \"success\": {\n                \"type\": \"$lambda\",\n                \"options\": {\n                  \"name\": \"banner2\",\n                  \"options\": {\n                    \"title\": \"Banner2\",\n                    \"description\": \"{{$jason.cats[0].status}}\"\n                  }\n                }\n              }\n            }\n          },\n          {\n            \"action\": {\n              \"type\": \"$network.request\",\n              \"options\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/lambda/cat.json\"\n              },\n              \"success\": {\n                \"type\": \"$lambda\",\n                \"options\": [\n                  {\n                    \"{{#if $jason && 'cats' in $jason}}\": {\n                      \"name\": \"banner2\",\n                      \"options\": {\n                        \"title\": \"Banner2\",\n                        \"description\": \"{{$jason.cats[0].status}}\"\n                      }\n                    }\n                  },\n                  {\n                    \"{{#else}}\": {\n                      \"type\": \"$util.toast\",\n                      \"options\": {\n                        \"text\": \"Error\"\n                      }\n                    }\n                  }\n                ]\n              }\n            }\n          }\n        ]\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"title\": \"$lambda + trigger\",\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/action/lambda/index.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"sections\": [\n            {\n              \"items\": [\n                {\n                  \"type\": \"label\",\n                  \"text\": \"$lambda is a special purpose action that calls another action by name and handles its return values. You need to declare the action under $jason.head.actions and call it using $lambda.\\n\\n1. $lambda lets you pass an argument as 'options'.\\n\\n2. Once triggered, $lambda waits for the callee action to finish and return via $return.success or $return.error.\\n\\n3. When the callee action returns, the caller action continues its work by running its 'success' or 'error' actions with the return value received back from $lambda execution.\",\n                  \"style\": {\n                    \"size\": \"11\"\n                  }\n                }\n              ]\n            },\n            {\n              \"header\": {\n                \"type\": \"vertical\",\n                \"class\": \"header\",\n                \"components\": [\n                  {\n                    \"type\": \"label\",\n                    \"text\": \"Action declarations\",\n                    \"class\": \"header\"\n                  },\n                  {\n                    \"type\": \"label\",\n                    \"text\": \"First, these are the actions declared under $jason.head.actions which we will trigger in the later sections\",\n                    \"style\": {\n                      \"size\": \"11\"\n                    }\n                  }\n                ]\n              },\n              \"items\": [\n                {\n                  \"type\": \"vertical\",\n                  \"style\": {\n                    \"padding\": \"10\"\n                  },\n                  \"components\": [\n                    {\n                      \"type\": \"label\",\n                      \"class\": \"code\",\n                      \"text\": \"{{JSON.stringify(actions, null, 2)}}\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"header\": {\n                \"type\": \"vertical\",\n                \"class\": \"header\",\n                \"components\": [\n                  {\n                    \"type\": \"label\",\n                    \"text\": \"Using the raw $lambda action (not recommended)\",\n                    \"class\": \"header\"\n                  },\n                  {\n                    \"type\": \"label\",\n                    \"text\": \"Try running the action by touching the code below\",\n                    \"style\": {\n                      \"size\": \"11\"\n                    }\n                  }\n                ]\n              },\n              \"items\": {\n                \"{{#each items}}\": {\n                  \"type\": \"vertical\",\n                  \"style\": {\n                    \"padding\": \"10\"\n                  },\n                  \"action\": \"{{action}}\",\n                  \"components\": [\n                    {\n                      \"type\": \"label\",\n                      \"class\": \"code\",\n                      \"text\": \"{{JSON.stringify(action, null, 2)}}\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"header\": {\n                \"type\": \"vertical\",\n                \"class\": \"header\",\n                \"components\": [\n                  {\n                    \"type\": \"label\",\n                    \"text\": \"Using the 'trigger' keyword (Recommended)\",\n                    \"class\": \"header\"\n                  },\n                  {\n                    \"type\": \"label\",\n                    \"text\": \"Try triggering the action by name by touching the code\",\n                    \"style\": {\n                      \"size\": \"11\"\n                    }\n                  }\n                ]\n              },\n              \"items\": {\n                \"{{#each trigger_items}}\": {\n                  \"type\": \"vertical\",\n                  \"style\": {\n                    \"padding\": \"10\"\n                  },\n                  \"action\": \"{{action}}\",\n                  \"components\": [\n                    {\n                      \"type\": \"label\",\n                      \"class\": \"code\",\n                      \"text\": \"{{JSON.stringify(action, null, 2)}}\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "action/network/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"$network\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        }\n      },\n      \"data\": {\n        \"items\": [{\n          \"url\": \"https://imagejason.herokuapp.com\",\n          \"title\": \"imagejason\",\n          \"description\": \"takes photo using $media.camera, and uploads it to imagejason.herokuapp.com via $network.upload\"\n        }, {\n          \"url\": \"https://fureliza.herokuapp.com\",\n          \"title\": \"eliza\",\n          \"description\": \"make a $network.request to node.js express based chatbot server. Returns auto-generated output based on the input\"\n        }, {\n          \"url\": \"https://sessionjason.herokuapp.com/posts.json\",\n          \"title\": \"Microblog with user account\",\n          \"description\": \"Signs into the blog using token authentication ($network.request and $session.set) and make posts using $network.request\"\n        }]\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/action/network/index.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"sections\": [\n            {\n              \"header\": {\n                \"type\": \"horizontal\",\n                \"style\": {\n                  \"background\": \"rgba(14,122,254,0.1)\",\n                  \"padding\": \"20\"\n                },\n                \"components\": [{\n                  \"style\": {\n                    \"size\": \"12\"\n                  },\n                  \"type\": \"label\",\n                  \"text\": \"Note: Sometimes the apps may take about 10 seconds to load. This is because these connect to demo app servers, which go into hibernation when left idle for a while. But wait for a bit for them to load and they should work!\"\n                }]\n              },\n              \"items\": {\n                \"{{#each items}}\": {\n                  \"type\": \"vertical\",\n                  \"href\": {\n                    \"url\": \"{{url}}\"\n                  },\n                  \"components\": [{\n                    \"type\": \"label\",\n                    \"class\": \"bold\",\n                    \"text\": \"{{title}}\"\n                  }, {\n                    \"type\": \"label\",\n                    \"class\": \"normal\",\n                    \"text\": \"{{description}}\"\n                  }]\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "action/script/hejs/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"he.js encoding Test\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$script.include\",\n          \"options\": {\n            \"items\": [\n              {\n                \"url\": \"https://rawgit.com/mathiasbynens/he/master/he.js\"\n              }\n            ]\n          },\n          \"success\": {\n            \"type\": \"$set\",\n            \"options\": {\n              \"caption\": \"prisoner&#39;s dilemma\"\n            },\n            \"success\": {\n              \"type\": \"$render\"\n            }\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"title\": \"he.js decoding example\",\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/script/hejs/index.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"sections\": [\n            {\n              \"items\": [\n                {\n                  \"type\": \"label\",\n                  \"text\": \"[BEFORE DECODING] {{$get.caption}}\"\n                },\n                {\n                  \"type\": \"label\",\n                  \"text\": \"[AFTER DECODING] {{he.decode($get.caption)}}\"\n                }\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "action/script/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"$network\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        }\n      },\n      \"data\": {\n        \"items\": [{\n          \"url\": \"https://jasonette.github.io/Jasonpedia/action/script/hejs/index.json\",\n          \"title\": \"he.js\",\n          \"description\": \"html text encoding/decoding library\"\n        }, {\n          \"url\": \"https://jasonette.github.io/Jasonpedia/action/script/underscorejs/index.json\",\n          \"title\": \"underscore.js\",\n          \"description\": \"popular util library for manipulating data\"\n        }, {\n          \"url\": \"https://jasonette.github.io/Jasonpedia/action/script/inline/index.json\",\n          \"title\": \"Inline JavaScript Usage\",\n          \"description\": \"You can also include a JavaScript code inline using $script.include\"\n        }]\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/action/script/index.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"sections\": [\n            {\n              \"header\": {\n                \"type\": \"horizontal\",\n                \"style\": {\n                  \"background\": \"rgba(14,122,254,0.1)\",\n                  \"padding\": \"20\"\n                },\n                \"components\": [{\n                  \"style\": {\n                    \"size\": \"12\"\n                  },\n                  \"type\": \"label\",\n                  \"text\": \"$script.include action lets you include remote/local/inline JavaScript into the template context so you can use them within the template\"\n                }]\n              },\n              \"items\": {\n                \"{{#each items}}\": {\n                  \"type\": \"vertical\",\n                  \"href\": {\n                    \"url\": \"{{url}}\"\n                  },\n                  \"components\": [{\n                    \"type\": \"label\",\n                    \"class\": \"bold\",\n                    \"text\": \"{{title}}\"\n                  }, {\n                    \"type\": \"label\",\n                    \"class\": \"normal\",\n                    \"text\": \"{{description}}\"\n                  }]\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "action/script/inline/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Inline JS  Test\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$script.include\",\n          \"options\": {\n            \"items\": [\n              {\n                \"text\": \"var randomcolor = function() { return '#'+Math.floor(Math.random()*16777215).toString(16); }\"\n              }\n            ]\n          },\n          \"success\": {\n            \"trigger\": \"draw\"\n          }\n        },\n        \"$pull\": {\n          \"trigger\": \"draw\"\n        },\n        \"draw\": {\n          \"type\": \"$render\",\n          \"options\": {\n            \"data\": {\n              \"color\": \"{{randomcolor()}}\",\n              \"background\": \"{{randomcolor()}}\"\n            }\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"style\": {\n            \"color\": \"{{$jason.color}}\",\n            \"background\": \"{{$jason.background}}\"\n          },\n          \"header\": {\n            \"style\": {\n              \"color\": \"{{$jason.color}}\",\n              \"background\": \"{{$jason.background}}\"\n            },\n            \"title\": \"Pull to change to random color\",\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/script/inline/index.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"layers\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"{{$jason.background}}\",\n              \"style\": {\n                \"align\": \"center\",\n                \"size\": \"40\",\n                \"height\": \"100\",\n                \"top\": \"50%-50\",\n                \"color\": \"{{$jason.color}}\"\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "action/script/underscorejs/db.json",
    "content": "{\n  \"tests\": [\n    {\n      \"title\": \"_.where\",\n      \"code\": {\n        \"type\": \"$href\",\n        \"options\": {\n          \"url\": \"https://jasonette.github.io/Jasonpedia/action/script/underscorejs/modal.json\",\n          \"transition\": \"modal\",\n          \"options\": {\n            \"code\": \"{{$root._.where([{title: 'Harry Potter and the Sorcerer\\\\'s Stone', author: 'J. K. Rowling'}, {title: 'Cymbeline', author: 'Shakespeare', year: 1611}, {title: 'Fifty Shades of Grey', author: 'E. L. James'}, {title: 'The Machine Stops', author: 'E. M. Forster'}, {title: 'The Tempest', author: 'Shakespeare', year: 1611}], {author: 'Shakespeare'})}}\"\n          }\n        }\n      }\n    },\n    {\n      \"title\": \"_.every 'true' case\",\n      \"code\": {\n        \"type\": \"$href\",\n        \"options\": {\n          \"url\": \"https://jasonette.github.io/Jasonpedia/action/script/underscorejs/modal.json\",\n          \"transition\": \"modal\",\n          \"options\": {\n            \"code\": \"Is every item in [1,2,3,4] a number? : {{ $root._.every([1,2,3,4], function(num) { return typeof num === 'number'; }).toString() }}\"\n          }\n        }\n      }\n    },\n    {\n      \"title\": \"_.every 'false' case\",\n      \"code\": {\n        \"type\": \"$href\",\n        \"options\": {\n          \"url\": \"https://jasonette.github.io/Jasonpedia/action/script/underscorejs/modal.json\",\n          \"options\": {\n            \"code\": \"Is every item in [1,'a',3,4] a number? : {{ $root._.every([1,'a',3,4], function(num) { return typeof num === 'number'; }).toString() }}\"\n          }\n        }\n      }\n    },\n    {\n      \"title\": \"_.indexBy\",\n      \"code\": {\n        \"type\": \"$href\",\n        \"options\": {\n          \"url\": \"https://jasonette.github.io/Jasonpedia/action/script/underscorejs/modal.json\",\n          \"transition\": \"modal\",\n          \"options\": {\n            \"code\": \"{{$root._.indexBy([{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}], 'age')}}\"\n          }\n        }\n      }\n    },\n    {\n      \"title\": \"_.uniq\",\n      \"code\": {\n        \"type\": \"$href\",\n        \"options\": {\n          \"url\": \"https://jasonette.github.io/Jasonpedia/action/script/underscorejs/modal.json\",\n          \"transition\": \"modal\",\n          \"options\": {\n            \"code\": \"{{$root._.uniq([1,1,2,2,3,3,3,3,4,5,6,6,6,6,6,6,6,6,6,7]).toString()}}\"\n          }\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "action/script/underscorejs/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Underscore.js Test\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$script.include\",\n          \"options\": {\n            \"items\": [\n              {\n                \"url\": \"https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js\"\n              }\n            ]\n          },\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        }\n      },\n      \"styles\": {\n        \"code\": {\n          \"padding\": \"10\",\n          \"size\": \"12\",\n          \"background\": \"#222222\",\n          \"color\": \"rgba(255,255,255,0.8)\",\n          \"font\": \"courier\"\n        },\n        \"title\": {\n          \"background\": \"#222222\",\n          \"color\": \"#8f9d6a\",\n          \"padding\": \"10\"\n        }\n      },\n      \"data\": {\n        \"@\": \"https://jasonette.github.io/Jasonpedia/action/script/underscorejs/db.json\"\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"title\": \"Underscore.js Test\",\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/script/underscorejs/index.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"sections\": [\n            {\n              \"items\": {\n                \"{{#each tests}}\": {\n                  \"type\": \"vertical\",\n                  \"action\": \"{{code}}\",\n                  \"components\": [\n                    {\n                      \"type\": \"label\",\n                      \"text\": \"{{title}}\",\n                      \"class\": \"title\"\n                    },\n                    {\n                      \"type\": \"label\",\n                      \"text\": \"{{JSON.stringify(code, null, 2)}}\",\n                      \"class\": \"code\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "action/script/underscorejs/modal.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Code Modal\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$render\"\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"title\": \"Result\"\n          },\n          \"sections\": [\n            {\n              \"items\": [\n                {\n                  \"type\": \"label\",\n                  \"text\": \"{{JSON.stringify($params.code, null, 2)}}\",\n                  \"style\": {\n                    \"padding\": \"10\",\n                    \"background\": \"#222222\",\n                    \"color\": \"rgba(255,255,255,0.8)\",\n                    \"font\": \"courier\",\n                    \"size\": \"12\"\n                  }\n                }\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "action/timer/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"$timer\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"padding\": \"10\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/action/timer/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"Stopwatch\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/timer/stopwatch.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Mario\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/timer/mario.json\"\n              }\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "action/timer/mario.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Mario\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"index\": \"0\",\n            \"frame\": \"0\"\n          },\n          \"success\": {\n            \"type\": \"$timer.start\",\n            \"options\": {\n              \"interval\": \"1\",\n              \"name\": \"mario\",\n              \"repeats\": \"true\",\n              \"action\": {\n                \"trigger\": \"tick\"\n              }\n            }\n          }\n        },\n        \"tick\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"index\": \"{{'' + ((parseInt($get.index) + 1)%2)}}\",\n            \"frame\": \"{{'' + ((parseInt($get.frame) + 5)%500)}}\"\n          },\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"style\": {\n            \"background\": \"#000000\",\n            \"color\": \"#ffffff\",\n            \"border\": \"none\"\n          },\n          \"header\": {\n            \"style\": {\n              \"background\": \"#000000\",\n              \"color\": \"#ffffff\"\n            },\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/action/timer/mario.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"sections\": [{\n            \"items\": [{\n              \"type\": \"vertical\",\n              \"style\": {\n                \"spacing\": \"10\"\n              },\n              \"components\": [{\n                \"type\": \"label\",\n                \"text\": \"FRAME\\nhttps://jasonette.github.io/Jasonpedia/assets/{{$get.index}}.png\",\n                \"style\": {\n                  \"font\": \"Courier\",\n                  \"size\": \"12\",\n                  \"color\": \"#ebebeb\"\n                }\n              }, {\n                \"type\": \"label\",\n                \"text\": \"COORD\\n{{$get.frame}}\",\n                \"style\": {\n                  \"font\": \"Courier\",\n                  \"size\": \"12\",\n                  \"color\": \"#ebebeb\"\n                }\n              }]\n            }]\n          }],\n          \"layers\": [{\n            \"type\": \"image\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/assets/{{$get.index}}.png\",\n            \"style\": {\n              \"top\": \"50%\",\n              \"left\": \"{{$get.frame}}\",\n              \"height\": \"50\"\n            }\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "action/timer/stopwatch.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Stopwatch\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"index\": \"0\"\n          },\n          \"success\": {\n            \"type\": \"$timer.start\",\n            \"options\": {\n              \"interval\": \"1\",\n              \"name\": \"stopwatch\",\n              \"repeats\": \"true\",\n              \"action\": {\n                \"trigger\": \"tick\"\n              }\n            }\n          }\n        },\n        \"tick\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"index\": \"{{'' + (parseInt($get.index) + 1)}}\"\n          },\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"style\": {\n            \"background\": \"#000000\",\n            \"color\": \"#ffffff\"\n          },\n          \"header\": {\n            \"style\": {\n              \"background\": \"#000000\",\n              \"color\": \"#ffffff\"\n            },\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/action/timer/stopwatch.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"layers\": [{\n            \"type\": \"label\",\n            \"text\": \"{{$get.index}}\",\n            \"style\": {\n              \"top\": \"50%\",\n              \"left\": \"50%-100\",\n              \"color\": \"#ffffff\",\n              \"font\": \"Georgia\",\n              \"size\": \"50\",\n              \"align\": \"center\",\n              \"width\": \"200\"\n            }\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "action/variable/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Local Variables\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"blank\": \"?\"\n          },\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        },\n        \"$pull\": {\n          \"type\": \"$flush\",\n          \"success\": {\n            \"type\": \"$reload\"\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"title\": \"Local Variables\"\n          },\n          \"sections\": [\n            {\n              \"items\": [{\n                \"type\": \"label\",\n                \"text\": \"{{$get.blank}}\",\n                \"style\": {\n                  \"font\": \"HelveticaNeue-Bold\",\n                  \"size\": \"30\",\n                  \"padding\": \"20\",\n                  \"align\": \"center\"\n                }\n              }]\n            },\n            {\n              \"header\": {\n                \"type\": \"label\",\n                \"text\": \"textfield\",\n                \"style\": {\n                  \"background\": \"#f5f5f5\"\n                }\n              },\n              \"items\": [\n                {\n                  \"type\": \"horizontal\",\n                  \"components\": [{\n                    \"type\": \"textfield\",\n                    \"name\": \"blank\"\n                  }, {\n                    \"type\": \"button\",\n                    \"text\": \"Done\",\n                    \"style\": {\n                      \"width\": \"60\",\n                      \"color\": \"#ff0000\"\n                    },\n                    \"action\": {\n                      \"type\": \"$render\"\n                    }\n                  }]\n                }\n              ]\n            },\n            {\n              \"header\": {\n                \"type\": \"label\",\n                \"text\": \"textarea\",\n                \"style\": {\n                  \"background\": \"#f5f5f5\"\n                }\n              },\n              \"items\": [\n                {\n                  \"type\": \"horizontal\",\n                  \"style\": {\n                    \"align\": \"top\"\n                  },\n                  \"components\": [{\n                    \"type\": \"textarea\",\n                    \"placeholder\": \"Enter text and press Done\",\n                    \"name\": \"blank\",\n                    \"style\": {\n                      \"height\": \"100\"\n                    }\n                  }, {\n                    \"type\": \"button\",\n                    \"text\": \"Done\",\n                    \"style\": {\n                      \"width\": \"60\",\n                      \"height\": \"30\",\n                      \"color\": \"#ff0000\"\n                    },\n                    \"action\": {\n                      \"type\": \"$render\"\n                    }\n                  }]\n                }\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "action/vision/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Barcode Testing with inline update\",\n      \"actions\": {\n        \"$vision.ready\": {\n          \"trigger\": \"qr\"\n        },\n        \"$load\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"content\": \"Scanning...\"\n          },\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        },\n        \"$vision.onscan\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"content\": \"{{$jason.content}}\"\n          },\n          \"success\": {\n            \"type\": \"$render\",\n            \"success\": {\n              \"type\": \"$timer.start\",\n              \"options\": {\n                \"interval\": \"1\",\n                \"name\": \"timer1\",\n                \"action\": {\n                  \"trigger\": \"qr2\"\n                }\n              }\n            }\n          }\n        },\n        \"qr\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"content\": \"Scanning...\"\n          },\n          \"success\": {\n            \"type\": \"$vision.scan\",\n            \"success\": {\n              \"type\": \"$render\"\n            }\n          }\n        },\n        \"qr2\": {\n          \"type\": \"$vision.scan\",\n          \"options\": {\n            \"type\": \"qrcode\"\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/action/vision/index.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"style\": {\n            \"border\": \"none\"\n          },\n          \"background\": {\n            \"type\": \"camera\",\n            \"options\": {\n              \"device\": \"back\"\n            }\n          },\n          \"sections\": [\n            {\n              \"items\": [\n                {\n                  \"type\": \"vertical\",\n                  \"href\": {\n                    \"url\": \"{{$get.content}}\",\n                    \"transition\": \"modal\"\n                  },\n                  \"components\": [\n                    {\n                      \"type\": \"label\",\n                      \"text\": \"{{$get.content}}\",\n                      \"style\": {\n                        \"color\": \"#ffffff\",\n                        \"font\": \"Courier\",\n                        \"size\": \"16\",\n                        \"padding\": \"10\",\n                        \"background\": \"rgba(0,0,0,0.2)\"\n                      }\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "core/href/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Jasonette Href\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"padding\": \"10\",\n          \"background\": \"#ffffff\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"padding\": \"10\",\n          \"size\": \"12\"\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/core/href/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"Push transition to another Jason View\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/core/href/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Push transition to another Jason View with tabs\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/core/href/tabs.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Modal transition to another Jason View\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/core/href/index.json\",\n                \"transition\": \"modal\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Modal transition to another Jason View with tabs\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/core/href/tabs.json\",\n                \"transition\": \"modal\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Open external app (mail)\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"mailto:ethan.gliechtenstein@gmail.com?subject=It%20works!\",\n                \"view\": \"app\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Open a browser\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://twitter.com/intent/user?screen_name=gliechtenstein\",\n                \"view\": \"web\"\n              }\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "core/href/tabs.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Jasonette Href\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"padding\": \"10\",\n          \"background\": \"#ffffff\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"padding\": \"10\",\n          \"size\": \"12\"\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/core/href/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"Push transition to another Jason View\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/core/href/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Push transition to another Jason View with tabs\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/core/href/tabs.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Modal transition to another Jason View\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/core/href/index.json\",\n                \"transition\": \"modal\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Modal transition to another Jason View with tabs\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/core/href/tabs.json\",\n                \"transition\": \"modal\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Open external app (mail)\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"mailto:ethan.gliechtenstein@gmail.com?subject=It%20works!\",\n                \"view\": \"app\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Open a browser\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://twitter.com/intent/user?screen_name=gliechtenstein\",\n                \"view\": \"web\"\n              }\n            }\n          ]\n        }\n      ],\n      \"footer\": {\n        \"tabs\": {\n          \"style\": {\n            \"background\": \"rgba(255,255,255,0.8)\",\n            \"color\": \"#000000\"\n          },\n          \"items\": [{\n            \"image\": \"https://jasonette.github.io/Jasonpedia/assets/0.png\",\n            \"style\": {\n              \"height\": \"21\"\n            },\n            \"url\": \"https://jasonette.github.io/Jasonpedia/core/href/tabs.json\"\n          }, {\n            \"image\": \"https://jasonette.github.io/Jasonpedia/assets/2.png\",\n            \"style\": {\n              \"height\": \"21\"\n            },\n            \"url\": \"https://jasonette.github.io/Jasonpedia/core/href/tabs.json\"\n          }, {\n            \"image\": \"https://jasonette.github.io/Jasonpedia/assets/3.png\",\n            \"style\": {\n              \"height\": \"21\"\n            },\n            \"url\": \"https://jasonette.github.io/Jasonpedia/core/href/tabs.json\"\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "core/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Core\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/core/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"type\": \"vertical\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/core/href/index.json\"\n              },\n              \"components\": [{\n                \"type\": \"label\",\n                \"text\": \"$href\",\n                \"class\": \"bold\"\n              }, {\n                \"type\": \"label\",\n                \"text\": \"Various types of linking between views\",\n                \"class\": \"normal\"\n              }]\n            }\n          ]\n        },\n        {\n          \"items\": [\n            {\n              \"type\": \"vertical\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/core/render/index.json\"\n              },\n              \"components\": [{\n                \"type\": \"label\",\n                \"text\": \"$render\",\n                \"class\": \"bold\"\n              }, {\n                \"type\": \"label\",\n                \"text\": \"Check out different render options\",\n                \"class\": \"normal\"\n              }]\n            }\n          ]\n        },\n        {\n          \"items\": [\n            {\n              \"type\": \"vertical\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/core/snapshot/index.json\"\n              },\n              \"components\": [{\n                \"type\": \"label\",\n                \"text\": \"$snapshot\",\n                \"class\": \"bold\"\n              }, {\n                \"type\": \"label\",\n                \"text\": \"Take a snapshot of the current screen\",\n                \"class\": \"normal\"\n              }]\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "core/render/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"$render\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"title\": \"$render\",\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/core/render/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"type\": \"vertical\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/core/render/templates.json\"\n              },\n              \"components\": [{\n                \"type\": \"label\",\n                \"text\": \"Multiple templates\",\n                \"class\": \"bold\"\n              }, {\n                \"type\": \"label\",\n                \"text\": \"Switching between multiple different templates\",\n                \"class\": \"normal\"\n              }]\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "core/render/templates.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"$render templates\",\n      \"actions\": {\n        \"$pull\": {\n          \"type\": \"$flush\",\n          \"success\": {\n            \"type\": \"$reload\"\n          }\n        }\n      },\n      \"data\": {\n        \"members\": [{\n          \"name\": \"Bart\",\n          \"image\": \"https://jasonette.github.io/Jasonpedia/assets/bart.png\"\n        }, {\n          \"name\": \"Homer\",\n          \"image\": \"https://jasonette.github.io/Jasonpedia/assets/homer.jpg\"\n        }, {\n          \"name\": \"Marge\",\n          \"image\": \"https://jasonette.github.io/Jasonpedia/assets/marge.png\"\n        }, {\n          \"name\": \"Lisa\",\n          \"image\": \"https://jasonette.github.io/Jasonpedia/assets/lisa.jpg\"\n        }, {\n          \"name\": \"Maggie\",\n          \"image\": \"https://jasonette.github.io/Jasonpedia/assets/maggie.png\"\n        }]\n      },\n      \"styles\": {\n        \"labels\": {\n          \"size\": \"12\",\n          \"font\": \"HelveticaNeue-Bold\",\n          \"align\": \"center\"\n        },\n        \"left\": {\n          \"bottom\": \"20\",\n          \"left\": \"50\",\n          \"width\": \"100\",\n          \"height\": \"100\",\n          \"corner_radius\": \"50\",\n          \"color\": \"#ffffff\",\n          \"background\": \"rgba(0,0,0,0.7)\",\n          \"background\": \"#F2E205\",\n          \"padding\": \"20\"\n        },\n        \"right\": {\n          \"bottom\": \"20\",\n          \"right\": \"50\",\n          \"width\": \"100\",\n          \"height\": \"100\",\n          \"corner_radius\": \"50\",\n          \"color\": \"#ffffff\",\n          \"background\": \"rgba(0,0,0,0.7)\",\n          \"padding\": \"20\"\n        }\n      },\n      \"templates\": {\n        \"horizontal\": {\n          \"style\": {\n            \"background\": \"#f8d728\",\n            \"border\": \"none\"\n          },\n          \"header\": {\n            \"style\": {\n              \"background\": \"#f8d728\"\n            }\n          },\n          \"layers\": [{\n            \"type\": \"label\",\n            \"text\": \"Horizontal\",\n            \"class\": \"labels left\",\n            \"action\": {\n              \"type\": \"$render\",\n              \"options\": {\n                \"template\": \"horizontal\"\n              }\n            }\n          }, {\n            \"type\": \"label\",\n            \"text\": \"Vertical\",\n            \"class\": \"labels right\",\n            \"action\": {\n              \"type\": \"$render\"\n            }\n          }],\n          \"sections\": [{\n            \"type\": \"horizontal\",\n            \"header\": {\n              \"type\": \"image\",\n              \"url\": \"https://jasonette.github.io/Jasonpedia/assets/simpsons.jpg\",\n              \"style\": {\n                \"width\": \"100%\",\n                \"padding\": \"0\",\n                \"z_index\": \"-1\"\n              }\n            },\n            \"items\": {\n              \"{{#each members}}\": {\n                \"type\": \"vertical\",\n                \"style\": {\n                  \"width\": \"200\",\n                  \"height\": \"300\",\n                  \"padding\": \"10\",\n                  \"padding_top\": \"30\",\n                  \"align\": \"center\"\n                },\n                \"components\": [{\n                  \"type\": \"image\",\n                  \"url\": \"{{image}}\",\n                  \"style\": {\n                    \"width\": \"180\",\n                    \"height\": \"180\",\n                    \"padding\": \"10\",\n                    \"corner_radius\": \"90\"\n                  }\n                }, {\n                  \"type\": \"label\",\n                  \"text\": \"{{name}}\",\n                  \"style\": {\n                    \"font\": \"ChalkboardSE-Bold\",\n                    \"size\": \"25\",\n                    \"color\": \"#1192f0\"\n                  }\n                }]\n              }\n            }\n          }]\n        },\n        \"body\": {\n          \"style\": {\n            \"background\": \"#f8d728\",\n            \"border\": \"none\"\n          },\n          \"header\": {\n            \"style\": {\n              \"background\": \"#f8d728\"\n            }\n          },\n          \"layers\": [{\n            \"type\": \"label\",\n            \"text\": \"Horizontal\",\n            \"class\": \"labels left\",\n            \"action\": {\n              \"type\": \"$render\",\n              \"options\": {\n                \"template\": \"horizontal\"\n              }\n            }\n          }, {\n            \"type\": \"label\",\n            \"text\": \"Vertical\",\n            \"class\": \"labels right\",\n            \"action\": {\n              \"type\": \"$render\"\n            }\n          }],\n          \"sections\": [{\n            \"header\": {\n              \"type\": \"image\",\n              \"url\": \"https://jasonette.github.io/Jasonpedia/assets/simpsons.jpg\",\n              \"style\": {\n                \"width\": \"100%\",\n                \"padding\": \"0\",\n                \"z_index\": \"-1\"\n              }\n            },\n            \"items\": {\n              \"{{#each members}}\": {\n                \"type\": \"horizontal\",\n                \"style\": {\n                  \"background\": \"#ffffff\"\n                },\n                \"components\": [{\n                  \"type\": \"image\",\n                  \"url\": \"{{image}}\",\n                  \"style\": {\n                    \"width\": \"180\",\n                    \"height\": \"180\",\n                    \"padding\": \"10\",\n                    \"corner_radius\": \"90\"\n                  }\n                }, {\n                  \"type\": \"label\",\n                  \"text\": \"{{name}}\",\n                  \"style\": {\n                    \"font\": \"ChalkboardSE-Bold\",\n                    \"size\": \"25\",\n                    \"padding\": \"10\",\n                    \"color\": \"#1192f0\"\n                  }\n                }]\n              }\n            }\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "core/snapshot/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Snapshot\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"padding\": \"10\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        },\n        \"$pull\": {\n          \"type\": \"$snapshot\",\n          \"success\": {\n            \"type\": \"$util.share\",\n            \"options\": {\n              \"items\": [\n                {\n                  \"type\": \"image\",\n                  \"data\": \"{{$jason.data}}\"\n                }\n              ]\n            }\n          }\n        }\n      }\n    },\n    \"body\": {\n      \"style\": {\n        \"border\": \"none\"\n      },\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/core/snapshot/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"class\": \"bold\",\n              \"text\": \"Swipe down to take a snapshot and share\"\n            },\n            {\n              \"type\": \"image\",\n              \"url\": \"https://pbs.twimg.com/media/Cu0xSA3WEAAVyA9.jpg\",\n              \"style\": {\n                \"width\": \"100%\"\n              }\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "demo.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Jasopedia\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"size\": \"15\"\n        },\n        \"padded\": {\n          \"padding\": \"10\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"title\": \"Jasonpedia\",\n        \"style\": {\n          \"background\": \"#8bb92d\",\n          \"color\": \"#ffffff\",\n          \"font\": \"AvenirNext-Bold\",\n          \"size\": \"14\"\n        },\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/demo.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"type\": \"vertical\",\n              \"style\": {\n                \"background\": \"rgba(14,122,254,0.1)\",\n                \"padding\": \"20\"\n              },\n              \"href\": {\n                \"url\": \"mailto:?subject=Documentation&body=https://jasonette.github.io/documentation\",\n                \"view\": \"app\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"label\",\n                  \"text\": \"Send yourself Documentation\",\n                  \"class\": \"bold\",\n                  \"style\": {\n                    \"color\": \"rgb(14,122,254)\"\n                  }\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"header\": {\n            \"type\": \"vertical\",\n            \"style\": {\n              \"background\": \"#ebebeb\"\n            },\n            \"components\": [{\n              \"type\": \"label\",\n              \"class\": \"bold\",\n              \"text\": \"Tutorial\"\n            }, {\n              \"type\": \"label\",\n              \"class\": \"normal\",\n              \"text\": \"Simple demos to demonstrate how each module works. Also used for testing purposes.\"\n            }]\n          },\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"Core\",\n              \"class\": \"bold padded\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/core/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"View\",\n              \"class\": \"bold padded\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Action\",\n              \"class\": \"bold padded\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Template\",\n              \"class\": \"bold padded\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/template/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Web Container\",\n              \"class\": \"bold padded\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/index.json\"\n              }\n            }\n          ]\n        },\n        {\n          \"header\": {\n            \"type\": \"vertical\",\n            \"style\": {\n              \"background\": \"#ebebeb\"\n            },\n            \"components\": [{\n              \"type\": \"label\",\n              \"class\": \"bold\",\n              \"text\": \"Showcase\"\n            }, {\n              \"type\": \"label\",\n              \"class\": \"normal\",\n              \"text\": \"Wrote a cool/useful JSON markup? Send a pull request to https://github.com/Jasonette/Jasonpedia\"\n            }]\n          },\n          \"items\": [{\n            \"type\": \"label\",\n            \"text\": \"Instagram\",\n            \"href\": {\n              \"url\": \"https://raw.githubusercontent.com/Jasonette/Instagram-UI-example/master/home.json\",\n              \"transition\": \"modal\"\n            }\n          }, {\n            \"type\": \"label\",\n            \"text\": \"Twitter\",\n            \"href\": {\n              \"url\": \"https://raw.githubusercontent.com/Jasonette/Twitter-UI-example/master/home.json\",\n              \"transition\": \"modal\"\n            }\n          }]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "hello.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"{ ˃̵̑ᴥ˂̵̑}\",\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        }\n      }\n    },\n    \"body\": {\n      \"style\": {\n        \"background\": \"#ffffff\",\n        \"border\": \"none\"\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"type\": \"vertical\",\n              \"style\": {\n                \"padding\": \"30\",\n                \"spacing\": \"20\",\n                \"align\": \"center\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"label\",\n                  \"text\": \"It's ALIVE!\",\n                  \"style\": {\n                    \"align\": \"center\",\n                    \"font\": \"Courier-Bold\",\n                    \"size\": \"18\"\n                  }\n                },\n                {\n                  \"type\": \"label\",\n                  \"text\": \"This is a demo app. You can make your own app by changing the url inside settings.plist\",\n                  \"style\": {\n                    \"align\": \"center\",\n                    \"font\": \"Courier\",\n                    \"padding\": \"30\",\n                    \"size\": \"14\"\n                  }\n                },\n                {\n                  \"type\": \"label\",\n                  \"text\": \"{ ˃̵̑ᴥ˂̵̑}\",\n                  \"style\": {\n                    \"align\": \"center\",\n                    \"font\": \"HelveticaNeue-Bold\",\n                    \"size\": \"50\"\n                  }\n                }\n              ]\n            },\n            {\n              \"type\": \"label\",\n              \"style\": {\n                \"align\": \"right\",\n                \"padding\": \"10\",\n                \"color\": \"#000000\",\n                \"font\": \"HelveticaNeue\",\n                \"size\": \"12\"\n              },\n              \"text\": \"Check out Live DEMO\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/demo.json\",\n                \"fresh\": \"true\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"style\": {\n                \"align\": \"right\",\n                \"padding\": \"10\",\n                \"color\": \"#000000\",\n                \"font\": \"HelveticaNeue\",\n                \"size\": \"12\"\n              },\n              \"text\": \"Watch the tutorial video\",\n              \"href\": {\n                \"url\": \"https://www.youtube.com/watch?v=hfevBAAfCMQ\",\n                \"view\": \"Web\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"style\": {\n                \"align\": \"right\",\n                \"padding\": \"10\",\n                \"color\": \"#000000\",\n                \"font\": \"HelveticaNeue\",\n                \"size\": \"12\"\n              },\n              \"text\": \"View documentation\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/documentation\",\n                \"view\": \"Web\"\n              }\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "template/csv",
    "content": "name, descrption, url, icon\nFKA Twigs, The artist formerly known as Twigs, https://en.wikipedia.org/wiki/FKA_Twigs, https://jasonette.github.io/Jasonpedia/assets/twigs.png\n?, The artist formerly known as Prince, https://en.wikipedia.org/wiki/Prince_(musician), https://jasonette.github.io/Jasonpedia/assets/prince.png\nG, The artist formerly known as Google, https://www.google.com, https://jasonette.github.io/Jasonpedia/assets/g.png \nSnap, The artist formerly known as Snapchat, https://www.snapchat.com, https://jasonette.github.io/Jasonpedia/assets/snapchat.png \n"
  },
  {
    "path": "template/csv.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"CSV parser\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$network.request\",\n          \"options\": {\n            \"url\": \"https://jasonette.github.io/Jasonpedia/template/csv\",\n            \"dataType\": \"raw\"\n          },\n          \"success\": {\n            \"type\": \"$convert.csv\",\n            \"options\": {\n              \"data\": \"{{$jason}}\"\n            },\n            \"success\": {\n              \"type\": \"$render\"\n            }\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"title\": \"FKA\",\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/template/csv.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"sections\": [\n            {\n              \"header\": {\n                \"type\": \"horizontal\",\n                \"style\": {\n                  \"background\": \"rgba(14,122,254,0.1)\",\n                  \"padding\": \"20\"\n                },\n                \"components\": [{\n                  \"style\": {\n                    \"size\": \"12\"\n                  },\n                  \"type\": \"label\",\n                  \"text\": \"This demo parses a CSV at https://github.com/Jasonette/Jasonpedia/blob/gh-pages/template/csv and renders it as JSON\"\n                }]\n              },\n              \"items\": {\n                \"{{#each $jason}}\": {\n                  \"type\": \"horizontal\",\n                  \"href\": {\n                    \"url\": \"{{url}}\",\n                    \"view\": \"Web\"\n                  },\n                  \"style\": {\n                    \"padding\": \"10\",\n                    \"spacing\": \"5\"\n                  },\n                  \"components\": [\n                    {\n                      \"type\": \"image\",\n                      \"style\": {\n                        \"width\": \"50\"\n                      },\n                      \"url\": \"{{icon}}\"\n                    },\n                    {\n                      \"type\": \"vertical\",\n                      \"components\": [\n                        {\n                          \"type\": \"label\",\n                          \"text\": \"{{name}}\",\n                          \"style\": {\n                            \"font\": \"HelveticaNeue-Bold\",\n                            \"size\": \"14\"\n                          }\n                        },\n                        {\n                          \"type\": \"label\",\n                          \"text\": \"{{descrption}}\",\n                          \"style\": {\n                            \"font\": \"HelveticaNeue\",\n                            \"size\": \"13\"\n                          }\n                        }\n                      ]\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "template/each.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"#each\",\n      \"data\": {\n        \"users\": [{\n          \"profile\": \"https://pbs.twimg.com/profile_images/557061751150112768/eMwi4Xz2_400x400.jpeg\",\n          \"username\": \"gliechtenstein\"\n        }, {\n          \"profile\": \"https://pbs.twimg.com/profile_images/660748555452223488/seiYgVbF.png\",\n          \"username\": \"thinkpiecebot\"\n        }, {\n          \"profile\": \"https://pbs.twimg.com/profile_images/693649835086360577/xPofOC6p.png\",\n          \"username\": \"catsnacks\"\n        }]\n      },\n      \"templates\": {\n        \"body\": {\n          \"sections\": [{\n            \"items\": {\n              \"{{#each users}}\": {\n                \"type\": \"horizontal\",\n                \"style\": {\n                  \"spacing\": \"10\"\n                },\n                \"components\": [{\n                  \"type\": \"image\",\n                  \"style\": {\n                    \"width\": \"50\"\n                  },\n                  \"url\": \"{{profile}}\"\n                }, {\n                  \"type\": \"label\",\n                  \"text\": \"{{username}}\"\n                }]\n              }\n            }\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "template/html.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"HTML Template\",\n      \"actions\": {\n        \"$pull\": {\n          \"trigger\": \"reload\"\n        },\n        \"$show\": {\n          \"trigger\": \"reload\"\n        },\n        \"reload\": {\n          \"type\": \"$network.request\",\n          \"options\": {\n            \"url\": \"https://news.ycombinator.com/newest\",\n            \"dataType\": \"html\"\n          },\n          \"success\": {\n            \"type\": \"$render\",\n            \"options\": {\n              \"type\": \"html\"\n            },\n            \"success\": {\n              \"type\": \"$util.toast\",\n              \"options\": {\n                \"text\": \"Refreshed\"\n              }\n            }\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"title\": \"HN\",\n            \"style\": {\n              \"background\": \"rgb(246, 246, 239)\",\n              \"theme\": \"light\",\n              \"color\": \"#000000\"\n            },\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/template/html.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"style\": {\n            \"background\": \"rgb(246, 246, 239)\",\n            \"color\": \"#000000\",\n            \"border\": \"none\"\n          },\n          \"sections\": [\n            {\n              \"header\": {\n                \"type\": \"horizontal\",\n                \"style\": {\n                  \"background\": \"rgba(14,122,254,0.1)\",\n                  \"padding\": \"20\"\n                },\n                \"components\": [\n                  {\n                    \"style\": {\n                      \"size\": \"12\"\n                    },\n                    \"type\": \"label\",\n                    \"text\": \"This demo parses an HTML content loaded from Hacker News (https://news.ycombinator.com) and renders it into native view\"\n                  }\n                ]\n              },\n              \"items\": {\n                \"{{#each $jason.find('tr.athing')}}\": {\n                  \"type\": \"horizontal\",\n                  \"href\": {\n                    \"url\": \"https://news.ycombinator.com/{{$(this).next().find('.subtext .age a').attr('href')}}\",\n                    \"view\": \"Web\"\n                  },\n                  \"menu\": {\n                    \"items\": [\n                      {\n                        \"text\": \"Visit\\nSite\",\n                        \"action\": {\n                          \"type\": \"$href\",\n                          \"options\": {\n                            \"url\": \"{{$(this).find('td.title a').attr('href')}}\",\n                            \"view\": \"Web\"\n                          }\n                        }\n                      }\n                    ]\n                  },\n                  \"style\": {\n                    \"padding\": \"4\",\n                    \"spacing\": \"10\",\n                    \"color\": \"#ff6600\",\n                    \"background\": \"rgb(246, 246, 239)\"\n                  },\n                  \"components\": [\n                    {\n                      \"type\": \"label\",\n                      \"style\": {\n                        \"font\": \"HelveticaNeue-Bold\",\n                        \"size\": \"10\",\n                        \"padding\": \"10\",\n                        \"width\": \"50\"\n                      },\n                      \"text\": \"{{($(this).next().find('.subtext .score').text().split(' ')[0]).toString()+'\\\\npoints'}}\"\n                    },\n                    {\n                      \"type\": \"vertical\",\n                      \"style\": {\n                        \"spacing\": \"5\"\n                      },\n                      \"components\": [\n                        {\n                          \"type\": \"label\",\n                          \"text\": \"{{$(this).find('td.title > a').text()}}\",\n                          \"style\": {\n                            \"font\": \"HelveticaNeue-Bold\",\n                            \"color\": \"#ff6600\",\n                            \"size\": \"16\"\n                          }\n                        },\n                        {\n                          \"type\": \"label\",\n                          \"style\": {\n                            \"color\": \"#aaaaaa\",\n                            \"font\": \"HelveticaNeue\",\n                            \"size\": \"13\"\n                          },\n                          \"text\": \"{{$(this).find('td.title .sitebit').text() + '   ' + $(this).next().find('.subtext').find(':nth-child(3)').text()}}\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "template/if.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"#if\",\n      \"data\": {\n        \"users\": [{\n          \"profile\": \"https://pbs.twimg.com/profile_images/557061751150112768/eMwi4Xz2_400x400.jpeg\",\n          \"username\": \"gliechtenstein\"\n        }, {\n          \"username\": \"guest\" \n        }, {\n          \"profile\": \"https://pbs.twimg.com/profile_images/693649835086360577/xPofOC6p.png\",\n          \"username\": \"catsnacks\"\n        }, {\n          \"username\": \"guest\" \n        }, {\n          \"username\": \"guest\" \n        }]\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"title\": \"#if/#elseif/#else\",\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/template/if.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"sections\": [{\n            \"header\": {\n              \"type\": \"label\",\n              \"text\": \"What's going on here:\\n\\nDisplay the default avatar (egg) for those who don't have an avatar, using the #if and #else logic (view JSON for more)\",\n              \"style\": {\n                \"background\": \"#f5f5f5\"\n              }\n            },\n            \"items\": {\n              \"{{#each users}}\": {\n                \"type\": \"horizontal\",\n                \"style\": {\n                  \"spacing\": \"10\"\n                },\n                \"components\": [{\n                  \"type\": \"image\",\n                  \"style\": {\n                    \"width\": \"50\"\n                  },\n                  \"url\": [{\n                    \"{{#if 'profile' in this}}\": \"{{profile}}\"\n                  }, {\n                    \"{{#else}}\": \"https://jasonette.github.io/Jasonpedia/assets/egg.png\"\n                  }]\n                }, {\n                  \"type\": \"vertical\",\n                  \"style\": {\n                    \"spacing\": \"5\"\n                  },\n                  \"components\": [{\n                    \"type\": \"label\",\n                    \"style\": {\n                      \"font\": \"HelveticaNeue-Bold\",\n                      \"size\": \"12\"\n                    },\n                    \"text\": \"{{username}}\"\n                  }, {\n                    \"type\": \"label\",\n                    \"style\": {\n                      \"background\": \"#282828\",\n                      \"corner_radius\": \"3\",\n                      \"color\": \"#c5d3d8\",\n                      \"padding\": \"10\",\n                      \"size\": \"12\",\n                      \"font\": \"Courier\"\n                    },\n                    \"text\": \"JSON:\\n\\n{{JSON.stringify(this, null, '  ')}}\"\n                  }]\n                }]\n              }\n            }\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "template/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Template\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        },\n        \"gray\": {\n          \"background\": \"#f5f5f5\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        },\n        \"$pull\": {\n          \"type\": \"$flush\",\n          \"success\": {\n            \"type\": \"$reload\"\n          }\n        }\n      },\n      \"data\": {\n        \"json_items\": [{\n          \"title\": \"Inline Data\",\n          \"description\": \"Render inline data ($jason.head.data) using template\",\n          \"url\": \"https://jasonette.github.io/Jasonpedia/template/inline.json\"\n        }, {\n          \"title\": \"Dynamic Data\",\n          \"description\": \"Make a $network.request action to an API and render the template\",\n          \"url\": \"https://jasonette.github.io/Jasonpedia/template/network.json\"\n        }, {\n          \"title\": \"#each\",\n          \"description\": \"Loop through array using #each keyword\",\n          \"url\": \"https://jasonette.github.io/Jasonpedia/template/each.json\"\n        }, {\n          \"title\": \"#if | #elseif | #else\",\n          \"description\": \"Use the conditionals to selectively render templates\",\n          \"url\": \"https://jasonette.github.io/Jasonpedia/template/if.json\"\n        }, {\n          \"title\": \"Use Javascript expressions\",\n          \"description\": \"Jasonette template engine is built on top of native Javascript engine, so you can use any Javascript expression inside {{ }}\",\n          \"url\": \"https://jasonette.github.io/Jasonpedia/template/js.json\"\n        }, {\n          \"title\": \"Javascript function example\",\n          \"description\": \"Sometimes, just a single Javascript statement is not enough. You can embed a full Javascript function inside {{ }}. Just remember to have a return value, and escape them correctly\",\n          \"url\": \"https://jasonette.github.io/Jasonpedia/template/jsfunction.json\"\n        }],\n        \"nonjson_items\": [{\n          \"title\": \"HTML\",\n          \"description\": \"Transform any HTML content into JSON, which then can be rendered\",\n          \"url\": \"https://jasonette.github.io/Jasonpedia/template/html.json\"\n        }, {\n          \"title\": \"RSS\",\n          \"description\": \"Transform any RSS content into JSON, which then can be rendered\",\n          \"url\": \"https://jasonette.github.io/Jasonpedia/template/rss.json\"\n        }, {\n          \"title\": \"CSV\",\n          \"description\": \"Transform any CSV content into JSON, which then can be rendered\",\n          \"url\": \"https://jasonette.github.io/Jasonpedia/template/csv.json\"\n        }]\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/template/index.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"sections\": [\n            {\n              \"header\": {\n                \"type\": \"horizontal\",\n                \"style\": {\n                  \"background\": \"rgba(14,122,254,0.1)\",\n                  \"padding\": \"20\"\n                },\n                \"components\": [{\n                  \"style\": {\n                    \"size\": \"12\"\n                  },\n                  \"type\": \"label\",\n                  \"text\": \"Note: These demos demonstrate how you can use templates to build a view. The apps themselves will look the same as those not using templates, you will need to look at the JSON to see the difference\"\n                }]\n              }\n            }, {\n              \"header\": {\n                \"type\": \"label\",\n                \"class\": \"normal gray\",\n                \"text\": \"JSON Templating\"\n              },\n              \"items\": {\n                \"{{#each json_items}}\": {\n                  \"type\": \"vertical\",\n                  \"href\": {\n                    \"url\": \"{{url}}\"\n                  },\n                  \"components\": [{\n                    \"type\": \"label\",\n                    \"text\": \"{{title}}\",\n                    \"class\": \"bold\"\n                  }, {\n                    \"type\": \"label\",\n                    \"text\": \"{{description}}\",\n                    \"class\": \"normal\"\n                  }]\n                }\n              }\n            }, {\n              \"header\": {\n                \"type\": \"label\",\n                \"class\": \"normal gray\",\n                \"text\": \"Non-JSON Templating\"\n              },\n              \"items\": {\n                \"{{#each nonjson_items}}\": {\n                  \"type\": \"vertical\",\n                  \"href\": {\n                    \"url\": \"{{url}}\"\n                  },\n                  \"components\": [{\n                    \"type\": \"label\",\n                    \"text\": \"{{title}}\",\n                    \"class\": \"bold\"\n                  }, {\n                    \"type\": \"label\",\n                    \"text\": \"{{description}}\",\n                    \"class\": \"normal\"\n                  }]\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "template/inline.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Inline Template\",\n      \"data\": {\n        \"profile\": \"https://pbs.twimg.com/profile_images/557061751150112768/eMwi4Xz2_400x400.jpeg\",\n        \"username\": \"ethan\"\n      },\n      \"templates\": {\n        \"body\": {\n          \"sections\": [{\n            \"items\": [{\n              \"type\": \"horizontal\",\n              \"style\": {\n                \"spacing\": \"10\"\n              },\n              \"components\": [{\n                \"type\": \"image\",\n                \"style\": {\n                  \"width\": \"50\"\n                },\n                \"url\": \"{{profile}}\"\n              }, {\n                \"type\": \"label\",\n                \"text\": \"{{username}}\"\n              }]\n            }]\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "template/js.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Javascript\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$geo.get\",\n          \"options\": {\n            \"distance\": \"100\"\n          },\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"title\": \"Simple Javascript\",\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/template/js.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"sections\": [{\n            \"items\": [{\n              \"type\": \"vertical\",\n              \"style\": {\n                \"spacing\": \"5\"\n              },\n              \"components\": [{\n                \"type\": \"label\",\n                \"text\": \"We want to take the following return value from $geo.get\"\n              }, {\n                \"type\": \"label\",\n                \"style\": {\n                  \"background\": \"#282828\",\n                  \"corner_radius\": \"3\",\n                  \"color\": \"#c5d3d8\",\n                  \"padding\": \"10\",\n                  \"size\": \"12\",\n                  \"font\": \"Courier\"\n                },\n                \"text\": \"{{JSON.stringify($jason, null, '  ')}}\"\n              }, {\n                \"type\": \"label\",\n                \"text\": \"And add an emoji in between the latitude and longitude. To do that we will use Javascript split function to split the string and reconstruct a string with the emoji included.\"\n              }]\n            }, {\n              \"type\": \"vertical\",\n              \"style\": {\n                \"spacing\": \"5\"\n              },\n              \"components\": [{\n                \"type\": \"label\",\n                \"text\": \"Evaluated Result\",\n                \"style\": {\n                  \"font\": \"HelveticaNeue-Bold\",\n                  \"size\": \"12\"\n                }\n              }, {\n                \"type\": \"label\",\n                \"style\": {\n                  \"background\": \"#282828\",\n                  \"corner_radius\": \"3\",\n                  \"color\": \"#c5d3d8\",\n                  \"padding\": \"10\",\n                  \"size\": \"12\",\n                  \"font\": \"Courier\"\n                },\n                \"text\": \"{{$jason.coord.split(',')[0] + '📍' + $jason.coord.split(',')[1]}}\"\n              }, {\n                \"type\": \"label\",\n                \"text\": \"View JSON to see the actual javascript expression that evaluated to below:\"\n              }]\n            }]\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "template/jsfunction.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Javascript Function\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$geo.get\",\n          \"options\": {\n            \"distance\": \"100\"\n          },\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"title\": \"Simple Javascript\",\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/template/jsfunction.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"sections\": [{\n            \"header\": {\n              \"type\": \"label\",\n              \"text\": \"This time, a bit more complex Javascript. We will implement an entire function\",\n              \"style\": {\n                \"background\": \"#f5f5f5\",\n                \"padding\": \"20\"\n              }\n            },\n            \"items\": [{\n              \"type\": \"vertical\",\n              \"style\": {\n                \"spacing\": \"5\"\n              },\n              \"components\": [{\n                \"type\": \"label\",\n                \"text\": \"Let's try a function with a for loop\"\n              }, {\n                \"type\": \"label\",\n                \"style\": {\n                  \"background\": \"#282828\",\n                  \"corner_radius\": \"3\",\n                  \"color\": \"#c5d3d8\",\n                  \"padding\": \"10\",\n                  \"size\": \"12\",\n                  \"font\": \"Courier\"\n                },\n                \"text\": \"var items=[]; for(var i=0; i<10; i++){items.push(i);} return JSON.stringify(items);\"\n              }]\n            }, {\n              \"type\": \"vertical\",\n              \"style\": {\n                \"spacing\": \"5\"\n              },\n              \"components\": [{\n                \"type\": \"label\",\n                \"text\": \"Evaluated Result\",\n                \"style\": {\n                  \"font\": \"HelveticaNeue-Bold\",\n                  \"size\": \"12\"\n                }\n              }, {\n                \"type\": \"label\",\n                \"style\": {\n                  \"background\": \"#282828\",\n                  \"corner_radius\": \"3\",\n                  \"color\": \"#c5d3d8\",\n                  \"padding\": \"10\",\n                  \"size\": \"12\",\n                  \"font\": \"Courier\"\n                },\n                \"text\": \"{{var items=[]; for(var i=0; i<10; i++){items.push(i);} return JSON.stringify(items);}}\"\n              }, {\n                \"type\": \"label\",\n                \"text\": \"View the JSON to see the actual javascript expression that evaluated to below:\"\n              }]\n            }]\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "template/network.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"JSONPlaceholder demo\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$network.request\",\n          \"options\": {\n            \"url\": \"http://jsonplaceholder.typicode.com/photos\"\n          },\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"style\": {\n            \"border\": \"none\"\n          },\n          \"header\": {\n            \"title\": \"network request & render\",\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/template/network.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"sections\": [\n            {\n              \"header\": {\n                \"type\": \"label\",\n                \"text\": \"This example fetches content from http://jsonplaceholder.typicode.com/photos and renders its results dynamically. View JSON for more details\",\n                \"style\": {\n                  \"background\": \"#f5f5f5\",\n                  \"padding\": \"20\"\n                }\n              },\n              \"items\": {\n                \"{{#each $jason}}\": {\n                  \"type\": \"horizontal\",\n                  \"style\": {\n                    \"padding\": \"10\",\n                    \"spacing\": \"10\"\n                  },\n                  \"components\": [\n                    {\n                      \"type\": \"image\",\n                      \"style\": {\n                        \"width\": \"50\"\n                      },\n                      \"url\": \"{{thumbnailUrl}}\"\n                    },\n                    {\n                      \"type\": \"label\",\n                      \"style\": {\n                        \"size\": \"14\"\n                      },\n                      \"text\": \"{{title}}\"\n                    }\n                  ],\n                  \"action\": {\n                    \"type\": \"$widget.banner\",\n                    \"options\": {\n                      \"title\": \"You selected\",\n                      \"description\": \"{{title}}\"\n                    }\n                  }\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "template/rss.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"RSS Reader\",\n      \"actions\": {\n        \"$pull\": {\n          \"trigger\": \"reload\"\n        },\n        \"$load\": {\n          \"trigger\": \"reload\"\n        },\n        \"reload\": {\n          \"type\": \"$network.request\",\n          \"options\": {\n            \"url\": \"https://pitchfork.com/rss/reviews/albums/\",\n            \"dataType\": \"rss\"\n          },\n          \"success\": {\n            \"type\": \"$convert.rss\",\n            \"options\": {\n              \"data\": \"{{$jason}}\"\n            },\n            \"success\": {\n              \"type\": \"$render\"\n            }\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"style\": {\n              \"background\": \"rgb(246, 246, 239)\",\n              \"theme\": \"light\",\n              \"color\": \"#000000\"\n            },\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/template/rss.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"style\": {\n            \"background\": \"rgb(246, 246, 239)\",\n            \"color\": \"#000000\",\n            \"border\": \"0\"\n          },\n          \"sections\": {\n            \"{{#each $jason}}\": {\n              \"header\": {\n                \"type\": \"vertical\",\n                \"style\": {\n                  \"background\": \"#ffffff\",\n                  \"padding\": \"10\"\n                },\n                \"components\": [\n                  {\n                    \"type\": \"label\",\n                    \"style\": {\n                      \"font\": \"HelveticaNeue-Bold\",\n                      \"size\": \"20\"\n                    },\n                    \"text\": \"{{title}}\"\n                  },\n                  {\n                    \"type\": \"label\",\n                    \"text\": \"{{author}}\"\n                  }\n                ]\n              },\n              \"items\": [\n                {\n                  \"type\": \"image\",\n                  \"url\": \"{{image.url}}\"\n                }\n              ]\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "view/background/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Background Styling Example\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"bg\": \"#00ff00\"\n          },\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"style\": {\n              \"background\": \"rgba(0,0,0,0)\",\n              \"color\": \"#ffffff\"\n            },\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/view/background/index.json\",\n                \"view\": \"web\"\n              },\n              \"style\": {\n                \"color\": \"#ffffff\"\n              }\n            }\n          },\n          \"style\": {\n            \"background\": \"{{$get.bg}}\"\n          },\n          \"layers\": [\n            {\n              \"type\": \"button\",\n              \"url\": \"https://s3.amazonaws.com/www.textcast.co/icons/camera%402x.png\",\n              \"style\": {\n                \"left\": \"20\",\n                \"bottom\": \"20\",\n                \"width\": \"30\",\n                \"height\": \"30\",\n                \"color\": \"#ffffff\"\n              },\n              \"action\": {\n                \"type\": \"$snapshot\",\n                \"success\": {\n                  \"type\": \"$util.share\",\n                  \"options\": {\n                    \"items\": [\n                      {\n                        \"type\": \"image\",\n                        \"data\": \"{{$jason.data}}\"\n                      }\n                    ]\n                  }\n                }\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Red\",\n              \"style\": {\n                \"background\": \"rgba(0,0,0,0.7)\",\n                \"color\": \"#ff0000\",\n                \"padding\": \"10\",\n                \"right\": \"20\",\n                \"font\": \"HelveticaNeue-Bold\",\n                \"bottom\": \"220\"\n              },\n              \"action\": {\n                \"type\": \"$set\",\n                \"options\": {\n                  \"bg\": \"#ff0000\"\n                },\n                \"success\": {\n                  \"type\": \"$render\"\n                }\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Green\",\n              \"style\": {\n                \"background\": \"rgba(0,0,0,0.7)\",\n                \"color\": \"#00ff00\",\n                \"padding\": \"10\",\n                \"right\": \"20\",\n                \"font\": \"HelveticaNeue-Bold\",\n                \"bottom\": \"170\"\n              },\n              \"action\": {\n                \"type\": \"$set\",\n                \"options\": {\n                  \"bg\": \"#00ff00\"\n                },\n                \"success\": {\n                  \"type\": \"$render\"\n                }\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Cat\",\n              \"style\": {\n                \"background\": \"rgba(0,0,0,0.7)\",\n                \"color\": \"#ffffff\",\n                \"right\": \"20\",\n                \"padding\": \"10\",\n                \"font\": \"HelveticaNeue-Bold\",\n                \"bottom\": \"120\"\n              },\n              \"action\": {\n                \"type\": \"$set\",\n                \"options\": {\n                  \"bg\": \"http://i.giphy.com/Is0AJv4CEj9hm.gif\"\n                },\n                \"success\": {\n                  \"type\": \"$render\"\n                }\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Camera\",\n              \"style\": {\n                \"background\": \"rgba(0,0,0,0.7)\",\n                \"color\": \"#ffffff\",\n                \"right\": \"20\",\n                \"padding\": \"10\",\n                \"font\": \"HelveticaNeue-Bold\",\n                \"bottom\": \"70\"\n              },\n              \"action\": {\n                \"type\": \"$set\",\n                \"options\": {\n                  \"bg\": {\n                    \"type\": \"camera\",\n                    \"options\": {\n                      \"device\": \"back\"\n                    }\n                  }\n                },\n                \"success\": {\n                  \"type\": \"$render\"\n                }\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Mirror\",\n              \"style\": {\n                \"background\": \"rgba(0,0,0,0.7)\",\n                \"color\": \"#ffffff\",\n                \"right\": \"20\",\n                \"padding\": \"10\",\n                \"font\": \"HelveticaNeue-Bold\",\n                \"bottom\": \"20\"\n              },\n              \"action\": {\n                \"type\": \"$set\",\n                \"options\": {\n                  \"bg\": {\n                    \"type\": \"camera\"\n                  }\n                },\n                \"success\": {\n                  \"type\": \"$render\"\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "view/component/button/1.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Rectangle Button\"\n    },\n    \"body\": {\n      \"sections\": [{\n        \"items\": [{\n          \"type\": \"vertical\",\n          \"style\": {\n            \"align\": \"center\"\n          },\n          \"components\": [{ \n            \"type\": \"button\",\n            \"style\": {\n              \"width\": \"200\",\n              \"height\": \"100\",\n              \"background\": \"#00ff00\",\n              \"color\": \"#ffffff\",\n              \"font\": \"HelveticaNeue-Bold\",\n              \"size\": \"15\"\n            },\n            \"text\": \"I'm a button\"\n          }]\n        }]\n      }]\n    }\n  }\n}\n"
  },
  {
    "path": "view/component/button/2.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Rounded Button\"\n    },\n    \"body\": {\n      \"sections\": [{\n        \"items\": [{\n          \"type\": \"vertical\",\n          \"style\": {\n            \"align\": \"center\"\n          },\n          \"components\": [{\n            \"type\": \"button\",\n            \"style\": {\n              \"font\": \"HelveticaNeue-Bold\",\n              \"background\": \"#0000ff\",\n              \"color\": \"#ffffff\",\n              \"width\": \"200\",\n              \"height\": \"200\",\n              \"corner_radius\": \"100\",\n              \"size\": \"15\"\n            },\n            \"text\": \"YES\"\n          }]\n        }]\n      }]\n    }\n  }\n}\n"
  },
  {
    "path": "view/component/button/3.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Mario Button\"\n    },\n    \"body\": {\n      \"style\": {\n        \"border\": \"none\"\n      },\n      \"header\": {\n        \"style\": {\n          \"shy\": \"true\"\n        }\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"type\": \"image\",\n              \"style\": {\n                \"padding\": \"0\",\n                \"width\": \"100%\",\n                \"z_index\": \"-1\"\n              },\n              \"url\": \"http://cdn.bgr.com/2016/09/super-mario-run.jpg?quality=98&strip=all\"\n            },\n            {\n              \"type\": \"vertical\",\n              \"style\": {\n                \"padding\": \"20\",\n                \"spacing\": \"20\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"label\",\n                  \"text\": \"There are two types of buttons, and we'll show you how they work\",\n                  \"style\": {\n                    \"font\": \"HelveticaNeue-Bold\",\n                    \"size\": \"40\"\n                  }\n                },\n                {\n                  \"type\": \"label\",\n                  \"text\": \"There are two types of buttons: image type and text type. You can build them both simply by specifying the type as 'button'. But the difference is what comes next. If the button contains a 'url' attribute, it will be rendered as an image button, like the Mario button below. If the button contains a 'text' attribute, it will be rendered as a text attribute, like the red 'Tap Mario' button below.\"\n                }\n              ]\n            },\n            {\n              \"type\": \"horizontal\",\n              \"style\": {\n                \"padding\": \"50\",\n                \"spacing\": \"20\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"button\",\n                  \"text\": \"Tap Mario =>\",\n                  \"style\": {\n                    \"font\": \"HelveticaNeue-Bold\",\n                    \"size\": \"20\",\n                    \"corner_radius\": \"3\",\n                    \"background\": \"#ff0000\"\n                  },\n                  \"action\": {\n                    \"type\": \"$util.alert\",\n                    \"options\": {\n                      \"title\": \"I said Mario!\",\n                      \"description\": \"Tap Mario, not the text.\"\n                    }\n                  }\n                },\n                {\n                  \"type\": \"button\",\n                  \"url\": \"https://jasonette.github.io/Jasonpedia/assets/0.png\",\n                  \"style\": {\n                    \"width\": \"50\"\n                  },\n                  \"action\": {\n                    \"type\": \"$audio.play\",\n                    \"options\": {\n                      \"url\": \"https://raw.githubusercontent.com/gliechtenstein/Sounds/master/oh_no.mp3\"\n                    }\n                  }\n                }\n              ]\n            },\n            {\n              \"type\": \"vertical\",\n              \"style\": {\n                \"spacing\": \"10\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"label\",\n                  \"text\": \"Label type buttons look like this in JSON:\"\n                },\n                {\n                  \"type\": \"label\",\n                  \"style\": {\n                    \"background\": \"#000000\",\n                    \"color\": \"#cecece\",\n                    \"size\": \"11\",\n                    \"padding\": \"10\",\n                    \"corner_radius\": \"3\"\n                  },\n                  \"text\": \"{\\\"type\\\": \\\"button\\\", \\\"text\\\": \\\"Tap Mario => \\\"}\"\n                }\n              ]\n            },\n            {\n              \"type\": \"vertical\",\n              \"style\": {\n                \"spacing\": \"10\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"label\",\n                  \"text\": \"Image type buttons look like this in JSON:\"\n                },\n                {\n                  \"type\": \"label\",\n                  \"style\": {\n                    \"background\": \"#000000\",\n                    \"color\": \"#cecece\",\n                    \"size\": \"11\",\n                    \"padding\": \"10\",\n                    \"corner_radius\": \"3\"\n                  },\n                  \"text\": \"{\\\"type\\\": \\\"button\\\", \\\"url\\\": \\\"https://jasonette.github.io/Jasonpedia/assets/0.png\\\"}\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "view/component/button/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Buttons\",\n      \"data\": {\n        \"items\": [\n          { \"type\": \"Rectangle button\", \"url\": \"https://jasonette.github.io/Jasonpedia/view/component/button/1.json\" },\n          { \"type\": \"Rounded button\", \"url\": \"https://jasonette.github.io/Jasonpedia/view/component/button/2.json\" },\n          { \"type\": \"Image button\", \"url\": \"https://jasonette.github.io/Jasonpedia/view/component/button/3.json\" }\n        ]\n      },\n      \"templates\": {\n        \"body\": {\n          \"sections\": [{\n            \"items\": {\n              \"{{#each items}}\": {\n                \"type\": \"label\",\n                \"style\": {\n                  \"padding\": \"10\",\n                  \"font\": \"HelveticaNeue-Bold\",\n                  \"size\": \"15\"\n                },\n                \"href\": {\n                  \"url\": \"{{url}}\"\n                },\n                \"text\": \"{{type}}\"\n              }\n            }\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "view/component/html/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"HTML\"\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/component/html/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [{\n        \"items\": [{\n          \"type\": \"html\",\n          \"css\": \"img{width: 100%;} p{font-family: Helvetica; font-size: 14px;}\",\n          \"text\": \"<img alt=\\\"\\\" src=\\\"https://cdn0.vox-cdn.com/thumbor/PPvtkzgfvglcclm7DNwByCxjY1M=/0x0:2500x1667/1310x873/cdn0.vox-cdn.com/uploads/chorus_image/image/51427661/nexus-6p-9736.0.0.jpg\\\" /> <p>Well it turns out Nexus devices <i>are</i> getting Android 7.1 at the same time as Google's new Pixel phones — or at least a developer preview build of it. This evening Google rolled out a preview release of 7.1 Nougat for the Nexus 6P, 5X, and Pixel C tablet. If your device is installed in the Android Beta program, you can install the update right now to get new features like Night Light, long-press app shortcuts, support for new circular icons, and optimizations to touch and display responsiveness among other changes.</p> <p>\\\"We’re delivering the initial Developer Preview at beta quality for the Nexus lineup of devices,\\\" Google's Dave Burke wrote in a <a href=\\\"http://android-developers.blogspot.com/2016/10/android71-dev-preview-available.html\\\" target=\\\"_blank\\\">blog post announcing the release</a>. \\\"The goal is to tease out any device-specific issues.\\\" There's a...</p> <p> <a href=\\\"http://www.theverge.com/circuitbreaker/2016/10/19/13340688/google-android-7-1-developer-preview-now-available\\\">Continue reading&hellip;</a> </p>\"\n        }]\n      }]\n    }\n  }\n}\n"
  },
  {
    "path": "view/component/image/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"image\"\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/component/image/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [{\n        \"header\": {\n          \"type\": \"label\",\n          \"style\": {\n            \"background\": \"#f5f5f5\"\n          },\n          \"text\": \"Full width image\"\n        },\n        \"items\": [{\n          \"type\": \"image\",\n          \"style\": {\n            \"width\": \"100%\",\n            \"padding\": \"0\"\n          },\n          \"url\": \"http://i8.mangareader.net/ito-junjis-cat-diary/1/ito-junjis-cat-diary-2241289.jpg\"\n        }]\n      }, {\n        \"header\": {\n          \"type\": \"label\",\n          \"style\": {\n            \"background\": \"#f5f5f5\"\n          },\n          \"text\": \"rounded image\"\n        },\n        \"items\": [{\n          \"type\": \"vertical\",\n          \"style\": {\n            \"padding\": \"50\",\n            \"background\": \"#0000ff\",\n            \"align\": \"center\"\n          },\n          \"components\": [{\n            \"type\": \"image\",\n            \"url\": \"https://pbs.twimg.com/profile_images/557061751150112768/eMwi4Xz2.jpeg\",\n            \"style\": {\n              \"width\": \"200\",\n              \"corner_radius\": \"100\"\n            }\n          }]\n        }]\n      }, {\n        \"header\": {\n          \"type\": \"label\",\n          \"style\": {\n            \"background\": \"#f5f5f5\"\n          },\n          \"text\": \"rounded image with transparency\"\n        },\n        \"items\": [{\n          \"type\": \"vertical\",\n          \"style\": {\n            \"padding\": \"50\",\n            \"background\": \"#0000ff\",\n            \"align\": \"center\"\n          },\n          \"components\": [{\n            \"type\": \"image\",\n            \"url\": \"https://pbs.twimg.com/profile_images/557061751150112768/eMwi4Xz2.jpeg\",\n            \"style\": {\n              \"width\": \"200\",\n              \"opacity\": \"0.3\",\n              \"corner_radius\": \"100\"\n            }\n          }]\n        }]\n      }, {\n        \"header\": {\n          \"type\": \"label\",\n          \"style\": {\n            \"background\": \"#f5f5f5\"\n          },\n          \"text\": \"animated gif\"\n        },\n        \"items\": [{\n          \"type\": \"image\",\n          \"url\": \"https://media.giphy.com/media/13CoXDiaCcCoyk/giphy.gif\",\n          \"style\": {\n            \"padding\": \"0\",\n            \"width\": \"100%\"\n          }\n        }]\n      }]\n    }\n  }\n}\n\n"
  },
  {
    "path": "view/component/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Component\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"padding\": \"10\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        },\n        \"$pull\": {\n          \"type\": \"$flush\",\n          \"success\": {\n            \"type\": \"$reload\"\n          }\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/component/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"label\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/component/label/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"image\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/component/image/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"button\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/component/button/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"html\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/component/html/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"map\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/component/map/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"slider\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/component/slider/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"textarea\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/component/textarea/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"textfield\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/component/textfield/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"space\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/component/space/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"common styling\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/component/style/index.json\"\n              }\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "view/component/label/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"label\"\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/component/label/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [{\n        \"items\": [{\n          \"type\": \"label\",\n          \"text\": \"Helvetica Neue Bold, 20, orange\",\n          \"style\": {\n            \"font\": \"HelveticaNeue-Bold\",\n            \"size\": \"20\",\n            \"padding\": \"20\",\n            \"color\": \"#FFA500\"\n          }\n        }, {\n          \"type\": \"label\",\n          \"text\": \"Helvetica Neue Bold, 20, orange, align: right\",\n          \"style\": {\n            \"font\": \"HelveticaNeue-Bold\",\n            \"align\": \"right\",\n            \"size\": \"20\",\n            \"padding\": \"20\",\n            \"color\": \"#FFA500\"\n          }\n        }, {\n          \"type\": \"label\",\n          \"text\": \"Helvetica Neue Bold, 20, orange, align: center\",\n          \"style\": {\n            \"font\": \"HelveticaNeue-Bold\",\n            \"align\": \"center\",\n            \"size\": \"20\",\n            \"padding\": \"20\",\n            \"color\": \"#FFA500\"\n          }\n        }, {\n          \"type\": \"label\",\n          \"text\": \"Courier, 13, green\",\n          \"style\": {\n            \"font\": \"Courier\",\n            \"size\": \"13\",\n            \"padding\": \"20\",\n            \"color\": \"#00ff00\"\n          }\n        }, {\n          \"type\": \"vertical\",\n          \"style\": {\n            \"align\": \"center\"\n          },\n          \"components\": [{\n            \"type\": \"label\",\n            \"text\": \"Helvetica Neue Bold, size:20, padding:30, background: #ebebeb\",\n            \"style\": {\n              \"font\": \"HelveticaNeue-Bold\",\n              \"size\": \"20\",\n              \"color\": \"#0000ff\",\n              \"padding\": \"30\",\n              \"background\": \"#ebebeb\"\n            }\n          }]\n        }, {\n          \"type\": \"vertical\",\n          \"style\": {\n            \"align\": \"center\"\n          },\n          \"components\": [{\n            \"type\": \"label\",\n            \"text\": \"Helvetica Neue, size:20, padding:80, corner_radius: 40, background: #ebebeb\",\n            \"style\": {\n              \"font\": \"HelveticaNeue-Bold\",\n              \"size\": \"20\",\n              \"color\": \"#0000ff\",\n              \"corner_radius\": \"40\",\n              \"padding\": \"90\",\n              \"background\": \"#ebebeb\"\n            }\n          }]\n        }]\n      }]\n    }\n  }\n}\n"
  },
  {
    "path": "view/component/map/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"map\",\n      \"styles\": {\n        \"padded\": {\n          \"padding\": \"20\",\n          \"font\": \"HelveticaNeue-Bold\",\n          \"size\": \"20\"\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/component/map/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [{\n        \"header\": {\n          \"type\": \"vertical\",\n          \"style\": {\n            \"padding\": \"0\"\n          },\n          \"components\": [{\n            \"type\": \"label\",\n            \"style\": {\n              \"background\": \"#f5f5f5\",\n              \"padding\": \"10\"\n            },\n            \"text\": \"Map in a header\"\n          }, {\n            \"type\": \"map\",\n            \"region\": {\n              \"coord\": \"40.7197614,-73.9909211\",\n              \"width\": \"200\",\n              \"height\": \"200\"\n            },\n            \"style\": {\n              \"width\": \"100%\",\n              \"height\": \"150\"\n            }\n          }]\n        },\n        \"items\": [{\n          \"type\": \"label\",\n          \"class\": \"padded\",\n          \"text\": \"scroll down to see more\"\n        }, {\n          \"type\": \"label\",\n          \"class\": \"padded\",\n          \"text\": \"scroll down to see more\"\n        }, {\n          \"type\": \"label\",\n          \"class\": \"padded\",\n          \"text\": \"scroll down to see more\"\n        }, {\n          \"type\": \"label\",\n          \"class\": \"padded\",\n          \"text\": \"scroll down to see more\"\n        }, {\n          \"type\": \"label\",\n          \"class\": \"padded\",\n          \"text\": \"scroll down to see more\"\n        }, {\n          \"type\": \"label\",\n          \"class\": \"padded\",\n          \"text\": \"scroll down to see more\"\n        }]\n      }, {\n        \"header\": {\n          \"type\": \"label\",\n          \"style\": {\n            \"background\": \"#f5f5f5\"\n          },\n          \"text\": \"Map with 200x200 region\"\n        },\n        \"items\": [{\n          \"type\": \"map\",\n          \"region\": {\n            \"coord\": \"40.7197614,-73.9909211\",\n            \"width\": \"200\",\n            \"height\": \"200\"\n          },\n          \"style\": {\n            \"width\": \"100%\",\n            \"height\": \"300\"\n          }\n        }]\n      }, {\n        \"header\": {\n          \"type\": \"label\",\n          \"style\": {\n            \"background\": \"#f5f5f5\"\n          },\n          \"text\": \"Map with pins\"\n        },\n        \"items\": [{\n          \"type\": \"map\",\n          \"region\": {\n            \"coord\": \"40.7197614,-73.9909211\",\n            \"width\": \"100\",\n            \"height\": \"100\"\n          },\n          \"pins\": [{\n            \"title\": \"This is a pin\",\n            \"description\": \"It really is.\",\n            \"coord\": \"40.7197614,-73.9909211\",\n            \"style\": {\n              \"selected\": \"true\"\n            }\n          }],\n          \"style\": {\n            \"width\": \"100%\",\n            \"height\": \"300\"\n          }\n        }]\n      }]\n    }\n  }\n}\n"
  },
  {
    "path": "view/component/slider/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Slider\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"align\": \"center\",\n          \"size\": \"40\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        },\n        \"$pull\": {\n          \"type\": \"$flush\",\n          \"success\": {\n            \"type\": \"$reload\"\n          }\n        },\n        \"$load\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"gauge\": \"0.2\"\n          },\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/component/slider/index.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"sections\": [{\n            \"header\": {\n              \"type\": \"label\",\n              \"class\": \"bold\",\n              \"text\": \"{{'' + $get.gauge}}\"\n            },\n            \"items\": [{\n              \"type\": \"slider\",\n              \"name\": \"gauge\",\n              \"style\": {\n                \"height\": \"100\",\n                \"width\": \"50%\",\n                \"align\": \"center\",\n                \"color\": \"#00ff00\"\n              },\n              \"action\": {\n                \"type\": \"$render\"\n              }\n            }, {\n              \"type\": \"slider\",\n              \"name\": \"gauge\",\n              \"style\": {\n                \"height\": \"100\",\n                \"width\": \"100%\",\n                \"align\": \"center\",\n                \"color\": \"#ff0000\"\n              },\n              \"action\": {\n                \"type\": \"$render\"\n              }\n            }]\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "view/component/space/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Space\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"padding\": \"10\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        },\n        \"$pull\": {\n          \"type\": \"$flush\",\n          \"success\": {\n            \"type\": \"$reload\"\n          }\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/component/space/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"header\": {\n            \"type\": \"label\",\n            \"text\": \"Fixed space\",\n            \"style\": {\n              \"background\": \"#f5f5f5\"\n            }\n          },\n          \"items\": [\n            {\n              \"type\": \"vertical\",\n              \"style\": {\n                \"padding\": \"0\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"label\",\n                  \"style\": {\n                    \"background\": \"#ebebeb\"\n                  },\n                  \"text\": \"50px Space below this point\",\n                  \"class\": \"bold\"\n                },\n                {\n                  \"type\": \"space\",\n                  \"style\": {\n                    \"height\": \"50\"\n                  }\n                },\n                {\n                  \"type\": \"label\",\n                  \"text\": \"50px Space above this point\",\n                  \"style\": {\n                    \"background\": \"#ebebeb\"\n                  },\n                  \"class\": \"bold\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"header\": {\n            \"type\": \"label\",\n            \"style\": {\n              \"background\": \"#f5f5f5\"\n            },\n            \"text\": \"Flexible space usage. The space component in the middle automatically expands to fill the layout. This type of layout would be not possible without a space component\"\n          },\n          \"items\": [{\n            \"type\": \"horizontal\",\n            \"components\": [{\n              \"type\": \"label\",\n              \"style\": {\n                \"width\": \"100\",\n                \"align\": \"right\"\n              },\n              \"text\": \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco\"\n            }, {\n              \"type\": \"space\"\n            }, {\n              \"type\": \"label\",\n              \"style\": {\n                \"width\": \"50\",\n                \"align\": \"left\"\n              },\n              \"text\": \"laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\"\n            }]\n          }]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "view/component/style/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Common component styling\",\n      \"data\": {\n        \"items\": [\n          { \"type\": \"Opacity\", \"url\": \"https://jasonette.github.io/Jasonpedia/view/component/style/opacity.json\" }\n        ]\n      },\n      \"templates\": {\n        \"body\": {\n          \"sections\": [{\n            \"items\": {\n              \"{{#each items}}\": {\n                \"type\": \"label\",\n                \"style\": {\n                  \"padding\": \"10\",\n                  \"font\": \"HelveticaNeue-Bold\",\n                  \"size\": \"15\"\n                },\n                \"href\": {\n                  \"url\": \"{{url}}\"\n                },\n                \"text\": \"{{type}}\"\n              }\n            }\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "view/component/style/opacity.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Opacity\",\n\t\t\t\"description\": \"No opacity on the left, opacity on the right\"\n    },\n    \"body\": {\n      \"style\": {\n        \"background\": \"https://raw.githubusercontent.com/gliechtenstein/images/master/highrise.jpg\",\n        \"border\": \"none\"\n      },\n      \"header\": {\n        \"style\": {\n          \"background\": \"rgba(0,0,0,0)\",\n          \"color\": \"#ffffff\"\n        },\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/component/style/opacity.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"type\": \"horizontal\",\n              \"components\": [\n                {\n                  \"type\": \"label\",\n                  \"text\": \"Label\",\n                  \"style\": {\n                    \"font\": \"HelveticaNeue-Bold\",\n                    \"color\": \"#ffffff\",\n                    \"size\": \"40\"\n                  }\n                },\n                {\n                  \"type\": \"label\",\n                  \"text\": \"Label\",\n                  \"style\": {\n                    \"font\": \"HelveticaNeue-Bold\",\n                    \"color\": \"#ffffff\",\n                    \"size\": \"40\",\n                    \"opacity\": \"0.2\"\n                  }\n                }\n              ]\n            },\n            {\n              \"type\": \"horizontal\",\n              \"components\": [\n                {\n                  \"type\": \"image\",\n                  \"url\": \"https://raw.githubusercontent.com/gliechtenstein/images/master/perrier.jpg\"\n                },\n                {\n                  \"type\": \"image\",\n                  \"url\": \"https://raw.githubusercontent.com/gliechtenstein/images/master/perrier.jpg\",\n                  \"style\": {\n                    \"opacity\": \"0.2\"\n                  }\n                }\n              ]\n            },\n            {\n              \"type\": \"horizontal\",\n              \"components\": [\n                {\n                  \"type\": \"button\",\n                  \"text\": \"Button\",\n                  \"style\": {\n                    \"font\": \"HelveticaNeue-Bold\",\n                    \"color\": \"#ffffff\",\n                    \"size\": \"20\"\n                  }\n                },\n                {\n                  \"type\": \"button\",\n                  \"text\": \"Button\",\n                  \"style\": {\n                    \"font\": \"HelveticaNeue-Bold\",\n                    \"color\": \"#ffffff\",\n                    \"size\": \"20\",\n                    \"opacity\": \"0.2\"\n                  }\n                }\n              ]\n            },\n            {\n              \"type\": \"horizontal\",\n              \"components\": [\n                {\n                  \"type\": \"map\",\n                  \"style\": {\n                    \"height\": \"200\",\n                    \"width\": \"50%\"\n                  },\n                  \"region\": {\n                    \"coord\": \"40.7197614,-73.9909211\",\n                    \"width\": \"100\",\n                    \"height\": \"100\"\n                  }\n                },\n                {\n                  \"type\": \"map\",\n                  \"region\": {\n                    \"coord\": \"40.7197614,-73.9909211\",\n                    \"width\": \"100\",\n                    \"height\": \"100\"\n                  },\n                  \"style\": {\n                    \"height\": \"200\",\n                    \"width\": \"50%\",\n                    \"opacity\": \"0.6\"\n                  }\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "view/component/textarea/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"textarea\",\n      \"styles\": {\n        \"padded\": {\n          \"padding\": \"20\",\n          \"font\": \"HelveticaNeue-Bold\",\n          \"size\": \"20\"\n        }\n      }\n    },\n    \"body\": {\n      \"style\": {\n        \"background\": \"#f5f5f5\"\n      },\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/component/textarea/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [{\n        \"header\": {\n          \"type\": \"label\",\n          \"text\": \"textarea\",\n          \"style\": {\n            \"background\": \"#f5f5f5\"\n          }\n        },\n        \"items\": [\n          {\n            \"type\": \"horizontal\",\n            \"style\": {\n              \"align\": \"top\",\n              \"padding\": \"0\"\n            },\n            \"components\": [{\n              \"type\": \"textarea\",\n              \"name\": \"blank\",\n              \"style\": {\n                \"background\": \"#ffffff\",\n                \"height\": \"200\"\n              }\n            }, {\n              \"type\": \"button\",\n              \"text\": \"Done\",\n              \"style\": {\n                \"width\": \"60\",\n                \"height\": \"30\",\n                \"color\": \"#ff0000\"\n              },\n              \"action\": {\n                \"type\": \"$util.banner\",\n                \"options\": {\n                  \"title\": \"Selected Value\",\n                  \"description\": \"{{$get.blank}}\"\n                }\n              }\n            }]\n          }\n        ]\n      }]\n    }\n  }\n}\n"
  },
  {
    "path": "view/component/textfield/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"textfield example\",\n      \"styles\": {\n        \"padded\": {\n          \"padding\": \"20\",\n          \"font\": \"HelveticaNeue-Bold\",\n          \"size\": \"20\"\n        }\n      }\n    },\n    \"body\": {\n      \"style\": {\n        \"background\": \"#f5f5f5\"\n      },\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/component/textfield/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"header\": {\n            \"type\": \"label\",\n            \"text\": \"textfield\",\n            \"style\": {\n              \"background\": \"#f5f5f5\"\n            }\n          },\n          \"items\": [\n            {\n              \"type\": \"horizontal\",\n              \"style\": {\n                \"background\": \"#ffffff\",\n                \"align\": \"center\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"textfield\",\n                  \"placeholder\": \"Enter text and press Done\",\n                  \"name\": \"blank\"\n                },\n                {\n                  \"type\": \"button\",\n                  \"text\": \"Done\",\n                  \"style\": {\n                    \"width\": \"60\",\n                    \"height\": \"50\",\n                    \"color\": \"#ffffff\",\n                    \"background\": \"#0000ff\"\n                  },\n                  \"action\": {\n                    \"type\": \"$util.banner\",\n                    \"options\": {\n                      \"title\": \"Selected Value\",\n                      \"description\": \"{{$get.blank}}\"\n                    }\n                  }\n                }\n              ]\n            },\n            {\n              \"type\": \"horizontal\",\n              \"style\": {\n                \"background\": \"#ffffff\",\n                \"align\": \"center\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"textfield\",\n                  \"style\": {\n                    \"secure\": \"true\"\n                  },\n                  \"placeholder\": \"Secure field\",\n                  \"name\": \"secure\"\n                },\n                {\n                  \"type\": \"button\",\n                  \"text\": \"Done\",\n                  \"style\": {\n                    \"width\": \"60\",\n                    \"color\": \"#ffffff\",\n                    \"background\": \"#0000ff\"\n                  },\n                  \"action\": {\n                    \"type\": \"$util.banner\",\n                    \"options\": {\n                      \"title\": \"Selected secure value\",\n                      \"description\": \"{{$get.secure}}\"\n                    }\n                  }\n                }\n              ]\n            },\n                        {\n              \"type\": \"horizontal\",\n              \"style\": {\n                \"background\": \"#ffffff\",\n                \"align\": \"center\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"textfield\",\n                  \"style\": {\n                    \"border_color\": \"#000000\"\n                  },\n                  \"placeholder\": \"field with border\",\n                  \"name\": \"border\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "view/footer/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Footer Examples\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"padding\": \"10\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/footer/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"class\": \"bold\",\n              \"text\": \"Chat Input\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/footer/input.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"class\": \"bold\",\n              \"text\": \"Tabs\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/footer/tabs.json\",\n                \"transition\": \"modal\"\n              }\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "view/footer/input.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Input Footer\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"padding\": \"10\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        },\n        \"send\": {\n          \"type\": \"$util.alert\",\n          \"options\": {\n            \"title\": \"Message\",\n            \"description\": \"{{$get.message}}\"\n          }\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/footer/input.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"footer\": {\n        \"input\": {\n          \"left\": {\n            \"image\": \"https://s3.amazonaws.com/www.textcast.co/icons/cam%402x.png\",\n            \"action\": {\n              \"type\": \"$media.camera\"\n            }\n          },\n          \"name\": \"message\",\n          \"placeholder\": \"Say something...\",\n          \"right\": {\n            \"text\": \"Send\",\n            \"action\": {\n              \"trigger\": \"send\"\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "view/footer/tabs.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Tabs Footer\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"padding\": \"10\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        },\n        \"send\": {\n          \"type\": \"$util.alert\",\n          \"options\": {\n            \"title\": \"Message\",\n            \"description\": \"{{$get.message}}\"\n          }\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/footer/tabs.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"Fullscreen transition\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/action/audio/vaultboy/index.json\",\n                \"transition\": \"fullscreen\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Next\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/footer/tabs.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Next\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/footer/tabs.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Next\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/footer/tabs.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Next\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/footer/tabs.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Next\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/footer/tabs.json\"\n              }\n            }\n          ]\n        }\n      ],\n      \"footer\": {\n        \"tabs\": {\n          \"style\": {\n            \"background\": \"#ffffff\"\n          },\n          \"items\": [\n            {\n              \"image\": \"https://s3-us-west-2.amazonaws.com/www.jasonclient.org/topsecret%402x.png\",\n              \"text\": \"Top Secret\",\n              \"url\": \"https://jasonette.github.io/Jasonpedia/view/footer/tabs.json\"\n            },\n            {\n              \"image\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/info%402x.png\",\n              \"text\": \"Info\",\n              \"badge\": \"2\",\n              \"url\": \"https://jasonette.github.io/Jasonpedia/view/footer/tabs.json\"\n            },\n            {\n              \"image\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/apps%402x.png\",\n              \"text\": \"Collection\",\n              \"url\": \"https://jasonette.github.io/Jasonpedia/view/footer/tabs.json\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "view/header/header.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Header\",\n      \"data\": {\n        \"items\": [\n          \"a\",\n          \"b\",\n          \"c\",\n          \"d\",\n          \"e\",\n          \"f\",\n          \"g\",\n          \"h\",\n          \"i\",\n          \"j\",\n          \"k\",\n          \"l\",\n          \"m\",\n          \"n\",\n          \"o\",\n          \"p\",\n          \"q\",\n          \"r\",\n          \"s\",\n          \"t\",\n          \"u\",\n          \"v\",\n          \"w\",\n          \"x\",\n          \"y\",\n          \"z\"\n        ]\n      },\n      \"templates\": {\n        \"body\": {\n          \"style\": {\n            \"background\": \"#222222\",\n            \"border\": \"none\"\n          },\n          \"header\": {\n            \"title\": \"Header/No Header Test\",\n            \"style\": {\n              \"background\": \"#ff0000\",\n              \"color\": \"#ffffff\"\n            }\n          },\n          \"sections\": [\n            {\n              \"items\": {\n                \"{{#each items}}\": {\n                  \"type\": \"label\",\n                  \"text\": \"{{this}}\",\n                  \"style\": {\n                    \"color\": \"#ffffff\",\n                    \"size\": \"40\",\n                    \"padding\": \"20\",\n                    \"align\": \"right\"\n                  }\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "view/header/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Header Example\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"padding\": \"10\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$render\"\n        },\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"title\": \"[Title goes here]\",\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/header/index.json\",\n            \"view\": \"web\"\n          }\n        },\n        \"style\": {\n          \"font\": \"AvenirNext-Heavy\",\n          \"size\": \"18\"\n        },\n        \"search\": {\n          \"name\": \"query\",\n          \"placeholder\": \"Enter keyword\",\n          \"action\": {\n            \"type\": \"$util.banner\",\n            \"options\": {\n              \"title\": \"{{$get.query}}\",\n              \"description\": \"The content inside the search input is {{$get.query}}\"\n            }\n          }\n        }\n      },\n      \"sections\": [{\n        \"items\": [{\n          \"type\": \"label\",\n          \"text\": \"With header\",\n          \"href\": {\n            \"url\": \"https://jasonette.github.io/Jasonpedia/view/header/header.json\"\n          }\n        }, {\n          \"type\": \"label\",\n          \"text\": \"No header\",\n          \"href\": {\n            \"url\": \"https://jasonette.github.io/Jasonpedia/view/header/noheader.json\"\n          }\n        }]\n      }]\n    }\n  }\n}\n"
  },
  {
    "path": "view/header/noheader.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"No Header\",\n      \"data\": {\n        \"items\": [\n          \"a\",\n          \"b\",\n          \"c\",\n          \"d\",\n          \"e\",\n          \"f\",\n          \"g\",\n          \"h\",\n          \"i\",\n          \"j\",\n          \"k\",\n          \"l\",\n          \"m\",\n          \"n\",\n          \"o\",\n          \"p\",\n          \"q\",\n          \"r\",\n          \"s\",\n          \"t\",\n          \"u\",\n          \"v\",\n          \"w\",\n          \"x\",\n          \"y\",\n          \"z\"\n        ]\n      },\n      \"templates\": {\n        \"body\": {\n          \"style\": {\n            \"background\": \"#222222\",\n            \"border\": \"none\"\n          },\n          \"layers\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"👈\",\n              \"style\": {\n                \"bottom\": \"20\",\n                \"right\": \"20\",\n                \"background\": \"#ff0000\",\n                \"color\": \"#ffffff\",\n                \"width\": \"100\",\n                \"height\": \"100\",\n                \"align\": \"center\",\n                \"size\": \"30\",\n                \"corner_radius\": \"50\"\n              },\n              \"action\": {\n                \"type\": \"$back\"\n              }\n            }\n          ],\n          \"sections\": [\n            {\n              \"items\": {\n                \"{{#each items}}\": {\n                  \"type\": \"label\",\n                  \"style\": {\n                    \"color\": \"#ffffff\",\n                    \"size\": \"40\",\n                    \"padding\": \"20\",\n                    \"align\": \"right\"\n                  },\n                  \"text\": \"{{this}}\"\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "view/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Views\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"padding\": \"10\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"text\": \"Header\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/header/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Sections\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/section/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Layers\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/layer/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Footer\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/footer/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Layout\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/layout/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Component\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/component/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"text\": \"Background\",\n              \"class\": \"bold\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/background/index.json\"\n              }\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "view/layer/dynamic.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Dynamic Layers\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"style\": {\n              \"width\": \"86\",\n              \"height\": \"175\",\n              \"bottom\": \"70\",\n              \"left\": \"50%-43\"\n            }\n          },\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        },\n        \"resizable\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"style\": \"{{var new_style = $get.style; new_style['resize']='true'; return new_style;}}\"\n          },\n          \"success\": {\n            \"type\": \"$util.banner\",\n            \"options\": {\n              \"title\": \"Now resizable\",\n              \"description\": \"Try pinching Mario with two fingers\"\n            },\n            \"success\": {\n              \"type\": \"$render\"\n            }\n          }\n        },\n        \"draggable\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"style\": \"{{var new_style = $get.style; new_style['move']='true'; return new_style;}}\"\n          },\n          \"success\": {\n            \"type\": \"$util.banner\",\n            \"options\": {\n              \"title\": \"Now draggable\",\n              \"description\": \"Try dragging Mario around\"\n            },\n            \"success\": {\n              \"type\": \"$render\"\n            }\n          }\n        },\n        \"rotatable\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"style\": \"{{var new_style = $get.style; new_style['rotate']='true'; return new_style;}}\"\n          },\n          \"success\": {\n            \"type\": \"$util.banner\",\n            \"options\": {\n              \"title\": \"Now rotatable\",\n              \"description\": \"Try rotating Mario with two fingers\"\n            },\n            \"success\": {\n              \"type\": \"$render\"\n            }\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"style\": {\n            \"background\": \"https://jasonette.github.io/Jasonpedia/assets/mariobackground.jpg\"\n          },\n          \"header\": {\n            \"style\": {\n              \"background\": \"rgba(0,0,0,0)\"\n            },\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/layer/dynamic.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"layers\": [{\n            \"type\": \"label\",\n            \"text\": \"IN THIS DEMO, MARIO IS A DYNAMIC LAYER, WHICH MEANS YOU CAN RESIZE, DRAG, ROTATE HIM.\\n\\nBUT FIRST, PRESS THE BUTTONS TO ACTIVATE EACH FEATURE\",\n            \"style\": {\n              \"font\": \"Verdana\",\n              \"color\": \"#fdfdfd\",\n              \"size\": \"15\",\n              \"top\": \"100\",\n              \"left\": \"10%\",\n              \"width\": \"80%\",\n              \"height\": \"150\",\n              \"align\": \"center\"\n            }\n          }, {\n            \"type\": \"label\",\n            \"text\": \"Draggable\",\n            \"action\": {\n              \"trigger\": \"draggable\"\n            },\n            \"style\": {\n              \"align\": \"center\",\n              \"bottom\": \"30\",\n              \"left\": \"50%-50\",\n              \"width\": \"100\",\n              \"padding\": \"10\",\n              \"background\": \"#6e2111\",\n              \"color\": \"#ffffff\",\n              \"corner_radius\": \"3\"\n            }\n          }, {\n            \"type\": \"label\",\n            \"text\": \"Resizable\",\n            \"action\": {\n              \"trigger\": \"resizable\"\n            },\n            \"style\": {\n              \"align\": \"center\",\n              \"bottom\": \"30\",\n              \"right\": \"20\",\n              \"padding\": \"10\",\n              \"background\": \"#6e2111\",\n              \"color\": \"#ffffff\",\n              \"corner_radius\": \"3\"\n            }\n          }, {\n            \"type\": \"label\",\n            \"text\": \"Rotatable\",\n            \"action\": {\n              \"trigger\": \"rotatable\"\n            },\n            \"style\": {\n              \"align\": \"center\",\n              \"bottom\": \"30\",\n              \"left\": \"20\",\n              \"padding\": \"10\",\n              \"background\": \"#6e2111\",\n              \"color\": \"#ffffff\",\n              \"corner_radius\": \"3\"\n            }\n          }, {\n            \"type\": \"image\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/assets/0.png\",\n            \"style\": \"{{$get.style}}\"\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "view/layer/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Layer\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"padding\": \"10\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/layer/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"header\": {\n            \"type\": \"label\",\n            \"text\": \"Tutorials\",\n            \"style\": {\n              \"background\": \"#f5f5f5\"\n            }\n          },\n          \"items\": [{\n            \"type\": \"label\",\n            \"class\": \"bold\",\n            \"text\": \"Basic Labels\",\n            \"href\": {\n              \"url\": \"https://jasonette.github.io/Jasonpedia/view/layer/label.json\"\n            }\n          }, {\n            \"type\": \"label\",\n            \"class\": \"bold\",\n            \"text\": \"Static layers\",\n            \"href\": {\n              \"url\": \"https://jasonette.github.io/Jasonpedia/view/layer/static.json\"\n            }\n          }, {\n            \"type\": \"label\",\n            \"class\": \"bold\",\n            \"text\": \"Dynamic layers\",\n            \"href\": {\n              \"url\": \"https://jasonette.github.io/Jasonpedia/view/layer/dynamic.json\"\n            }\n          }]\n        },\n        {\n          \"header\": {\n            \"type\": \"label\",\n            \"text\": \"Demos\",\n            \"style\": {\n              \"background\": \"#f5f5f5\"\n            }\n          },\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"class\": \"bold\",\n              \"text\": \"CatchAll!\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/layer/pokemon/index.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"class\": \"bold\",\n              \"text\": \"Weather\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/layer/weather/index.json\",\n                \"transition\": \"modal\"\n              }\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "view/layer/label.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Basic Layers\"\n    },\n    \"body\": {\n      \"header\": {\n        \"style\": {\n          \"background\": \"#8bb92d\",\n          \"color\": \"#ffffff\"\n        },\n        \"title\": \"Label Layer Demo\"\n      },\n      \"layers\": [{\n        \"type\": \"label\",\n        \"text\": \"{top: 74, left: 10}\",\n        \"style\": {\n          \"top\": \"74\",\n          \"left\": \"10\",\n          \"padding\": \"10\",\n          \"background\": \"#ff0000\",\n          \"color\": \"#ffffff\",\n          \"align\": \"center\"\n        }\n      }, {\n        \"type\": \"label\",\n        \"text\": \"{top: 74, right: 10}\",\n        \"style\": {\n          \"top\": \"74\",\n          \"right\": \"10\",\n          \"padding\": \"10\",\n          \"background\": \"#ff0000\",\n          \"color\": \"#ffffff\",\n          \"align\": \"center\"\n        }\n      }, {\n        \"type\": \"label\",\n        \"text\": \"{bottom: 10, left: 10}\",\n        \"style\": {\n          \"bottom\": \"10\",\n          \"left\": \"10\",\n          \"padding\": \"10\",\n          \"background\": \"#ff0000\",\n          \"color\": \"#ffffff\",\n          \"align\": \"center\"\n        }\n      }, {\n        \"type\": \"label\",\n        \"text\": \"{bottom: 10, right: 10}\",\n        \"style\": {\n          \"bottom\": \"10\",\n          \"right\": \"10\",\n          \"padding\": \"10\",\n          \"background\": \"#ff0000\",\n          \"color\": \"#ffffff\",\n          \"align\": \"center\"\n        }\n      }, {\n        \"type\": \"label\",\n        \"text\": \"{top: 50%-50, left: 50%-50, width: 100, height: 100}\",\n        \"style\": {\n          \"top\": \"50%-50\",\n          \"left\": \"50%-50\",\n          \"width\": \"100\",\n          \"height\": \"100\",\n          \"background\": \"#ff0000\",\n          \"color\": \"#ffffff\",\n          \"align\": \"center\"\n        }\n      }]\n    }\n  }\n}\n"
  },
  {
    "path": "view/layer/pokemon/backpack.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Pokemon Items\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$network.request\",\n          \"options\": {\n            \"url\": \"https://jasonette.github.io/Jasonpedia/view/layer/pokemon/db.json\"\n          },\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"style\": {\n            \"background\": \"#fcfffc\"\n          },\n          \"nav\": {\n            \"style\": {\n              \"background\": \"#fdfffc\",\n              \"color\": \"#4e7174\",\n              \"font\": \"AvenirNext-Regular\",\n              \"size\": \"18\"\n            }\n          },\n          \"sections\": [\n            {\n              \"items\": [\n                {\n                  \"type\": \"label\",\n                  \"style\": {\n                    \"padding\": \"10\",\n                    \"background\": \"#414141\",\n                    \"color\": \"#ffffff\",\n                    \"size\": \"12\"\n                  },\n                  \"text\": \"This app was built with Jasonette, an app that lets you create an app. Learn more here.\",\n                  \"href\": {\n                    \"url\": \"http://www.jasonette.com\",\n                    \"view\": \"Web\"\n                  }\n                }\n              ]\n            },\n            {\n              \"items\": [\n                {\n                  \"type\": \"vertical\",\n                  \"style\": {\n                    \"padding\": \"15\",\n                    \"spacing\": \"3\",\n                    \"background\": \"#e9ffde\"\n                  },\n                  \"components\": [\n                    {\n                      \"type\": \"label\",\n                      \"text\": \"Catch your own custom monster!\",\n                      \"style\": {\n                        \"size\": \"14\",\n                        \"color\": \"#44696c\",\n                        \"font\": \"AvenirNext-Bold\"\n                      }\n                    },\n                    {\n                      \"type\": \"label\",\n                      \"text\": \"Check out what others caught, and upload your own.\",\n                      \"style\": {\n                        \"size\": \"12\",\n                        \"color\": \"#44696c\",\n                        \"font\": \"AvenirNext-Regular\"\n                      }\n                    }\n                  ],\n                  \"href\": {\n                    \"url\": \"https://jasonette.github.io/Jasonpedia/view/layer/pokemon/more.json\"\n                  }\n                }\n              ]\n            },\n            {\n              \"items\": {\n                \"{{#each $jason}}\": {\n                  \"type\": \"horizontal\",\n                  \"style\": {\n                    \"padding\": \"10\",\n                    \"spacing\": \"10\"\n                  },\n                  \"action\": {\n                    \"type\": \"$close\",\n                    \"success\": {\n                      \"type\": \"$set\",\n                      \"options\": {\n                        \"monster\": \"{{url}}\",\n                        \"caption\": \"{{name + '    /    CP ???'}}\"\n                      },\n                      \"success\": {\n                        \"type\": \"$render\",\n                        \"success\": {\n                          \"type\": \"$util.banner\",\n                          \"options\": {\n                            \"title\": \"Move and resize\",\n                            \"description\": \"You can hide the resize button by tapping the sticker\"\n                          }\n                        }\n                      }\n                    }\n                  },\n                  \"components\": [\n                    {\n                      \"type\": \"image\",\n                      \"style\": {\n                        \"width\": \"80\"\n                      },\n                      \"url\": \"{{url}}\"\n                    },\n                    {\n                      \"type\": \"vertical\",\n                      \"components\": [\n                        {\n                          \"type\": \"label\",\n                          \"text\": \"{{name}}\",\n                          \"style\": {\n                            \"color\": \"#44696c\",\n                            \"font\": \"AvenirNext-Regular\",\n                            \"size\": \"18\"\n                          }\n                        },\n                        {\n                          \"type\": \"label\",\n                          \"style\": {\n                            \"color\": \"#6f8d8d\",\n                            \"font\": \"AvenirNext-Regular\",\n                            \"size\": \"12\"\n                          },\n                          \"text\": \"\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "view/layer/pokemon/db.json",
    "content": "[\n  {\n    \"name\": \"Diglett\",\n    \"url\": \"http://vignette3.wikia.nocookie.net/pokemon/images/7/7f/Pokken_Tournament_Diglett.PNG/revision/latest?cb=20160711081831\"\n  },\n  {\n    \"name\": \"Chespin\",\n    \"url\": \"http://orig08.deviantart.net/e4f6/f/2013/009/b/e/chespin_3d_model_download_by_bogeymankurt-d5qxbbo.png\"\n  },\n  {\n    \"name\": \"Fennekin\",\n    \"url\": \"http://vignette3.wikia.nocookie.net/pokemon/images/d/db/Support_Fennekin.png/revision/latest?cb=20160115234126\"\n  },\n  {\n    \"name\": \"Psyduck\",\n    \"url\": \"http://www.pokezorworld.com/anime/3d/3dpsyduck.gif\"\n  },\n  {\n    \"name\": \"Yveltal\",\n    \"url\": \"http://vignette2.wikia.nocookie.net/pokemon/images/9/94/717Yveltal_Pokemon_Rumble_World.png/revision/latest?cb=20160216063748\"\n  },\n  {\n    \"name\": \"Articuno\",\n    \"url\": \"http://www.psypokes.com/dex/picdex/stadium2/144.png\"\n  },\n  {\n    \"name\": \"Dedenne\",\n    \"url\": \"http://i.imgur.com/3jiPb0O.png\"\n  },\n  {\n    \"name\": \"Snivy\",\n    \"url\": \"http://vignette2.wikia.nocookie.net/pokemon/images/4/4c/Snivy-PokePark2-Model.png/revision/latest?cb=20140816045543\"\n  },\n  {\n    \"name\": \"Tepig\",\n    \"url\": \"http://vignette3.wikia.nocookie.net/pokemon/images/1/18/Tepig_%28Pok%C3%A9dex_3D%29.png/revision/latest?cb=20110608232312\"\n  },\n  {\n    \"name\": \"Oshawott\",\n    \"url\": \"http://vignette4.wikia.nocookie.net/pokemon/images/9/98/Oshawott-PokePark2-Model.png/revision/latest?cb=20140816052928\"\n  },\n  {\n    \"name\": \"Reshiram\",\n    \"url\": \"http://vignette2.wikia.nocookie.net/ssb-tourney/images/4/4b/Reshiram_CG_Art.png/revision/latest?cb=20130911021023\"\n  },\n  {\n    \"name\": \"Lapras\",\n    \"url\": \"http://www.psypokes.com/dex/picdex/stadium2/131.png\"\n  },\n  {\n    \"name\": \"Tyranitar\",\n    \"url\": \"http://www.psypokes.com/dex/picdex/stadium2/248.png\"\n  },\n  {\n    \"name\": \"Emolga\",\n    \"url\": \"http://vignette3.wikia.nocookie.net/pokemon/images/d/dc/587Emolga_Pokedex_3D.png/revision/latest?cb=20141108025533\"\n  },\n  {\n    \"name\": \"Froakie\",\n    \"url\": \"https://media.pocketmonsters.net/imageboard/60/14315437290054.png\"\n  },\n  {\n    \"name\": \"Meloetta\",\n    \"url\": \"http://vignette2.wikia.nocookie.net/pokemon/images/a/ad/648Meloetta_3D_Pro.png/revision/latest?cb=20150126030347\"\n  },\n  {\n    \"name\": \"Piplup\",\n    \"url\": \"http://vignette1.wikia.nocookie.net/fantendo/images/8/82/PiplupPok%C3%A9Park2.png/revision/latest?cb=20130726110030\"\n  },\n  {\n    \"name\": \"Dialga\",\n    \"url\": \"http://vignette1.wikia.nocookie.net/pokemon/images/a/a6/483Dialga_Pokemon_Battle_Revolution.png/revision/latest?cb=20141231204017\"\n  },\n  {\n    \"name\": \"Palkia\",\n    \"url\": \"http://vignette1.wikia.nocookie.net/pokemon/images/d/d3/484Palkia_Pokemon_Battle_Revolution.png/revision/latest?cb=20141231204052\"\n  },\n  {\n    \"name\": \"Giratina\",\n    \"url\": \"http://vignette3.wikia.nocookie.net/pokemon/images/b/b1/487Giratina_Site.png/revision/latest?cb=20140920041457\"\n  },\n  {\n    \"name\": \"Pachirisu\",\n    \"url\": \"http://vignette1.wikia.nocookie.net/pokemon/images/f/f7/417Pachirisu_Pokemon_Battle_Revolution.png/revision/latest?cb=20141021151558\"\n  },\n  {\n    \"name\": \"Treecko\",\n    \"url\": \"http://vignette1.wikia.nocookie.net/fantendo/images/6/64/SceptilePDIOS.png/revision/latest?cb=20150117124429\"\n  },\n  {\n    \"name\": \"Torchic\",\n    \"url\": \"http://media-cerulean.cursecdn.com/avatars/254/50/255.png.png\"\n  },\n  {\n    \"name\": \"Mudkip\",\n    \"url\": \"http://orig07.deviantart.net/b0cb/f/2012/185/1/6/mudkip_by_finnishpokemonfan96-d55y3vu.png\"\n  },\n  {\n    \"name\": \"Groudon\",\n    \"url\": \"http://vignette3.wikia.nocookie.net/pokemon/images/c/cf/383Groudon_Pokemon_Battle_Revolution.png/revision/latest?cb=20140829040352\"\n  },\n  {\n    \"name\": \"Kyogre\",\n    \"url\": \"http://vignette2.wikia.nocookie.net/pokemon/images/3/3b/382Kyogre_Pokemon_Battle_Revolution.png/revision/latest?cb=20141011054520\"\n  },\n  {\n    \"name\": \"Rayquaza\",\n    \"url\": \"http://vignette2.wikia.nocookie.net/pokemon/images/7/78/384Rayquaza_Super_Smash_Bros_Brawl.png/revision/latest?cb=20140921015142\"\n  },\n  {\n    \"name\": \"Plusle\",\n    \"url\": \"http://i.imgur.com/L2hs7.png\"\n  },\n  {\n    \"name\": \"Blastoise\",\n    \"url\": \"http://www.psypokes.com/dex/picdex/stadium2/009.png\"\n  },\n  {\n    \"name\": \"Chikorita\",\n    \"url\": \"http://vignette2.wikia.nocookie.net/pokemon/images/7/79/152Chikorita_Pok%C3%A9mon_Super_Mystery_Dungeon.png/revision/latest?cb=20150716060154\"\n  },\n  {\n    \"name\": \"Cyndaquil\",\n    \"url\": \"http://vignette3.wikia.nocookie.net/pokemon/images/d/d6/155Cyndaquil_Pokemon_Mystery_Dungeon_Explorers_of_Time_and_Darkness.png/revision/latest?cb=20150107222137\"\n  },\n  {\n    \"name\": \"Totodile\",\n    \"url\": \"http://vignette1.wikia.nocookie.net/pokemon/images/6/67/158Totodile_Pok%C3%A9mon_Super_Mystery_Dungeon.png/revision/latest?cb=20150716060404\"\n  },\n  {\n    \"name\": \"Ho-oh\",\n    \"url\": \"http://vignette1.wikia.nocookie.net/pokemon/images/0/06/250Ho-Oh_Pokemon_Mystery_Dungeon_Gates_to_Infinity.png/revision/latest?cb=20150101212702\"\n  },\n  {\n    \"name\": \"Lugia\",\n    \"url\": \"http://vignette4.wikia.nocookie.net/pokemon/images/2/27/249Lugia_Pokemon_Battle_Revolution.png/revision/latest?cb=20141024154812\"\n  },\n  {\n    \"name\": \"Celebi\",\n    \"url\": \"http://vignette3.wikia.nocookie.net/pokemon/images/a/ab/251Celebi_Pokemon_Rumble_U.png/revision/latest?cb=20140921013125\"\n  },\n  {\n    \"name\": \"Pichu\",\n    \"url\": \"http://vignette2.wikia.nocookie.net/ssb/images/9/97/Pichumeleeclear.png/revision/latest?cb=20140227140421\"\n  },\n  {\n    \"name\": \"Pikachu\",\n    \"url\": \"http://vignette2.wikia.nocookie.net/pokemon/images/e/ef/025Pikachu_SSB4.png/revision/latest?cb=20140410201208\"\n  },\n  {\n    \"name\": \"Bulbasaur\",\n    \"url\": \"http://vignette1.wikia.nocookie.net/leonhartimvu/images/b/bb/001_Bulbasaur_3D.png/revision/latest?cb=20131106174200\"\n  },\n  {\n    \"name\": \"Charmander\",\n    \"url\": \"http://vignette2.wikia.nocookie.net/pokemon/images/f/fb/004Charmander_3D_Pro.png/revision/latest?cb=20140901022259\"\n  },\n  {\n    \"name\": \"Squirtle\",\n    \"url\": \"http://i.imgur.com/5xpXP0H.png\"\n  },\n  {\n    \"name\": \"Eevee\",\n    \"url\": \"http://vignette2.wikia.nocookie.net/pokemon/images/a/aa/Support_Eevee.png/revision/latest?cb=20160115235248\"\n  },\n  {\n    \"name\": \"Mew\",\n    \"url\": \"http://vignette3.wikia.nocookie.net/pokemon/images/7/79/151Mew_Pokemon_Stadium.png/revision/latest?cb=20140315211611\"\n  },\n  {\n    \"name\": \"MewTwo\",\n    \"url\": \"http://vignette1.wikia.nocookie.net/pokemon/images/d/da/Mewtwo_SSB4.png/revision/latest?cb=20150403133009\"\n  },\n  {\n    \"name\": \"Articuno\",\n    \"url\": \"http://vignette1.wikia.nocookie.net/pokemon/images/5/52/Articuno.png/revision/latest?cb=20160409232041\"\n  },\n  {\n    \"name\": \"Zapdos\",\n    \"url\": \"http://vignette3.wikia.nocookie.net/playstationallstarsbattleroyale/images/c/ce/Zapdos_3D.png/revision/latest?cb=20141002204533\"\n  },\n  {\n    \"name\": \"Moltres\",\n    \"url\": \"http://cdn.nintendonews.com/wp-content/uploads/2016/07/pokemon_go_moltres.png\"\n  },\n  {\n    \"name\": \"Dragonair\",\n    \"url\": \"https://56.media.tumblr.com/0ff7ce436261a96d95f79c2111b0152e/tumblr_o1dsgu3GSs1u5zmd1o5_1280.png\"\n  },\n  {\n    \"name\": \"Dragonite\",\n    \"url\": \"http://vignette2.wikia.nocookie.net/pokemon/images/1/12/149Dragonite_Pokemon_Stadium.png/revision/latest?cb=20140126094049\"\n  },\n  {\n    \"name\": \"Aerodactyl\",\n    \"url\": \"http://www.psypokes.com/dex/picdex/stadium2/142.png\"\n  },\n  {\n    \"name\": \"Kabutops\",\n    \"url\": \"http://www.psypokes.com/dex/picdex/stadium2/141.png\"\n  },\n  {\n    \"name\": \"Snorlax\",\n    \"url\": \"http://vignette3.wikia.nocookie.net/pokemon/images/4/49/143Snorlax_3D_Pro.png/revision/latest?cb=20140924022356\"\n  },\n  {\n    \"name\": \"Ducklett\",\n    \"url\": \"http://cdn.bulbagarden.net/upload/thumb/4/4b/580Ducklett.png/250px-580Ducklett.png\"\n  }\n]\n"
  },
  {
    "path": "view/layer/pokemon/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Pokemon Cam\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"monster\": \"placeholder\",\n            \"caption\": \"placeholder\",\n            \"background\": {\n              \"type\": \"camera\",\n              \"options\": {\n                \"device\": \"back\"\n              }\n            }\n          },\n          \"success\": {\n            \"trigger\": \"camera\"\n          }\n        },\n        \"toggle_direction\": {\n          \"type\": \"$set\",\n          \"options\": [\n            {\n              \"{{#if (typeof $get.background) == 'string' }}\": {\n                \"background\": {\n                  \"type\": \"camera\"\n                }\n              }\n            }, \n            {\n              \"{{#elseif 'options' in $get.background}}\": {\n                \"background\": {\n                  \"type\": \"camera\"\n                }\n              }\n            },\n            {\n              \"{{#else}}\": {\n                \"background\": {\n                  \"type\": \"camera\",\n                  \"options\": {\n                    \"device\": \"back\"\n                  }\n                }\n              }\n            }\n          ],\n          \"success\": {\n            \"type\": \"$render\",\n            \"success\": {\n              \"type\": \"$util.toast\",\n              \"options\": {\n                \"text\": \"changed camera direction\"\n              }\n            }\n          }\n        },\n        \"backpack\": {\n          \"type\": \"$href\",\n          \"options\": {\n            \"url\": \"https://jasonette.github.io/Jasonpedia/view/layer/pokemon/backpack.json\",\n            \"transition\": \"modal\"\n          }\n        },\n        \"camera\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"data_url\": \"{{$jason.data_url}}\",\n            \"editing\": \"true\",\n            \"ui\": \"true\"\n          },\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"style\": {\n            \"background\": \"{{$get.background}}\"\n          },\n          \"header\": {\n            \"title\": \" \",\n            \"style\": {\n              \"background\": \"rgba(0,0,0,0)\",\n              \"color\": \"rgba(255,255,255,0.3)\"\n            },\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/layer/pokemon/index.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"layers\": [\n            [\n              {\n                \"{{#if $get.monster && $get.monster != 'placeholder'}}\": {\n                  \"type\": \"image\",\n                  \"style\": {\n                    \"left\": \"50%-75\",\n                    \"bottom\": \"200\",\n                    \"width\": \"150\",\n                    \"border\": \"rgba(0,0,0,0)\",\n                    \"rotate\": \"true\",\n                    \"resize\": \"true\",\n                    \"move\": \"true\"\n                  },\n                  \"name\": \"monster\",\n                  \"action\": {\n                    \"trigger\": \"toggle\"\n                  },\n                  \"url\": \"{{$get.monster}}\"\n                }\n              }\n            ],\n            [\n              {\n                \"{{#if $get.caption && $get.caption != 'placeholder'}}\": {\n                  \"type\": \"label\",\n                  \"name\": \"annotation\",\n                  \"style\": {\n                    \"background\": \"rgba(0,0,0,0.1)\",\n                    \"color\": \"#ffffff\",\n                    \"bottom\": \"500\",\n                    \"align\": \"center\",\n                    \"padding\": \"10\",\n                    \"left\": \"50%-125\",\n                    \"width\": \"250\",\n                    \"size\": \"20\",\n                    \"font\": \"AvenirNext-Regular\",\n                    \"height\": \"60\",\n                    \"corner_radius\": \"30\",\n                    \"move\": \"true\",\n                    \"resize\": \"true\"\n                  },\n                  \"action\": {\n                    \"trigger\": \"toggle\"\n                  },\n                  \"text\": \"{{$get.caption}}\"\n                }\n              }\n            ],\n            {\n              \"type\": \"image\",\n              \"style\": {\n                \"right\": \"15\",\n                \"top\": \"60\",\n                \"width\": \"60\"\n              },\n              \"url\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/pokear.png\",\n              \"action\": {\n                \"trigger\": \"toggle_direction\"\n              }\n            },\n            {\n              \"type\": \"image\",\n              \"style\": {\n                \"left\": \"15\",\n                \"top\": \"50\",\n                \"height\": \"60\"\n              },\n              \"url\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/pokerun.png\",\n              \"action\": {\n                \"type\": \"$snapshot\",\n                \"success\": {\n                  \"type\": \"$util.share\",\n                  \"options\": {\n                    \"items\": [{\n                      \"type\": \"image\",\n                      \"data\": \"{{$jason.data}}\"\n                    }]\n                  }\n                }\n              }\n            },\n            {\n              \"type\": \"image\",\n              \"style\": {\n                \"right\": \"10\",\n                \"bottom\": \"10\",\n                \"width\": \"80\"\n              },\n              \"url\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/pokebackpack.png\",\n              \"action\": {\n                \"trigger\": \"backpack\"\n              }\n            },\n            {\n              \"type\": \"image\",\n              \"style\": {\n                \"right\": \"10\",\n                \"bottom\": \"95\",\n                \"width\": \"80\"\n              },\n              \"url\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/pokecamera.png\",\n              \"action\": {\n                \"type\": \"$snapshot\",\n                \"success\": {\n                  \"type\": \"$set\",\n                  \"options\": {\n                    \"background\": \"{{$jason.data_uri}}\"\n                  },\n                  \"success\": {\n                    \"type\": \"$render\"\n                  }\n                }\n              }\n            },\n            {\n              \"type\": \"image\",\n              \"style\": {\n                \"left\": \"50%-65\",\n                \"bottom\": \"0\",\n                \"width\": \"130\",\n                \"height\": \"130\",\n                \"move\": \"true\",\n                \"resize\": \"true\",\n                \"rotate\": \"true\"\n              },\n              \"name\": \"ball\",\n              \"url\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/fakeball.png\"\n            }\n          ]\n        }\n      },\n      \"icon\": \"https://s3.amazonaws.com/jasonette/uploads/thing/icon/Y0J/thumb_icon\"\n    }\n  }\n}\n"
  },
  {
    "path": "view/layer/pokemon/more.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"More to catch!\",\n      \"actions\": {\n        \"$foreground\": {\n          \"trigger\": \"refresh\"\n        },\n        \"$load\": {\n          \"trigger\": \"refresh\"\n        },\n        \"refresh\": {\n          \"type\": \"$network.request\",\n          \"options\": {\n            \"url\": \"http://stickermatic.herokuapp.com/items.json\"\n          },\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"style\": {\n            \"background\": \"#fcfffc\",\n            \"border\": \"none\"\n          },\n          \"nav\": {\n            \"style\": {\n              \"background\": \"#fdfffc\",\n              \"color\": \"#4e7174\",\n              \"font\": \"AvenirNext-Regular\",\n              \"size\": \"18\"\n            },\n            \"items\": [\n              {\n                \"type\": \"search\",\n                \"name\": \"query\",\n                \"action\": {\n                  \"type\": \"$network.request\",\n                  \"options\": {\n                    \"url\": \"https://stickermatic.herokuapp.com/search.json?query={{$get.query}}\"\n                  },\n                  \"success\": {\n                    \"type\": \"$render\"\n                  }\n                }\n              }\n            ]\n          },\n          \"sections\": [\n            {\n              \"items\": [\n                {\n                  \"type\": \"horizontal\",\n                  \"style\": {\n                    \"padding\": \"20\",\n                    \"spacing\": \"20\",\n                    \"background\": \"#e9ffde\"\n                  },\n                  \"components\": [\n                    {\n                      \"type\": \"image\",\n                      \"url\": \"https://d30y9cdsu7xlg0.cloudfront.net/png/534489-200.png\",\n                      \"style\": {\n                        \"width\": \"40\"\n                      }\n                    },\n                    {\n                      \"type\": \"vertical\",\n                      \"components\": [\n                        {\n                          \"type\": \"label\",\n                          \"text\": \"Upload your own monster\",\n                          \"style\": {\n                            \"size\": \"14\",\n                            \"color\": \"#44696c\",\n                            \"font\": \"AvenirNext-Bold\"\n                          }\n                        },\n                        {\n                          \"type\": \"label\",\n                          \"text\": \"Upload a transparent PNG and catch'em all!\",\n                          \"style\": {\n                            \"size\": \"12\",\n                            \"color\": \"#44696c\",\n                            \"font\": \"AvenirNext-Regular\"\n                          }\n                        }\n                      ]\n                    }\n                  ],\n                  \"href\": {\n                    \"view\": \"App\",\n                    \"url\": \"http://stickermatic.herokuapp.com/items/new\"\n                  }\n                }\n              ]\n            },\n            {\n              \"items\": {\n                \"{{#each $jason}}\": {\n                  \"action\": {\n                    \"type\": \"$util.picker\",\n                    \"options\": {\n                      \"items\": [\n                        {\n                          \"text\": \"Catch'em!\",\n                          \"action\": {\n                            \"type\": \"$close\",\n                            \"success\": {\n                              \"type\": \"$set\",\n                              \"options\": {\n                                \"monster\": \"{{url}}\",\n                                \"caption\": \"{{description}}\"\n                              },\n                              \"success\": {\n                                \"type\": \"$render\"\n                              }\n                            }\n                          }\n                        },\n                        {\n                          \"text\": \"Edit caption\",\n                          \"action\": {\n                            \"type\": \"$href\",\n                            \"options\": {\n                              \"url\": \"{{edit_url}}\",\n                              \"view\": \"App\"\n                            }\n                          }\n                        }\n                      ]\n                    }\n                  },\n                  \"type\": \"horizontal\",\n                  \"style\": {\n                    \"padding\": \"20\",\n                    \"spacing\": \"10\"\n                  },\n                  \"components\": [\n                    {\n                      \"type\": \"image\",\n                      \"style\": {\n                        \"height\": \"120\"\n                      },\n                      \"url\": \"{{url}}\"\n                    },\n                    {\n                      \"type\": \"label\",\n                      \"text\": \"{{description}}\",\n                      \"style\": {\n                        \"color\": \"#44696c\",\n                        \"font\": \"AvenirNext-Regular\",\n                        \"size\": \"18\"\n                      }\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "view/layer/static.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Static Layers\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$render\"\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"style\": {\n            \"background\": \"#000000\"\n          },\n          \"header\": {\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/layer/static.json\",\n                \"view\": \"web\"\n              }\n            },\n            \"style\": {\n              \"background\": \"rgba(0,0,0,0)\",\n              \"color\": \"#ffffff\"\n            }\n          },\n          \"layers\": [{\n            \"type\": \"label\",\n            \"text\": \"THESE ARE STATIC LAYERS.\\n\\nSTATIC LAYERS CAN BE STYLED AND ALSO RESPOND TO ACTIONS.\\n\\nBUT YOU CAN'T RESIZE, ROTATE, OR DRAG THEM.\\n\\nTRY PRESSING A BUTTON BELOW.\",\n            \"style\": {\n              \"font\": \"Verdana\",\n              \"color\": \"#fdfdfd\",\n              \"size\": \"18\",\n              \"top\": \"100\",\n              \"left\": \"0\",\n              \"width\": \"100%\",\n              \"height\": \"200\",\n              \"align\": \"center\"\n            }\n          }, {\n            \"type\": \"label\",\n            \"text\": \"Banner\",\n            \"action\": {\n              \"type\": \"$util.banner\",\n              \"options\": {\n                \"title\": \"Banner\",\n                \"description\": \"This is a banner\"\n              }\n            },\n            \"style\": {\n              \"align\": \"center\",\n              \"bottom\": \"30\",\n              \"left\": \"50%-50\",\n              \"width\": \"100\",\n              \"padding\": \"10\",\n              \"background\": \"#6e2111\",\n              \"color\": \"#ffffff\",\n              \"corner_radius\": \"3\"\n            }\n          }, {\n            \"type\": \"label\",\n            \"text\": \"Alert\",\n            \"action\": {\n              \"type\": \"$util.alert\",\n              \"options\": {\n                \"title\": \"Alert\",\n                \"description\": \"This is an alert\"\n              }\n            },\n            \"style\": {\n              \"align\": \"center\",\n              \"bottom\": \"30\",\n              \"right\": \"20\",\n              \"padding\": \"10\",\n              \"background\": \"#6e2111\",\n              \"color\": \"#ffffff\",\n              \"corner_radius\": \"3\"\n            }\n          }, {\n            \"type\": \"label\",\n            \"text\": \"1UP\",\n            \"action\": {\n              \"type\": \"$audio.play\",\n              \"options\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/assets/1up.mp3\"\n              }\n            },\n            \"style\": {\n              \"align\": \"center\",\n              \"bottom\": \"30\",\n              \"left\": \"20\",\n              \"padding\": \"10\",\n              \"background\": \"#6e2111\",\n              \"color\": \"#ffffff\",\n              \"corner_radius\": \"3\"\n            }\n          }, {\n            \"type\": \"image\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/assets/0.png\",\n            \"style\": {\n              \"width\": \"86\",\n              \"height\": \"175\",\n              \"bottom\": \"30%-87\",\n              \"left\": \"50%-43\"\n            }\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "view/layer/weather/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Weather\",\n      \"offline\": \"true\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"mode\": \"c\"\n          },\n          \"success\": {\n            \"trigger\": \"draw\"\n          }\n        },\n        \"$foreground\": [\n          {\n            \"{{#if 'mode' in $get}}\": {\n              \"trigger\": \"draw\"\n            }\n          },\n          {\n            \"{{#else}}\": {\n              \"type\": \"$set\",\n              \"options\": {\n                \"mode\": \"c\"\n              },\n              \"success\": {\n                \"trigger\": \"draw\"\n              }\n            }\n          }\n        ],\n        \"camera\": {\n          \"type\": \"$snapshot\",\n          \"success\": {\n            \"type\": \"$util.share\",\n            \"options\": {\n              \"items\": [\n                {\n                  \"type\": \"image\",\n                  \"data\": \"{{$jason.data}}\"\n                }\n              ]\n            },\n            \"success\": {\n              \"type\": \"$render\"\n            }\n          }\n        },\n        \"toggle\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"mode\": [\n              {\n                \"{{#if $get.mode == 'c'}}\": \"f\"\n              },\n              {\n                \"{{#else}}\": \"c\"\n              }\n            ]\n          },\n          \"success\": {\n            \"trigger\": \"draw\"\n          }\n        },\n        \"draw\": {\n          \"type\": \"$geo.get\",\n          \"success\": {\n            \"type\": \"$network.request\",\n            \"options\": {\n              \"url\": \"http://api.openweathermap.org/data/2.5/weather?lat={{$jason.coord.split(',')[0]}}&lon={{$jason.coord.split(',')[1]}}&APPID=8ecb164bf68983a3169aaf3b9cf9feb2\"\n            },\n            \"success\": {\n              \"type\": \"$set\",\n              \"options\": {\n                \"temperature\": \"{{Math.floor(($jason.main.temp * 9/5 - 459.67)).toString()}}\",\n                \"celsius\": \"{{(Math.floor($jason.main.temp-273.15)).toString()}}\",\n                \"weather\": \"{{$jason.weather[0].description}}\",\n                \"icon\": \"http://openweathermap.org/img/w/{{$jason.weather[0].icon}}.png\"\n              },\n              \"success\": {\n                \"type\": \"$render\"\n              }\n            }\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"style\": {\n            \"background\": {\n              \"type\": \"camera\",\n              \"options\": {\n                \"device\": \"back\"\n              }\n            },\n            \"color\": \"#ffffff\",\n            \"border\": \"none\"\n          },\n          \"header\": {\n            \"title\": \" \",\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/layer/weather/index.json\",\n                \"view\": \"web\"\n              }\n            },\n            \"style\": {\n              \"background\": \"rgba(0,0,0,0)\",\n              \"color\": \"rgba(255,255,255,0.3)\"\n            }\n          },\n          \"layers\": [\n            {\n              \"type\": \"image\",\n              \"url\": \"https://s3.amazonaws.com/www.textcast.co/icons/camera%402x.png\",\n              \"action\": {\n                \"trigger\": \"camera\"\n              },\n              \"style\": {\n                \"bottom\": \"100\",\n                \"width\": \"30\",\n                \"move\": \"true\",\n                \"size\": \"20\",\n                \"color\": \"#ffffff\",\n                \"right\": \"30\"\n              }\n            }\n          ],\n          \"sections\": [\n            {\n              \"items\": [\n                {\n                  \"type\": \"horizontal\",\n                  \"style\": {\n                    \"padding_top\": \"50\",\n                    \"background\": \"rgba(0,0,0,0)\"\n                  },\n                  \"action\": {\n                    \"trigger\": \"toggle\"\n                  },\n                  \"components\": [\n                    {\n                      \"type\": \"label\",\n                      \"text\": [\n                        {\n                          \"{{#if $get.mode=='f'}}\": \" {{$get.temperature}}°F\"\n                        },\n                        {\n                          \"{{#else}}\": \" {{$get.celsius}}°C\"\n                        }\n                      ],\n                      \"style\": {\n                        \"font\": \"HelveticaNeue-UltraLight\",\n                        \"color\": \"#ffffff\",\n                        \"size\": \"70\",\n                        \"align\": \"center\"\n                      }\n                    }\n                  ]\n                },\n                {\n                  \"type\": \"vertical\",\n                  \"style\": {\n                    \"padding_bottom\": \"20\",\n                    \"spacing\": \"10\",\n                    \"background\": \"rgba(0,0,0,0)\"\n                  },\n                  \"components\": [\n                    {\n                      \"type\": \"label\",\n                      \"text\": \"{{$get.weather}}\",\n                      \"style\": {\n                        \"font\": \"HelveticaNeue-Light\",\n                        \"color\": \"#ffffff\",\n                        \"size\": \"20\",\n                        \"align\": \"center\"\n                      }\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "view/layout/horizontal.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Horizontal Layout\",\n      \"styles\": {\n        \"note\": {\n          \"font\": \"Georgia\",\n          \"size\": \"16\"\n        }\n      },\n      \"actions\": {\n        \"$pull\": {\n          \"type\": \"$flush\",\n          \"success\": {\n            \"type\": \"$reload\"\n          }\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/layout/horizontal.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [{\n        \"items\": [{\n          \"type\": \"horizontal\",\n          \"style\": {\n            \"padding\": \"15\",\n            \"distribution\": \"equalsize\",\n            \"spacing\": \"10\"\n          },\n          \"components\": [{\n            \"type\": \"label\",\n            \"class\": \"note\",\n            \"text\": \"When I first encounter René Redzepi, he is cutting a live elk in half with a chainsaw. Noma’s unwavering commitment to native, hyper-local Nordic foods requires its kitchen staff to spend hours every morning foraging the neighboring woodlands and shorelines for wild ingredients, and Redzepi has a gift for sensing gastronomic potential in everything around him.\"\n          }, {\n            \"type\": \"label\",\n            \"class\": \"note\",\n            \"text\": \"\\\"A lot of times you can find these lovely little rose hip flowers pickling in the stomach fluids of the larger field mammals that live around here,\\\" Redzepi says, his arm elbow-deep in the abdominal cavity of the freshly bisected animal, its viscera still twitching and gurgling as he fishes out two small, pink, slimy flower petals from within. \\\"Sometimes you have to saw through 20 or so elk before you find any, but it's always worth the effort. They're absolutely perfect with caramelized sweetbreads.\\\"\"\n          }]\n        }]\n      }, {\n        \"header\": {\n          \"type\": \"horizontal\",\n          \"style\": {\n            \"padding\": \"0\",\n            \"align\": \"top\",\n            \"z_index\": \"-1\"\n          },\n          \"components\": [{\n            \"type\": \"image\",\n            \"style\": {\n              \"width\": \"100%\"\n            },\n            \"url\": \"http://images.onionstatic.com/clickhole/3380/5/16x9/640.jpg\"\n          }]\n        },\n        \"items\": [{\n          \"type\": \"horizontal\",\n          \"style\": {\n            \"padding\": \"15\",\n            \"background\": \"#ffffff\",\n            \"distribution\": \"equalsize\",\n            \"spacing\": \"10\"\n          },\n          \"components\": [{\n            \"type\": \"label\",\n            \"class\": \"note\",\n            \"text\": \"Redzepi collects some of the bile-drenched petals in a jar, sets the elk carcass ablaze, and wanders off to continue foraging. He leads me down to a gray, windblown beach, where, to the untrained eye, there seems to be nothing growing but weeds and scraggly grass. But Redzepi, using hand grenades to displace large mounds of sand, almost immediately uncovers a veritable buffet of herbs and produce sticking out every which way from the soil. There’s wild parsnip, beach peas, sea lettuce, spicy lilac, Osama bin Laden’s beached corpse, horseradish, mustard flowers, and verdant goosefoot—all growing within the same 4-foot radius.\"\n          }, {\n            \"type\": \"label\",\n            \"class\": \"note\",\n            \"text\": \"“We’ll use the horseradish in a sea urchin dish, the lettuce with salted cod roe, and the corpse leg to make a nice broth with ash-roasted beets,” he explains while severing the bloated terrorist leader’s cadaver at the pelvis with his chainsaw, filling the air with a pungent, almost curry-like bouquet of hot postmortem gases. “These flavors are wholly unique to this area. You will not find them anywhere else in the world.”\"\n          }]\n        }]\n      }]\n    }\n  }\n}\n"
  },
  {
    "path": "view/layout/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Layouts\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"padding\": \"10\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue\",\n          \"size\": \"12\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/layout/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"items\": [\n            {\n              \"type\": \"label\",\n              \"class\": \"bold\",\n              \"text\": \"Vertical Layout\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/layout/vertical.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"class\": \"bold\",\n              \"text\": \"Horizontal Layout\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/layout/horizontal.json\"\n              }\n            },\n            {\n              \"type\": \"label\",\n              \"class\": \"bold\",\n              \"text\": \"Complex Nested Layout\",\n              \"href\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/view/layout/nested.json\"\n              }\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "view/layout/nested.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Nested Layout\",\n      \"styles\": {\n        \"note\": {\n          \"color\": \"#ffffff\",\n          \"font\": \"HelveticaNeue-Bold\",\n          \"size\": \"15\"\n        }\n      },\n      \"actions\": {\n        \"$pull\": {\n          \"type\": \"$flush\",\n          \"success\": {\n            \"type\": \"$reload\"\n          }\n        }\n      },\n      \"data\": {\n        \"tweets\": [{\n          \"text\": \"Animated GIFs are neon signs of the Internet.\",\n          \"image\": \"https://pbs.twimg.com/media/Cub2D-vXYAIXFQo.jpg\"\n        }, {\n          \"text\": \"I think this is a new feature on Twitter: a push notification for every tweet\",\n          \"image\": \"https://pbs.twimg.com/media/CtJYvx1XgAIilZ4.jpg\"\n        }, {\n          \"text\": \"Found the most brilliant invention in human history\",\n          \"image\": \"https://pbs.twimg.com/media/Cr7cSz1WIAA0OZj.jpg\"\n        }, {\n          \"text\": \"Ludlow and Rivington. NOW.\",\n          \"image\": \"https://pbs.twimg.com/media/CrNnHPUWEAEK_b3.jpg\"\n        }]\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"menu\": {\n              \"text\": \"View JSON\",\n              \"style\": {\n                \"color\": \"#2daaf5\"\n              },\n              \"href\": {\n                \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/layout/nested.json\",\n                \"view\": \"web\"\n              }\n            }\n          },\n          \"sections\": [{\n            \"items\": {\n              \"{{#each tweets}}\": {\n                \"type\": \"horizontal\",\n                \"style\": {\n                  \"spacing\": \"10\"\n                },\n                \"components\": [{\n                  \"type\": \"image\",\n                  \"url\": \"https://pbs.twimg.com/profile_images/557061751150112768/eMwi4Xz2_400x400.jpeg\",\n                  \"style\": {\n                    \"width\": \"48\",\n                    \"height\": \"48\",\n                    \"corner_radius\": \"5\"\n                  }\n                }, {\n                  \"type\": \"vertical\",\n                  \"style\": {\n                    \"spacing\": \"5\"\n                  },\n                  \"components\": [{\n                    \"type\": \"horizontal\",\n                    \"components\": [{\n                      \"type\": \"label\",\n                      \"text\": \"ethan\",\n                      \"style\": {\n                        \"font\": \"HelveticaNeue-Bold\",\n                        \"width\": \"50\",\n                        \"size\": \"14\"\n                      }\n                    }, {\n                      \"type\": \"label\",\n                      \"text\": \"@gliechtenstein · 8h\",\n                      \"style\": {\n                        \"color\": \"#8899a6\",\n                        \"size\": \"13\",\n                        \"font\": \"HelveticaNeue\"\n                      }\n                    }]\n                  }, {\n                    \"type\": \"label\",\n                    \"text\": \"{{text}}\",\n                    \"style\": {\n                      \"font\": \"HelveticaNeue\",\n                      \"size\": \"14\"\n                    }\n                  }, {\n                    \"type\": \"image\",\n                    \"url\": \"{{image}}\",\n                    \"style\": {\n                      \"width\": \"100%\",\n                      \"corner_radius\": \"5\"\n                    }\n                  }, {\n                    \"type\": \"horizontal\",\n                    \"style\": {\n                      \"padding_top\": \"10\"\n                    },\n                    \"components\": [{\n                      \"type\": \"image\",\n                      \"style\": {\n                        \"height\": \"20\"\n                      },\n                      \"url\": \"https://g.twimg.com/dev/documentation/image/reply-action_0.png\"\n                    }, {\n                      \"type\": \"space\",\n                      \"style\": {\n                        \"width\": \"60\"\n                      }\n                    }, {\n                      \"type\": \"image\",\n                      \"style\": {\n                        \"height\": \"20\"\n                      },\n                      \"url\": \"https://g.twimg.com/dev/documentation/image/retweet-action.png\"\n                    }, {\n                      \"type\": \"space\",\n                      \"style\": {\n                        \"width\": \"60\"\n                      }\n                    }, {\n                      \"type\": \"image\",\n                      \"style\": {\n                        \"height\": \"20\"\n                      },\n                      \"url\": \"https://g.twimg.com/dev/documentation/image/like-action.png\"\n                    }, {\n                      \"type\": \"space\"\n                    }]\n                  }]\n                }]\n              }\n            }\n          }]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "view/layout/vertical.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Vertical Layout\",\n      \"styles\": {\n        \"note\": {\n          \"color\": \"#ffffff\",\n          \"font\": \"HelveticaNeue-Bold\",\n          \"size\": \"15\"\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/layout/vertical.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [{\n        \"items\": [{\n          \"type\": \"vertical\",\n          \"style\": {\n            \"height\": \"300\"\n          },\n          \"components\": [{\n            \"type\": \"label\",\n            \"class\": \"note\",\n            \"style\": {\n              \"background\": \"#FF5733\"\n            },\n            \"text\": \"First component: Label. There's a space component below this label.\"\n          }, {\n            \"type\": \"space\"\n          }, {\n            \"type\": \"label\",\n            \"class\": \"note\",\n            \"style\": {\n              \"background\": \"#FF5733\"\n            },\n            \"text\": \"Third component: Label. There's a space component above this label.\"\n          }]\n        }]\n      }]\n    }\n  }\n}\n"
  },
  {
    "path": "view/section/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Sections Example\",\n      \"styles\": {\n        \"bold\": {\n          \"font\": \"HelveticaNeue-CondensedBold\",\n          \"padding\": \"10\",\n          \"size\": \"15\"\n        },\n        \"normal\": {\n          \"font\": \"HelveticaNeue-Bold\",\n          \"color\": \"rgb(154, 205, 50)\",\n          \"size\": \"12\"\n        },\n        \"carousel_img\": {\n          \"height\": \"210\",\n          \"width\": \"210\"\n        },\n        \"avatar_img\": {\n          \"height\": \"70\",\n          \"width\": \"70\",\n          \"corner_radius\": \"35\"\n        },\n        \"username\": {\n          \"font\": \"Avenir\",\n          \"size\": \"15\"\n        },\n        \"center\": {\n          \"align\": \"center\"\n        }\n      },\n      \"actions\": {\n        \"$foreground\": {\n          \"type\": \"$reload\"\n        }\n      }\n    },\n    \"body\": {\n      \"style\": {\n        \"background\": \"#ECA73E\"\n      },\n      \"header\": {\n        \"style\": {\n          \"background\": \"#ECA73E\"\n        },\n        \"menu\": {\n          \"text\": \"View JSON\",\n          \"href\": {\n            \"url\": \"https://github.com/Jasonette/Jasonpedia/blob/gh-pages/view/section/index.json\",\n            \"view\": \"web\"\n          }\n        }\n      },\n      \"sections\": [\n        {\n          \"type\": \"horizontal\",\n          \"header\": {\n            \"type\": \"horizontal\",\n            \"style\": {\n              \"align\": \"center\",\n              \"background\": \"#ECA73E\",\n              \"opacity\": \"0.2\",\n              \"spacing\": \"10\"\n            },\n            \"components\": [\n              {\n                \"type\": \"image\",\n                \"url\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/swipehorizontal.png\",\n                \"style\": {\n                  \"width\": \"50\"\n                }\n              },\n              {\n                \"type\": \"label\",\n                \"class\": \"bold\",\n                \"text\": \"horizontally scrolling section\"\n              }\n            ]\n          },\n          \"items\": [\n            {\n              \"type\": \"vertical\",\n              \"style\": {\n                \"width\": \"210\",\n                \"padding\": \"10\",\n                \"background\": \"#ffffff\",\n                \"align\": \"center\",\n                \"height\": \"300\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"image\",\n                  \"class\": \"carousel_img\",\n                  \"url\": \"https://jasonette.github.io/Jasonpedia/assets/homer.jpg\"\n                },\n                {\n                  \"type\": \"label\",\n                  \"text\": \"Homer Simpson\",\n                  \"class\": \"username center\"\n                },\n                {\n                  \"type\": \"button\",\n                  \"text\": \"Meow\",\n                  \"style\": {\n                    \"background\": \"rgb(100, 149, 237)\",\n                    \"color\": \"#ffffff\",\n                    \"align\": \"center\",\n                    \"width\": \"150\",\n                    \"height\": \"40\"\n                  },\n                  \"action\": {\n                    \"type\": \"$audio.play\",\n                    \"options\": {\n                      \"url\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/cat.mp3\"\n                    }\n                  }\n                }\n              ]\n            },\n            {\n              \"type\": \"vertical\",\n              \"style\": {\n                \"width\": \"210\",\n                \"padding\": \"10\",\n                \"background\": \"#ffffff\",\n                \"align\": \"center\",\n                \"height\": \"300\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"image\",\n                  \"class\": \"carousel_img\",\n                  \"url\": \"https://jasonette.github.io/Jasonpedia/assets/marge.png\"\n                },\n                {\n                  \"type\": \"label\",\n                  \"text\": \"Marge Simpson\",\n                  \"class\": \"username center\"\n                },\n                {\n                  \"type\": \"button\",\n                  \"text\": \"Meow\",\n                  \"style\": {\n                    \"background\": \"rgb(100, 149, 237)\",\n                    \"color\": \"#ffffff\",\n                    \"align\": \"center\",\n                    \"width\": \"150\",\n                    \"height\": \"40\"\n                  },\n                  \"action\": {\n                    \"type\": \"$audio.play\",\n                    \"options\": {\n                      \"url\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/cat.mp3\"\n                    }\n                  }\n                }\n              ]\n            },\n            {\n              \"type\": \"vertical\",\n              \"style\": {\n                \"width\": \"210\",\n                \"padding\": \"10\",\n                \"background\": \"#ffffff\",\n                \"align\": \"center\",\n                \"height\": \"300\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"image\",\n                  \"class\": \"carousel_img\",\n                  \"url\": \"https://jasonette.github.io/Jasonpedia/assets/bart.png\"\n                },\n                {\n                  \"type\": \"label\",\n                  \"text\": \"Bart Simpson\",\n                  \"class\": \"username center\"\n                },\n                {\n                  \"type\": \"button\",\n                  \"text\": \"Meow\",\n                  \"style\": {\n                    \"background\": \"rgb(100, 149, 237)\",\n                    \"color\": \"#ffffff\",\n                    \"align\": \"center\",\n                    \"width\": \"150\",\n                    \"height\": \"40\"\n                  },\n                  \"action\": {\n                    \"type\": \"$audio.play\",\n                    \"options\": {\n                      \"url\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/cat.mp3\"\n                    }\n                  }\n                }\n              ]\n            },\n            {\n              \"type\": \"vertical\",\n              \"style\": {\n                \"width\": \"210\",\n                \"padding\": \"10\",\n                \"background\": \"#ffffff\",\n                \"align\": \"center\",\n                \"height\": \"300\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"image\",\n                  \"class\": \"carousel_img\",\n                  \"url\": \"https://jasonette.github.io/Jasonpedia/assets/lisa.jpg\"\n                },\n                {\n                  \"type\": \"label\",\n                  \"text\": \"Lisa Simpson\",\n                  \"class\": \"username center\"\n                },\n                {\n                  \"type\": \"button\",\n                  \"text\": \"Meow\",\n                  \"style\": {\n                    \"background\": \"rgb(100, 149, 237)\",\n                    \"color\": \"#ffffff\",\n                    \"align\": \"center\",\n                    \"width\": \"150\",\n                    \"height\": \"40\"\n                  },\n                  \"action\": {\n                    \"type\": \"$audio.play\",\n                    \"options\": {\n                      \"url\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/cat.mp3\"\n                    }\n                  }\n                }\n              ]\n            },\n            {\n              \"type\": \"vertical\",\n              \"style\": {\n                \"width\": \"210\",\n                \"padding\": \"10\",\n                \"background\": \"#ffffff\",\n                \"align\": \"center\",\n                \"height\": \"300\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"image\",\n                  \"class\": \"carousel_img\",\n                  \"url\": \"https://jasonette.github.io/Jasonpedia/assets/maggie.png\"\n                },\n                {\n                  \"type\": \"label\",\n                  \"text\": \"Maggie Simpson\",\n                  \"class\": \"username center\"\n                },\n                {\n                  \"type\": \"button\",\n                  \"text\": \"Meow\",\n                  \"style\": {\n                    \"background\": \"rgb(100, 149, 237)\",\n                    \"color\": \"#ffffff\",\n                    \"align\": \"center\",\n                    \"width\": \"150\",\n                    \"height\": \"40\"\n                  },\n                  \"action\": {\n                    \"type\": \"$audio.play\",\n                    \"options\": {\n                      \"url\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/cat.mp3\"\n                    }\n                  }\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"header\": {\n            \"type\": \"horizontal\",\n            \"style\": {\n              \"background\": \"#ECA73E\",\n              \"align\": \"center\",\n              \"spacing\": \"10\"\n            },\n            \"components\": [\n              {\n                \"type\": \"image\",\n                \"url\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/swipevertical.png\",\n                \"style\": {\n                  \"width\": \"50\"\n                }\n              },\n              {\n                \"type\": \"label\",\n                \"class\": \"bold\",\n                \"text\": \"vertically scrolling section\"\n              }\n            ]\n          },\n          \"items\": [\n            {\n              \"type\": \"horizontal\",\n              \"style\": {\n                \"spacing\": \"10\",\n                \"background\": \"#edf0ff\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"image\",\n                  \"class\": \"avatar_img\",\n                  \"url\": \"https://jasonette.github.io/Jasonpedia/assets/homer.jpg\"\n                },\n                {\n                  \"type\": \"vertical\",\n                  \"components\": [\n                    {\n                      \"type\": \"label\",\n                      \"class\": \"username\",\n                      \"text\": \"Homer Simpson\"\n                    },\n                    {\n                      \"type\": \"label\",\n                      \"class\": \"normal\",\n                      \"text\": \"Donuts...\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"type\": \"horizontal\",\n              \"style\": {\n                \"spacing\": \"10\",\n                \"background\": \"#edf0ff\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"image\",\n                  \"class\": \"avatar_img\",\n                  \"url\": \"https://jasonette.github.io/Jasonpedia/assets/marge.png\"\n                },\n                {\n                  \"type\": \"vertical\",\n                  \"components\": [\n                    {\n                      \"type\": \"label\",\n                      \"class\": \"username\",\n                      \"text\": \"Marge Simpson\"\n                    },\n                    {\n                      \"type\": \"label\",\n                      \"class\": \"normal\",\n                      \"text\": \"I don't mind if you pee in the shower, but only if you're taking a shower\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"type\": \"horizontal\",\n              \"style\": {\n                \"spacing\": \"10\",\n                \"background\": \"#edf0ff\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"image\",\n                  \"class\": \"avatar_img\",\n                  \"url\": \"https://jasonette.github.io/Jasonpedia/assets/bart.png\"\n                },\n                {\n                  \"type\": \"vertical\",\n                  \"components\": [\n                    {\n                      \"type\": \"label\",\n                      \"class\": \"username\",\n                      \"text\": \"Bart Simpson\"\n                    },\n                    {\n                      \"type\": \"label\",\n                      \"class\": \"normal\",\n                      \"text\": \"Ay Caramba!\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"type\": \"horizontal\",\n              \"style\": {\n                \"spacing\": \"10\",\n                \"background\": \"#edf0ff\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"image\",\n                  \"class\": \"avatar_img\",\n                  \"url\": \"https://jasonette.github.io/Jasonpedia/assets/lisa.jpg\"\n                },\n                {\n                  \"type\": \"vertical\",\n                  \"components\": [\n                    {\n                      \"type\": \"label\",\n                      \"class\": \"username\",\n                      \"text\": \"Lisa Simpson\"\n                    },\n                    {\n                      \"type\": \"label\",\n                      \"class\": \"normal\",\n                      \"text\": \"BAAAART!\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"type\": \"horizontal\",\n              \"style\": {\n                \"spacing\": \"10\",\n                \"background\": \"#edf0ff\"\n              },\n              \"components\": [\n                {\n                  \"type\": \"image\",\n                  \"class\": \"avatar_img\",\n                  \"url\": \"https://jasonette.github.io/Jasonpedia/assets/maggie.png\"\n                },\n                {\n                  \"type\": \"vertical\",\n                  \"components\": [\n                    {\n                      \"type\": \"label\",\n                      \"class\": \"username\",\n                      \"text\": \"Maggie Simpson\"\n                    },\n                    {\n                      \"type\": \"label\",\n                      \"class\": \"normal\",\n                      \"text\": \"...\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"header\": {\n            \"type\": \"horizontal\",\n            \"style\": {\n              \"background\": \"#ECA73E\",\n              \"align\": \"center\",\n              \"spacing\": \"10\"\n            },\n            \"components\": [\n              {\n                \"type\": \"image\",\n                \"url\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/map.png\",\n                \"style\": {\n                  \"width\": \"50\"\n                }\n              },\n              {\n                \"type\": \"label\",\n                \"class\": \"bold\",\n                \"text\": \"Map component\"\n              }\n            ]\n          },\n          \"items\": [\n            {\n              \"type\": \"map\",\n              \"region\": {\n                \"coord\": \"40.7409395,-74.0083886\",\n                \"width\": \"50\"\n              },\n              \"pins\": [\n                {\n                  \"title\": \"Le Bain\",\n                  \"description\": \"Best club in NYC\",\n                  \"coord\": \"40.7409395,-74.0083886\",\n                  \"style\": {\n                    \"selected\": \"true\"\n                  }\n                }\n              ],\n              \"style\": {\n                \"width\": \"100%\",\n                \"padding\": \"0\",\n                \"height\": \"200\"\n              }\n            }\n          ]\n        },\n        {\n          \"header\": {\n            \"type\": \"horizontal\",\n            \"style\": {\n              \"background\": \"#ECA73E\",\n              \"align\": \"center\",\n              \"spacing\": \"10\"\n            },\n            \"components\": [\n              {\n                \"type\": \"image\",\n                \"url\": \"https://s3-us-west-2.amazonaws.com/fm.ethan.jason/form.png\",\n                \"style\": {\n                  \"width\": \"50\"\n                }\n              },\n              {\n                \"type\": \"label\",\n                \"class\": \"bold\",\n                \"text\": \"Form components\"\n              }\n            ]\n          },\n          \"items\": [\n            {\n              \"type\": \"textarea\",\n              \"name\": \"multiline_content\",\n              \"placeholder\": \"Type something...\",\n              \"style\": {\n                \"background\": \"#ffffff\",\n                \"width\": \"100%\",\n                \"align\": \"right\",\n                \"height\": \"200\"\n              }\n            },\n            {\n              \"type\": \"space\",\n              \"style\": {\n                \"width\": \"100%\",\n                \"background\": \"#ebebeb\",\n                \"height\": \"10\"\n              }\n            },\n            {\n              \"type\": \"textfield\",\n              \"name\": \"singleline_content\",\n              \"value\": \"44\",\n              \"placeholder\": \"Say something...\",\n              \"style\": {\n                \"background\": \"#ffffff\",\n                \"width\": \"100%\"\n              }\n            },\n            {\n              \"type\": \"space\",\n              \"style\": {\n                \"width\": \"100%\",\n                \"background\": \"#ebebeb\",\n                \"height\": \"10\"\n              }\n            },\n            {\n              \"type\": \"slider\",\n              \"name\": \"gauge\",\n              \"style\": {\n                \"color\": \"#ff0000\",\n                \"background\": \"#ffffff\"\n              },\n              \"action\": {\n                \"type\": \"$util.banner\",\n                \"options\": {\n                  \"title\": \"Value\",\n                  \"description\": \"{{parseFloat($get.gauge)*100}}%\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "webcontainer/agent/default.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Behave like a regular browser\",\n      \"description\": \"The web container will behave like a regular browser, refreshing content when you click a link\"\n    },\n    \"body\": {\n      \"header\": {\n        \"title\": \"Regular Browser\"\n      },\n      \"background\": {\n        \"type\": \"html\",\n        \"url\": \"https://news.ycombinator.com\",\n        \"action\": {\n          \"type\": \"$default\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "webcontainer/agent/fn/agent.html",
    "content": "<html>\n<head>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<style>\nbody {\n  background: white;\n}\n#qr {\n  padding-top: 50px;\n}\n#qr img {\n  width: 50%;\n  margin: 0 auto;\n}\n</style>\n<script src=\"https://cdn.rawgit.com/davidshimjs/qrcodejs/gh-pages/qrcode.min.js\"></script>\n<script>\nvar img;\nwindow.onload = function() {\n  img = new QRCode(document.querySelector(\"#qr\"), \"\");\n}\nvar qr = function(val) {\n  img.makeCode(val);\n}\n</script>\n</head>\n<body>\n<div id='qr'></div>\n</body>\n</html>\n"
  },
  {
    "path": "webcontainer/agent/fn/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Jasonette => Web Container $agent function call\",\n      \"description\": \"This example takes user input from native body.footer.input component and sends it to the web container, calling the qr code update function\",\n      \"actions\": {\n        \"qr\": {\n          \"type\": \"$agent.request\",\n          \"options\": {\n            \"id\": \"$webcontainer\",\n            \"method\": \"qr\",\n            \"params\": [\"{{$get.val}}\"]\n          }\n        }\n      }\n    },\n    \"body\": {\n      \"header\": {\n        \"title\": \"Generate QR Code\"\n      },\n      \"background\": {\n        \"type\": \"html\",\n        \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/agent/fn/agent.html\"\n      },\n      \"footer\": {\n        \"input\": {\n          \"textfield\": {\n            \"name\": \"val\",\n            \"placeholder\": \"Type something\"\n          },\n          \"right\": {\n            \"text\": \"Generate\",\n            \"action\": { \"trigger\": \"qr\" }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "webcontainer/agent/hijack.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Selective URL handling\",\n      \"description\": \"By attaching an action called 'visit' and observing the $jason.url value, we can selectively trigger different actions depending on the clicked URL. In this case the browser demonstrates a regular behavior when you click the top menu items, but does a native $href transition if you click any other link\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$render\"\n        },\n        \"visit\": [\n          {\n            \"{{#if /\\\\/(newest|newcomments|show|ask|jobs|submit)$/.test($jason.url) }}\": {\n              \"type\": \"$default\"\n            }\n          },\n          {\n            \"{{#else}}\": {\n              \"type\": \"$href\",\n              \"options\": {\n                \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/agent/hijack.json\",\n                \"preload\": {\n                  \"background\": \"#ffffff\"\n                },\n                \"options\": {\n                  \"url\": \"{{$jason.url}}\"\n                }\n              }\n            }\n          }\n        ]\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"title\": \"Custom Browser\"\n          },\n          \"background\": {\n            \"type\": \"html\",\n            \"url\": \"{{'url' in $params ? $params.url : 'https://news.ycombinator.com'}}\",\n            \"action\": {\n              \"trigger\": \"visit\"\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "webcontainer/agent/hybrid.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Jasonbase\",\n      \"actions\": {\n        \"visit\": [\n          {\n            \"{{#if /\\\\/edit/.test($jason.url)}}\": {\n              \"type\": \"$href\",\n              \"options\": {\n                \"url\": \"{{$jason.url.replace('/edit', '')}}\",\n                \"preload\": {\n                  \"background\": \"#ffffff\"\n                }\n              }\n            }\n          },\n          {\n            \"{{#else}}\": {\n              \"type\": \"$default\"\n            }\n          }\n        ]\n      }\n    },\n    \"body\": {\n      \"background\": {\n        \"type\": \"html\",\n        \"url\": \"https://www.jasonbase.com\",\n        \"action\": {\n          \"trigger\": \"visit\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "webcontainer/agent/ignore.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Ignore User Interaction\",\n      \"description\": \"Nothing will happen when you touch the web view or try to scroll\"\n    },\n    \"body\": {\n      \"header\": {\n        \"title\": \"Unbrowsable Browser\"\n      },\n      \"background\": {\n        \"type\": \"html\",\n        \"url\": \"https://news.ycombinator.com\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "webcontainer/agent/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"$jason.body.background web container (agent)\",\n      \"data\": {\n        \"items\": [\n          {\n            \"title\": \"Ignore All User Interaction\",\n            \"description\": \"By default all web containers ignore user interaction such as touch or scroll\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/agent/ignore.json\"\n          },\n          {\n            \"title\": \"$default Link Click Handling\",\n            \"description\": \"Setting type: $default as the action will let the web container behave like a regular browser\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/agent/default.json\"\n          },\n          {\n            \"title\": \"Selective Link Click Handling via native jasonette action\",\n            \"description\": \"You can set an action attribute to handle link clicks\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/agent/hijack.json\"\n          },\n          {\n            \"title\": \"Jasonette => Web Container $agent function call\",\n            \"description\": \"The $jason.body.background web container is implemented as an agent. This means it supports all $agent APIs between Jasonette core and the container\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/agent/fn/index.json\"\n          },\n          {\n            \"title\": \"Hybrid App\",\n            \"description\": \"Blur the line between web and native by seamlessly crossing over between native JASON view and web containers. In this case we use jasonbase.com to demonstrate this\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/agent/hybrid.json\"\n          }\n        ]\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"title\": \"Web Container Agent\"\n          },\n          \"sections\": [\n            {\n              \"items\": {\n                \"{{#each items}}\": {\n                  \"type\": \"vertical\",\n                  \"components\": [{\n                    \"type\": \"label\",\n                    \"text\": \"{{title}}\",\n                    \"style\": {\n                      \"font\": \"HelveticaNeue-Bold\",\n                      \"size\": \"14\"\n                    }\n                  }, {\n                    \"type\": \"label\",\n                    \"text\": \"{{description}}\",\n                    \"style\": {\n                      \"font\": \"HelveticaNeue\",\n                      \"size\": \"12\"\n                    }\n                  }],\n                  \"href\": {\n                    \"url\": \"{{url}}\",\n                    \"preload\": {\n                      \"background\": \"#ffffff\"\n                    }\n                  }\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "webcontainer/animejs.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Anime.js Background with controllable UI\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"caption\": \" \",\n            \"color\": \"#ffffff\"\n          },\n          \"success\": {\n            \"type\": \"$render\"\n          }\n        },\n        \"$pull\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"color\": [\n              {\n                \"{{#if 'color' in $get}}\": \"{{var letters = '0123456789ABCDEF'; var color = '#'; for (var i = 0; i < 6; i++ ) { color += letters[Math.floor(Math.random() * 16)]; } return color;}}\"\n              },\n              {\n                \"{{#else}}\": \"#ffffff\"\n              }\n            ]\n          },\n          \"success\": {\n            \"trigger\": \"update_color\"\n          }\n        },\n        \"update_color\": {\n          \"type\": \"$render\"\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"style\": {\n              \"background\": \"rgba(0,0,0,0)\",\n              \"color\": \"{{$get.color}}\"\n            },\n            \"title\": \"Anime.js\"\n          },\n          \"footer\": {\n            \"input\": {\n              \"left\": {\n                \"image\": \"https://raw.githubusercontent.com/gliechtenstein/images/master/camera.png\",\n                \"style\": {\n                  \"color\": \"{{$get.color}}\"\n                }\n              },\n              \"textfield\": {\n                \"name\": \"caption\",\n                \"placeholder\": \"Enter text\",\n                \"action\": {\n                  \"type\": \"$render\"\n                },\n                \"style\": {\n                  \"corner_radius\": \"0\",\n                  \"color:placeholder\": \"rgba(255,255,255,0.6)\",\n                  \"color\": \"{{$get.color}}\",\n                  \"background\": \"#000000\"\n                }\n              },\n              \"style\": {\n                \"background\": \"#222222\"\n              },\n              \"right\": {\n                \"text\": \"Send\",\n                \"style\": {\n                  \"color\": \"{{$get.color}}\"\n                },\n                \"action\": {\n                  \"type\": \"$render\"\n                }\n              }\n            }\n          },\n          \"style\": {\n            \"border\": \"none\",\n            \"color\": \"rgba(0,0,0,0)\",\n            \"background\": {\n              \"type\": \"html\",\n              \"text\": \"<html><head><style>body{background:black;} .square{font-size: 20px; font-weight: bold; font-family: arial; display: inline-block; padding: 10px; border-radius: 20px; background: {{var color; if('color' in $get){ color=$get.color; } else {color='#ffffff';} return color; }};}</style><script src='https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.0/anime.min.js'></script><script>var x=200; var y=200; var rotate=600; var move = function() {var el = document.querySelector('#domNode .el'); var domNode = anime({ targets: el, translateX: x, translateY: y, rotate: rotate}); x=Math.random()*screen.width; y=Math.random()*screen.height; rotate=Math.random()*600; }; document.addEventListener('DOMContentLoaded', function(event) { setInterval(move, 1000); }); </script><body><div id='domNode'><div class='large square el'>{{$get.caption}}</div></div></body></html>\"\n            }\n          },\n          \"sections\": [\n            {\n              \"items\": [\n                {\n                  \"type\": \"space\",\n                  \"style\": {\n                    \"height\": \"100\"\n                  }\n                },\n                {\n                  \"type\": \"vertical\",\n                  \"style\": {\n                    \"align\": \"center\"\n                  },\n                  \"components\": [\n                    {\n                      \"type\": \"image\",\n                      \"style\": {\n                        \"color\": \"{{$get.color}}\",\n                        \"align\": \"center\",\n                        \"height\": \"100\"\n                      },\n                      \"url\": \"https://raw.githubusercontent.com/gliechtenstein/images/master/swipe.png\"\n                    }\n                  ]\n                },\n                {\n                  \"type\": \"label\",\n                  \"text\": \"pull to\\nrefresh color\",\n                  \"style\": {\n                    \"color\": \"{{$get.color}}\",\n                    \"align\": \"center\",\n                    \"font\": \"HelveticaNeue\",\n                    \"size\": \"20\",\n                    \"padding\": \"10\"\n                  }\n                }\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "webcontainer/canvas.json",
    "content": "{\n  \"+\": \"https://jasonette.github.io/Jasonpedia/webcontainer/template2.json\",\n  \"title\": \"3000 particles\",\n  \"theme\": \"#000000\",\n  \"html\": \"<html><head> <script> window.onload = function(){ var NUM_PARTICLES = ( ( ROWS = 100 ) * ( COLS = 300 ) ), THICKNESS = Math.pow( 80, 2 ), SPACING = 3, MARGIN = 100, COLOR = 220, DRAG = 0.95, EASE = 0.25, container, particle, canvas, mouse, stats, list, ctx, tog, man, dx, dy, mx, my, d, t, f, a, b, i, n, w, h, p, s, r, c ; particle = { vx: 0, vy: 0, x: 0, y: 0 }; function init() { container = document.getElementById( 'container' ); canvas = document.createElement( 'canvas' ); ctx = canvas.getContext( '2d' ); man = false; tog = true; list = []; w = canvas.width = COLS * SPACING + MARGIN * 2; h = canvas.height = ROWS * SPACING + MARGIN * 2; container.style.marginLeft = Math.round( w * -0.5 ) + 'px'; container.style.marginTop = Math.round( h * -0.5 ) + 'px'; for ( i = 0; i < NUM_PARTICLES; i++ ) { p = Object.create( particle ); p.x = p.ox = MARGIN + SPACING * ( i % COLS ); p.y = p.oy = MARGIN + SPACING * Math.floor( i / COLS ); list[i] = p; } container.addEventListener( 'mousemove', function(e) { bounds = container.getBoundingClientRect(); mx = e.clientX - bounds.left; my = e.clientY - bounds.top; man = true; }); if ( typeof Stats === 'function' ) { document.body.appendChild( ( stats = new Stats() ).domElement ); } container.appendChild( canvas ); } function step() { if ( stats ) stats.begin(); if ( tog = !tog ) { if ( !man ) { t = +new Date() * 0.001; mx = w * 0.5 + ( Math.cos( t * 2.1 ) * Math.cos( t * 0.9 ) * w * 0.45 ); my = h * 0.5 + ( Math.sin( t * 3.2 ) * Math.tan( Math.sin( t * 0.8 ) ) * h * 0.45 ); } for ( i = 0; i < NUM_PARTICLES; i++ ) { p = list[i]; d = ( dx = mx - p.x ) * dx + ( dy = my - p.y ) * dy; f = -THICKNESS / d; if ( d < THICKNESS ) { t = Math.atan2( dy, dx ); p.vx += f * Math.cos(t); p.vy += f * Math.sin(t); } p.x += ( p.vx *= DRAG ) + (p.ox - p.x) * EASE; p.y += ( p.vy *= DRAG ) + (p.oy - p.y) * EASE; } } else { b = ( a = ctx.createImageData( w, h ) ).data; for ( i = 0; i < NUM_PARTICLES; i++ ) { p = list[i]; b[n = ( ~~p.x + ( ~~p.y * w ) ) * 4] = b[n+1] = b[n+2] = COLOR, b[n+3] = 255; } ctx.putImageData( a, 0, 0 ); } if ( stats ) stats.end(); requestAnimationFrame( step ); } init(); step(); }; </script> <style> html, body { background: #111; } #container { background: #111; position: absolute; left: 50%; top: 50%; } #stats { position: absolute; right: 10px; top: 10px; } /* Info */ @keyframes show-info { 0% { transform: rotateY(120deg); } 100% { transform: rotateY(0deg); } } .info { transition: all 180ms ease-out; transform-style: preserve-3d; transform: perspective(800px); font-family: sans-serif; position: absolute; font-size: 12px; opacity: 0.8; color: #fff; width: 220px; left: 0px; bottom: 20px; } .info:hover { box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.05); opacity: 1; } .info h1, .info h2, .info h3 { line-height: 1; margin: 5px 0; } .info a { transition: all 200ms ease-out; border-bottom: 1px dotted rgba(255, 255, 255, 0.4); text-decoration: none; opacity: 0.6; color: #fff; } .info a:hover { opacity: 0.99; } .info .about, .info .more { transform-origin: 0% 50%; transform: rotateY(120deg); margin-bottom: 1px; background: rgba(0, 0, 0, 0.8); padding: 12px 15px 12px 20px; } .info .about { animation: show-info 500ms cubic-bezier(0.23, 1, 0.32, 1) 600ms 1 normal forwards; padding-bottom: 15px; } .info .about a { opacity: 0.9; } .info .about h1 { letter-spacing: -1px; font-weight: 300; font-size: 19px; opacity: 0.95; } .info .about h2 { font-weight: 300; font-size: 13px; opacity: 0.8; } .info .about h3 { text-transform: uppercase; margin-top: 10px; font-size: 11px; } .info .about h3:before { margin-right: 2px; font-size: 14px; content: '›'; } .info .more { animation: show-info 500ms cubic-bezier(0.23, 1, 0.32, 1) 500ms 1 normal forwards; padding: 5px 15px 10px 20px; } .info .more a { text-transform: uppercase; margin-right: 10px; font-size: 10px; } </style> </head> <body> <div id='container'></div> <div class='info'> <hgroup class='about'> <h1>30,000 Particles</h1> <h2>A study creating performant particles with Canvas 2D</h2> </hgroup> </div> </body>\"\n}\n"
  },
  {
    "path": "webcontainer/d3gauge.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"gauge d3\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$set\",\n          \"options\": {\n            \"gauge\": \"0.1\"\n          },\n          \"success\": {\n            \"type\": \"$render\",\n            \"options\": {\n              \"template\": \"body\"\n            }\n          }\n        },\n        \"redraw\": {\n          \"type\": \"$render\"\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"style\": {\n              \"background\": \"rgba(0,0,0,0)\",\n              \"color\": \"rgba(0,0,0,0)\"\n            },\n            \"title\": \"D3.js Gauge\"\n          },\n          \"sections\": [\n            {\n              \"items\": [\n                {\n                  \"type\": \"vertical\",\n                  \"style\": {\n                    \"align\": \"center\"\n                  },\n                  \"components\": [\n                    {\n                      \"type\": \"slider\",\n                      \"name\": \"gauge\",\n                      \"style\": {\n                        \"width\": \"300\",\n                        \"color\": \"#ff0000\"\n                      },\n                      \"action\": {\n                        \"trigger\": \"redraw\"\n                      }\n                    }\n                  ]\n                }\n              ]\n            }\n          ],\n          \"style\": {\n            \"border\": \"none\",\n            \"color\": \"rgba(0,0,0,0)\",\n            \"background\": {\n              \"type\": \"html\",\n              \"text\": {\n                \"+\": \"html@https://jasonette.github.io/Jasonpedia/webcontainer/gaugehtml.json\"\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "webcontainer/d3graph.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"D3 graph app\",\n      \"actions\": {\n        \"$load\": {\n          \"trigger\": \"redraw\"\n        },\n        \"redraw\": {\n          \"type\": \"$network.request\",\n          \"options\": {\n            \"url\": \"https://bl.ocks.org/mbostock/raw/3884955/data.tsv\",\n            \"data_type\": \"raw\"\n          },\n          \"success\": {\n            \"type\": \"$set\",\n            \"options\": {\n              \"tsv\": \"{{$jason.replace(/\\\\n/g, '\\\\\\\\n')}}\"\n            },\n            \"success\": {\n              \"type\": \"$render\",\n              \"options\": {\n                \"data_type\": \"raw\"\n              }\n            }\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"style\": {\n              \"shy\": \"true\",\n              \"background\": \"#332017\",\n              \"color\": \"#ffffff\"\n            },\n            \"title\": \"D3.js graph\"\n          },\n          \"style\": {\n            \"border\": \"none\",\n            \"background\": \"#D7CCA9\"\n          },\n          \"sections\": [\n            {\n              \"header\": {\n                \"type\": \"label\",\n                \"text\": \"height 200\",\n                \"style\": {\n                  \"background\": \"#D7CCA9\"\n                }\n              },\n              \"items\": [\n                {\n                  \"type\": \"html\",\n                  \"style\": {\n                    \"height\": \"200\",\n                    \"padding\": \"0\"\n                  },\n                  \"text\": {\n                    \"+\": \"html@https://jasonette.github.io/Jasonpedia/webcontainer/d3html.json\"\n                  }\n                }\n              ]\n            },\n            {\n              \"header\": {\n                \"type\": \"label\",\n                \"text\": \"height 300\",\n                \"style\": {\n                  \"background\": \"#D7CCA9\"\n                }\n              },\n              \"items\": [\n                {\n                  \"type\": \"html\",\n                  \"style\": {\n                    \"height\": \"300\",\n                    \"padding\": \"0\"\n                  },\n                  \"text\": {\n                    \"+\": \"html@https://jasonette.github.io/Jasonpedia/webcontainer/d3html.json\"\n                  }\n                }\n              ]\n            },\n            {\n              \"header\": {\n                \"type\": \"label\",\n                \"text\": \"height 400\",\n                \"style\": {\n                  \"background\": \"#D7CCA9\"\n                }\n              },\n              \"items\": [\n                {\n                  \"type\": \"html\",\n                  \"style\": {\n                    \"height\": \"400\",\n                    \"padding\": \"0\"\n                  },\n                  \"text\": {\n                    \"+\": \"html@https://jasonette.github.io/Jasonpedia/webcontainer/d3html.json\"\n                  }\n                }\n              ]\n            },\n            {\n              \"header\": {\n                \"type\": \"label\",\n                \"text\": \"height 500\",\n                \"style\": {\n                  \"background\": \"#D7CCA9\"\n                }\n              },\n              \"items\": [\n                {\n                  \"type\": \"html\",\n                  \"style\": {\n                    \"height\": \"500\",\n                    \"padding\": \"0\"\n                  },\n                  \"text\": {\n                    \"+\": \"html@https://jasonette.github.io/Jasonpedia/webcontainer/d3html.json\"\n                  }\n                }\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "webcontainer/d3html.json",
    "content": "{\n  \"html\": \"<!DOCTYPE html> <html><head><meta charset='utf-8'> <style>.axis--x path { display: none; } .line { fill: none; stroke: steelblue; stroke-width: 1.5px; } html,body{background: #D7CCA9; width: 100%; height: 100%;} svg {width: 100%; height: 100%;} </style> </head><body> <svg></svg><script src='https://d3js.org/d3.v4.min.js'></script> <script> window.onload = function(){ var tsv = '{{$get.tsv}}'; var svg = d3.select('svg'), margin = {top: 30, right: 100, bottom: 100, left: 30}, width = window.innerWidth - margin.left - margin.right, height = window.innerHeight - margin.top - margin.bottom, g = svg.append('g').attr('transform', 'translate(' + margin.left + ',' + margin.top + ')'); var parseTime = d3.timeParse('%Y%m%d'); var x = d3.scaleTime().range([0, width]), y = d3.scaleLinear().range([height, 0]), z = d3.scaleOrdinal(d3.schemeCategory10); var line = d3.line().curve(d3.curveBasis).x(function(d) { return x(d.date); }).y(function(d) { return y(d.temperature); }); var data = d3.tsvParse(tsv, type); console.log(data.columns); var cities = data.columns.slice(1).map(function(id) { return { id: id, values: data.map(function(d) { return {date: d.date, temperature: d[id]}; }) }; }); x.domain(d3.extent(data, function(d) { return d.date; })); y.domain([ d3.min(cities, function(c) { return d3.min(c.values, function(d) { return d.temperature; }); }), d3.max(cities, function(c) { return d3.max(c.values, function(d) { return d.temperature; }); }) ]); z.domain(cities.map(function(c) { return c.id; })); g.append('g').attr('class', 'axis axis--x').attr('transform', 'translate(0,' + height + ')').call(d3.axisBottom(x)); g.append('g').attr('class', 'axis axis--y').call(d3.axisLeft(y)).append('text').attr('transform', 'rotate(-90)').attr('y', 6).attr('dy', '0.71em').attr('fill', '#000').text('Temperature, ºF'); var city = g.selectAll('.city').data(cities).enter().append('g').attr('class', 'city'); city.append('path').attr('class', 'line').attr('d', function(d) { return line(d.values); }).style('stroke', function(d) { return z(d.id); }); city.append('text').datum(function(d) { return {id: d.id, value: d.values[d.values.length - 1]}; }).attr('transform', function(d) { return 'translate(' + x(d.value.date) + ',' + y(d.value.temperature) + ')'; }).attr('x', 3).attr('dy', '0.35em').style('font', '10px sans-serif').text(function(d) { return d.id; }); function type(d, _, columns) { d.date = parseTime(d.date); for (var i = 1, n = columns.length, c; i < n; ++i) d[c = columns[i]] = +d[c]; return d; } }; </script></body></html>\"\n}\n"
  },
  {
    "path": "webcontainer/feed/animated_item.json",
    "content": "{\n  \"item\": {\n    \"type\": \"vertical\",\n    \"style\": {\n      \"padding\": \"0\",\n      \"height\": \"400\"\n    },\n    \"components\": [\n      {\n        \"type\": \"html\",\n        \"text\": \"<html><head><style>.square{background: red; width: 50px; height: 50px;}</style><script src='https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.0/anime.min.js'></script><script>var x=200; var move = function() {var el = document.querySelector('#domNode .el'); var domNode = anime({ targets: el, translateX: x, translateY: x}); x=200-x;}; document.addEventListener('DOMContentLoaded', function(event) { setInterval(move, 1000); }); </script><body><div id='domNode'><div class='large square el'></div></div></body></html>\"\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "webcontainer/feed/db.json",
    "content": "{\n  \"items\": [\n    {\n      \"avatar\": \"https://pbs.twimg.com/profile_images/557061751150112768/eMwi4Xz2.jpeg\",\n      \"username\": \"ethan\",\n      \"status\": \"Check out this animation created by drawing directly into HTML canvas!\",\n      \"interactive\": \"false\",\n      \"style\": {\n        \"height\": \"280\",\n        \"width\": \"280\",\n        \"corner_radius\": \"140\"\n      },\n      \"embed\": \"<html><head><style>body{background: red; width: 100%; padding:0; margin: 0;} iframe{width: 100%; border:0;} html{width: 100%; padding:0; margin:0; }</style><script>var sun = new Image();var moon = new Image();var earth = new Image();function init() {  sun.src = 'https://mdn.mozillademos.org/files/1456/Canvas_sun.png';  moon.src = 'https://mdn.mozillademos.org/files/1443/Canvas_moon.png';  earth.src = 'https://mdn.mozillademos.org/files/1429/Canvas_earth.png';  window.requestAnimationFrame(draw);}function draw() {  var ctx = document.getElementById('canvas').getContext('2d');  ctx.globalCompositeOperation = 'destination-over';  ctx.clearRect(0, 0, 300, 300); ctx.fillStyle = 'rgba(0, 0, 0, 0.4)';  ctx.strokeStyle = 'rgba(0, 153, 255, 0.4)';  ctx.save();  ctx.translate(150, 150);  var time = new Date();  ctx.rotate(((2 * Math.PI) / 60) * time.getSeconds() + ((2 * Math.PI) / 60000) * time.getMilliseconds());  ctx.translate(105, 0);  ctx.fillRect(0, -12, 50, 24); ctx.drawImage(earth, -12, -12);  ctx.save();  ctx.rotate(((2 * Math.PI) / 6) * time.getSeconds() + ((2 * Math.PI) / 6000) * time.getMilliseconds());  ctx.translate(0, 28.5);  ctx.drawImage(moon, -3.5, -3.5);  ctx.restore();  ctx.restore();    ctx.beginPath();  ctx.arc(150, 150, 105, 0, Math.PI * 2, false); ctx.stroke();   ctx.drawImage(sun, 0, 0, 300, 300);  window.requestAnimationFrame(draw);}init();</script></head><body><canvas id='canvas' width='300' height='300'></canvas></body></html>\"\n    },\n    {\n      \"avatar\": \"https://pbs.twimg.com/profile_images/557061751150112768/eMwi4Xz2.jpeg\",\n      \"username\": \"ethan\",\n      \"interactive\": \"true\",\n      \"style\": {\n        \"height\": \"150\"\n      },\n      \"status\": \"Watch my laptop, Alexa, and Google home talk to one another\",\n      \"embed\": \"<html><head><style>iframe{width: 100%; border:0;}</style></head><body><iframe src='https://www.youtube.com/embed/Kpxj9wvB4Fk' frameborder='0' allowfullscreen></iframe></body></html>\"\n    },\n    {\n      \"avatar\": \"https://pbs.twimg.com/profile_images/557061751150112768/eMwi4Xz2.jpeg\",\n      \"username\": \"ethan\",\n      \"status\": \"This is an iframe embed using Embedly\",\n      \"interactive\": \"true\",\n      \"style\": {\n        \"height\": \"300\"\n      },\n      \"embed\": \"<html><head><style>body{width: 100%; padding:0; margin: 0;} iframe{width: 100%; border:0;} html{width: 100%; padding:0; margin:0; }</style></head><body><blockquote class='embedly-card'><h4><a href='https://www.nytimes.com/2015/10/23/opinion/lady-gaga-and-the-life-of-passion.html'>Lady Gaga and the Life of Passion</a></h4><p>Some people are seized by this task with a fierce longing. Maybe they are propelled by wounds that need urgent healing or by a fear of loneliness or fragmentation. Maybe they are driven by some glorious fantasy to make a mark on the world.</p></blockquote><script async src='https://cdn.embedly.com/widgets/platform.js' charset='UTF-8'></script></body></html>\"\n    },\n    {\n      \"avatar\": \"https://pbs.twimg.com/profile_images/557061751150112768/eMwi4Xz2.jpeg\",\n      \"username\": \"ethan\",\n      \"interactive\": \"true\",\n      \"style\": {\n        \"height\": \"300\"\n      },\n      \"status\": \"Another embed using embedly\",\n      \"embed\": \"<html><head><style>body{width: 100%; padding:0; margin: 0;} iframe{width: 100%; border:0;} html{width: 100%; padding:0; margin:0; }</style></head><body><blockquote class='embedly-card'><h4><a href='https://instagram.com/p/89CUyVoVY9/'>Photograph by @paulnicklen taken while on assignment for @natgeo. This is a photo from the past and I'm here to shoot something of much greater importance. However, our mission is being compromised by terrible weather. #Follow me on @paulnicklen to see if we succeed this week or not. With this heavy rain we will definitely not be seeing the aurora borealis tonight. #challenge #nature #instaweather #smile #explore</a></h4><p>601.1k Likes, 5,765 Comments - National Geographic (@natgeo) on Instagram: 'Photograph by @paulnicklen taken while on assignment for @natgeo. This is a photo from the past and...'</p></blockquote><script src='https://cdn.embedly.com/widgets/platform.js' charset='UTF-8' type='text/javascript'></script></body></html>\"\n    },\n    {\n      \"avatar\": \"https://pbs.twimg.com/profile_images/557061751150112768/eMwi4Xz2.jpeg\",\n      \"username\": \"ethan\",\n      \"interactive\": \"true\",\n      \"style\": {\n        \"width\": \"280\",\n        \"height\": \"280\",\n        \"corner_radius\": \"140\"\n      },\n      \"status\": \"Swipe left to move left, swipe right to move right, tap to jump.\",\n      \"embed\": \"<!doctype html> <html> <head> <meta charset='UTF-8' /> <title>Phaser Example Runner</title> <meta name='viewport' content='initial-scale=1 maximum-scale=1 user-scalable=0 minimal-ui' /> <script src='http://hammerjs.github.io/dist/hammer.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js' type='text/javascript'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/phaser/2.6.2/phaser.min.js' type='text/javascript'></script> <script src='https://examples.phaser.io/_site/phaser/blob.js' type='text/javascript'></script> <script src='https://examples.phaser.io/_site/phaser/canvas-to-blob.js' type='text/javascript'></script> <script src='https://examples.phaser.io/_site/phaser/filesaver.js' type='text/javascript'></script> <script src='https://examples.phaser.io/_site/phaser/embed.js' type='text/javascript'></script> <style> html,body {width:100%;height:100%; margin: 0px; padding: 0px; font-family: Arial; font-size: 14px; background-color: #000000; color: #fff; } canvas {width: 100%, height: 100%;} </style> </head> <body> <div id='phaser-example'></div> <script type='text/javascript'> var IDE_HOOK = false; var VERSION = '2.6.2'; var d; var j; var game = new Phaser.Game(window.innerWidth, window.innerHeight, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render }); function preload() { game.load.tilemap('level1', 'https://examples.phaser.io/assets/games/starstruck/level1.json', null, Phaser.Tilemap.TILED_JSON); game.load.image('tiles-1', 'https://examples.phaser.io/assets/games/starstruck/tiles-1.png'); game.load.spritesheet('dude', 'https://examples.phaser.io/assets/games/starstruck/dude.png', 32, 48); game.load.spritesheet('droid', 'https://examples.phaser.io/assets/games/starstruck/droid.png', 32, 32); game.load.image('starSmall', 'https://examples.phaser.io/assets/games/starstruck/star.png'); game.load.image('starBig', 'https://examples.phaser.io/assets/games/starstruck/star2.png'); game.load.image('background', 'https://examples.phaser.io/assets/games/starstruck/background2.png'); } var map; var tileset; var layer; var player; var facing = 'left'; var jumpTimer = 0; var cursors; var jumpButton; var bg; function create() { game.physics.startSystem(Phaser.Physics.ARCADE); game.stage.backgroundColor = '#000000'; bg = game.add.tileSprite(0, 0, 800, 600, 'background'); bg.fixedToCamera = true; map = game.add.tilemap('level1'); map.addTilesetImage('tiles-1'); map.setCollisionByExclusion([ 13, 14, 15, 16, 46, 47, 48, 49, 50, 51 ]); layer = map.createLayer('Tile Layer 1'); layer.resizeWorld(); game.physics.arcade.gravity.y = 1000; player = game.add.sprite(32, 32, 'dude'); game.physics.enable(player, Phaser.Physics.ARCADE); player.body.bounce.y = 0.2; player.body.collideWorldBounds = true; player.body.setSize(20, 32, 5, 16); player.animations.add('left', [0, 1, 2, 3], 10, true); player.animations.add('turn', [4], 20, true); player.animations.add('right', [5, 6, 7, 8], 10, true); game.camera.follow(player); cursors = game.input.keyboard.createCursorKeys(); jumpButton = game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR); } function update() { game.physics.arcade.collide(player, layer); player.body.velocity.x = 0; if (d=='left' || cursors.left.isDown) { player.body.velocity.x = -150; if (facing != 'left') { player.animations.play('left'); facing = 'left'; } } else if (d=='right' || cursors.right.isDown) { player.body.velocity.x = 150; if (facing != 'right') { player.animations.play('right'); facing = 'right'; } } else { if (facing != 'idle') { player.animations.stop(); if (facing == 'left') { player.frame = 0; } else { player.frame = 5; } facing = 'idle'; } } if (j || jumpButton.isDown && player.body.onFloor() && game.time.now > jumpTimer) { player.body.velocity.y = -250; jumpTimer = game.time.now + 750; } } function render () { } function setDirection(dir){ d = dir; } function jump() { j = true; setTimeout(function(){j=false;}, 100); } function left () {setDirection('left');} function right () { setDirection('right'); } var h = new Hammer(document.body); h.on('swipeleft', function(){left();}); h.on('swiperight', function(){ right(); }); h.on('tap', function(){jump();}); </script> </body> </html>\"\n    }\n  ]\n}\n"
  },
  {
    "path": "webcontainer/feed/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Feed\",\n      \"data\": {\n        \"items\": {\n          \"+\": \"items@https://jasonette.github.io/Jasonpedia/webcontainer/feed/db.json\"\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"title\": \"the feed\",\n            \"style\": {\n              \"theme\": \"dark\"\n            }\n          },\n          \"sections\": [\n            {\n              \"items\": {\n                \"{{#each items}}\": {\n                  \"+\": \"https://jasonette.github.io/Jasonpedia/webcontainer/feed/item.json\"\n                }\n              }\n            },\n            {\n              \"items\": [{\n                \"+\": \"item@https://jasonette.github.io/Jasonpedia/webcontainer/feed/special_item.json\"\n              }, {\n                \"+\": \"item@https://jasonette.github.io/Jasonpedia/webcontainer/feed/animated_item.json\"\n              }]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "webcontainer/feed/item.json",
    "content": "{\n  \"type\": \"horizontal\",\n  \"style\": {\n    \"spacing\": \"10\",\n    \"padding\": \"10\"\n  },\n  \"components\": [\n    {\n      \"type\": \"image\",\n      \"url\": \"{{avatar}}\",\n      \"style\": {\n        \"width\": \"50\",\n        \"corner_radius\": \"25\"\n      }\n    },\n    {\n      \"type\": \"vertical\",\n      \"style\": {\n        \"padding\": \"10\",\n        \"spacing\": \"5\"\n      },\n      \"components\": [\n        {\n          \"type\": \"label\",\n          \"text\": \"{{username}}\",\n          \"style\": {\n            \"font\": \"HelveticaNeue-Bold\",\n            \"size\": \"14\"\n          }\n        },\n        {\n          \"type\": \"label\",\n          \"text\": \"{{status}}\",\n          \"style\": {\n            \"font\": \"HelveticaNeue\",\n            \"size\": \"12\"\n          }\n        },\n        {\n          \"type\": \"space\",\n          \"style\": {\n            \"height\": \"20\"\n          }\n        },\n        [{\n          \"{{#if interactive == 'true'}}\": {\n            \"type\": \"html\",\n            \"style\": \"{{style}}\",\n            \"text\": \"{{embed}}\",\n            \"action\": {\n              \"type\": \"$default\"\n            }\n          }\n        }, {\n          \"{{#else}}\": {\n            \"type\": \"html\",\n            \"style\": \"{{style}}\",\n            \"text\": \"{{embed}}\"\n          }\n        }]\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "webcontainer/feed/special_item.json",
    "content": "{\n  \"item\": {\n    \"type\": \"vertical\",\n    \"components\": [\n      {\n        \"type\": \"html\",\n        \"style\": {\n          \"height\": \"150\"\n        },\n        \"text\": \"<html><head><style>body{width: 100%; padding:0; margin:0;} h1{font-size: 20px; font-family: arial; width: 100%; height: 100%; color: white; background:url(http://astute.co/wp-content/uploads/2014/11/stock-photography.jpg); background-size: cover; padding: 10px;}</style></head><body><h1>Sunset</h1></body></html>\"\n      },\n      {\n        \"type\": \"horizontal\",\n        \"style\": {\n          \"spacing\": \"10\",\n          \"padding\": \"10\"\n        },\n        \"components\": [\n          {\n            \"type\": \"html\",\n            \"style\": {\n              \"height\": \"100\",\n              \"width\": \"100\",\n              \"corner_radius\": \"50\"\n            },\n            \"text\": \"<html><head><style>body{width: 100%; padding:0; margin:0;} h1{font-size: 20px; font-family: arial; width: 100%; height: 100%; color: white; background:url(http://astute.co/wp-content/uploads/2014/11/stock-photography.jpg); background-size: cover; padding: 10px;}</style></head><body><h1>Sunset</h1></body></html>\"\n          },\n          {\n            \"type\": \"vertical\",\n            \"style\": {\n              \"padding\": \"10\",\n              \"spacing\": \"5\"\n            },\n            \"components\": [\n              {\n                \"type\": \"label\",\n                \"text\": \"Ethan\",\n                \"style\": {\n                  \"font\": \"HelveticaNeue-Bold\",\n                  \"size\": \"14\"\n                }\n              },\n              {\n                \"type\": \"label\",\n                \"text\": \"Check out this video!\",\n                \"style\": {\n                  \"font\": \"HelveticaNeue\",\n                  \"size\": \"12\"\n                }\n              },\n              {\n                \"type\": \"html\",\n                \"style\": {\n                  \"height\": \"150\"\n                },\n                \"text\": \"<html><head><style>body{width: 100%; padding:0; margin:0;} h1{font-size: 20px; font-family: arial; width: 100%; height: 100%; color: white; background:url(http://astute.co/wp-content/uploads/2014/11/stock-photography.jpg); background-size: cover; padding: 10px;}</style></head><body><h1>Sunset</h1></body></html>\"\n              },\n              {\n                \"type\": \"horizontal\",\n                \"components\": [\n                  {\n                    \"type\": \"html\",\n                    \"style\": {\n                      \"width\": \"100\",\n                      \"height\": \"150\"\n                    },\n                    \"text\": \"<html><head><style>body{width: 100%; padding:0; margin:0;} h1{font-size: 20px; font-family: arial; width: 100%; height: 100%; color: white; background:url(http://astute.co/wp-content/uploads/2014/11/stock-photography.jpg); background-size: cover; padding: 10px;}</style></head><body><h1>Sunset</h1></body></html>\"\n                  },\n                  {\n                    \"type\": \"html\",\n                    \"style\": {\n                      \"height\": \"150\"\n                    },\n                    \"text\": \"<html><head><style>body{width: 100%; padding:0; margin:0;} h1{font-size: 20px; font-family: arial; width: 100%; height: 100%; color: white; background:url(http://astute.co/wp-content/uploads/2014/11/stock-photography.jpg); background-size: cover; padding: 10px;}</style></head><body><h1>Sunset</h1></body></html>\"\n                  }\n                ]\n              }\n            ]\n          }\n        ]\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "webcontainer/gaugehtml.json",
    "content": "{\n  \"html\": \"<!DOCTYPE html> <html> <head lang='en'> <meta charset='UTF-8'> <title></title> <script src='http://d3js.org/d3.v3.min.js' language='JavaScript'></script> <script> function liquidFillGaugeDefaultSettings(){ return { minValue: 0, maxValue: 100, circleThickness: 0.05, circleFillGap: 0.05, circleColor: '#178BCA', waveHeight: 0.05, waveCount: 1, waveRiseTime: 1000, waveAnimateTime: 18000, waveRise: true, waveHeightScaling: true, waveAnimate: true, waveColor: '#178BCA', waveOffset: 0, textVertPosition:.5, textSize: 1, valueCountUp: true, displayPercent: true, textColor: '#045681', waveTextColor: '#A4DBf8' }; } function loadLiquidFillGauge(elementId, value, config) { if(config == null) config = liquidFillGaugeDefaultSettings(); var gauge = d3.select('#' + elementId); var radius = Math.min(parseInt(gauge.style('width')), parseInt(gauge.style('height')))/2; var locationX = parseInt(gauge.style('width'))/2 - radius; var locationY = parseInt(gauge.style('height'))/2 - radius; var fillPercent = Math.max(config.minValue, Math.min(config.maxValue, value))/config.maxValue; var waveHeightScale; if(config.waveHeightScaling){ waveHeightScale = d3.scale.linear().range([0,config.waveHeight,0]).domain([0,50,100]); } else { waveHeightScale = d3.scale.linear().range([config.waveHeight,config.waveHeight]).domain([0,100]); } var textPixels = (config.textSize*radius/2); var textFinalValue = parseFloat(value).toFixed(2); var textStartValue = config.valueCountUp?config.minValue:textFinalValue; var percentText = config.displayPercent?'%':''; var circleThickness = config.circleThickness * radius; var circleFillGap = config.circleFillGap * radius; var fillCircleMargin = circleThickness + circleFillGap; var fillCircleRadius = radius - fillCircleMargin; var waveHeight = fillCircleRadius*waveHeightScale(fillPercent*100); var waveLength = fillCircleRadius*2/config.waveCount; var waveClipCount = 1+config.waveCount; var waveClipWidth = waveLength*waveClipCount; var textRounder = function(value){ return Math.round(value); }; if(parseFloat(textFinalValue) != parseFloat(textRounder(textFinalValue))){ textRounder = function(value){ return parseFloat(value).toFixed(1); }; } if(parseFloat(textFinalValue) != parseFloat(textRounder(textFinalValue))){ textRounder = function(value){ return parseFloat(value).toFixed(2); }; } var data = []; for(var i = 0; i <= 40*waveClipCount; i++){ data.push({x: i/(40*waveClipCount), y: (i/(40))}); } var gaugeCircleX = d3.scale.linear().range([0,2*Math.PI]).domain([0,1]); var gaugeCircleY = d3.scale.linear().range([0,radius]).domain([0,radius]); var waveScaleX = d3.scale.linear().range([0,waveClipWidth]).domain([0,1]); var waveScaleY = d3.scale.linear().range([0,waveHeight]).domain([0,1]); var waveRiseScale = d3.scale.linear().range([(fillCircleMargin+fillCircleRadius*2+waveHeight),(fillCircleMargin-waveHeight)]).domain([0,1]); var waveAnimateScale = d3.scale.linear().range([0, waveClipWidth-fillCircleRadius*2]).domain([0,1]); var textRiseScaleY = d3.scale.linear().range([fillCircleMargin+fillCircleRadius*2,(fillCircleMargin+textPixels*0.7)]).domain([0,1]); var gaugeGroup = gauge.append('g').attr('transform','translate('+locationX+','+locationY+')'); var gaugeCircleArc = d3.svg.arc().startAngle(gaugeCircleX(0)).endAngle(gaugeCircleX(1)).outerRadius(gaugeCircleY(radius)).innerRadius(gaugeCircleY(radius-circleThickness)); gaugeGroup.append('path').attr('d', gaugeCircleArc).style('fill', config.circleColor).attr('transform','translate('+radius+','+radius+')'); var text1 = gaugeGroup.append('text').text(textRounder(textStartValue) + percentText).attr('class', 'liquidFillGaugeText').attr('text-anchor', 'middle').attr('font-size', textPixels + 'px').style('fill', config.textColor).attr('transform','translate('+radius+','+textRiseScaleY(config.textVertPosition)+')'); var clipArea = d3.svg.area().x(function(d) { return waveScaleX(d.x); } ).y0(function(d) { return waveScaleY(Math.sin(Math.PI*2*config.waveOffset*-1 + Math.PI*2*(1-config.waveCount) + d.y*2*Math.PI));} ).y1(function(d) { return (fillCircleRadius*2 + waveHeight); } ); var waveGroup = gaugeGroup.append('defs').append('clipPath').attr('id', 'clipWave' + elementId); var wave = waveGroup.append('path').datum(data).attr('d', clipArea).attr('T', 0); var fillCircleGroup = gaugeGroup.append('g').attr('clip-path', 'url(#clipWave' + elementId + ')'); fillCircleGroup.append('circle').attr('cx', radius).attr('cy', radius).attr('r', fillCircleRadius).style('fill', config.waveColor); var text2 = fillCircleGroup.append('text').text(textRounder(textStartValue) + percentText).attr('class', 'liquidFillGaugeText').attr('text-anchor', 'middle').attr('font-size', textPixels + 'px').style('fill', config.waveTextColor).attr('transform','translate('+radius+','+textRiseScaleY(config.textVertPosition)+')'); if(config.valueCountUp){ var textTween = function(){ var i = d3.interpolate(this.textContent, textFinalValue); return function(t) { this.textContent = textRounder(i(t)) + percentText; } }; text1.transition().duration(config.waveRiseTime).tween('text', textTween); text2.transition().duration(config.waveRiseTime).tween('text', textTween); } var waveGroupXPosition = fillCircleMargin+fillCircleRadius*2-waveClipWidth; if(config.waveRise){ waveGroup.attr('transform','translate('+waveGroupXPosition+','+waveRiseScale(0)+')').transition().duration(config.waveRiseTime).attr('transform','translate('+waveGroupXPosition+','+waveRiseScale(fillPercent)+')').each('start', function(){ wave.attr('transform','translate(1,0)'); }); } else { waveGroup.attr('transform','translate('+waveGroupXPosition+','+waveRiseScale(fillPercent)+')'); } if(config.waveAnimate) animateWave(); function animateWave() { wave.attr('transform','translate('+waveAnimateScale(wave.attr('T'))+',0)'); wave.transition().duration(config.waveAnimateTime * (1-wave.attr('T'))).ease('linear').attr('transform','translate('+waveAnimateScale(1)+',0)').attr('T', 1).each('end', function(){ wave.attr('T', 0); animateWave(config.waveAnimateTime); }); } function GaugeUpdater(){ this.update = function(value){ var newFinalValue = parseFloat(value).toFixed(2); var textRounderUpdater = function(value){ return Math.round(value); }; if(parseFloat(newFinalValue) != parseFloat(textRounderUpdater(newFinalValue))){ textRounderUpdater = function(value){ return parseFloat(value).toFixed(1); }; } if(parseFloat(newFinalValue) != parseFloat(textRounderUpdater(newFinalValue))){ textRounderUpdater = function(value){ return parseFloat(value).toFixed(2); }; } var textTween = function(){ var i = d3.interpolate(this.textContent, parseFloat(value).toFixed(2)); return function(t) { this.textContent = textRounderUpdater(i(t)) + percentText; } }; text1.transition().duration(config.waveRiseTime).tween('text', textTween); text2.transition().duration(config.waveRiseTime).tween('text', textTween); var fillPercent = Math.max(config.minValue, Math.min(config.maxValue, value))/config.maxValue; var waveHeight = fillCircleRadius*waveHeightScale(fillPercent*100); var waveRiseScale = d3.scale.linear().range([(fillCircleMargin+fillCircleRadius*2+waveHeight),(fillCircleMargin-waveHeight)]).domain([0,1]); var newHeight = waveRiseScale(fillPercent); var waveScaleX = d3.scale.linear().range([0,waveClipWidth]).domain([0,1]); var waveScaleY = d3.scale.linear().range([0,waveHeight]).domain([0,1]); var newClipArea; if(config.waveHeightScaling){ newClipArea = d3.svg.area().x(function(d) { return waveScaleX(d.x); } ).y0(function(d) { return waveScaleY(Math.sin(Math.PI*2*config.waveOffset*-1 + Math.PI*2*(1-config.waveCount) + d.y*2*Math.PI));} ).y1(function(d) { return (fillCircleRadius*2 + waveHeight); } ); } else { newClipArea = clipArea; } var newWavePosition = config.waveAnimate?waveAnimateScale(1):0; wave.transition().duration(0).transition().duration(config.waveAnimate?(config.waveAnimateTime * (1-wave.attr('T'))):(config.waveRiseTime)).ease('linear').attr('d', newClipArea).attr('transform','translate('+newWavePosition+',0)').attr('T','1').each('end', function(){ if(config.waveAnimate){ wave.attr('transform','translate('+waveAnimateScale(0)+',0)'); animateWave(config.waveAnimateTime); } }); waveGroup.transition().duration(config.waveRiseTime).attr('transform','translate('+waveGroupXPosition+','+newHeight+')') } } return new GaugeUpdater(); } </script> <style> .liquidFillGaugeText { font-family: Helvetica; font-weight: bold; } body {background: black; padding-top: 200px;} </style> </head> <body> <svg id='fillgauge1' width='97%' height='250' onclick='gauge1.update({{$get.gauge}});'></svg> <script language='JavaScript'> window.onload = function(){ gauge1 = loadLiquidFillGauge('fillgauge1', {{$get.gauge*100}}); var config1 = liquidFillGaugeDefaultSettings(); config1.circleColor = '#FF7777'; config1.textColor = '#FF4444'; config1.waveTextColor = '#FFAAAA'; config1.waveColor = '#FFDDDD'; config1.circleThickness = 0.2; config1.textVertPosition = 0.2; config1.waveAnimateTime = 1000; function NewValue(){ if(Math.random() > .5){ return Math.round(Math.random()*100); } else { return (Math.random()*100).toFixed(1); } }}; </script> </body> </html>\"\n}\n"
  },
  {
    "path": "webcontainer/iframe.json",
    "content": "{\n  \"+\": \"https://jasonette.github.io/Jasonpedia/webcontainer/template.json\",\n  \"title\": \"iframe\",\n  \"theme\": \"rgba(0,0,0,0)\",\n  \"html\": \"<html><style>iframe,body,html{width:100%;height:100%;margin:0;padding:0;}</style><iframe src='https://www.hardbound.co/read/fire/1?embed=true' frameborder='0' scrolling='no'></iframe></html>\",\n  \"action\": {\n    \"type\": \"$default\"\n  }\n}\n"
  },
  {
    "path": "webcontainer/index.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"HTML demo\",\n      \"data\": {\n        \"items\": [\n          {\n            \"name\": \"Agent\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/agent/index.json\"\n          },\n          {\n            \"name\": \"anime.js\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/animejs.json\"\n          },\n          {\n            \"name\": \"lots of web containers\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/lots.json\"\n          },\n          {\n            \"name\": \"pdf.js\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/pdf.json\"\n          },\n          {\n            \"name\": \"svg\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/svg.json\"\n          },\n          {\n            \"name\": \"three.js\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/threejsblocks.json\"\n          },\n          {\n            \"name\": \"three.js rainbow\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/threejsrainbow.json\"\n          },\n          {\n            \"name\": \"phaser\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/phasergame.json\"\n          },\n          {\n            \"name\": \"Gauge D3\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/d3gauge.json\"\n          },\n          {\n            \"name\": \"D3 graph\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/d3graph.json\"\n          },\n          {\n            \"name\": \"Feed\",\n            \"url\": \"https://jasonette.github.io/Jasonpedia/webcontainer/feed/index.json\"\n          }\n        ]\n      },\n      \"templates\": {\n        \"body\": {\n          \"style\": {\n            \"background\": \"#000000\",\n            \"color\": \"#ffffff\",\n            \"border\": \"none\"\n          },\n          \"header\": {\n            \"style\": {\n              \"background\": \"#000000\",\n              \"color\": \"#ffffff\"\n            },\n            \"title\": \"< ·ᴥ·>\"\n          },\n          \"sections\": [\n            {\n              \"items\": {\n                \"{{#each items}}\": {\n                  \"type\": \"html\",\n                  \"text\": \"<html><head><style>body{background:black;} .square{font-size: 20px; font-weight: light; font-family: 'Helvetica Neue', helvetica; display: inline-block; padding: 10px; border-radius: 20px; color:rgba(255,255,255,0.7);}</style><script src='https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.0/anime.min.js'></script><script>var x=0; var y=0; var rotate=0; var move = function() {var el = document.querySelector('#domNode .el'); var domNode = anime({ targets: el, rotate: rotate}); if(rotate <= 15) {rotate=rotate+5;} else {rotate=0;} }; document.addEventListener('DOMContentLoaded', function(event) { setInterval(move, 1000); }); </script><body><div id='domNode'><div class='large square el'>{{name}}</div></div></body></html>\",\n                  \"style\": {\n                    \"height\": \"120\",\n                    \"color\": \"rgba(255,255,255,0.7)\"\n                  },\n                  \"href\": {\n                    \"url\": \"{{url}}\"\n                  }\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "webcontainer/lots.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"attaching action to inline web container\",\n      \"actions\": {\n        \"banner\": {\n          \"type\": \"$util.banner\",\n          \"options\": {\n            \"title\": \"Touched\",\n            \"description\": \"{{$jason.id}}\"\n          }\n        }\n      },\n      \"data\": {\n        \"images\": [\n          \"https://image.shutterstock.com/z/stock-photo-businessman-climbing-stairs-ambitions-concept-602439413.jpg\",\n          \"https://image.shutterstock.com/z/stock-photo-image-of-wooden-table-in-front-of-abstract-blurred-background-of-resturant-lights-321651011.jpg\",\n          \"https://image.shutterstock.com/z/stock-photo-abstract-bokeh-background-297272828.jpg\",\n          \"https://image.shutterstock.com/z/stock-photo-sand-and-sea-and-sky-417655534.jpg\",\n          \"https://image.shutterstock.com/z/stock-photo-elegant-futuristic-light-and-reflection-with-grid-line-background-d-rendering-536582824.jpg\",\n          \"https://image.shutterstock.com/z/stock-photo-road-through-landscape-road-and-car-travel-scenic-and-sunset-road-travel-concept-car-travel-321745829.jpg\"\n        ]\n      },\n      \"templates\": {\n        \"body\": {\n          \"sections\": [\n            {\n              \"items\": {\n                \"{{#each images}}\": {\n                  \"type\": \"vertical\",\n                  \"components\": [\n                    {\n                      \"type\": \"html\",\n                      \"style\": {\n                        \"height\": \"150\"\n                      },\n                      \"action\": {\n                        \"trigger\": \"banner\",\n                        \"options\": {\n                          \"id\": \"top\"\n                        }\n                      },\n                      \"text\": \"<html><head><style>body{width: 100%; padding:0; margin:0;} h1{font-size: 20px; font-family: arial; width: 100%; height: 100%; color: white; background:url({{this}}); background-size: cover; padding: 10px;}</style></head><body><h1>Sunset</h1></body></html>\"\n                    },\n                    {\n                      \"type\": \"horizontal\",\n                      \"style\": {\n                        \"spacing\": \"10\",\n                        \"padding\": \"10\"\n                      },\n                      \"components\": [\n                        {\n                          \"type\": \"html\",\n                          \"style\": {\n                            \"height\": \"50\",\n                            \"width\": \"50\",\n                            \"corner_radius\": \"25\"\n                          },\n                          \"action\": {\n                            \"trigger\": \"banner\",\n                            \"options\": {\n                              \"id\": \"avatar\"\n                            }\n                          },\n                          \"text\": \"<html><head><style>body{width: 100%; padding:0; margin:0;} h1{font-size: 20px; font-family: arial; width: 100%; height: 100%; color: white; background:url({{this}}); background-size: cover; padding: 10px;}</style></head><body><h1>Sunset</h1></body></html>\"\n                        },\n                        {\n                          \"type\": \"vertical\",\n                          \"style\": {\n                            \"padding\": \"10\",\n                            \"spacing\": \"5\"\n                          },\n                          \"components\": [\n                            {\n                              \"type\": \"label\",\n                              \"text\": \"Ethan\",\n                              \"style\": {\n                                \"font\": \"HelveticaNeue-Bold\",\n                                \"size\": \"14\"\n                              }\n                            },\n                            {\n                              \"type\": \"label\",\n                              \"text\": \"Check out this video!\",\n                              \"style\": {\n                                \"font\": \"HelveticaNeue\",\n                                \"size\": \"12\"\n                              }\n                            },\n                                                        {\n                              \"type\": \"html\",\n                              \"style\": {\n                                \"height\": \"150\"\n                              },\n                              \"action\": {\n                                \"trigger\": \"banner\",\n                                \"options\": {\n                                  \"id\": \"medium top\"\n                                }\n                              },\n                              \"text\": \"<html><head><style>body{width: 100%; padding:0; margin:0;}</style></head><body>abcdefnedskfwefnkdsnfiewfn dskjf lsdkfjsd nsdf ksjdfksjdklfj sdfkjsldjf sdklfj sdlkjfdkls jlsjf slkf lksjdfl kjsdlkfj sljf lsjfdkl jsdfj sljkf lsjkfl jslkdfj lksjf kldsjflj slkjfd lsjdf </body></html>\"\n                            },\n                            {\n                              \"type\": \"html\",\n                              \"style\": {\n                                \"height\": \"150\"\n                              },\n                              \"action\": {\n                                \"trigger\": \"banner\",\n                                \"options\": {\n                                  \"id\": \"medium top\"\n                                }\n                              },\n                              \"text\": \"<html><head><style>body{width: 100%; padding:0; margin:0;} h1{font-size: 20px; font-family: arial; width: 100%; height: 100%; color: white; background:url({{this}}); background-size: cover; padding: 10px;}</style></head><body><h1>Sunset</h1></body></html>\"\n                            },\n                            {\n                              \"type\": \"html\",\n                              \"style\": {\n                                \"height\": \"150\"\n                              },\n                              \"action\": {\n                                \"trigger\": \"banner\",\n                                \"options\": {\n                                  \"id\": \"medium top\"\n                                }\n                              },\n                              \"text\": \"<html><head><style>body{width: 100%; padding:0; margin:0;}</style></head><body>abcdefnedskfwefnkdsnfiewfn dskjf lsdkfjsd nsdf ksjdfksjdklfj sdfkjsldjf sdklfj sdlkjfdkls jlsjf slkf lksjdfl kjsdlkfj sljf lsjfdkl jsdfj sljkf lsjkfl jslkdfj lksjf kldsjflj slkjfd lsjdf </body></html>\"\n                            },\n                            {\n                              \"type\": \"horizontal\",\n                              \"components\": [\n                                {\n                                  \"type\": \"html\",\n                                  \"style\": {\n                                    \"width\": \"100\",\n                                    \"height\": \"150\"\n                                  },\n                                  \"action\": {\n                                    \"trigger\": \"banner\",\n                                    \"options\": {\n                                      \"id\": \"bottom left\"\n                                    }\n                                  },\n                                  \"text\": \"<html><head><style>body{width: 100%; padding:0; margin:0;} h1{font-size: 20px; font-family: arial; width: 100%; height: 100%; color: white; background:url({{this}}); background-size: cover; padding: 10px;}</style></head><body><h1>Sunset</h1></body></html>\"\n                                },\n                                {\n                                  \"type\": \"space\",\n                                  \"style\": {\n                                    \"width\": \"10\"\n                                  }\n                                },\n                                {\n                                  \"type\": \"html\",\n                                  \"style\": {\n                                    \"height\": \"150\"\n                                  },\n                                  \"action\": {\n                                    \"trigger\": \"banner\",\n                                    \"options\": {\n                                      \"id\": \"bottom right\"\n                                    }\n                                  },\n                                  \"text\": \"<html><head><style>body{width: 100%; padding:0; margin:0;} h1{font-size: 20px; font-family: arial; width: 100%; height: 100%; color: white; background:url({{this}}); background-size: cover; padding: 10px;}</style></head><body><h1>Sunset</h1></body></html>\"\n                                }\n                              ]\n                            }\n                          ]\n                        }\n                      ]\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "webcontainer/pdf.json",
    "content": "{\n  \"+\": \"https://jasonette.github.io/Jasonpedia/webcontainer/template.json\",\n  \"title\": \"PDF.json\",\n  \"theme\": \"#474747\",\n  \"html\": \"<html><head><style>html{padding:0;margin:0;margin-top: 64px;} body,iframe{width:100%;height:100%;padding:0;margin:0;border:0;}</style><body><iframe src='https://mozilla.github.io/pdf.js/web/viewer.html'/></body></html>\",\n  \"action\": {\n    \"type\": \"$default\"\n  }\n}\n"
  },
  {
    "path": "webcontainer/phasergame.json",
    "content": "{\n  \"+\": \"https://jasonette.github.io/Jasonpedia/webcontainer/template.json\",\n  \"title\": \"Phaser.js Game\",\n  \"theme\": \"rgba(0,0,0,0)\",\n  \"html\": \"<!doctype html> <html> <head> <meta charset='UTF-8' /> <title>Phaser Example Runner</title> <meta name='viewport' content='initial-scale=1 maximum-scale=1 user-scalable=0 minimal-ui' /> <script src='http://hammerjs.github.io/dist/hammer.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js' type='text/javascript'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/phaser/2.6.2/phaser.min.js' type='text/javascript'></script> <script src='https://examples.phaser.io/_site/phaser/blob.js' type='text/javascript'></script> <script src='https://examples.phaser.io/_site/phaser/canvas-to-blob.js' type='text/javascript'></script> <script src='https://examples.phaser.io/_site/phaser/filesaver.js' type='text/javascript'></script> <script src='https://examples.phaser.io/_site/phaser/embed.js' type='text/javascript'></script> <style> html,body {width:100%;height:100%; margin: 0px; padding: 0px; font-family: Arial; font-size: 14px; background-color: #000000; color: #fff; } canvas {width: 100%, height: 100%;} </style> </head> <body> <div id='phaser-example'></div> <script type='text/javascript'> var IDE_HOOK = false; var VERSION = '2.6.2'; var d; var j; var game = new Phaser.Game(window.innerWidth, window.innerHeight, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render }); function preload() { game.load.tilemap('level1', 'https://examples.phaser.io/assets/games/starstruck/level1.json', null, Phaser.Tilemap.TILED_JSON); game.load.image('tiles-1', 'https://examples.phaser.io/assets/games/starstruck/tiles-1.png'); game.load.spritesheet('dude', 'https://examples.phaser.io/assets/games/starstruck/dude.png', 32, 48); game.load.spritesheet('droid', 'https://examples.phaser.io/assets/games/starstruck/droid.png', 32, 32); game.load.image('starSmall', 'https://examples.phaser.io/assets/games/starstruck/star.png'); game.load.image('starBig', 'https://examples.phaser.io/assets/games/starstruck/star2.png'); game.load.image('background', 'https://examples.phaser.io/assets/games/starstruck/background2.png'); } var map; var tileset; var layer; var player; var facing = 'left'; var jumpTimer = 0; var cursors; var jumpButton; var bg; function create() { game.physics.startSystem(Phaser.Physics.ARCADE); game.stage.backgroundColor = '#000000'; bg = game.add.tileSprite(0, 0, 800, 600, 'background'); bg.fixedToCamera = true; map = game.add.tilemap('level1'); map.addTilesetImage('tiles-1'); map.setCollisionByExclusion([ 13, 14, 15, 16, 46, 47, 48, 49, 50, 51 ]); layer = map.createLayer('Tile Layer 1'); layer.resizeWorld(); game.physics.arcade.gravity.y = 1000; player = game.add.sprite(32, 32, 'dude'); game.physics.enable(player, Phaser.Physics.ARCADE); player.body.bounce.y = 0.2; player.body.collideWorldBounds = true; player.body.setSize(20, 32, 5, 16); player.animations.add('left', [0, 1, 2, 3], 10, true); player.animations.add('turn', [4], 20, true); player.animations.add('right', [5, 6, 7, 8], 10, true); game.camera.follow(player); cursors = game.input.keyboard.createCursorKeys(); jumpButton = game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR); } function update() { game.physics.arcade.collide(player, layer); player.body.velocity.x = 0; if (d=='left' || cursors.left.isDown) { player.body.velocity.x = -150; if (facing != 'left') { player.animations.play('left'); facing = 'left'; } } else if (d=='right' || cursors.right.isDown) { player.body.velocity.x = 150; if (facing != 'right') { player.animations.play('right'); facing = 'right'; } } else { if (facing != 'idle') { player.animations.stop(); if (facing == 'left') { player.frame = 0; } else { player.frame = 5; } facing = 'idle'; } } if (j || jumpButton.isDown && player.body.onFloor() && game.time.now > jumpTimer) { player.body.velocity.y = -250; jumpTimer = game.time.now + 750; } } function render () { } function setDirection(dir){ d = dir; } function jump() { j = true; setTimeout(function(){j=false;}, 100); } function left () {setDirection('left');} function right () { setDirection('right'); } var h = new Hammer(document.body); h.on('swipeleft', function(){left();}); h.on('swiperight', function(){ right(); }); h.on('tap', function(){jump();}); </script> </body> </html>\",\n  \"action\": {\n    \"type\": \"$default\"\n  }\n}\n"
  },
  {
    "path": "webcontainer/svg.json",
    "content": "{\n  \"+\": \"https://jasonette.github.io/Jasonpedia/webcontainer/template2.json\",\n  \"title\": \"SVG Clock\",\n  \"theme\": \"rgba(0,0,0,0)\",\n  \"html\": \"<html> <head> <script> var hands = []; window.onload = function(){ hands.push(document.querySelector('#secondhand > *')); hands.push(document.querySelector('#minutehand > *')); hands.push(document.querySelector('#hourhand > *')); var cx = 100; var cy = 100; function shifter(val) { return [val, cx, cy].join(' '); } var date = new Date(); var hoursAngle = 360 * date.getHours() / 12 + date.getMinutes() / 2; var minuteAngle = 360 * date.getMinutes() / 60; var secAngle = 360 * date.getSeconds() / 60; hands[0].setAttribute('from', shifter(secAngle)); hands[0].setAttribute('to', shifter(secAngle + 360)); hands[1].setAttribute('from', shifter(minuteAngle)); hands[1].setAttribute('to', shifter(minuteAngle + 360)); hands[2].setAttribute('from', shifter(hoursAngle)); hands[2].setAttribute('to', shifter(hoursAngle + 360)); for(var i = 1; i <= 12; i++) { var el = document.createElementNS('http://www.w3.org/2000/svg', 'line'); el.setAttribute('x1', '100'); el.setAttribute('y1', '30'); el.setAttribute('x2', '100'); el.setAttribute('y2', '40'); el.setAttribute('transform', 'rotate(' + (i*360/12) + ' 100 100)'); el.setAttribute('style', 'stroke: #ffffff;'); document.querySelector('svg').appendChild(el); } } </script> <style> html, body { overflow:hidden; width:100%; height:100%; padding:0; margin:0; background: #eee; } svg { display: block; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .filler { background: #20B7AF; position: absolute; bottom: 50%; top: 0; left: 0; right: 0; } </style> </head> <body> <div class='filler'></div> <svg width='200' height='200'> <filter id='innerShadow' x='-20%' y='-20%' width='140%' height='140%'> <feGaussianBlur in='SourceGraphic' stdDeviation='3' result='blur'/> <feOffset in='blur' dx='2.5' dy='2.5'/> </filter> <g> <circle id='shadow' style='fill:rgba(0,0,0,0.1)' cx='97' cy='100' r='87' filter='url(#innerShadow)'></circle> <circle id='circle' style='stroke: #FFF; stroke-width: 12px; fill:#20B7AF' cx='100' cy='100' r='80'></circle> </g> <g> <line x1='100' y1='100' x2='100' y2='55' transform='rotate(80 100 100)' style='stroke-width: 3px; stroke: #fffbf9;' id='hourhand'> <animatetransform attributeName='transform' attributeType='XML' type='rotate' dur='43200s' repeatCount='indefinite'/> </line> <line x1='100' y1='100' x2='100' y2='40' style='stroke-width: 4px; stroke: #fdfdfd;' id='minutehand'> <animatetransform attributeName='transform' attributeType='XML' type='rotate' dur='3600s' repeatCount='indefinite'/> </line> <line x1='100' y1='100' x2='100' y2='30' style='stroke-width: 2px; stroke: #C1EFED;' id='secondhand'> <animatetransform attributeName='transform' attributeType='XML' type='rotate' dur='60s' repeatCount='indefinite'/> </line> </g> <circle id='center' style='fill:#128A86; stroke: #C1EFED; stroke-width: 2px;' cx='100' cy='100' r='3'></circle> </svg> </body> </html>\"\n}\n"
  },
  {
    "path": "webcontainer/template.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Web Container Background Template\",\n      \"description\": \"template with action handler\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$render\",\n          \"options\": {\n            \"template\": \"body\"\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"style\": {\n              \"background\": {\n                \"+\": \"$document.theme\"\n              },\n              \"color\": \"#ffffff\"\n            },\n            \"title\": {\n              \"+\": \"$document.title\"\n            }\n          },\n          \"style\": {\n            \"border\": \"none\",\n            \"color\": \"rgba(0,0,0,0)\",\n            \"background\": {\n              \"type\": \"html\",\n              \"text\": {\n                \"+\": \"$document.html\"\n              },\n              \"action\": {\n                \"+\": \"$document.action\"\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "webcontainer/template2.json",
    "content": "{\n  \"$jason\": {\n    \"head\": {\n      \"title\": \"Web Container Background Template\",\n      \"description\": \"template without action handler\",\n      \"actions\": {\n        \"$load\": {\n          \"type\": \"$render\",\n          \"options\": {\n            \"template\": \"body\"\n          }\n        }\n      },\n      \"templates\": {\n        \"body\": {\n          \"header\": {\n            \"style\": {\n              \"background\": {\n                \"+\": \"$document.theme\"\n              },\n              \"color\": \"#ffffff\"\n            },\n            \"title\": {\n              \"+\": \"$document.title\"\n            }\n          },\n          \"style\": {\n            \"border\": \"none\",\n            \"color\": \"rgba(0,0,0,0)\",\n            \"background\": {\n              \"type\": \"html\",\n              \"text\": {\n                \"+\": \"$document.html\"\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "webcontainer/threejsblocks.json",
    "content": "{\n  \"+\": \"https://jasonette.github.io/Jasonpedia/webcontainer/template2.json\",\n  \"title\": \"Three.js Blocks\",\n  \"theme\": \"rgba(0,0,0,0)\",\n  \"html\": \"<html> <head> <style> body {width:100%;height:100%;margin:0;padding:0;background:#000;} a{ padding:10px 0;color: #444; text-decoration:none;font-family:courier;} </style> </head> <body> <script src='https://cdnjs.cloudflare.com/ajax/libs/three.js/r68/three.min.js'></script><script> window.onload = function(){ var stageWidth = 1200; var stageHeight = 600; var xRows = 25; var zRows = 25; var cubeSize = 600; var cubeGap = 200; var cubeRow = cubeSize + cubeGap; var container = document.getElementById('container'); var camera = new THREE.PerspectiveCamera(55, stageWidth/stageHeight, 1, 20000); camera.position.y = 5000; camera.lookAt( new THREE.Vector3(0,0,0) ); var scene = new THREE.Scene(); scene.fog = new THREE.Fog( 0x000000, 5000, 10000 ); var pointLight =  new THREE.PointLight(0xFF4040); pointLight.position.x = 0; pointLight.position.y = 1800; pointLight.position.z = -1800; scene.add(pointLight); /*var pointLight =  new THREE.PointLight(0xc0c0f0); pointLight.position.x = 0; pointLight.position.y = 800; pointLight.position.z = 1000; scene.add(pointLight);*/ group = new THREE.Object3D(); scene.add( group ); var cubes = []; var halfXRows = (cubeRow * -xRows / 2); var halfZRows = (cubeRow * -zRows / 2); for (var x = 0; x < xRows; x++) { cubes[x] = []; for (var z = 0; z < zRows; z++) { var cubeHeight = 100 + Math.random() * 700; cubeHeight = 10 + (Math.sin(x / xRows * Math.PI) + Math.sin(z / zRows * Math.PI)) * 200 + Math.random() * 150; var geometry = new THREE.BoxGeometry(cubeSize, cubeHeight, cubeSize); var colours = [ 0x4444ff, 0x4477ff, 0x7744ff, 0xff8080   ]; var material = new THREE.MeshPhongMaterial( { ambient: 0x030303, color: 0x4444ff, specular: 0xffffff, shininess: 10, shading: THREE.SmoothShading } ); var cube = new THREE.Mesh(geometry, material); cube.position.x = halfXRows + x * cubeRow; cube.position.y = cubeHeight / 2; cube.position.z = (cubeRow * -zRows / 2) + z * cubeRow; cube.height = cubeHeight; group.add(cube); cubes[x][z] = cube; } } var renderer = new THREE.WebGLRenderer(); renderer.setSize(stageWidth, stageHeight); container.appendChild( renderer.domElement ); var grid = { x: 0, z: 0}; var position = { x: 0, y: 0, z: 0}; function checkRow() { var xIndex = (position.x / cubeRow);    var xLoops = Math.floor(xIndex / xRows); var zIndex = (position.z / cubeRow);    var zLoops = Math.floor(zIndex / zRows); for (var x = 0; x < xRows; x++) { for (var z = 0; z < zRows; z++) { var dx, dz = 0; if ( x >= xIndex - xLoops * xRows ) { dx = xRows * (1 - xLoops); } else { dx = xRows * (0 - xLoops) } if ( z >= zIndex - zLoops * zRows ) { dz = zRows * (1 - zLoops); } else { dz = zRows * (0 - zLoops) } cubes[x][z].position.x = (x - dx) * cubeRow - halfXRows; cubes[x][z].position.z = (z - dz) * cubeRow - halfZRows; var scale = (cubes[x][z].position.z + group.position.z) / 1500; if (scale < 1 ) scale = 1; scale = Math.pow(scale, 1.2); cubes[x][z].scale.y = scale; cubes[x][z].position.y = (cubes[x][z].height * scale) / 2; } } } var camPos = new THREE.Vector3(0,0,0); var mouse = {x:0,y:0}; var isRunning = true; function render(t) { if (isRunning) requestAnimationFrame( render ); position.x += (Math.sin(t * 0.001)) * 20; position.z += (Math.cos(t * 0.0008) + 5) * 20; group.position.x = -position.x; group.position.z = -position.z; checkRow(); camera.position.x = Math.sin(t * 0.0003) * 1000; camera.position.z = -4000; camera.position.y = (Math.cos(t * 0.0004) + 1.3) * 3000; camera.lookAt(camPos); renderer.render( scene, camera ); } render(0); window.addEventListener('mousedown', function() { }); window.addEventListener('mousemove', function(event) { mouse = event; }) } </script> <div id='container'></div> </body> </html>\"\n}\n"
  },
  {
    "path": "webcontainer/threejsrainbow.json",
    "content": "{\n  \"+\": \"https://jasonette.github.io/Jasonpedia/webcontainer/template2.json\",\n  \"title\": \"Three.js Rainbow\",\n  \"theme\": \"rgba(0,0,0,0)\",\n  \"html\": \"<html> <head> <style> body { margin: 0; padding: 0; background: #111; overflow: hidden; } .dg{visibility: hidden;}</style> </head> <body> <script src='https://cdnjs.cloudflare.com/ajax/libs/dat-gui/0.6.2/dat.gui.min.js'></script><script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script><script src='https://cdnjs.cloudflare.com/ajax/libs/three.js/r50/three.min.js'></script><script> window.onload = function(){ var $container = $('#container'); var renderer = new THREE.WebGLRenderer({antialias: true}); var camera = new THREE.PerspectiveCamera(80,window.innerWidth/window.innerHeight,0.1,10000); var scene = new THREE.Scene(); var mouseX = 0, mouseY = 0; scene.add(camera); renderer.setSize(window.innerWidth, window.innerHeight); $container.append(renderer.domElement); window.addEventListener( 'resize', onWindowResize, false ); var Controls = function() { this.speed = 2; this.rotation = 0; }; var text = new Controls(), gui = new dat.GUI(); gui.add(text, 'speed', 0, 10); gui.add(text, 'rotation',0,15); var normalMaterial = new THREE.MeshNormalMaterial({}); function Torus(f){ this.b = new THREE.Mesh(new THREE.TorusGeometry( 160, 75, 2, 13),normalMaterial); this.b.position.x = 57*Math.cos(f); this.b.position.y = 57*Math.sin(f); this.b.position.z = f*1.25; this.b.rotation.z = f*0.03; } var numTorus = 80; var tabTorus = []; for(var i=0; i<numTorus; i++){ tabTorus.push(new Torus(-i*13)); scene.add(tabTorus[i].b); }  function update(){ for(var i=0; i<numTorus; i++){ tabTorus[i].b.position.z+=text.speed; tabTorus[i].b.rotation.z+=i*text.rotation/10000; if(tabTorus[i].b.position.z>0) { tabTorus[i].b.position.z=-1000; } } } function onWindowResize() { windowHalfX = window.innerWidth / 2; windowHalfY = window.innerHeight / 2; camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize( window.innerWidth, window.innerHeight ); } function onDocumentMouseMove(event) { mouseX = ( event.clientX - windowHalfX ); mouseY = ( event.clientY - windowHalfY ); } function render() { requestAnimationFrame( render); camera.position.x += ( mouseX - camera.position.x ) * .05; camera.position.y += ( - mouseY - camera.position.y ) * .05; renderer.render(scene, camera); update(); } render(); }; </script> <div id='container'></div> </body> </html>\"\n  }\n"
  }
]