From 87d3514caf661d7b9ec13170bac3703052a5cb81 Mon Sep 17 00:00:00 2001 From: tantaman Date: Wed, 1 Jul 2020 19:36:28 -0400 Subject: [PATCH 1/2] Short, concise, TodoMVC one pager --- cypress/integration/spec.js | 6 +- cypress/videos/spec.js.mp4 | Bin 0 -> 183173 bytes examples/vanilla-slim/README.md | 7 + examples/vanilla-slim/index.html | 19 + examples/vanilla-slim/main.js | 214 ++++++++++ .../node_modules/todomvc-app-css/index.css | 380 +++++++++++++++++ .../node_modules/todomvc-app-css/license | 397 ++++++++++++++++++ .../node_modules/todomvc-app-css/package.json | 58 +++ .../node_modules/todomvc-app-css/readme.md | 27 ++ .../node_modules/todomvc-common/base.css | 141 +++++++ .../node_modules/todomvc-common/base.js | 249 +++++++++++ .../node_modules/todomvc-common/license | 9 + .../node_modules/todomvc-common/package.json | 54 +++ .../node_modules/todomvc-common/readme.md | 15 + examples/vanilla-slim/package-lock.json | 16 + examples/vanilla-slim/package.json | 7 + index.html | 3 + learn.json | 9 + 18 files changed, 1609 insertions(+), 2 deletions(-) create mode 100644 cypress/videos/spec.js.mp4 create mode 100644 examples/vanilla-slim/README.md create mode 100644 examples/vanilla-slim/index.html create mode 100644 examples/vanilla-slim/main.js create mode 100644 examples/vanilla-slim/node_modules/todomvc-app-css/index.css create mode 100644 examples/vanilla-slim/node_modules/todomvc-app-css/license create mode 100644 examples/vanilla-slim/node_modules/todomvc-app-css/package.json create mode 100644 examples/vanilla-slim/node_modules/todomvc-app-css/readme.md create mode 100644 examples/vanilla-slim/node_modules/todomvc-common/base.css create mode 100644 examples/vanilla-slim/node_modules/todomvc-common/base.js create mode 100644 examples/vanilla-slim/node_modules/todomvc-common/license create mode 100644 examples/vanilla-slim/node_modules/todomvc-common/package.json create mode 100644 examples/vanilla-slim/node_modules/todomvc-common/readme.md create mode 100644 examples/vanilla-slim/package-lock.json create mode 100644 examples/vanilla-slim/package.json diff --git a/cypress/integration/spec.js b/cypress/integration/spec.js index 8388a12a6d..dc5acf8529 100644 --- a/cypress/integration/spec.js +++ b/cypress/integration/spec.js @@ -54,12 +54,14 @@ const noLocalStorageCheck = { puremvc: true, 'typescript-backbone': true, enyo_backbone: true, - foam: true + foam: true, + 'vanilla-slim': true } const noLocalStorageSpyCheck = { canjs: true, - canjs_require: true + canjs_require: true, + 'vanilla-slim': true } const noAppStartCheck = { diff --git a/cypress/videos/spec.js.mp4 b/cypress/videos/spec.js.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..44d476977ed4c4031d31f55f44abd21b22dca028 GIT binary patch literal 183173 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

||Ravmbb0#h?IaO4} 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

j$~=w+0$;n)eb6;2(9Pzu+%uelP?$?-r&R~e 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 + + + + Slim Vanilla JS • TodoMVC + + + + +

+ + + + + diff --git a/examples/vanilla-slim/main.js b/examples/vanilla-slim/main.js new file mode 100644 index 0000000000..0bb8c964a9 --- /dev/null +++ b/examples/vanilla-slim/main.js @@ -0,0 +1,214 @@ +const tempEl = document.createElement("div"); +const sanitize = (value) => { + if (value) { + if (typeof value === "object" && value.__html__) { + return value.__html__; + } + if (Array.isArray(value)) { + return value.map(sanitize).join(""); + } + } + tempEl.textContent = value; + return tempEl.innerHTML; +}; +const html = (parts, ...values) => { + return { + __html__: parts + .map((part, i) => { + return part + (i < values.length ? sanitize(values[i]) : ""); + }) + .join(""), + }; +}; + +const todoApp = (state) => { + const remaining = state.items.filter((item) => !item.complete); + let toggleAll = ""; + if (state.items.length) { + toggleAll = html``; + } + return html`
+ ${header()} +
+ ${toggleAll} +
    + ${state.items.map(todo)} +
+ ${footer(remaining, state.items)} +
+
`; +}; +const header = () => + html`
+

todos

+ +
`; +const todo = (item, i) => { + if (state.filter === "completed" && !item.complete) return ""; + if (state.filter === "active" && item.complete) return ""; + let body = ""; + if (item._editing) { + body = html` + + `; + } else { + body = html` +
+ + +
+ `; + } + return html` +
  • + ${body} +
  • + `; +}; +const footer = (remaining, items) => { + let clearCompleted = ""; + if (remaining.length !== items.length) { + clearCompleted = html``; + } + return html`
    + + + ${remaining.length ? remaining.length : "0"} + + ${remaining.length === 1 ? "item" : "items"} left + + + ${clearCompleted} +
    `; +}; + +function toggleAll() { + const hasRemaining = state.items.filter((i) => !i.complete).length != 0; + state.items.forEach((i) => (i.complete = hasRemaining)); + turnTheCrank(); +} +function clearCompleted() { + state.items = state.items.filter((i) => !i.complete); + turnTheCrank(); +} +function onCreate(e) { + const text = getFinalText(e); + if (text) { + state.items.push({ + name: text, + complete: false, + }); + state.newTodo = ""; + turnTheCrank("todoInput"); + } +} +function onSave(e, i) { + const text = getFinalText(e); + if (text) { + state.items[i].name = text; + state.items[i]._editing = false; + setItems(); + turnTheCrank(); + } +} +function toggle(i) { + state.items[i].complete = !state.items[i].complete; + turnTheCrank(); +} +function remove(i) { + state.items.splice(i, 1); + turnTheCrank(); +} +function startEditing(i) { + state.items[i]._editing = true; + turnTheCrank(); +} +function updateFilter(filter) { + window.location.hash = filter; +} +window.onhashchange = function () { + state.filter = window.location.hash.split("#")[1] || ""; + turnTheCrank(); +}; +const getFinalText = (e) => + e.which === 13 || e.type === "blur" || e.which === 27 + ? e.target.value.trim() + : null; +const container = document.getElementById("container"); +const prevState = localStorage.getItem("todos-vanilla-slim"); +const state = { + filter: window.location.hash.split("#")[1] || "", + newTodo: "", + items: (prevState && JSON.parse(prevState)) || [], +}; +function turnTheCrank(refocus, cb) { + requestAnimationFrame(() => { + container.innerHTML = todoApp(state).__html__; + if (refocus) document.getElementById(refocus).focus(); + if (cb) cb(); + }); +} +const setItems = (window.onbeforeunload = () => + localStorage.setItem("todos-vanilla-slim", JSON.stringify(state.items))); +turnTheCrank(null, () => { + document.querySelectorAll(".new-todo")[0].focus(); + setItems(); // apprently TodoMVC tests need this line +}); diff --git a/examples/vanilla-slim/node_modules/todomvc-app-css/index.css b/examples/vanilla-slim/node_modules/todomvc-app-css/index.css new file mode 100644 index 0000000000..bf7410e856 --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-app-css/index.css @@ -0,0 +1,380 @@ +html, +body { + margin: 0; + padding: 0; +} + +button { + margin: 0; + padding: 0; + border: 0; + background: none; + font-size: 100%; + vertical-align: baseline; + font-family: inherit; + font-weight: inherit; + color: inherit; + -webkit-appearance: none; + appearance: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif; + line-height: 1.4em; + background: #f5f5f5; + color: #111111; + min-width: 230px; + max-width: 550px; + margin: 0 auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 300; +} + +:focus { + outline: 0; +} + +.hidden { + display: none; +} + +.todoapp { + background: #fff; + margin: 130px 0 40px 0; + position: relative; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), + 0 25px 50px 0 rgba(0, 0, 0, 0.1); +} + +.todoapp input::-webkit-input-placeholder { + font-style: italic; + font-weight: 300; + color: rgba(0, 0, 0, 0.4); +} + +.todoapp input::-moz-placeholder { + font-style: italic; + font-weight: 300; + color: rgba(0, 0, 0, 0.4); +} + +.todoapp input::input-placeholder { + font-style: italic; + font-weight: 300; + color: rgba(0, 0, 0, 0.4); +} + +.todoapp h1 { + position: absolute; + top: -140px; + width: 100%; + font-size: 80px; + font-weight: 200; + text-align: center; + color: #b83f45; + -webkit-text-rendering: optimizeLegibility; + -moz-text-rendering: optimizeLegibility; + text-rendering: optimizeLegibility; +} + +.new-todo, +.edit { + position: relative; + margin: 0; + width: 100%; + font-size: 24px; + font-family: inherit; + font-weight: inherit; + line-height: 1.4em; + color: inherit; + padding: 6px; + border: 1px solid #999; + box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2); + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.new-todo { + padding: 16px 16px 16px 60px; + border: none; + background: rgba(0, 0, 0, 0.003); + box-shadow: inset 0 -2px 1px rgba(0,0,0,0.03); +} + +.main { + position: relative; + z-index: 2; + border-top: 1px solid #e6e6e6; +} + +.toggle-all { + width: 1px; + height: 1px; + border: none; /* Mobile Safari */ + opacity: 0; + position: absolute; + right: 100%; + bottom: 100%; +} + +.toggle-all + label { + width: 60px; + height: 34px; + font-size: 0; + position: absolute; + top: -52px; + left: -13px; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} + +.toggle-all + label:before { + content: '❯'; + font-size: 22px; + color: #e6e6e6; + padding: 10px 27px 10px 27px; +} + +.toggle-all:checked + label:before { + color: #737373; +} + +.todo-list { + margin: 0; + padding: 0; + list-style: none; +} + +.todo-list li { + position: relative; + font-size: 24px; + border-bottom: 1px solid #ededed; +} + +.todo-list li:last-child { + border-bottom: none; +} + +.todo-list li.editing { + border-bottom: none; + padding: 0; +} + +.todo-list li.editing .edit { + display: block; + width: calc(100% - 43px); + padding: 12px 16px; + margin: 0 0 0 43px; +} + +.todo-list li.editing .view { + display: none; +} + +.todo-list li .toggle { + text-align: center; + width: 40px; + /* auto, since non-WebKit browsers doesn't support input styling */ + height: auto; + position: absolute; + top: 0; + bottom: 0; + margin: auto 0; + border: none; /* Mobile Safari */ + -webkit-appearance: none; + appearance: none; +} + +.todo-list li .toggle { + opacity: 0; +} + +.todo-list li .toggle + label { + /* + Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433 + IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/ + */ + background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E'); + background-repeat: no-repeat; + background-position: center left; +} + +.todo-list li .toggle:checked + label { + background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E'); +} + +.todo-list li label { + word-break: break-all; + padding: 15px 15px 15px 60px; + display: block; + line-height: 1.2; + transition: color 0.4s; + font-weight: 400; + color: #4d4d4d; +} + +.todo-list li.completed label { + color: #cdcdcd; + text-decoration: line-through; +} + +.todo-list li .destroy { + display: none; + position: absolute; + top: 0; + right: 10px; + bottom: 0; + width: 40px; + height: 40px; + margin: auto 0; + font-size: 30px; + color: #cc9a9a; + margin-bottom: 11px; + transition: color 0.2s ease-out; +} + +.todo-list li .destroy:hover { + color: #af5b5e; +} + +.todo-list li .destroy:after { + content: '×'; +} + +.todo-list li:hover .destroy { + display: block; +} + +.todo-list li .edit { + display: none; +} + +.todo-list li.editing:last-child { + margin-bottom: -1px; +} + +.footer { + padding: 10px 15px; + height: 20px; + text-align: center; + font-size: 15px; + border-top: 1px solid #e6e6e6; +} + +.footer:before { + content: ''; + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 50px; + overflow: hidden; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), + 0 8px 0 -3px #f6f6f6, + 0 9px 1px -3px rgba(0, 0, 0, 0.2), + 0 16px 0 -6px #f6f6f6, + 0 17px 2px -6px rgba(0, 0, 0, 0.2); +} + +.todo-count { + float: left; + text-align: left; +} + +.todo-count strong { + font-weight: 300; +} + +.filters { + margin: 0; + padding: 0; + list-style: none; + position: absolute; + right: 0; + left: 0; +} + +.filters li { + display: inline; +} + +.filters li a { + color: inherit; + margin: 3px; + padding: 3px 7px; + text-decoration: none; + border: 1px solid transparent; + border-radius: 3px; +} + +.filters li a:hover { + border-color: rgba(175, 47, 47, 0.1); +} + +.filters li a.selected { + border-color: rgba(175, 47, 47, 0.2); +} + +.clear-completed, +html .clear-completed:active { + float: right; + position: relative; + line-height: 20px; + text-decoration: none; + cursor: pointer; +} + +.clear-completed:hover { + text-decoration: underline; +} + +.info { + margin: 65px auto 0; + color: #4d4d4d; + font-size: 11px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-align: center; +} + +.info p { + line-height: 1; +} + +.info a { + color: inherit; + text-decoration: none; + font-weight: 400; +} + +.info a:hover { + text-decoration: underline; +} + +/* + Hack to remove background from Mobile Safari. + Can't use it globally since it destroys checkboxes in Firefox +*/ +@media screen and (-webkit-min-device-pixel-ratio:0) { + .toggle-all, + .todo-list li .toggle { + background: none; + } + + .todo-list li .toggle { + height: 40px; + } +} + +@media (max-width: 430px) { + .footer { + height: 50px; + } + + .filters { + bottom: 10px; + } +} diff --git a/examples/vanilla-slim/node_modules/todomvc-app-css/license b/examples/vanilla-slim/node_modules/todomvc-app-css/license new file mode 100644 index 0000000000..2d6ec366a6 --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-app-css/license @@ -0,0 +1,397 @@ +Creative Commons Attribution 4.0 International (CC-BY-4.0) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution 4.0 International Public License ("Public License"). To the +extent this Public License may be interpreted as a contract, You are +granted the Licensed Rights in consideration of Your acceptance of +these terms and conditions, and the Licensor grants You such rights in +consideration of benefits the Licensor receives from making the +Licensed Material available under these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/examples/vanilla-slim/node_modules/todomvc-app-css/package.json b/examples/vanilla-slim/node_modules/todomvc-app-css/package.json new file mode 100644 index 0000000000..d2bde2cf38 --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-app-css/package.json @@ -0,0 +1,58 @@ +{ + "_from": "todomvc-app-css@^2.0.1", + "_id": "todomvc-app-css@2.3.0", + "_inBundle": false, + "_integrity": "sha512-RG8hxqoVn8Be3wxyuyHfOSAXiY1Z0N+PYQOe/jxzy3wpU1Obfwd1RF1i/fz/fR+MrYL+Q+BdrUt8SsXdtR7Oow==", + "_location": "/todomvc-app-css", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "todomvc-app-css@^2.0.1", + "name": "todomvc-app-css", + "escapedName": "todomvc-app-css", + "rawSpec": "^2.0.1", + "saveSpec": null, + "fetchSpec": "^2.0.1" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-2.3.0.tgz", + "_shasum": "cc27f1686ab4c418eef4e790289cc124baca2546", + "_spec": "todomvc-app-css@^2.0.1", + "_where": "C:\\Users\\tantaman\\workspace\\todomvc\\examples\\vanilla-declarative", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "bugs": { + "url": "https://github.com/tastejs/todomvc-app-css/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "CSS for TodoMVC apps", + "files": [ + "index.css" + ], + "homepage": "https://github.com/tastejs/todomvc-app-css#readme", + "keywords": [ + "todomvc", + "tastejs", + "app", + "todo", + "template", + "css", + "style", + "stylesheet" + ], + "license": "CC-BY-4.0", + "name": "todomvc-app-css", + "repository": { + "type": "git", + "url": "git+https://github.com/tastejs/todomvc-app-css.git" + }, + "style": "index.css", + "version": "2.3.0" +} diff --git a/examples/vanilla-slim/node_modules/todomvc-app-css/readme.md b/examples/vanilla-slim/node_modules/todomvc-app-css/readme.md new file mode 100644 index 0000000000..2db6d0b7ee --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-app-css/readme.md @@ -0,0 +1,27 @@ +# todomvc-app-css + +> CSS for TodoMVC apps + +![](screenshot.png) + + +## Install + + +``` +$ npm install todomvc-app-css +``` + + +## Getting started + +```html + +``` + +See the [TodoMVC app template](https://github.com/tastejs/todomvc-app-template). + + +## License + +CC-BY-4.0 © [Sindre Sorhus](https://sindresorhus.com) diff --git a/examples/vanilla-slim/node_modules/todomvc-common/base.css b/examples/vanilla-slim/node_modules/todomvc-common/base.css new file mode 100644 index 0000000000..da65968a73 --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-common/base.css @@ -0,0 +1,141 @@ +hr { + margin: 20px 0; + border: 0; + border-top: 1px dashed #c5c5c5; + border-bottom: 1px dashed #f7f7f7; +} + +.learn a { + font-weight: normal; + text-decoration: none; + color: #b83f45; +} + +.learn a:hover { + text-decoration: underline; + color: #787e7e; +} + +.learn h3, +.learn h4, +.learn h5 { + margin: 10px 0; + font-weight: 500; + line-height: 1.2; + color: #000; +} + +.learn h3 { + font-size: 24px; +} + +.learn h4 { + font-size: 18px; +} + +.learn h5 { + margin-bottom: 0; + font-size: 14px; +} + +.learn ul { + padding: 0; + margin: 0 0 30px 25px; +} + +.learn li { + line-height: 20px; +} + +.learn p { + font-size: 15px; + font-weight: 300; + line-height: 1.3; + margin-top: 0; + margin-bottom: 0; +} + +#issue-count { + display: none; +} + +.quote { + border: none; + margin: 20px 0 60px 0; +} + +.quote p { + font-style: italic; +} + +.quote p:before { + content: '“'; + font-size: 50px; + opacity: .15; + position: absolute; + top: -20px; + left: 3px; +} + +.quote p:after { + content: '”'; + font-size: 50px; + opacity: .15; + position: absolute; + bottom: -42px; + right: 3px; +} + +.quote footer { + position: absolute; + bottom: -40px; + right: 0; +} + +.quote footer img { + border-radius: 3px; +} + +.quote footer a { + margin-left: 5px; + vertical-align: middle; +} + +.speech-bubble { + position: relative; + padding: 10px; + background: rgba(0, 0, 0, .04); + border-radius: 5px; +} + +.speech-bubble:after { + content: ''; + position: absolute; + top: 100%; + right: 30px; + border: 13px solid transparent; + border-top-color: rgba(0, 0, 0, .04); +} + +.learn-bar > .learn { + position: absolute; + width: 272px; + top: 8px; + left: -300px; + padding: 10px; + border-radius: 5px; + background-color: rgba(255, 255, 255, .6); + transition-property: left; + transition-duration: 500ms; +} + +@media (min-width: 899px) { + .learn-bar { + width: auto; + padding-left: 300px; + } + + .learn-bar > .learn { + left: 8px; + } +} diff --git a/examples/vanilla-slim/node_modules/todomvc-common/base.js b/examples/vanilla-slim/node_modules/todomvc-common/base.js new file mode 100644 index 0000000000..a56b5aaca9 --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-common/base.js @@ -0,0 +1,249 @@ +/* global _ */ +(function () { + 'use strict'; + + /* jshint ignore:start */ + // Underscore's Template Module + // Courtesy of underscorejs.org + var _ = (function (_) { + _.defaults = function (object) { + if (!object) { + return object; + } + for (var argsIndex = 1, argsLength = arguments.length; argsIndex < argsLength; argsIndex++) { + var iterable = arguments[argsIndex]; + if (iterable) { + for (var key in iterable) { + if (object[key] == null) { + object[key] = iterable[key]; + } + } + } + } + return object; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\t': 't', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + _.template = function(text, data, settings) { + var render; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = new RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset) + .replace(escaper, function(match) { return '\\' + escapes[match]; }); + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } + if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } + if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + index = offset + match.length; + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + "return __p;\n"; + + try { + render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + if (data) return render(data, _); + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled function source as a convenience for precompilation. + template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; + + return template; + }; + + return _; + })({}); + + if (location.hostname === 'todomvc.com') { + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); + ga('create', 'UA-31081062-1', 'auto'); + ga('send', 'pageview'); + } + /* jshint ignore:end */ + + function redirect() { + if (location.hostname === 'tastejs.github.io') { + location.href = location.href.replace('tastejs.github.io/todomvc', 'todomvc.com'); + } + } + + function findRoot() { + var base = location.href.indexOf('examples/'); + return location.href.substr(0, base); + } + + function getFile(file, callback) { + if (!location.host) { + return console.info('Miss the info bar? Run TodoMVC from a server to avoid a cross-origin error.'); + } + + var xhr = new XMLHttpRequest(); + + xhr.open('GET', findRoot() + file, true); + xhr.send(); + + xhr.onload = function () { + if (xhr.status === 200 && callback) { + callback(xhr.responseText); + } + }; + } + + function Learn(learnJSON, config) { + if (!(this instanceof Learn)) { + return new Learn(learnJSON, config); + } + + var template, framework; + + if (typeof learnJSON !== 'object') { + try { + learnJSON = JSON.parse(learnJSON); + } catch (e) { + return; + } + } + + if (config) { + template = config.template; + framework = config.framework; + } + + if (!template && learnJSON.templates) { + template = learnJSON.templates.todomvc; + } + + if (!framework && document.querySelector('[data-framework]')) { + framework = document.querySelector('[data-framework]').dataset.framework; + } + + this.template = template; + + if (learnJSON.backend) { + this.frameworkJSON = learnJSON.backend; + this.frameworkJSON.issueLabel = framework; + this.append({ + backend: true + }); + } else if (learnJSON[framework]) { + this.frameworkJSON = learnJSON[framework]; + this.frameworkJSON.issueLabel = framework; + this.append(); + } + + this.fetchIssueCount(); + } + + Learn.prototype.append = function (opts) { + var aside = document.createElement('aside'); + aside.innerHTML = _.template(this.template, this.frameworkJSON); + aside.className = 'learn'; + + if (opts && opts.backend) { + // Remove demo link + var sourceLinks = aside.querySelector('.source-links'); + var heading = sourceLinks.firstElementChild; + var sourceLink = sourceLinks.lastElementChild; + // Correct link path + var href = sourceLink.getAttribute('href'); + sourceLink.setAttribute('href', href.substr(href.lastIndexOf('http'))); + sourceLinks.innerHTML = heading.outerHTML + sourceLink.outerHTML; + } else { + // Localize demo links + var demoLinks = aside.querySelectorAll('.demo-link'); + Array.prototype.forEach.call(demoLinks, function (demoLink) { + if (demoLink.getAttribute('href').substr(0, 4) !== 'http') { + demoLink.setAttribute('href', findRoot() + demoLink.getAttribute('href')); + } + }); + } + + document.body.className = (document.body.className + ' learn-bar').trim(); + document.body.insertAdjacentHTML('afterBegin', aside.outerHTML); + }; + + Learn.prototype.fetchIssueCount = function () { + var issueLink = document.getElementById('issue-count-link'); + if (issueLink) { + var url = issueLink.href.replace('https://github.com', 'https://api.github.com/repos'); + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.onload = function (e) { + var parsedResponse = JSON.parse(e.target.responseText); + if (parsedResponse instanceof Array) { + var count = parsedResponse.length; + if (count !== 0) { + issueLink.innerHTML = 'This app has ' + count + ' open issues'; + document.getElementById('issue-count').style.display = 'inline'; + } + } + }; + xhr.send(); + } + }; + + redirect(); + getFile('learn.json', Learn); +})(); diff --git a/examples/vanilla-slim/node_modules/todomvc-common/license b/examples/vanilla-slim/node_modules/todomvc-common/license new file mode 100644 index 0000000000..26ec451c3e --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-common/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) TasteJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/examples/vanilla-slim/node_modules/todomvc-common/package.json b/examples/vanilla-slim/node_modules/todomvc-common/package.json new file mode 100644 index 0000000000..e2d421e8f9 --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-common/package.json @@ -0,0 +1,54 @@ +{ + "_from": "todomvc-common@^1.0.1", + "_id": "todomvc-common@1.0.5", + "_inBundle": false, + "_integrity": "sha512-D8kEJmxVMQIWwztEdH+WeiAfXRbbSCpgXq4NkYi+gduJ2tr8CNq7sYLfJvjpQ10KD9QxJwig57rvMbV2QAESwQ==", + "_location": "/todomvc-common", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "todomvc-common@^1.0.1", + "name": "todomvc-common", + "escapedName": "todomvc-common", + "rawSpec": "^1.0.1", + "saveSpec": null, + "fetchSpec": "^1.0.1" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.5.tgz", + "_shasum": "8c3e799ac9f1fc1573e0c204f984510826914730", + "_spec": "todomvc-common@^1.0.1", + "_where": "C:\\Users\\tantaman\\workspace\\todomvc\\examples\\vanilla-declarative", + "author": { + "name": "TasteJS" + }, + "bugs": { + "url": "https://github.com/tastejs/todomvc-common/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "Common TodoMVC utilities used by our apps", + "files": [ + "base.js", + "base.css" + ], + "homepage": "https://github.com/tastejs/todomvc-common#readme", + "keywords": [ + "todomvc", + "tastejs", + "util", + "utilities" + ], + "license": "MIT", + "main": "base.js", + "name": "todomvc-common", + "repository": { + "type": "git", + "url": "git+https://github.com/tastejs/todomvc-common.git" + }, + "style": "base.css", + "version": "1.0.5" +} diff --git a/examples/vanilla-slim/node_modules/todomvc-common/readme.md b/examples/vanilla-slim/node_modules/todomvc-common/readme.md new file mode 100644 index 0000000000..e3bfcd243b --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-common/readme.md @@ -0,0 +1,15 @@ +# todomvc-common + +> Common TodoMVC utilities used by our apps + + +## Install + +``` +$ npm install todomvc-common +``` + + +## License + +MIT © [TasteJS](http://tastejs.com) diff --git a/examples/vanilla-slim/package-lock.json b/examples/vanilla-slim/package-lock.json new file mode 100644 index 0000000000..2687f08659 --- /dev/null +++ b/examples/vanilla-slim/package-lock.json @@ -0,0 +1,16 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "todomvc-app-css": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-2.3.0.tgz", + "integrity": "sha512-RG8hxqoVn8Be3wxyuyHfOSAXiY1Z0N+PYQOe/jxzy3wpU1Obfwd1RF1i/fz/fR+MrYL+Q+BdrUt8SsXdtR7Oow==" + }, + "todomvc-common": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.5.tgz", + "integrity": "sha512-D8kEJmxVMQIWwztEdH+WeiAfXRbbSCpgXq4NkYi+gduJ2tr8CNq7sYLfJvjpQ10KD9QxJwig57rvMbV2QAESwQ==" + } + } +} diff --git a/examples/vanilla-slim/package.json b/examples/vanilla-slim/package.json new file mode 100644 index 0000000000..8f9f0362b5 --- /dev/null +++ b/examples/vanilla-slim/package.json @@ -0,0 +1,7 @@ +{ + "private": true, + "dependencies": { + "todomvc-common": "^1.0.1", + "todomvc-app-css": "^2.0.1" + } +} diff --git a/index.html b/index.html index 7ed720092b..8d730f010a 100644 --- a/index.html +++ b/index.html @@ -257,6 +257,9 @@

    Compare these to a non-framework implementation

  • Vanilla ES6
  • +
  • + Vanilla Slim +
  • jQuery
  • diff --git a/learn.json b/learn.json index aa64509afe..1fa47d6a67 100644 --- a/learn.json +++ b/learn.json @@ -953,6 +953,15 @@ "url": "examples/vanilla-es6" }] }, + "vanilla-slim": { + "name": "JavaScript", + "description": "JavaScript® (often shortened to JS) is a lightweight, interpreted, object-oriented language with first-class functions, most known as the scripting language for Web pages, but used in many non-browser environments as well such as node.js or Apache CouchDB.", + "homepage": "developer.mozilla.org/en-US/docs/JavaScript", + "examples": [{ + "name": "Minimal JS Example", + "url": "examples/vanilla-slim" + }] + }, "js_of_ocaml": { "name": "js_of_ocaml", "description": "Js_of_ocaml is a compiler of OCaml bytecode to Javascript. It makes it possible to run Ocaml programs in a Web browser.", From 8c9b5e20a418c134d3ed0bd8dcf215b1c0105afe Mon Sep 17 00:00:00 2001 From: tantaman Date: Wed, 1 Jul 2020 19:36:28 -0400 Subject: [PATCH 2/2] Short, concise, TodoMVC one pager --- cypress/integration/spec.js | 6 +- examples/vanilla-slim/README.md | 7 + examples/vanilla-slim/index.html | 19 + examples/vanilla-slim/main.js | 216 ++++++++++ .../node_modules/todomvc-app-css/index.css | 380 +++++++++++++++++ .../node_modules/todomvc-app-css/license | 397 ++++++++++++++++++ .../node_modules/todomvc-app-css/package.json | 58 +++ .../node_modules/todomvc-app-css/readme.md | 27 ++ .../node_modules/todomvc-common/base.css | 141 +++++++ .../node_modules/todomvc-common/base.js | 249 +++++++++++ .../node_modules/todomvc-common/license | 9 + .../node_modules/todomvc-common/package.json | 54 +++ .../node_modules/todomvc-common/readme.md | 15 + examples/vanilla-slim/package-lock.json | 16 + examples/vanilla-slim/package.json | 7 + index.html | 3 + learn.json | 9 + 17 files changed, 1611 insertions(+), 2 deletions(-) create mode 100644 examples/vanilla-slim/README.md create mode 100644 examples/vanilla-slim/index.html create mode 100644 examples/vanilla-slim/main.js create mode 100644 examples/vanilla-slim/node_modules/todomvc-app-css/index.css create mode 100644 examples/vanilla-slim/node_modules/todomvc-app-css/license create mode 100644 examples/vanilla-slim/node_modules/todomvc-app-css/package.json create mode 100644 examples/vanilla-slim/node_modules/todomvc-app-css/readme.md create mode 100644 examples/vanilla-slim/node_modules/todomvc-common/base.css create mode 100644 examples/vanilla-slim/node_modules/todomvc-common/base.js create mode 100644 examples/vanilla-slim/node_modules/todomvc-common/license create mode 100644 examples/vanilla-slim/node_modules/todomvc-common/package.json create mode 100644 examples/vanilla-slim/node_modules/todomvc-common/readme.md create mode 100644 examples/vanilla-slim/package-lock.json create mode 100644 examples/vanilla-slim/package.json diff --git a/cypress/integration/spec.js b/cypress/integration/spec.js index 8388a12a6d..dc5acf8529 100644 --- a/cypress/integration/spec.js +++ b/cypress/integration/spec.js @@ -54,12 +54,14 @@ const noLocalStorageCheck = { puremvc: true, 'typescript-backbone': true, enyo_backbone: true, - foam: true + foam: true, + 'vanilla-slim': true } const noLocalStorageSpyCheck = { canjs: true, - canjs_require: true + canjs_require: true, + 'vanilla-slim': true } const noAppStartCheck = { diff --git a/examples/vanilla-slim/README.md b/examples/vanilla-slim/README.md new file mode 100644 index 0000000000..85a19bb432 --- /dev/null +++ b/examples/vanilla-slim/README.md @@ -0,0 +1,7 @@ +# Short, Concise, Vanilla Javascript TodoMVC Example + +What if the browser had a virtual DOM? So we could write HTML as if we were writing React but without the framework? + +What if we re-imagined how we coded and kept our sights on writing declarative code rather than always writing out _how_ to do things. + +That is what this is. ~215 lines of pure, simple, easy to parse JS. diff --git a/examples/vanilla-slim/index.html b/examples/vanilla-slim/index.html new file mode 100644 index 0000000000..8599c2280b --- /dev/null +++ b/examples/vanilla-slim/index.html @@ -0,0 +1,19 @@ + + + + + Slim Vanilla JS • TodoMVC + + + + +
    + + + + + diff --git a/examples/vanilla-slim/main.js b/examples/vanilla-slim/main.js new file mode 100644 index 0000000000..3ddbab5a74 --- /dev/null +++ b/examples/vanilla-slim/main.js @@ -0,0 +1,216 @@ +const tempEl = document.createElement("div"); +const sanitize = (value) => { + if (value) { + if (typeof value === "object" && value.__html__) { + return value.__html__; + } + if (Array.isArray(value)) { + return value.map(sanitize).join(""); + } + } + tempEl.textContent = value; + return tempEl.innerHTML; +}; +const html = (parts, ...values) => { + return { + __html__: parts + .map((part, i) => { + return part + (i < values.length ? sanitize(values[i]) : ""); + }) + .join(""), + }; +}; + +const todoApp = (state) => { + const remaining = state.items.filter((item) => !item.complete); + let toggleAll = ""; + if (state.items.length) { + toggleAll = html` + + `; + } + return html`
    + ${header()} +
    + ${toggleAll} +
      + ${state.items.map(todo)} +
    + ${footer(remaining, state.items)} +
    +
    `; +}; +const header = () => + html`
    +

    todos

    + +
    `; +const todo = (item, i) => { + if (state.filter === "completed" && !item.complete) return ""; + if (state.filter === "active" && item.complete) return ""; + let body = ""; + if (item._editing) { + body = html` + + `; + } else { + body = html` +
    + + +
    + `; + } + return html` +
  • + ${body} +
  • + `; +}; +const footer = (remaining, items) => { + let clearCompleted = ""; + if (remaining.length !== items.length) { + clearCompleted = html` + `; + } + return html`
    + + + ${remaining.length ? remaining.length : "0"} + + ${remaining.length === 1 ? "item" : "items"} left + + + ${clearCompleted} +
    `; +}; + +function toggleAll() { + const hasRemaining = state.items.filter((i) => !i.complete).length != 0; + state.items.forEach((i) => (i.complete = hasRemaining)); + turnTheCrank(); +} +function clearCompleted() { + state.items = state.items.filter((i) => !i.complete); + turnTheCrank(); +} +function onCreate(e) { + const text = getFinalText(e); + if (text) { + state.items.push({ + name: text, + complete: false, + }); + state.newTodo = ""; + turnTheCrank("todoInput"); + } +} +function onSave(e, i) { + if (e.which === 27) { + state.items[i]._editing = false; + e.target.value = state.items[i].name; + turnTheCrank(); + return; + } + const text = getFinalText(e); + if (text) { + state.items[i].name = text; + state.items[i]._editing = false; + setItems(); + turnTheCrank(); + } else if (text !== null && state.items[i] && state.items[i]._editing) { + state.items[i]._editing = false; + state.items.splice(i, 1); + setItems(); + turnTheCrank(); + } +} +function toggle(i) { + state.items[i].complete = !state.items[i].complete; + turnTheCrank(); +} +function remove(i) { + state.items.splice(i, 1); + turnTheCrank(); +} +function startEditing(i) { + state.items[i]._editing = true; + turnTheCrank(); +} +function updateFilter(filter) { + window.location.hash = filter; +} +window.onhashchange = function () { + state.filter = window.location.hash.split("#")[1] || ""; + turnTheCrank(); +}; +const getFinalText = (e) => + e.which === 13 || e.type === "blur" ? e.target.value.trim() : null; +let state; +window.onload = () => { + const container = document.getElementById("container"); + const prevState = window.localStorage.getItem("todos-vanilla-slim"); + state = { + filter: window.location.hash.split("#")[1] || "", + newTodo: "", + items: (prevState && JSON.parse(prevState)) || [], + }; + turnTheCrank(null, () => { + document.querySelectorAll(".new-todo")[0].focus(); + setItems(); // apprently TodoMVC tests need this line + }); +} +function turnTheCrank(refocus, cb) { + requestAnimationFrame(() => { + container.innerHTML = todoApp(state).__html__; + if (refocus) document.getElementById(refocus).focus(); + if (cb) cb(); + }); +} +const setItems = (window.onbeforeunload = () => + window.localStorage.setItem("todos-vanilla-slim", JSON.stringify(state.items))); diff --git a/examples/vanilla-slim/node_modules/todomvc-app-css/index.css b/examples/vanilla-slim/node_modules/todomvc-app-css/index.css new file mode 100644 index 0000000000..bf7410e856 --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-app-css/index.css @@ -0,0 +1,380 @@ +html, +body { + margin: 0; + padding: 0; +} + +button { + margin: 0; + padding: 0; + border: 0; + background: none; + font-size: 100%; + vertical-align: baseline; + font-family: inherit; + font-weight: inherit; + color: inherit; + -webkit-appearance: none; + appearance: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif; + line-height: 1.4em; + background: #f5f5f5; + color: #111111; + min-width: 230px; + max-width: 550px; + margin: 0 auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 300; +} + +:focus { + outline: 0; +} + +.hidden { + display: none; +} + +.todoapp { + background: #fff; + margin: 130px 0 40px 0; + position: relative; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), + 0 25px 50px 0 rgba(0, 0, 0, 0.1); +} + +.todoapp input::-webkit-input-placeholder { + font-style: italic; + font-weight: 300; + color: rgba(0, 0, 0, 0.4); +} + +.todoapp input::-moz-placeholder { + font-style: italic; + font-weight: 300; + color: rgba(0, 0, 0, 0.4); +} + +.todoapp input::input-placeholder { + font-style: italic; + font-weight: 300; + color: rgba(0, 0, 0, 0.4); +} + +.todoapp h1 { + position: absolute; + top: -140px; + width: 100%; + font-size: 80px; + font-weight: 200; + text-align: center; + color: #b83f45; + -webkit-text-rendering: optimizeLegibility; + -moz-text-rendering: optimizeLegibility; + text-rendering: optimizeLegibility; +} + +.new-todo, +.edit { + position: relative; + margin: 0; + width: 100%; + font-size: 24px; + font-family: inherit; + font-weight: inherit; + line-height: 1.4em; + color: inherit; + padding: 6px; + border: 1px solid #999; + box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2); + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.new-todo { + padding: 16px 16px 16px 60px; + border: none; + background: rgba(0, 0, 0, 0.003); + box-shadow: inset 0 -2px 1px rgba(0,0,0,0.03); +} + +.main { + position: relative; + z-index: 2; + border-top: 1px solid #e6e6e6; +} + +.toggle-all { + width: 1px; + height: 1px; + border: none; /* Mobile Safari */ + opacity: 0; + position: absolute; + right: 100%; + bottom: 100%; +} + +.toggle-all + label { + width: 60px; + height: 34px; + font-size: 0; + position: absolute; + top: -52px; + left: -13px; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} + +.toggle-all + label:before { + content: '❯'; + font-size: 22px; + color: #e6e6e6; + padding: 10px 27px 10px 27px; +} + +.toggle-all:checked + label:before { + color: #737373; +} + +.todo-list { + margin: 0; + padding: 0; + list-style: none; +} + +.todo-list li { + position: relative; + font-size: 24px; + border-bottom: 1px solid #ededed; +} + +.todo-list li:last-child { + border-bottom: none; +} + +.todo-list li.editing { + border-bottom: none; + padding: 0; +} + +.todo-list li.editing .edit { + display: block; + width: calc(100% - 43px); + padding: 12px 16px; + margin: 0 0 0 43px; +} + +.todo-list li.editing .view { + display: none; +} + +.todo-list li .toggle { + text-align: center; + width: 40px; + /* auto, since non-WebKit browsers doesn't support input styling */ + height: auto; + position: absolute; + top: 0; + bottom: 0; + margin: auto 0; + border: none; /* Mobile Safari */ + -webkit-appearance: none; + appearance: none; +} + +.todo-list li .toggle { + opacity: 0; +} + +.todo-list li .toggle + label { + /* + Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433 + IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/ + */ + background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E'); + background-repeat: no-repeat; + background-position: center left; +} + +.todo-list li .toggle:checked + label { + background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E'); +} + +.todo-list li label { + word-break: break-all; + padding: 15px 15px 15px 60px; + display: block; + line-height: 1.2; + transition: color 0.4s; + font-weight: 400; + color: #4d4d4d; +} + +.todo-list li.completed label { + color: #cdcdcd; + text-decoration: line-through; +} + +.todo-list li .destroy { + display: none; + position: absolute; + top: 0; + right: 10px; + bottom: 0; + width: 40px; + height: 40px; + margin: auto 0; + font-size: 30px; + color: #cc9a9a; + margin-bottom: 11px; + transition: color 0.2s ease-out; +} + +.todo-list li .destroy:hover { + color: #af5b5e; +} + +.todo-list li .destroy:after { + content: '×'; +} + +.todo-list li:hover .destroy { + display: block; +} + +.todo-list li .edit { + display: none; +} + +.todo-list li.editing:last-child { + margin-bottom: -1px; +} + +.footer { + padding: 10px 15px; + height: 20px; + text-align: center; + font-size: 15px; + border-top: 1px solid #e6e6e6; +} + +.footer:before { + content: ''; + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 50px; + overflow: hidden; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), + 0 8px 0 -3px #f6f6f6, + 0 9px 1px -3px rgba(0, 0, 0, 0.2), + 0 16px 0 -6px #f6f6f6, + 0 17px 2px -6px rgba(0, 0, 0, 0.2); +} + +.todo-count { + float: left; + text-align: left; +} + +.todo-count strong { + font-weight: 300; +} + +.filters { + margin: 0; + padding: 0; + list-style: none; + position: absolute; + right: 0; + left: 0; +} + +.filters li { + display: inline; +} + +.filters li a { + color: inherit; + margin: 3px; + padding: 3px 7px; + text-decoration: none; + border: 1px solid transparent; + border-radius: 3px; +} + +.filters li a:hover { + border-color: rgba(175, 47, 47, 0.1); +} + +.filters li a.selected { + border-color: rgba(175, 47, 47, 0.2); +} + +.clear-completed, +html .clear-completed:active { + float: right; + position: relative; + line-height: 20px; + text-decoration: none; + cursor: pointer; +} + +.clear-completed:hover { + text-decoration: underline; +} + +.info { + margin: 65px auto 0; + color: #4d4d4d; + font-size: 11px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-align: center; +} + +.info p { + line-height: 1; +} + +.info a { + color: inherit; + text-decoration: none; + font-weight: 400; +} + +.info a:hover { + text-decoration: underline; +} + +/* + Hack to remove background from Mobile Safari. + Can't use it globally since it destroys checkboxes in Firefox +*/ +@media screen and (-webkit-min-device-pixel-ratio:0) { + .toggle-all, + .todo-list li .toggle { + background: none; + } + + .todo-list li .toggle { + height: 40px; + } +} + +@media (max-width: 430px) { + .footer { + height: 50px; + } + + .filters { + bottom: 10px; + } +} diff --git a/examples/vanilla-slim/node_modules/todomvc-app-css/license b/examples/vanilla-slim/node_modules/todomvc-app-css/license new file mode 100644 index 0000000000..2d6ec366a6 --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-app-css/license @@ -0,0 +1,397 @@ +Creative Commons Attribution 4.0 International (CC-BY-4.0) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution 4.0 International Public License ("Public License"). To the +extent this Public License may be interpreted as a contract, You are +granted the Licensed Rights in consideration of Your acceptance of +these terms and conditions, and the Licensor grants You such rights in +consideration of benefits the Licensor receives from making the +Licensed Material available under these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/examples/vanilla-slim/node_modules/todomvc-app-css/package.json b/examples/vanilla-slim/node_modules/todomvc-app-css/package.json new file mode 100644 index 0000000000..d2bde2cf38 --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-app-css/package.json @@ -0,0 +1,58 @@ +{ + "_from": "todomvc-app-css@^2.0.1", + "_id": "todomvc-app-css@2.3.0", + "_inBundle": false, + "_integrity": "sha512-RG8hxqoVn8Be3wxyuyHfOSAXiY1Z0N+PYQOe/jxzy3wpU1Obfwd1RF1i/fz/fR+MrYL+Q+BdrUt8SsXdtR7Oow==", + "_location": "/todomvc-app-css", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "todomvc-app-css@^2.0.1", + "name": "todomvc-app-css", + "escapedName": "todomvc-app-css", + "rawSpec": "^2.0.1", + "saveSpec": null, + "fetchSpec": "^2.0.1" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-2.3.0.tgz", + "_shasum": "cc27f1686ab4c418eef4e790289cc124baca2546", + "_spec": "todomvc-app-css@^2.0.1", + "_where": "C:\\Users\\tantaman\\workspace\\todomvc\\examples\\vanilla-declarative", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "bugs": { + "url": "https://github.com/tastejs/todomvc-app-css/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "CSS for TodoMVC apps", + "files": [ + "index.css" + ], + "homepage": "https://github.com/tastejs/todomvc-app-css#readme", + "keywords": [ + "todomvc", + "tastejs", + "app", + "todo", + "template", + "css", + "style", + "stylesheet" + ], + "license": "CC-BY-4.0", + "name": "todomvc-app-css", + "repository": { + "type": "git", + "url": "git+https://github.com/tastejs/todomvc-app-css.git" + }, + "style": "index.css", + "version": "2.3.0" +} diff --git a/examples/vanilla-slim/node_modules/todomvc-app-css/readme.md b/examples/vanilla-slim/node_modules/todomvc-app-css/readme.md new file mode 100644 index 0000000000..2db6d0b7ee --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-app-css/readme.md @@ -0,0 +1,27 @@ +# todomvc-app-css + +> CSS for TodoMVC apps + +![](screenshot.png) + + +## Install + + +``` +$ npm install todomvc-app-css +``` + + +## Getting started + +```html + +``` + +See the [TodoMVC app template](https://github.com/tastejs/todomvc-app-template). + + +## License + +CC-BY-4.0 © [Sindre Sorhus](https://sindresorhus.com) diff --git a/examples/vanilla-slim/node_modules/todomvc-common/base.css b/examples/vanilla-slim/node_modules/todomvc-common/base.css new file mode 100644 index 0000000000..da65968a73 --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-common/base.css @@ -0,0 +1,141 @@ +hr { + margin: 20px 0; + border: 0; + border-top: 1px dashed #c5c5c5; + border-bottom: 1px dashed #f7f7f7; +} + +.learn a { + font-weight: normal; + text-decoration: none; + color: #b83f45; +} + +.learn a:hover { + text-decoration: underline; + color: #787e7e; +} + +.learn h3, +.learn h4, +.learn h5 { + margin: 10px 0; + font-weight: 500; + line-height: 1.2; + color: #000; +} + +.learn h3 { + font-size: 24px; +} + +.learn h4 { + font-size: 18px; +} + +.learn h5 { + margin-bottom: 0; + font-size: 14px; +} + +.learn ul { + padding: 0; + margin: 0 0 30px 25px; +} + +.learn li { + line-height: 20px; +} + +.learn p { + font-size: 15px; + font-weight: 300; + line-height: 1.3; + margin-top: 0; + margin-bottom: 0; +} + +#issue-count { + display: none; +} + +.quote { + border: none; + margin: 20px 0 60px 0; +} + +.quote p { + font-style: italic; +} + +.quote p:before { + content: '“'; + font-size: 50px; + opacity: .15; + position: absolute; + top: -20px; + left: 3px; +} + +.quote p:after { + content: '”'; + font-size: 50px; + opacity: .15; + position: absolute; + bottom: -42px; + right: 3px; +} + +.quote footer { + position: absolute; + bottom: -40px; + right: 0; +} + +.quote footer img { + border-radius: 3px; +} + +.quote footer a { + margin-left: 5px; + vertical-align: middle; +} + +.speech-bubble { + position: relative; + padding: 10px; + background: rgba(0, 0, 0, .04); + border-radius: 5px; +} + +.speech-bubble:after { + content: ''; + position: absolute; + top: 100%; + right: 30px; + border: 13px solid transparent; + border-top-color: rgba(0, 0, 0, .04); +} + +.learn-bar > .learn { + position: absolute; + width: 272px; + top: 8px; + left: -300px; + padding: 10px; + border-radius: 5px; + background-color: rgba(255, 255, 255, .6); + transition-property: left; + transition-duration: 500ms; +} + +@media (min-width: 899px) { + .learn-bar { + width: auto; + padding-left: 300px; + } + + .learn-bar > .learn { + left: 8px; + } +} diff --git a/examples/vanilla-slim/node_modules/todomvc-common/base.js b/examples/vanilla-slim/node_modules/todomvc-common/base.js new file mode 100644 index 0000000000..a56b5aaca9 --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-common/base.js @@ -0,0 +1,249 @@ +/* global _ */ +(function () { + 'use strict'; + + /* jshint ignore:start */ + // Underscore's Template Module + // Courtesy of underscorejs.org + var _ = (function (_) { + _.defaults = function (object) { + if (!object) { + return object; + } + for (var argsIndex = 1, argsLength = arguments.length; argsIndex < argsLength; argsIndex++) { + var iterable = arguments[argsIndex]; + if (iterable) { + for (var key in iterable) { + if (object[key] == null) { + object[key] = iterable[key]; + } + } + } + } + return object; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\t': 't', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + _.template = function(text, data, settings) { + var render; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = new RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset) + .replace(escaper, function(match) { return '\\' + escapes[match]; }); + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } + if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } + if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + index = offset + match.length; + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + "return __p;\n"; + + try { + render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + if (data) return render(data, _); + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled function source as a convenience for precompilation. + template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; + + return template; + }; + + return _; + })({}); + + if (location.hostname === 'todomvc.com') { + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); + ga('create', 'UA-31081062-1', 'auto'); + ga('send', 'pageview'); + } + /* jshint ignore:end */ + + function redirect() { + if (location.hostname === 'tastejs.github.io') { + location.href = location.href.replace('tastejs.github.io/todomvc', 'todomvc.com'); + } + } + + function findRoot() { + var base = location.href.indexOf('examples/'); + return location.href.substr(0, base); + } + + function getFile(file, callback) { + if (!location.host) { + return console.info('Miss the info bar? Run TodoMVC from a server to avoid a cross-origin error.'); + } + + var xhr = new XMLHttpRequest(); + + xhr.open('GET', findRoot() + file, true); + xhr.send(); + + xhr.onload = function () { + if (xhr.status === 200 && callback) { + callback(xhr.responseText); + } + }; + } + + function Learn(learnJSON, config) { + if (!(this instanceof Learn)) { + return new Learn(learnJSON, config); + } + + var template, framework; + + if (typeof learnJSON !== 'object') { + try { + learnJSON = JSON.parse(learnJSON); + } catch (e) { + return; + } + } + + if (config) { + template = config.template; + framework = config.framework; + } + + if (!template && learnJSON.templates) { + template = learnJSON.templates.todomvc; + } + + if (!framework && document.querySelector('[data-framework]')) { + framework = document.querySelector('[data-framework]').dataset.framework; + } + + this.template = template; + + if (learnJSON.backend) { + this.frameworkJSON = learnJSON.backend; + this.frameworkJSON.issueLabel = framework; + this.append({ + backend: true + }); + } else if (learnJSON[framework]) { + this.frameworkJSON = learnJSON[framework]; + this.frameworkJSON.issueLabel = framework; + this.append(); + } + + this.fetchIssueCount(); + } + + Learn.prototype.append = function (opts) { + var aside = document.createElement('aside'); + aside.innerHTML = _.template(this.template, this.frameworkJSON); + aside.className = 'learn'; + + if (opts && opts.backend) { + // Remove demo link + var sourceLinks = aside.querySelector('.source-links'); + var heading = sourceLinks.firstElementChild; + var sourceLink = sourceLinks.lastElementChild; + // Correct link path + var href = sourceLink.getAttribute('href'); + sourceLink.setAttribute('href', href.substr(href.lastIndexOf('http'))); + sourceLinks.innerHTML = heading.outerHTML + sourceLink.outerHTML; + } else { + // Localize demo links + var demoLinks = aside.querySelectorAll('.demo-link'); + Array.prototype.forEach.call(demoLinks, function (demoLink) { + if (demoLink.getAttribute('href').substr(0, 4) !== 'http') { + demoLink.setAttribute('href', findRoot() + demoLink.getAttribute('href')); + } + }); + } + + document.body.className = (document.body.className + ' learn-bar').trim(); + document.body.insertAdjacentHTML('afterBegin', aside.outerHTML); + }; + + Learn.prototype.fetchIssueCount = function () { + var issueLink = document.getElementById('issue-count-link'); + if (issueLink) { + var url = issueLink.href.replace('https://github.com', 'https://api.github.com/repos'); + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.onload = function (e) { + var parsedResponse = JSON.parse(e.target.responseText); + if (parsedResponse instanceof Array) { + var count = parsedResponse.length; + if (count !== 0) { + issueLink.innerHTML = 'This app has ' + count + ' open issues'; + document.getElementById('issue-count').style.display = 'inline'; + } + } + }; + xhr.send(); + } + }; + + redirect(); + getFile('learn.json', Learn); +})(); diff --git a/examples/vanilla-slim/node_modules/todomvc-common/license b/examples/vanilla-slim/node_modules/todomvc-common/license new file mode 100644 index 0000000000..26ec451c3e --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-common/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) TasteJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/examples/vanilla-slim/node_modules/todomvc-common/package.json b/examples/vanilla-slim/node_modules/todomvc-common/package.json new file mode 100644 index 0000000000..e2d421e8f9 --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-common/package.json @@ -0,0 +1,54 @@ +{ + "_from": "todomvc-common@^1.0.1", + "_id": "todomvc-common@1.0.5", + "_inBundle": false, + "_integrity": "sha512-D8kEJmxVMQIWwztEdH+WeiAfXRbbSCpgXq4NkYi+gduJ2tr8CNq7sYLfJvjpQ10KD9QxJwig57rvMbV2QAESwQ==", + "_location": "/todomvc-common", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "todomvc-common@^1.0.1", + "name": "todomvc-common", + "escapedName": "todomvc-common", + "rawSpec": "^1.0.1", + "saveSpec": null, + "fetchSpec": "^1.0.1" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.5.tgz", + "_shasum": "8c3e799ac9f1fc1573e0c204f984510826914730", + "_spec": "todomvc-common@^1.0.1", + "_where": "C:\\Users\\tantaman\\workspace\\todomvc\\examples\\vanilla-declarative", + "author": { + "name": "TasteJS" + }, + "bugs": { + "url": "https://github.com/tastejs/todomvc-common/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "Common TodoMVC utilities used by our apps", + "files": [ + "base.js", + "base.css" + ], + "homepage": "https://github.com/tastejs/todomvc-common#readme", + "keywords": [ + "todomvc", + "tastejs", + "util", + "utilities" + ], + "license": "MIT", + "main": "base.js", + "name": "todomvc-common", + "repository": { + "type": "git", + "url": "git+https://github.com/tastejs/todomvc-common.git" + }, + "style": "base.css", + "version": "1.0.5" +} diff --git a/examples/vanilla-slim/node_modules/todomvc-common/readme.md b/examples/vanilla-slim/node_modules/todomvc-common/readme.md new file mode 100644 index 0000000000..e3bfcd243b --- /dev/null +++ b/examples/vanilla-slim/node_modules/todomvc-common/readme.md @@ -0,0 +1,15 @@ +# todomvc-common + +> Common TodoMVC utilities used by our apps + + +## Install + +``` +$ npm install todomvc-common +``` + + +## License + +MIT © [TasteJS](http://tastejs.com) diff --git a/examples/vanilla-slim/package-lock.json b/examples/vanilla-slim/package-lock.json new file mode 100644 index 0000000000..2687f08659 --- /dev/null +++ b/examples/vanilla-slim/package-lock.json @@ -0,0 +1,16 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "todomvc-app-css": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-2.3.0.tgz", + "integrity": "sha512-RG8hxqoVn8Be3wxyuyHfOSAXiY1Z0N+PYQOe/jxzy3wpU1Obfwd1RF1i/fz/fR+MrYL+Q+BdrUt8SsXdtR7Oow==" + }, + "todomvc-common": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.5.tgz", + "integrity": "sha512-D8kEJmxVMQIWwztEdH+WeiAfXRbbSCpgXq4NkYi+gduJ2tr8CNq7sYLfJvjpQ10KD9QxJwig57rvMbV2QAESwQ==" + } + } +} diff --git a/examples/vanilla-slim/package.json b/examples/vanilla-slim/package.json new file mode 100644 index 0000000000..8f9f0362b5 --- /dev/null +++ b/examples/vanilla-slim/package.json @@ -0,0 +1,7 @@ +{ + "private": true, + "dependencies": { + "todomvc-common": "^1.0.1", + "todomvc-app-css": "^2.0.1" + } +} diff --git a/index.html b/index.html index 7ed720092b..8d730f010a 100644 --- a/index.html +++ b/index.html @@ -257,6 +257,9 @@

    Compare these to a non-framework implementation

  • Vanilla ES6
  • +
  • + Vanilla Slim +
  • jQuery
  • diff --git a/learn.json b/learn.json index aa64509afe..1fa47d6a67 100644 --- a/learn.json +++ b/learn.json @@ -953,6 +953,15 @@ "url": "examples/vanilla-es6" }] }, + "vanilla-slim": { + "name": "JavaScript", + "description": "JavaScript® (often shortened to JS) is a lightweight, interpreted, object-oriented language with first-class functions, most known as the scripting language for Web pages, but used in many non-browser environments as well such as node.js or Apache CouchDB.", + "homepage": "developer.mozilla.org/en-US/docs/JavaScript", + "examples": [{ + "name": "Minimal JS Example", + "url": "examples/vanilla-slim" + }] + }, "js_of_ocaml": { "name": "js_of_ocaml", "description": "Js_of_ocaml is a compiler of OCaml bytecode to Javascript. It makes it possible to run Ocaml programs in a Web browser.",