From f7b897a14e52fdabe85b37e709b2b6593825f37e Mon Sep 17 00:00:00 2001 From: androiddrew Date: Tue, 18 Jun 2019 20:13:57 -0400 Subject: [PATCH] Saving for posterity --- .gitignore | 2 + .../app.scssc | Bin 0 -> 25420 bytes css/app.css | 480 + css/app.css.map | 7 + css/app.scss | 564 + img/aurelia-logo.png | Bin 0 -> 27161 bytes img/ember-logo.png | Bin 0 -> 39455 bytes img/feathersjs-logo.svg | 1 + img/meteor-logo.png | Bin 0 -> 15766 bytes img/ng-logo.png | Bin 0 -> 5972 bytes img/node-logo.png | Bin 0 -> 32790 bytes img/pusher-logo.png | Bin 0 -> 22818 bytes img/react-logo.png | Bin 0 -> 49030 bytes img/vue-logo.png | Bin 0 -> 4178 bytes index.html | 24 + js/app.js | 64 + js/dist/main.bundle.js | 29 + js/src/app.js | 79 + js/veux.js | 809 ++ js/vue.js | 9613 +++++++++++++++++ package.json | 14 + veux.js | 809 ++ 22 files changed, 12495 insertions(+) create mode 100644 .gitignore create mode 100644 css/.sass-cache/f588e3e49ee2a6327c2a7c87d682f7117fc4b560/app.scssc create mode 100644 css/app.css create mode 100644 css/app.css.map create mode 100644 css/app.scss create mode 100644 img/aurelia-logo.png create mode 100644 img/ember-logo.png create mode 100644 img/feathersjs-logo.svg create mode 100644 img/meteor-logo.png create mode 100644 img/ng-logo.png create mode 100644 img/node-logo.png create mode 100644 img/pusher-logo.png create mode 100644 img/react-logo.png create mode 100644 img/vue-logo.png create mode 100644 index.html create mode 100644 js/app.js create mode 100644 js/dist/main.bundle.js create mode 100644 js/src/app.js create mode 100644 js/veux.js create mode 100644 js/vue.js create mode 100644 package.json create mode 100644 veux.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..646ac51 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +node_modules/ diff --git a/css/.sass-cache/f588e3e49ee2a6327c2a7c87d682f7117fc4b560/app.scssc b/css/.sass-cache/f588e3e49ee2a6327c2a7c87d682f7117fc4b560/app.scssc new file mode 100644 index 0000000000000000000000000000000000000000..eccca4dbde7e76c6bd0c37f91448c5c72daa6673 GIT binary patch literal 25420 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 literal 0 HcmV?d00001 diff --git a/css/app.css b/css/app.css new file mode 100644 index 0000000..f21180e --- /dev/null +++ b/css/app.css @@ -0,0 +1,480 @@ +/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */ +/** + * 1. Change the default font family in all browsers (opinionated). + * 2. Correct the line height in all browsers. + * 3. Prevent adjustments of font size after orientation changes in + * IE on Windows Phone and in iOS. + */ +/* Document + ========================================================================== */ +html { + font-family: sans-serif; + /* 1 */ + line-height: 1.15; + /* 2 */ + -ms-text-size-adjust: 100%; + /* 3 */ + -webkit-text-size-adjust: 100%; + /* 3 */ } + +/* Sections + ========================================================================== */ +/** + * Remove the margin in all browsers (opinionated). + */ +body { + margin: 0; } + +/** + * Add the correct display in IE 9-. + */ +article, +aside, +footer, +header, +nav, +section { + display: block; } + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +/* Grouping content + ========================================================================== */ +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in IE. + */ +figcaption, +figure, +main { + /* 1 */ + display: block; } + +/** + * Add the correct margin in IE 8. + */ +figure { + margin: 1em 40px; } + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ } + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +pre { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ } + +/* Text-level semantics + ========================================================================== */ +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ +a { + background-color: transparent; + /* 1 */ + -webkit-text-decoration-skip: objects; + /* 2 */ } + +/** + * Remove the outline on focused links when they are also active or hovered + * in all browsers (opinionated). + */ +a:active, +a:hover { + outline-width: 0; } + +/** + * 1. Remove the bottom border in Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ } + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ +b, +strong { + font-weight: inherit; } + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong { + font-weight: bolder; } + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +code, +kbd, +samp { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ } + +/** + * Add the correct font style in Android 4.3-. + */ +dfn { + font-style: italic; } + +/** + * Add the correct background and color in IE 9-. + */ +mark { + background-color: #ff0; + color: #000; } + +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sub { + bottom: -0.25em; } + +sup { + top: -0.5em; } + +/* Embedded content + ========================================================================== */ +/** + * Add the correct display in IE 9-. + */ +audio, +video { + display: inline-block; } + +/** + * Add the correct display in iOS 4-7. + */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Remove the border on images inside links in IE 10-. + */ +img { + border-style: none; } + +/** + * Hide the overflow in IE. + */ +svg:not(:root) { + overflow: hidden; } + +/* Forms + ========================================================================== */ +/** + * 1. Change the font styles in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: 1.15; + /* 1 */ + margin: 0; + /* 2 */ } + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ +button, +input { + /* 1 */ + overflow: visible; } + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +button, +select { + /* 1 */ + text-transform: none; } + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; + /* 2 */ } + +/** + * Remove the inner border and padding in Firefox. + */ +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; } + +/** + * Restore the focus styles unset by the previous rule. + */ +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; } + +/** + * Change the border, margin, and padding in all browsers (opinionated). + */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; } + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ +legend { + box-sizing: border-box; + /* 1 */ + color: inherit; + /* 2 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + white-space: normal; + /* 1 */ } + +/** + * 1. Add the correct display in IE 9-. + * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ } + +/** + * Remove the default vertical scrollbar in IE. + */ +textarea { + overflow: auto; } + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ } + +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. + */ +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ } + +/* Interactive + ========================================================================== */ +/* + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + */ +details, +menu { + display: block; } + +/* + * Add the correct display in all browsers. + */ +summary { + display: list-item; } + +/* Scripting + ========================================================================== */ +/** + * Add the correct display in IE 9-. + */ +canvas { + display: inline-block; } + +/** + * Add the correct display in IE. + */ +template { + display: none; } + +/* Hidden + ========================================================================== */ +/** + * Add the correct display in IE 10-. + */ +[hidden] { + display: none; } + +/* END NORMALIZE + ========================================================================== */ +html, body { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + margin-top: 16px; + margin-bottom: 16px; } + +div#app { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; } + div#app .search-wrapper { + position: relative; } + div#app .search-wrapper label { + position: absolute; + font-size: 12px; + color: rgba(0, 0, 0, 0.5); + top: 8px; + left: 12px; + z-index: -1; + transition: .15s all ease-in-out; } + div#app .search-wrapper input { + padding: 4px 12px; + color: rgba(0, 0, 0, 0.7); + border: 1px solid rgba(0, 0, 0, 0.12); + transition: .15s all ease-in-out; + background: white; } + div#app .search-wrapper input:focus { + outline: none; + transform: scale(1.05); } + div#app .search-wrapper input:focus + label { + font-size: 10px; + transform: translateY(-24px) translateX(-12px); } + div#app .search-wrapper input::-webkit-input-placeholder { + font-size: 12px; + color: rgba(0, 0, 0, 0.5); + font-weight: 100; } + div#app .wrapper { + display: flex; + max-width: 444px; + flex-wrap: wrap; + padding-top: 12px; } + div#app .card { + box-shadow: rgba(0, 0, 0, 0.11765) 0px 1px 6px, rgba(0, 0, 0, 0.11765) 0px 1px 4px; + max-width: 124px; + margin: 12px; + transition: .15s all ease-in-out; } + div#app .card:hover { + transform: scale(1.1); } + div#app .card a { + text-decoration: none; + padding: 12px; + color: #03A9F4; + font-size: 24px; + display: flex; + flex-direction: column; + align-items: center; } + div#app .card a img { + height: 100px; } + div#app .card a small { + font-size: 10px; + padding: 4px; } + div#app .hotpink { + background: hotpink; } + div#app .green { + background: green; } + div#app .box { + width: 100px; + height: 100px; + border: 1px solid rgba(0, 0, 0, 0.12); } + +/*# sourceMappingURL=app.css.map */ diff --git a/css/app.css.map b/css/app.css.map new file mode 100644 index 0000000..b4a8d13 --- /dev/null +++ b/css/app.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["app.scss"], +"names": [], +"file": "app.css" +} diff --git a/css/app.scss b/css/app.scss new file mode 100644 index 0000000..f84eab0 --- /dev/null +++ b/css/app.scss @@ -0,0 +1,564 @@ +/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */ + +/** + * 1. Change the default font family in all browsers (opinionated). + * 2. Correct the line height in all browsers. + * 3. Prevent adjustments of font size after orientation changes in + * IE on Windows Phone and in iOS. + */ + +/* Document + ========================================================================== */ + +html { + font-family: sans-serif; /* 1 */ + line-height: 1.15; /* 2 */ + -ms-text-size-adjust: 100%; /* 3 */ + -webkit-text-size-adjust: 100%; /* 3 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers (opinionated). + */ + +body { + margin: 0; +} + +/** + * Add the correct display in IE 9-. + */ + +article, +aside, +footer, +header, +nav, +section { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in IE. + */ + +figcaption, +figure, +main { /* 1 */ + display: block; +} + +/** + * Add the correct margin in IE 8. + */ + +figure { + margin: 1em 40px; +} + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ + +a { + background-color: transparent; /* 1 */ + -webkit-text-decoration-skip: objects; /* 2 */ +} + +/** + * Remove the outline on focused links when they are also active or hovered + * in all browsers (opinionated). + */ + +a:active, +a:hover { + outline-width: 0; +} + +/** + * 1. Remove the bottom border in Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ + +b, +strong { + font-weight: inherit; +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font style in Android 4.3-. + */ + +dfn { + font-style: italic; +} + +/** + * Add the correct background and color in IE 9-. + */ + +mark { + background-color: #ff0; + color: #000; +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +audio, +video { + display: inline-block; +} + +/** + * Add the correct display in iOS 4-7. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Remove the border on images inside links in IE 10-. + */ + +img { + border-style: none; +} + +/** + * Hide the overflow in IE. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ + +button, +html [type="button"], /* 1 */ +[type="reset"], +[type="submit"] { + -webkit-appearance: button; /* 2 */ +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Change the border, margin, and padding in all browsers (opinionated). + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * 1. Add the correct display in IE 9-. + * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Remove the default vertical scrollbar in IE. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + */ + +details, /* 1 */ +menu { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Scripting + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +canvas { + display: inline-block; +} + +/** + * Add the correct display in IE. + */ + +template { + display: none; +} + +/* Hidden + ========================================================================== */ + +/** + * Add the correct display in IE 10-. + */ + +[hidden] { + display: none; +} + + +/* END NORMALIZE + ========================================================================== */ + + +html, body { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + margin-top: 16px; + margin-bottom: 16px; +} + +div#app { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + + .search-wrapper { + position: relative; + label { + position: absolute; + font-size: 12px; + color: rgba(0,0,0,.50); + top: 8px; + left: 12px; + z-index: -1; + transition: .15s all ease-in-out; + } + input { + padding: 4px 12px; + color: rgba(0,0,0,.70); + border: 1px solid rgba(0,0,0,.12); + transition: .15s all ease-in-out; + background: white; + &:focus { + outline: none; + transform: scale(1.05); + & + label { + font-size: 12px; + transform: translateY(-24px) translateX(-12px); + } + } + &::-webkit-input-placeholder { + font-size: 12px; + color: rgba(0,0,0,.50); + font-weight: 100; + } + } + } + + .wrapper { + display: flex; + max-width: 444px; + flex-wrap: wrap; + padding-top: 12px; + } + + .card { + box-shadow: rgba(0, 0, 0, 0.117647) 0px 1px 6px, rgba(0, 0, 0, 0.117647) 0px 1px 4px; + max-width: 124px; + margin: 12px; + transition: .15s all ease-in-out; + &:hover { + transform: scale(1.1); + } + a { + text-decoration: none; + padding: 12px; + color: #03A9F4; + font-size: 24px; + display: flex; + flex-direction: column; + align-items: center; + img { + height: 100px; + } + small { + font-size: 10px; + padding: 4px; + } + } + } + + + + .hotpink { + background: hotpink; + } + + .green { + background: green; + } + + .box { + width: 100px; + height: 100px; + border: 1px solid rgba(0,0,0,.12); + } +} \ No newline at end of file diff --git a/img/aurelia-logo.png b/img/aurelia-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c3bb6d5dd5f1fe4d71681aedd2d711232b491bf6 GIT binary patch literal 27161 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 literal 0 HcmV?d00001 diff --git a/img/ember-logo.png b/img/ember-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4fb0a81e3669f9fb5be3472a2b1d42eeeb05ad18 GIT binary patch literal 39455 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 A$N&HU literal 0 HcmV?d00001 diff --git a/img/feathersjs-logo.svg b/img/feathersjs-logo.svg new file mode 100644 index 0000000..428d7c5 --- /dev/null +++ b/img/feathersjs-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/meteor-logo.png b/img/meteor-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..47b8ed4340bb374604ff864f08979587f9ae4415 GIT binary patch literal 15766 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 literal 0 HcmV?d00001 diff --git a/img/node-logo.png b/img/node-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cb952d43d20a72cc94aacc49308bba98e4f4696e GIT binary patch literal 32790 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�casVA{r@WS9FLD> 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..4a6e6c7 --- /dev/null +++ b/index.html @@ -0,0 +1,24 @@ + + + + + +

+ + + + + + diff --git a/js/app.js b/js/app.js new file mode 100644 index 0000000..e8856b2 --- /dev/null +++ b/js/app.js @@ -0,0 +1,64 @@ +var postList = [ + new Post( + 'Vue.js', + 'https://vuejs.org/', + 'Chris', + 'https://vuejs.org//images/logo.png' + ), + new Post( + 'React.js', + 'https://facebook.github.io/react/', + 'Tim', + 'http://daynin.github.io/clojurescript-presentation/img/react-logo.png' + ), + new Post( + 'Angular.js', + 'https://angularjs.org/', + 'Sam', + 'https://angularjs.org/img/ng-logo.png' + ), + new Post( + 'Ember.js', + 'http://emberjs.com/', + 'Rachel', + 'http://www.gravatar.com/avatar/0cf15665a9146ba852bf042b0652780a?s=200' + ), + new Post( + 'Meteor.js', + 'https://www.meteor.com/', + 'Chris', + 'http://hacktivist.in/introduction-to-nodejs-mongodb-meteor/img/meteor.png' + ), + new Post( + 'Aurelia', + 'http://aurelia.io/', + 'Tim', + 'https://cdn.auth0.com/blog/aurelia-logo.png' + ), + new Post( + 'Node.js', + 'https://nodejs.org/en/', + 'A. A. Ron', + 'https://code-maven.com/img/node.png' + ), + new Post( + 'Pusher', + 'https://pusher.com/', + 'Alex', + 'https://avatars1.githubusercontent.com/u/739550?v=3&s=400' + ), + new Post( + 'Feathers.js', + 'http://feathersjs.com/', + 'Chuck', + 'https://cdn.worldvectorlogo.com/logos/feathersjs.svg' + ), +] + +var app = new Vue({ + el:'#app', + data:{ + keyword: 'Javascript' + } +}); + diff --git a/js/dist/main.bundle.js b/js/dist/main.bundle.js new file mode 100644 index 0000000..c4bc5a7 --- /dev/null +++ b/js/dist/main.bundle.js @@ -0,0 +1,29 @@ +'use strict'; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Post = function Post(title, link, author, logo) { + _classCallCheck(this, Post); + + this.title = title; + this.link = link; + this.author = author; + this.logo = logo; +}; + +var app = new Vue({ + el: '#app', + data: { + keyword: '', + postList: [new Post('Vue.js', 'https://vuejs.org/', 'Chris', 'https://vuejs.org//images/logo.png'), new Post('React.js', 'https://facebook.github.io/react/', 'Tim', 'http://daynin.github.io/clojurescript-presentation/img/react-logo.png'), new Post('Angular.js', 'https://angularjs.org/', 'Sam', 'https://angularjs.org/img/ng-logo.png'), new Post('Ember.js', 'http://emberjs.com/', 'Rachel', 'http://www.gravatar.com/avatar/0cf15665a9146ba852bf042b0652780a?s=200'), new Post('Meteor.js', 'https://www.meteor.com/', 'Chris', 'http://hacktivist.in/introduction-to-nodejs-mongodb-meteor/img/meteor.png'), new Post('Aurelia', 'http://aurelia.io/', 'Tim', 'https://cdn.auth0.com/blog/aurelia-logo.png'), new Post('Node.js', 'https://nodejs.org/en/', 'A. A. Ron', 'https://code-maven.com/img/node.png'), new Post('Pusher', 'https://pusher.com/', 'Alex', 'https://avatars1.githubusercontent.com/u/739550?v=3&s=400'), new Post('Feathers.js', 'http://feathersjs.com/', 'Chuck', 'https://cdn.worldvectorlogo.com/logos/feathersjs.svg')] + }, + computed: { + filteredList: function filteredList() { + var _this = this; + + return this.postList.filter(function (post) { + return post.title.toLowerCase().includes(_this.keyword.toLowerCase()); + }); + } + } +}); diff --git a/js/src/app.js b/js/src/app.js new file mode 100644 index 0000000..3cffb48 --- /dev/null +++ b/js/src/app.js @@ -0,0 +1,79 @@ +class Post{ + constructor(title, link, author, logo){ + this.title = title + this.link = link + this.author = author + this.logo = logo + } + +} + + +var app = new Vue({ + el:'#app', + data:{ + keyword: '', + postList: [ + new Post( + 'Vue.js', + 'https://vuejs.org/', + 'Chris', + 'https://vuejs.org//images/logo.png' + ), + new Post( + 'React.js', + 'https://facebook.github.io/react/', + 'Tim', + 'http://daynin.github.io/clojurescript-presentation/img/react-logo.png' + ), + new Post( + 'Angular.js', + 'https://angularjs.org/', + 'Sam', + 'https://angularjs.org/img/ng-logo.png' + ), + new Post( + 'Ember.js', + 'http://emberjs.com/', + 'Rachel', + 'http://www.gravatar.com/avatar/0cf15665a9146ba852bf042b0652780a?s=200' + ), + new Post( + 'Meteor.js', + 'https://www.meteor.com/', + 'Chris', + 'http://hacktivist.in/introduction-to-nodejs-mongodb-meteor/img/meteor.png' + ), + new Post( + 'Aurelia', + 'http://aurelia.io/', + 'Tim', + 'https://cdn.auth0.com/blog/aurelia-logo.png' + ), + new Post( + 'Node.js', + 'https://nodejs.org/en/', + 'A. A. Ron', + 'https://code-maven.com/img/node.png' + ), + new Post( + 'Pusher', + 'https://pusher.com/', + 'Alex', + 'https://avatars1.githubusercontent.com/u/739550?v=3&s=400' + ), + new Post( + 'Feathers.js', + 'http://feathersjs.com/', + 'Chuck', + 'https://cdn.worldvectorlogo.com/logos/feathersjs.svg' + ), + ] + }, + computed:{ + filteredList(){ + return this.postList.filter((post) => {return post.title.toLowerCase().includes(this.keyword.toLowerCase());}); + } + } +}); + diff --git a/js/veux.js b/js/veux.js new file mode 100644 index 0000000..af02020 --- /dev/null +++ b/js/veux.js @@ -0,0 +1,809 @@ +/** + * vuex v2.3.0 + * (c) 2017 Evan You + * @license MIT + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.Vuex = factory()); +}(this, (function () { 'use strict'; + +var applyMixin = function (Vue) { + var version = Number(Vue.version.split('.')[0]); + + if (version >= 2) { + var usesInit = Vue.config._lifecycleHooks.indexOf('init') > -1; + Vue.mixin(usesInit ? { init: vuexInit } : { beforeCreate: vuexInit }); + } else { + // override init and inject vuex init procedure + // for 1.x backwards compatibility. + var _init = Vue.prototype._init; + Vue.prototype._init = function (options) { + if ( options === void 0 ) options = {}; + + options.init = options.init + ? [vuexInit].concat(options.init) + : vuexInit; + _init.call(this, options); + }; + } + + /** + * Vuex init hook, injected into each instances init hooks list. + */ + + function vuexInit () { + var options = this.$options; + // store injection + if (options.store) { + this.$store = options.store; + } else if (options.parent && options.parent.$store) { + this.$store = options.parent.$store; + } + } +}; + +var devtoolHook = + typeof window !== 'undefined' && + window.__VUE_DEVTOOLS_GLOBAL_HOOK__; + +function devtoolPlugin (store) { + if (!devtoolHook) { return } + + store._devtoolHook = devtoolHook; + + devtoolHook.emit('vuex:init', store); + + devtoolHook.on('vuex:travel-to-state', function (targetState) { + store.replaceState(targetState); + }); + + store.subscribe(function (mutation, state) { + devtoolHook.emit('vuex:mutation', mutation, state); + }); +} + +/** + * Get the first item that pass the test + * by second argument function + * + * @param {Array} list + * @param {Function} f + * @return {*} + */ +/** + * Deep copy the given object considering circular structure. + * This function caches all nested objects and its copies. + * If it detects circular structure, use cached copy to avoid infinite loop. + * + * @param {*} obj + * @param {Array} cache + * @return {*} + */ + + +/** + * forEach for object + */ +function forEachValue (obj, fn) { + Object.keys(obj).forEach(function (key) { return fn(obj[key], key); }); +} + +function isObject (obj) { + return obj !== null && typeof obj === 'object' +} + +function isPromise (val) { + return val && typeof val.then === 'function' +} + +function assert (condition, msg) { + if (!condition) { throw new Error(("[vuex] " + msg)) } +} + +var Module = function Module (rawModule, runtime) { + this.runtime = runtime; + this._children = Object.create(null); + this._rawModule = rawModule; + var rawState = rawModule.state; + this.state = (typeof rawState === 'function' ? rawState() : rawState) || {}; +}; + +var prototypeAccessors$1 = { namespaced: {} }; + +prototypeAccessors$1.namespaced.get = function () { + return !!this._rawModule.namespaced +}; + +Module.prototype.addChild = function addChild (key, module) { + this._children[key] = module; +}; + +Module.prototype.removeChild = function removeChild (key) { + delete this._children[key]; +}; + +Module.prototype.getChild = function getChild (key) { + return this._children[key] +}; + +Module.prototype.update = function update (rawModule) { + this._rawModule.namespaced = rawModule.namespaced; + if (rawModule.actions) { + this._rawModule.actions = rawModule.actions; + } + if (rawModule.mutations) { + this._rawModule.mutations = rawModule.mutations; + } + if (rawModule.getters) { + this._rawModule.getters = rawModule.getters; + } +}; + +Module.prototype.forEachChild = function forEachChild (fn) { + forEachValue(this._children, fn); +}; + +Module.prototype.forEachGetter = function forEachGetter (fn) { + if (this._rawModule.getters) { + forEachValue(this._rawModule.getters, fn); + } +}; + +Module.prototype.forEachAction = function forEachAction (fn) { + if (this._rawModule.actions) { + forEachValue(this._rawModule.actions, fn); + } +}; + +Module.prototype.forEachMutation = function forEachMutation (fn) { + if (this._rawModule.mutations) { + forEachValue(this._rawModule.mutations, fn); + } +}; + +Object.defineProperties( Module.prototype, prototypeAccessors$1 ); + +var ModuleCollection = function ModuleCollection (rawRootModule) { + var this$1 = this; + + // register root module (Vuex.Store options) + this.root = new Module(rawRootModule, false); + + // register all nested modules + if (rawRootModule.modules) { + forEachValue(rawRootModule.modules, function (rawModule, key) { + this$1.register([key], rawModule, false); + }); + } +}; + +ModuleCollection.prototype.get = function get (path) { + return path.reduce(function (module, key) { + return module.getChild(key) + }, this.root) +}; + +ModuleCollection.prototype.getNamespace = function getNamespace (path) { + var module = this.root; + return path.reduce(function (namespace, key) { + module = module.getChild(key); + return namespace + (module.namespaced ? key + '/' : '') + }, '') +}; + +ModuleCollection.prototype.update = function update$1 (rawRootModule) { + update(this.root, rawRootModule); +}; + +ModuleCollection.prototype.register = function register (path, rawModule, runtime) { + var this$1 = this; + if ( runtime === void 0 ) runtime = true; + + var parent = this.get(path.slice(0, -1)); + var newModule = new Module(rawModule, runtime); + parent.addChild(path[path.length - 1], newModule); + + // register nested modules + if (rawModule.modules) { + forEachValue(rawModule.modules, function (rawChildModule, key) { + this$1.register(path.concat(key), rawChildModule, runtime); + }); + } +}; + +ModuleCollection.prototype.unregister = function unregister (path) { + var parent = this.get(path.slice(0, -1)); + var key = path[path.length - 1]; + if (!parent.getChild(key).runtime) { return } + + parent.removeChild(key); +}; + +function update (targetModule, newModule) { + // update target module + targetModule.update(newModule); + + // update nested modules + if (newModule.modules) { + for (var key in newModule.modules) { + if (!targetModule.getChild(key)) { + console.warn( + "[vuex] trying to add a new module '" + key + "' on hot reloading, " + + 'manual reload is needed' + ); + return + } + update(targetModule.getChild(key), newModule.modules[key]); + } + } +} + +var Vue; // bind on install + +var Store = function Store (options) { + var this$1 = this; + if ( options === void 0 ) options = {}; + + assert(Vue, "must call Vue.use(Vuex) before creating a store instance."); + assert(typeof Promise !== 'undefined', "vuex requires a Promise polyfill in this browser."); + + var state = options.state; if ( state === void 0 ) state = {}; + var plugins = options.plugins; if ( plugins === void 0 ) plugins = []; + var strict = options.strict; if ( strict === void 0 ) strict = false; + + // store internal state + this._committing = false; + this._actions = Object.create(null); + this._mutations = Object.create(null); + this._wrappedGetters = Object.create(null); + this._modules = new ModuleCollection(options); + this._modulesNamespaceMap = Object.create(null); + this._subscribers = []; + this._watcherVM = new Vue(); + + // bind commit and dispatch to self + var store = this; + var ref = this; + var dispatch = ref.dispatch; + var commit = ref.commit; + this.dispatch = function boundDispatch (type, payload) { + return dispatch.call(store, type, payload) + }; + this.commit = function boundCommit (type, payload, options) { + return commit.call(store, type, payload, options) + }; + + // strict mode + this.strict = strict; + + // init root module. + // this also recursively registers all sub-modules + // and collects all module getters inside this._wrappedGetters + installModule(this, state, [], this._modules.root); + + // initialize the store vm, which is responsible for the reactivity + // (also registers _wrappedGetters as computed properties) + resetStoreVM(this, state); + + // apply plugins + plugins.concat(devtoolPlugin).forEach(function (plugin) { return plugin(this$1); }); +}; + +var prototypeAccessors = { state: {} }; + +prototypeAccessors.state.get = function () { + return this._vm._data.$$state +}; + +prototypeAccessors.state.set = function (v) { + assert(false, "Use store.replaceState() to explicit replace store state."); +}; + +Store.prototype.commit = function commit (_type, _payload, _options) { + var this$1 = this; + + // check object-style commit + var ref = unifyObjectStyle(_type, _payload, _options); + var type = ref.type; + var payload = ref.payload; + var options = ref.options; + + var mutation = { type: type, payload: payload }; + var entry = this._mutations[type]; + if (!entry) { + console.error(("[vuex] unknown mutation type: " + type)); + return + } + this._withCommit(function () { + entry.forEach(function commitIterator (handler) { + handler(payload); + }); + }); + this._subscribers.forEach(function (sub) { return sub(mutation, this$1.state); }); + + if (options && options.silent) { + console.warn( + "[vuex] mutation type: " + type + ". Silent option has been removed. " + + 'Use the filter functionality in the vue-devtools' + ); + } +}; + +Store.prototype.dispatch = function dispatch (_type, _payload) { + // check object-style dispatch + var ref = unifyObjectStyle(_type, _payload); + var type = ref.type; + var payload = ref.payload; + + var entry = this._actions[type]; + if (!entry) { + console.error(("[vuex] unknown action type: " + type)); + return + } + return entry.length > 1 + ? Promise.all(entry.map(function (handler) { return handler(payload); })) + : entry[0](payload) +}; + +Store.prototype.subscribe = function subscribe (fn) { + var subs = this._subscribers; + if (subs.indexOf(fn) < 0) { + subs.push(fn); + } + return function () { + var i = subs.indexOf(fn); + if (i > -1) { + subs.splice(i, 1); + } + } +}; + +Store.prototype.watch = function watch (getter, cb, options) { + var this$1 = this; + + assert(typeof getter === 'function', "store.watch only accepts a function."); + return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options) +}; + +Store.prototype.replaceState = function replaceState (state) { + var this$1 = this; + + this._withCommit(function () { + this$1._vm._data.$$state = state; + }); +}; + +Store.prototype.registerModule = function registerModule (path, rawModule) { + if (typeof path === 'string') { path = [path]; } + assert(Array.isArray(path), "module path must be a string or an Array."); + this._modules.register(path, rawModule); + installModule(this, this.state, path, this._modules.get(path)); + // reset store to update getters... + resetStoreVM(this, this.state); +}; + +Store.prototype.unregisterModule = function unregisterModule (path) { + var this$1 = this; + + if (typeof path === 'string') { path = [path]; } + assert(Array.isArray(path), "module path must be a string or an Array."); + this._modules.unregister(path); + this._withCommit(function () { + var parentState = getNestedState(this$1.state, path.slice(0, -1)); + Vue.delete(parentState, path[path.length - 1]); + }); + resetStore(this); +}; + +Store.prototype.hotUpdate = function hotUpdate (newOptions) { + this._modules.update(newOptions); + resetStore(this, true); +}; + +Store.prototype._withCommit = function _withCommit (fn) { + var committing = this._committing; + this._committing = true; + fn(); + this._committing = committing; +}; + +Object.defineProperties( Store.prototype, prototypeAccessors ); + +function resetStore (store, hot) { + store._actions = Object.create(null); + store._mutations = Object.create(null); + store._wrappedGetters = Object.create(null); + store._modulesNamespaceMap = Object.create(null); + var state = store.state; + // init all modules + installModule(store, state, [], store._modules.root, true); + // reset vm + resetStoreVM(store, state, hot); +} + +function resetStoreVM (store, state, hot) { + var oldVm = store._vm; + + // bind store public getters + store.getters = {}; + var wrappedGetters = store._wrappedGetters; + var computed = {}; + forEachValue(wrappedGetters, function (fn, key) { + // use computed to leverage its lazy-caching mechanism + computed[key] = function () { return fn(store); }; + Object.defineProperty(store.getters, key, { + get: function () { return store._vm[key]; }, + enumerable: true // for local getters + }); + }); + + // use a Vue instance to store the state tree + // suppress warnings just in case the user has added + // some funky global mixins + var silent = Vue.config.silent; + Vue.config.silent = true; + store._vm = new Vue({ + data: { + $$state: state + }, + computed: computed + }); + Vue.config.silent = silent; + + // enable strict mode for new vm + if (store.strict) { + enableStrictMode(store); + } + + if (oldVm) { + if (hot) { + // dispatch changes in all subscribed watchers + // to force getter re-evaluation for hot reloading. + store._withCommit(function () { + oldVm._data.$$state = null; + }); + } + Vue.nextTick(function () { return oldVm.$destroy(); }); + } +} + +function installModule (store, rootState, path, module, hot) { + var isRoot = !path.length; + var namespace = store._modules.getNamespace(path); + + // register in namespace map + if (module.namespaced) { + store._modulesNamespaceMap[namespace] = module; + } + + // set state + if (!isRoot && !hot) { + var parentState = getNestedState(rootState, path.slice(0, -1)); + var moduleName = path[path.length - 1]; + store._withCommit(function () { + Vue.set(parentState, moduleName, module.state); + }); + } + + var local = module.context = makeLocalContext(store, namespace, path); + + module.forEachMutation(function (mutation, key) { + var namespacedType = namespace + key; + registerMutation(store, namespacedType, mutation, local); + }); + + module.forEachAction(function (action, key) { + var namespacedType = namespace + key; + registerAction(store, namespacedType, action, local); + }); + + module.forEachGetter(function (getter, key) { + var namespacedType = namespace + key; + registerGetter(store, namespacedType, getter, local); + }); + + module.forEachChild(function (child, key) { + installModule(store, rootState, path.concat(key), child, hot); + }); +} + +/** + * make localized dispatch, commit, getters and state + * if there is no namespace, just use root ones + */ +function makeLocalContext (store, namespace, path) { + var noNamespace = namespace === ''; + + var local = { + dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) { + var args = unifyObjectStyle(_type, _payload, _options); + var payload = args.payload; + var options = args.options; + var type = args.type; + + if (!options || !options.root) { + type = namespace + type; + if (!store._actions[type]) { + console.error(("[vuex] unknown local action type: " + (args.type) + ", global type: " + type)); + return + } + } + + return store.dispatch(type, payload) + }, + + commit: noNamespace ? store.commit : function (_type, _payload, _options) { + var args = unifyObjectStyle(_type, _payload, _options); + var payload = args.payload; + var options = args.options; + var type = args.type; + + if (!options || !options.root) { + type = namespace + type; + if (!store._mutations[type]) { + console.error(("[vuex] unknown local mutation type: " + (args.type) + ", global type: " + type)); + return + } + } + + store.commit(type, payload, options); + } + }; + + // getters and state object must be gotten lazily + // because they will be changed by vm update + Object.defineProperties(local, { + getters: { + get: noNamespace + ? function () { return store.getters; } + : function () { return makeLocalGetters(store, namespace); } + }, + state: { + get: function () { return getNestedState(store.state, path); } + } + }); + + return local +} + +function makeLocalGetters (store, namespace) { + var gettersProxy = {}; + + var splitPos = namespace.length; + Object.keys(store.getters).forEach(function (type) { + // skip if the target getter is not match this namespace + if (type.slice(0, splitPos) !== namespace) { return } + + // extract local getter type + var localType = type.slice(splitPos); + + // Add a port to the getters proxy. + // Define as getter property because + // we do not want to evaluate the getters in this time. + Object.defineProperty(gettersProxy, localType, { + get: function () { return store.getters[type]; }, + enumerable: true + }); + }); + + return gettersProxy +} + +function registerMutation (store, type, handler, local) { + var entry = store._mutations[type] || (store._mutations[type] = []); + entry.push(function wrappedMutationHandler (payload) { + handler(local.state, payload); + }); +} + +function registerAction (store, type, handler, local) { + var entry = store._actions[type] || (store._actions[type] = []); + entry.push(function wrappedActionHandler (payload, cb) { + var res = handler({ + dispatch: local.dispatch, + commit: local.commit, + getters: local.getters, + state: local.state, + rootGetters: store.getters, + rootState: store.state + }, payload, cb); + if (!isPromise(res)) { + res = Promise.resolve(res); + } + if (store._devtoolHook) { + return res.catch(function (err) { + store._devtoolHook.emit('vuex:error', err); + throw err + }) + } else { + return res + } + }); +} + +function registerGetter (store, type, rawGetter, local) { + if (store._wrappedGetters[type]) { + console.error(("[vuex] duplicate getter key: " + type)); + return + } + store._wrappedGetters[type] = function wrappedGetter (store) { + return rawGetter( + local.state, // local state + local.getters, // local getters + store.state, // root state + store.getters // root getters + ) + }; +} + +function enableStrictMode (store) { + store._vm.$watch(function () { return this._data.$$state }, function () { + assert(store._committing, "Do not mutate vuex store state outside mutation handlers."); + }, { deep: true, sync: true }); +} + +function getNestedState (state, path) { + return path.length + ? path.reduce(function (state, key) { return state[key]; }, state) + : state +} + +function unifyObjectStyle (type, payload, options) { + if (isObject(type) && type.type) { + options = payload; + payload = type; + type = type.type; + } + + assert(typeof type === 'string', ("Expects string as the type, but found " + (typeof type) + ".")); + + return { type: type, payload: payload, options: options } +} + +function install (_Vue) { + if (Vue) { + console.error( + '[vuex] already installed. Vue.use(Vuex) should be called only once.' + ); + return + } + Vue = _Vue; + applyMixin(Vue); +} + +// auto install in dist mode +if (typeof window !== 'undefined' && window.Vue) { + install(window.Vue); +} + +var mapState = normalizeNamespace(function (namespace, states) { + var res = {}; + normalizeMap(states).forEach(function (ref) { + var key = ref.key; + var val = ref.val; + + res[key] = function mappedState () { + var state = this.$store.state; + var getters = this.$store.getters; + if (namespace) { + var module = getModuleByNamespace(this.$store, 'mapState', namespace); + if (!module) { + return + } + state = module.context.state; + getters = module.context.getters; + } + return typeof val === 'function' + ? val.call(this, state, getters) + : state[val] + }; + // mark vuex getter for devtools + res[key].vuex = true; + }); + return res +}); + +var mapMutations = normalizeNamespace(function (namespace, mutations) { + var res = {}; + normalizeMap(mutations).forEach(function (ref) { + var key = ref.key; + var val = ref.val; + + val = namespace + val; + res[key] = function mappedMutation () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + if (namespace && !getModuleByNamespace(this.$store, 'mapMutations', namespace)) { + return + } + return this.$store.commit.apply(this.$store, [val].concat(args)) + }; + }); + return res +}); + +var mapGetters = normalizeNamespace(function (namespace, getters) { + var res = {}; + normalizeMap(getters).forEach(function (ref) { + var key = ref.key; + var val = ref.val; + + val = namespace + val; + res[key] = function mappedGetter () { + if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) { + return + } + if (!(val in this.$store.getters)) { + console.error(("[vuex] unknown getter: " + val)); + return + } + return this.$store.getters[val] + }; + // mark vuex getter for devtools + res[key].vuex = true; + }); + return res +}); + +var mapActions = normalizeNamespace(function (namespace, actions) { + var res = {}; + normalizeMap(actions).forEach(function (ref) { + var key = ref.key; + var val = ref.val; + + val = namespace + val; + res[key] = function mappedAction () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + if (namespace && !getModuleByNamespace(this.$store, 'mapActions', namespace)) { + return + } + return this.$store.dispatch.apply(this.$store, [val].concat(args)) + }; + }); + return res +}); + +function normalizeMap (map) { + return Array.isArray(map) + ? map.map(function (key) { return ({ key: key, val: key }); }) + : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); }) +} + +function normalizeNamespace (fn) { + return function (namespace, map) { + if (typeof namespace !== 'string') { + map = namespace; + namespace = ''; + } else if (namespace.charAt(namespace.length - 1) !== '/') { + namespace += '/'; + } + return fn(namespace, map) + } +} + +function getModuleByNamespace (store, helper, namespace) { + var module = store._modulesNamespaceMap[namespace]; + if (!module) { + console.error(("[vuex] module namespace not found in " + helper + "(): " + namespace)); + } + return module +} + +var index = { + Store: Store, + install: install, + version: '2.3.0', + mapState: mapState, + mapMutations: mapMutations, + mapGetters: mapGetters, + mapActions: mapActions +}; + +return index; + +}))); \ No newline at end of file diff --git a/js/vue.js b/js/vue.js new file mode 100644 index 0000000..510e4b5 --- /dev/null +++ b/js/vue.js @@ -0,0 +1,9613 @@ +/*! + * Vue.js v2.3.0 + * (c) 2014-2017 Evan You + * Released under the MIT License. + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.Vue = factory()); +}(this, (function () { 'use strict'; + +/* */ + +// these helpers produces better vm code in JS engines due to their +// explicitness and function inlining +function isUndef (v) { + return v === undefined || v === null +} + +function isDef (v) { + return v !== undefined && v !== null +} + +function isTrue (v) { + return v === true +} + +/** + * Check if value is primitive + */ +function isPrimitive (value) { + return typeof value === 'string' || typeof value === 'number' +} + +/** + * Quick object check - this is primarily used to tell + * Objects from primitive values when we know the value + * is a JSON-compliant type. + */ +function isObject (obj) { + return obj !== null && typeof obj === 'object' +} + +var toString = Object.prototype.toString; + +/** + * Strict object type check. Only returns true + * for plain JavaScript objects. + */ +function isPlainObject (obj) { + return toString.call(obj) === '[object Object]' +} + +function isRegExp (v) { + return toString.call(v) === '[object RegExp]' +} + +/** + * Convert a value to a string that is actually rendered. + */ +function _toString (val) { + return val == null + ? '' + : typeof val === 'object' + ? JSON.stringify(val, null, 2) + : String(val) +} + +/** + * Convert a input value to a number for persistence. + * If the conversion fails, return original string. + */ +function toNumber (val) { + var n = parseFloat(val); + return isNaN(n) ? val : n +} + +/** + * Make a map and return a function for checking if a key + * is in that map. + */ +function makeMap ( + str, + expectsLowerCase +) { + var map = Object.create(null); + var list = str.split(','); + for (var i = 0; i < list.length; i++) { + map[list[i]] = true; + } + return expectsLowerCase + ? function (val) { return map[val.toLowerCase()]; } + : function (val) { return map[val]; } +} + +/** + * Check if a tag is a built-in tag. + */ +var isBuiltInTag = makeMap('slot,component', true); + +/** + * Remove an item from an array + */ +function remove (arr, item) { + if (arr.length) { + var index = arr.indexOf(item); + if (index > -1) { + return arr.splice(index, 1) + } + } +} + +/** + * Check whether the object has the property. + */ +var hasOwnProperty = Object.prototype.hasOwnProperty; +function hasOwn (obj, key) { + return hasOwnProperty.call(obj, key) +} + +/** + * Create a cached version of a pure function. + */ +function cached (fn) { + var cache = Object.create(null); + return (function cachedFn (str) { + var hit = cache[str]; + return hit || (cache[str] = fn(str)) + }) +} + +/** + * Camelize a hyphen-delimited string. + */ +var camelizeRE = /-(\w)/g; +var camelize = cached(function (str) { + return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; }) +}); + +/** + * Capitalize a string. + */ +var capitalize = cached(function (str) { + return str.charAt(0).toUpperCase() + str.slice(1) +}); + +/** + * Hyphenate a camelCase string. + */ +var hyphenateRE = /([^-])([A-Z])/g; +var hyphenate = cached(function (str) { + return str + .replace(hyphenateRE, '$1-$2') + .replace(hyphenateRE, '$1-$2') + .toLowerCase() +}); + +/** + * Simple bind, faster than native + */ +function bind (fn, ctx) { + function boundFn (a) { + var l = arguments.length; + return l + ? l > 1 + ? fn.apply(ctx, arguments) + : fn.call(ctx, a) + : fn.call(ctx) + } + // record original fn length + boundFn._length = fn.length; + return boundFn +} + +/** + * Convert an Array-like object to a real Array. + */ +function toArray (list, start) { + start = start || 0; + var i = list.length - start; + var ret = new Array(i); + while (i--) { + ret[i] = list[i + start]; + } + return ret +} + +/** + * Mix properties into target object. + */ +function extend (to, _from) { + for (var key in _from) { + to[key] = _from[key]; + } + return to +} + +/** + * Merge an Array of Objects into a single Object. + */ +function toObject (arr) { + var res = {}; + for (var i = 0; i < arr.length; i++) { + if (arr[i]) { + extend(res, arr[i]); + } + } + return res +} + +/** + * Perform no operation. + */ +function noop () {} + +/** + * Always return false. + */ +var no = function () { return false; }; + +/** + * Return same value + */ +var identity = function (_) { return _; }; + +/** + * Generate a static keys string from compiler modules. + */ +function genStaticKeys (modules) { + return modules.reduce(function (keys, m) { + return keys.concat(m.staticKeys || []) + }, []).join(',') +} + +/** + * Check if two values are loosely equal - that is, + * if they are plain objects, do they have the same shape? + */ +function looseEqual (a, b) { + var isObjectA = isObject(a); + var isObjectB = isObject(b); + if (isObjectA && isObjectB) { + try { + return JSON.stringify(a) === JSON.stringify(b) + } catch (e) { + // possible circular reference + return a === b + } + } else if (!isObjectA && !isObjectB) { + return String(a) === String(b) + } else { + return false + } +} + +function looseIndexOf (arr, val) { + for (var i = 0; i < arr.length; i++) { + if (looseEqual(arr[i], val)) { return i } + } + return -1 +} + +/** + * Ensure a function is called only once. + */ +function once (fn) { + var called = false; + return function () { + if (!called) { + called = true; + fn.apply(this, arguments); + } + } +} + +var SSR_ATTR = 'data-server-rendered'; + +var ASSET_TYPES = [ + 'component', + 'directive', + 'filter' +]; + +var LIFECYCLE_HOOKS = [ + 'beforeCreate', + 'created', + 'beforeMount', + 'mounted', + 'beforeUpdate', + 'updated', + 'beforeDestroy', + 'destroyed', + 'activated', + 'deactivated' +]; + +/* */ + +var config = ({ + /** + * Option merge strategies (used in core/util/options) + */ + optionMergeStrategies: Object.create(null), + + /** + * Whether to suppress warnings. + */ + silent: false, + + /** + * Show production mode tip message on boot? + */ + productionTip: "development" !== 'production', + + /** + * Whether to enable devtools + */ + devtools: "development" !== 'production', + + /** + * Whether to record perf + */ + performance: false, + + /** + * Error handler for watcher errors + */ + errorHandler: null, + + /** + * Ignore certain custom elements + */ + ignoredElements: [], + + /** + * Custom user key aliases for v-on + */ + keyCodes: Object.create(null), + + /** + * Check if a tag is reserved so that it cannot be registered as a + * component. This is platform-dependent and may be overwritten. + */ + isReservedTag: no, + + /** + * Check if an attribute is reserved so that it cannot be used as a component + * prop. This is platform-dependent and may be overwritten. + */ + isReservedAttr: no, + + /** + * Check if a tag is an unknown element. + * Platform-dependent. + */ + isUnknownElement: no, + + /** + * Get the namespace of an element + */ + getTagNamespace: noop, + + /** + * Parse the real tag name for the specific platform. + */ + parsePlatformTagName: identity, + + /** + * Check if an attribute must be bound using property, e.g. value + * Platform-dependent. + */ + mustUseProp: no, + + /** + * Exposed for legacy reasons + */ + _lifecycleHooks: LIFECYCLE_HOOKS +}); + +/* */ + +var emptyObject = Object.freeze({}); + +/** + * Check if a string starts with $ or _ + */ +function isReserved (str) { + var c = (str + '').charCodeAt(0); + return c === 0x24 || c === 0x5F +} + +/** + * Define a property. + */ +function def (obj, key, val, enumerable) { + Object.defineProperty(obj, key, { + value: val, + enumerable: !!enumerable, + writable: true, + configurable: true + }); +} + +/** + * Parse simple path. + */ +var bailRE = /[^\w.$]/; +function parsePath (path) { + if (bailRE.test(path)) { + return + } + var segments = path.split('.'); + return function (obj) { + for (var i = 0; i < segments.length; i++) { + if (!obj) { return } + obj = obj[segments[i]]; + } + return obj + } +} + +var warn = noop; +var tip = noop; +var formatComponentName; + +{ + var hasConsole = typeof console !== 'undefined'; + var classifyRE = /(?:^|[-_])(\w)/g; + var classify = function (str) { return str + .replace(classifyRE, function (c) { return c.toUpperCase(); }) + .replace(/[-_]/g, ''); }; + + warn = function (msg, vm) { + if (hasConsole && (!config.silent)) { + console.error("[Vue warn]: " + msg + ( + vm ? generateComponentTrace(vm) : '' + )); + } + }; + + tip = function (msg, vm) { + if (hasConsole && (!config.silent)) { + console.warn("[Vue tip]: " + msg + ( + vm ? generateComponentTrace(vm) : '' + )); + } + }; + + formatComponentName = function (vm, includeFile) { + if (vm.$root === vm) { + return '' + } + var name = typeof vm === 'string' + ? vm + : typeof vm === 'function' && vm.options + ? vm.options.name + : vm._isVue + ? vm.$options.name || vm.$options._componentTag + : vm.name; + + var file = vm._isVue && vm.$options.__file; + if (!name && file) { + var match = file.match(/([^/\\]+)\.vue$/); + name = match && match[1]; + } + + return ( + (name ? ("<" + (classify(name)) + ">") : "") + + (file && includeFile !== false ? (" at " + file) : '') + ) + }; + + var repeat = function (str, n) { + var res = ''; + while (n) { + if (n % 2 === 1) { res += str; } + if (n > 1) { str += str; } + n >>= 1; + } + return res + }; + + var generateComponentTrace = function (vm) { + if (vm._isVue && vm.$parent) { + var tree = []; + var currentRecursiveSequence = 0; + while (vm) { + if (tree.length > 0) { + var last = tree[tree.length - 1]; + if (last.constructor === vm.constructor) { + currentRecursiveSequence++; + vm = vm.$parent; + continue + } else if (currentRecursiveSequence > 0) { + tree[tree.length - 1] = [last, currentRecursiveSequence]; + currentRecursiveSequence = 0; + } + } + tree.push(vm); + vm = vm.$parent; + } + return '\n\nfound in\n\n' + tree + .map(function (vm, i) { return ("" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm) + ? ((formatComponentName(vm[0])) + "... (" + (vm[1]) + " recursive calls)") + : formatComponentName(vm))); }) + .join('\n') + } else { + return ("\n\n(found in " + (formatComponentName(vm)) + ")") + } + }; +} + +function handleError (err, vm, info) { + if (config.errorHandler) { + config.errorHandler.call(null, err, vm, info); + } else { + { + warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm); + } + /* istanbul ignore else */ + if (inBrowser && typeof console !== 'undefined') { + console.error(err); + } else { + throw err + } + } +} + +/* */ +/* globals MutationObserver */ + +// can we use __proto__? +var hasProto = '__proto__' in {}; + +// Browser environment sniffing +var inBrowser = typeof window !== 'undefined'; +var UA = inBrowser && window.navigator.userAgent.toLowerCase(); +var isIE = UA && /msie|trident/.test(UA); +var isIE9 = UA && UA.indexOf('msie 9.0') > 0; +var isEdge = UA && UA.indexOf('edge/') > 0; +var isAndroid = UA && UA.indexOf('android') > 0; +var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA); +var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge; + +var supportsPassive = false; +if (inBrowser) { + try { + var opts = {}; + Object.defineProperty(opts, 'passive', ({ + get: function get () { + /* istanbul ignore next */ + supportsPassive = true; + } + } )); // https://github.com/facebook/flow/issues/285 + window.addEventListener('test-passive', null, opts); + } catch (e) {} +} + +// this needs to be lazy-evaled because vue may be required before +// vue-server-renderer can set VUE_ENV +var _isServer; +var isServerRendering = function () { + if (_isServer === undefined) { + /* istanbul ignore if */ + if (!inBrowser && typeof global !== 'undefined') { + // detect presence of vue-server-renderer and avoid + // Webpack shimming the process + _isServer = global['process'].env.VUE_ENV === 'server'; + } else { + _isServer = false; + } + } + return _isServer +}; + +// detect devtools +var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__; + +/* istanbul ignore next */ +function isNative (Ctor) { + return typeof Ctor === 'function' && /native code/.test(Ctor.toString()) +} + +var hasSymbol = + typeof Symbol !== 'undefined' && isNative(Symbol) && + typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys); + +/** + * Defer a task to execute it asynchronously. + */ +var nextTick = (function () { + var callbacks = []; + var pending = false; + var timerFunc; + + function nextTickHandler () { + pending = false; + var copies = callbacks.slice(0); + callbacks.length = 0; + for (var i = 0; i < copies.length; i++) { + copies[i](); + } + } + + // the nextTick behavior leverages the microtask queue, which can be accessed + // via either native Promise.then or MutationObserver. + // MutationObserver has wider support, however it is seriously bugged in + // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It + // completely stops working after triggering a few times... so, if native + // Promise is available, we will use it: + /* istanbul ignore if */ + if (typeof Promise !== 'undefined' && isNative(Promise)) { + var p = Promise.resolve(); + var logError = function (err) { console.error(err); }; + timerFunc = function () { + p.then(nextTickHandler).catch(logError); + // in problematic UIWebViews, Promise.then doesn't completely break, but + // it can get stuck in a weird state where callbacks are pushed into the + // microtask queue but the queue isn't being flushed, until the browser + // needs to do some other work, e.g. handle a timer. Therefore we can + // "force" the microtask queue to be flushed by adding an empty timer. + if (isIOS) { setTimeout(noop); } + }; + } else if (typeof MutationObserver !== 'undefined' && ( + isNative(MutationObserver) || + // PhantomJS and iOS 7.x + MutationObserver.toString() === '[object MutationObserverConstructor]' + )) { + // use MutationObserver where native Promise is not available, + // e.g. PhantomJS IE11, iOS7, Android 4.4 + var counter = 1; + var observer = new MutationObserver(nextTickHandler); + var textNode = document.createTextNode(String(counter)); + observer.observe(textNode, { + characterData: true + }); + timerFunc = function () { + counter = (counter + 1) % 2; + textNode.data = String(counter); + }; + } else { + // fallback to setTimeout + /* istanbul ignore next */ + timerFunc = function () { + setTimeout(nextTickHandler, 0); + }; + } + + return function queueNextTick (cb, ctx) { + var _resolve; + callbacks.push(function () { + if (cb) { + try { + cb.call(ctx); + } catch (e) { + handleError(e, ctx, 'nextTick'); + } + } else if (_resolve) { + _resolve(ctx); + } + }); + if (!pending) { + pending = true; + timerFunc(); + } + if (!cb && typeof Promise !== 'undefined') { + return new Promise(function (resolve, reject) { + _resolve = resolve; + }) + } + } +})(); + +var _Set; +/* istanbul ignore if */ +if (typeof Set !== 'undefined' && isNative(Set)) { + // use native Set when available. + _Set = Set; +} else { + // a non-standard Set polyfill that only works with primitive keys. + _Set = (function () { + function Set () { + this.set = Object.create(null); + } + Set.prototype.has = function has (key) { + return this.set[key] === true + }; + Set.prototype.add = function add (key) { + this.set[key] = true; + }; + Set.prototype.clear = function clear () { + this.set = Object.create(null); + }; + + return Set; + }()); +} + +/* */ + + +var uid = 0; + +/** + * A dep is an observable that can have multiple + * directives subscribing to it. + */ +var Dep = function Dep () { + this.id = uid++; + this.subs = []; +}; + +Dep.prototype.addSub = function addSub (sub) { + this.subs.push(sub); +}; + +Dep.prototype.removeSub = function removeSub (sub) { + remove(this.subs, sub); +}; + +Dep.prototype.depend = function depend () { + if (Dep.target) { + Dep.target.addDep(this); + } +}; + +Dep.prototype.notify = function notify () { + // stabilize the subscriber list first + var subs = this.subs.slice(); + for (var i = 0, l = subs.length; i < l; i++) { + subs[i].update(); + } +}; + +// the current target watcher being evaluated. +// this is globally unique because there could be only one +// watcher being evaluated at any time. +Dep.target = null; +var targetStack = []; + +function pushTarget (_target) { + if (Dep.target) { targetStack.push(Dep.target); } + Dep.target = _target; +} + +function popTarget () { + Dep.target = targetStack.pop(); +} + +/* + * not type checking this file because flow doesn't play well with + * dynamically accessing methods on Array prototype + */ + +var arrayProto = Array.prototype; +var arrayMethods = Object.create(arrayProto);[ + 'push', + 'pop', + 'shift', + 'unshift', + 'splice', + 'sort', + 'reverse' +] +.forEach(function (method) { + // cache original method + var original = arrayProto[method]; + def(arrayMethods, method, function mutator () { + var arguments$1 = arguments; + + // avoid leaking arguments: + // http://jsperf.com/closure-with-arguments + var i = arguments.length; + var args = new Array(i); + while (i--) { + args[i] = arguments$1[i]; + } + var result = original.apply(this, args); + var ob = this.__ob__; + var inserted; + switch (method) { + case 'push': + inserted = args; + break + case 'unshift': + inserted = args; + break + case 'splice': + inserted = args.slice(2); + break + } + if (inserted) { ob.observeArray(inserted); } + // notify change + ob.dep.notify(); + return result + }); +}); + +/* */ + +var arrayKeys = Object.getOwnPropertyNames(arrayMethods); + +/** + * By default, when a reactive property is set, the new value is + * also converted to become reactive. However when passing down props, + * we don't want to force conversion because the value may be a nested value + * under a frozen data structure. Converting it would defeat the optimization. + */ +var observerState = { + shouldConvert: true, + isSettingProps: false +}; + +/** + * Observer class that are attached to each observed + * object. Once attached, the observer converts target + * object's property keys into getter/setters that + * collect dependencies and dispatches updates. + */ +var Observer = function Observer (value) { + this.value = value; + this.dep = new Dep(); + this.vmCount = 0; + def(value, '__ob__', this); + if (Array.isArray(value)) { + var augment = hasProto + ? protoAugment + : copyAugment; + augment(value, arrayMethods, arrayKeys); + this.observeArray(value); + } else { + this.walk(value); + } +}; + +/** + * Walk through each property and convert them into + * getter/setters. This method should only be called when + * value type is Object. + */ +Observer.prototype.walk = function walk (obj) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + defineReactive$$1(obj, keys[i], obj[keys[i]]); + } +}; + +/** + * Observe a list of Array items. + */ +Observer.prototype.observeArray = function observeArray (items) { + for (var i = 0, l = items.length; i < l; i++) { + observe(items[i]); + } +}; + +// helpers + +/** + * Augment an target Object or Array by intercepting + * the prototype chain using __proto__ + */ +function protoAugment (target, src) { + /* eslint-disable no-proto */ + target.__proto__ = src; + /* eslint-enable no-proto */ +} + +/** + * Augment an target Object or Array by defining + * hidden properties. + */ +/* istanbul ignore next */ +function copyAugment (target, src, keys) { + for (var i = 0, l = keys.length; i < l; i++) { + var key = keys[i]; + def(target, key, src[key]); + } +} + +/** + * Attempt to create an observer instance for a value, + * returns the new observer if successfully observed, + * or the existing observer if the value already has one. + */ +function observe (value, asRootData) { + if (!isObject(value)) { + return + } + var ob; + if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) { + ob = value.__ob__; + } else if ( + observerState.shouldConvert && + !isServerRendering() && + (Array.isArray(value) || isPlainObject(value)) && + Object.isExtensible(value) && + !value._isVue + ) { + ob = new Observer(value); + } + if (asRootData && ob) { + ob.vmCount++; + } + return ob +} + +/** + * Define a reactive property on an Object. + */ +function defineReactive$$1 ( + obj, + key, + val, + customSetter +) { + var dep = new Dep(); + + var property = Object.getOwnPropertyDescriptor(obj, key); + if (property && property.configurable === false) { + return + } + + // cater for pre-defined getter/setters + var getter = property && property.get; + var setter = property && property.set; + + var childOb = observe(val); + Object.defineProperty(obj, key, { + enumerable: true, + configurable: true, + get: function reactiveGetter () { + var value = getter ? getter.call(obj) : val; + if (Dep.target) { + dep.depend(); + if (childOb) { + childOb.dep.depend(); + } + if (Array.isArray(value)) { + dependArray(value); + } + } + return value + }, + set: function reactiveSetter (newVal) { + var value = getter ? getter.call(obj) : val; + /* eslint-disable no-self-compare */ + if (newVal === value || (newVal !== newVal && value !== value)) { + return + } + /* eslint-enable no-self-compare */ + if ("development" !== 'production' && customSetter) { + customSetter(); + } + if (setter) { + setter.call(obj, newVal); + } else { + val = newVal; + } + childOb = observe(newVal); + dep.notify(); + } + }); +} + +/** + * Set a property on an object. Adds the new property and + * triggers change notification if the property doesn't + * already exist. + */ +function set (target, key, val) { + if (Array.isArray(target) && typeof key === 'number') { + target.length = Math.max(target.length, key); + target.splice(key, 1, val); + return val + } + if (hasOwn(target, key)) { + target[key] = val; + return val + } + var ob = (target ).__ob__; + if (target._isVue || (ob && ob.vmCount)) { + "development" !== 'production' && warn( + 'Avoid adding reactive properties to a Vue instance or its root $data ' + + 'at runtime - declare it upfront in the data option.' + ); + return val + } + if (!ob) { + target[key] = val; + return val + } + defineReactive$$1(ob.value, key, val); + ob.dep.notify(); + return val +} + +/** + * Delete a property and trigger change if necessary. + */ +function del (target, key) { + if (Array.isArray(target) && typeof key === 'number') { + target.splice(key, 1); + return + } + var ob = (target ).__ob__; + if (target._isVue || (ob && ob.vmCount)) { + "development" !== 'production' && warn( + 'Avoid deleting properties on a Vue instance or its root $data ' + + '- just set it to null.' + ); + return + } + if (!hasOwn(target, key)) { + return + } + delete target[key]; + if (!ob) { + return + } + ob.dep.notify(); +} + +/** + * Collect dependencies on array elements when the array is touched, since + * we cannot intercept array element access like property getters. + */ +function dependArray (value) { + for (var e = (void 0), i = 0, l = value.length; i < l; i++) { + e = value[i]; + e && e.__ob__ && e.__ob__.dep.depend(); + if (Array.isArray(e)) { + dependArray(e); + } + } +} + +/* */ + +/** + * Option overwriting strategies are functions that handle + * how to merge a parent option value and a child option + * value into the final value. + */ +var strats = config.optionMergeStrategies; + +/** + * Options with restrictions + */ +{ + strats.el = strats.propsData = function (parent, child, vm, key) { + if (!vm) { + warn( + "option \"" + key + "\" can only be used during instance " + + 'creation with the `new` keyword.' + ); + } + return defaultStrat(parent, child) + }; +} + +/** + * Helper that recursively merges two data objects together. + */ +function mergeData (to, from) { + if (!from) { return to } + var key, toVal, fromVal; + var keys = Object.keys(from); + for (var i = 0; i < keys.length; i++) { + key = keys[i]; + toVal = to[key]; + fromVal = from[key]; + if (!hasOwn(to, key)) { + set(to, key, fromVal); + } else if (isPlainObject(toVal) && isPlainObject(fromVal)) { + mergeData(toVal, fromVal); + } + } + return to +} + +/** + * Data + */ +strats.data = function ( + parentVal, + childVal, + vm +) { + if (!vm) { + // in a Vue.extend merge, both should be functions + if (!childVal) { + return parentVal + } + if (typeof childVal !== 'function') { + "development" !== 'production' && warn( + 'The "data" option should be a function ' + + 'that returns a per-instance value in component ' + + 'definitions.', + vm + ); + return parentVal + } + if (!parentVal) { + return childVal + } + // when parentVal & childVal are both present, + // we need to return a function that returns the + // merged result of both functions... no need to + // check if parentVal is a function here because + // it has to be a function to pass previous merges. + return function mergedDataFn () { + return mergeData( + childVal.call(this), + parentVal.call(this) + ) + } + } else if (parentVal || childVal) { + return function mergedInstanceDataFn () { + // instance merge + var instanceData = typeof childVal === 'function' + ? childVal.call(vm) + : childVal; + var defaultData = typeof parentVal === 'function' + ? parentVal.call(vm) + : undefined; + if (instanceData) { + return mergeData(instanceData, defaultData) + } else { + return defaultData + } + } + } +}; + +/** + * Hooks and props are merged as arrays. + */ +function mergeHook ( + parentVal, + childVal +) { + return childVal + ? parentVal + ? parentVal.concat(childVal) + : Array.isArray(childVal) + ? childVal + : [childVal] + : parentVal +} + +LIFECYCLE_HOOKS.forEach(function (hook) { + strats[hook] = mergeHook; +}); + +/** + * Assets + * + * When a vm is present (instance creation), we need to do + * a three-way merge between constructor options, instance + * options and parent options. + */ +function mergeAssets (parentVal, childVal) { + var res = Object.create(parentVal || null); + return childVal + ? extend(res, childVal) + : res +} + +ASSET_TYPES.forEach(function (type) { + strats[type + 's'] = mergeAssets; +}); + +/** + * Watchers. + * + * Watchers hashes should not overwrite one + * another, so we merge them as arrays. + */ +strats.watch = function (parentVal, childVal) { + /* istanbul ignore if */ + if (!childVal) { return Object.create(parentVal || null) } + if (!parentVal) { return childVal } + var ret = {}; + extend(ret, parentVal); + for (var key in childVal) { + var parent = ret[key]; + var child = childVal[key]; + if (parent && !Array.isArray(parent)) { + parent = [parent]; + } + ret[key] = parent + ? parent.concat(child) + : [child]; + } + return ret +}; + +/** + * Other object hashes. + */ +strats.props = +strats.methods = +strats.computed = function (parentVal, childVal) { + if (!childVal) { return Object.create(parentVal || null) } + if (!parentVal) { return childVal } + var ret = Object.create(null); + extend(ret, parentVal); + extend(ret, childVal); + return ret +}; + +/** + * Default strategy. + */ +var defaultStrat = function (parentVal, childVal) { + return childVal === undefined + ? parentVal + : childVal +}; + +/** + * Validate component names + */ +function checkComponents (options) { + for (var key in options.components) { + var lower = key.toLowerCase(); + if (isBuiltInTag(lower) || config.isReservedTag(lower)) { + warn( + 'Do not use built-in or reserved HTML elements as component ' + + 'id: ' + key + ); + } + } +} + +/** + * Ensure all props option syntax are normalized into the + * Object-based format. + */ +function normalizeProps (options) { + var props = options.props; + if (!props) { return } + var res = {}; + var i, val, name; + if (Array.isArray(props)) { + i = props.length; + while (i--) { + val = props[i]; + if (typeof val === 'string') { + name = camelize(val); + res[name] = { type: null }; + } else { + warn('props must be strings when using array syntax.'); + } + } + } else if (isPlainObject(props)) { + for (var key in props) { + val = props[key]; + name = camelize(key); + res[name] = isPlainObject(val) + ? val + : { type: val }; + } + } + options.props = res; +} + +/** + * Normalize raw function directives into object format. + */ +function normalizeDirectives (options) { + var dirs = options.directives; + if (dirs) { + for (var key in dirs) { + var def = dirs[key]; + if (typeof def === 'function') { + dirs[key] = { bind: def, update: def }; + } + } + } +} + +/** + * Merge two option objects into a new one. + * Core utility used in both instantiation and inheritance. + */ +function mergeOptions ( + parent, + child, + vm +) { + { + checkComponents(child); + } + + if (typeof child === 'function') { + child = child.options; + } + + normalizeProps(child); + normalizeDirectives(child); + var extendsFrom = child.extends; + if (extendsFrom) { + parent = mergeOptions(parent, extendsFrom, vm); + } + if (child.mixins) { + for (var i = 0, l = child.mixins.length; i < l; i++) { + parent = mergeOptions(parent, child.mixins[i], vm); + } + } + var options = {}; + var key; + for (key in parent) { + mergeField(key); + } + for (key in child) { + if (!hasOwn(parent, key)) { + mergeField(key); + } + } + function mergeField (key) { + var strat = strats[key] || defaultStrat; + options[key] = strat(parent[key], child[key], vm, key); + } + return options +} + +/** + * Resolve an asset. + * This function is used because child instances need access + * to assets defined in its ancestor chain. + */ +function resolveAsset ( + options, + type, + id, + warnMissing +) { + /* istanbul ignore if */ + if (typeof id !== 'string') { + return + } + var assets = options[type]; + // check local registration variations first + if (hasOwn(assets, id)) { return assets[id] } + var camelizedId = camelize(id); + if (hasOwn(assets, camelizedId)) { return assets[camelizedId] } + var PascalCaseId = capitalize(camelizedId); + if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] } + // fallback to prototype chain + var res = assets[id] || assets[camelizedId] || assets[PascalCaseId]; + if ("development" !== 'production' && warnMissing && !res) { + warn( + 'Failed to resolve ' + type.slice(0, -1) + ': ' + id, + options + ); + } + return res +} + +/* */ + +function validateProp ( + key, + propOptions, + propsData, + vm +) { + var prop = propOptions[key]; + var absent = !hasOwn(propsData, key); + var value = propsData[key]; + // handle boolean props + if (isType(Boolean, prop.type)) { + if (absent && !hasOwn(prop, 'default')) { + value = false; + } else if (!isType(String, prop.type) && (value === '' || value === hyphenate(key))) { + value = true; + } + } + // check default value + if (value === undefined) { + value = getPropDefaultValue(vm, prop, key); + // since the default value is a fresh copy, + // make sure to observe it. + var prevShouldConvert = observerState.shouldConvert; + observerState.shouldConvert = true; + observe(value); + observerState.shouldConvert = prevShouldConvert; + } + { + assertProp(prop, key, value, vm, absent); + } + return value +} + +/** + * Get the default value of a prop. + */ +function getPropDefaultValue (vm, prop, key) { + // no default, return undefined + if (!hasOwn(prop, 'default')) { + return undefined + } + var def = prop.default; + // warn against non-factory defaults for Object & Array + if ("development" !== 'production' && isObject(def)) { + warn( + 'Invalid default value for prop "' + key + '": ' + + 'Props with type Object/Array must use a factory function ' + + 'to return the default value.', + vm + ); + } + // the raw prop value was also undefined from previous render, + // return previous default value to avoid unnecessary watcher trigger + if (vm && vm.$options.propsData && + vm.$options.propsData[key] === undefined && + vm._props[key] !== undefined) { + return vm._props[key] + } + // call factory function for non-Function types + // a value is Function if its prototype is function even across different execution context + return typeof def === 'function' && getType(prop.type) !== 'Function' + ? def.call(vm) + : def +} + +/** + * Assert whether a prop is valid. + */ +function assertProp ( + prop, + name, + value, + vm, + absent +) { + if (prop.required && absent) { + warn( + 'Missing required prop: "' + name + '"', + vm + ); + return + } + if (value == null && !prop.required) { + return + } + var type = prop.type; + var valid = !type || type === true; + var expectedTypes = []; + if (type) { + if (!Array.isArray(type)) { + type = [type]; + } + for (var i = 0; i < type.length && !valid; i++) { + var assertedType = assertType(value, type[i]); + expectedTypes.push(assertedType.expectedType || ''); + valid = assertedType.valid; + } + } + if (!valid) { + warn( + 'Invalid prop: type check failed for prop "' + name + '".' + + ' Expected ' + expectedTypes.map(capitalize).join(', ') + + ', got ' + Object.prototype.toString.call(value).slice(8, -1) + '.', + vm + ); + return + } + var validator = prop.validator; + if (validator) { + if (!validator(value)) { + warn( + 'Invalid prop: custom validator check failed for prop "' + name + '".', + vm + ); + } + } +} + +var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/; + +function assertType (value, type) { + var valid; + var expectedType = getType(type); + if (simpleCheckRE.test(expectedType)) { + valid = typeof value === expectedType.toLowerCase(); + } else if (expectedType === 'Object') { + valid = isPlainObject(value); + } else if (expectedType === 'Array') { + valid = Array.isArray(value); + } else { + valid = value instanceof type; + } + return { + valid: valid, + expectedType: expectedType + } +} + +/** + * Use function string name to check built-in types, + * because a simple equality check will fail when running + * across different vms / iframes. + */ +function getType (fn) { + var match = fn && fn.toString().match(/^\s*function (\w+)/); + return match ? match[1] : '' +} + +function isType (type, fn) { + if (!Array.isArray(fn)) { + return getType(fn) === getType(type) + } + for (var i = 0, len = fn.length; i < len; i++) { + if (getType(fn[i]) === getType(type)) { + return true + } + } + /* istanbul ignore next */ + return false +} + +var mark; +var measure; + +{ + var perf = inBrowser && window.performance; + /* istanbul ignore if */ + if ( + perf && + perf.mark && + perf.measure && + perf.clearMarks && + perf.clearMeasures + ) { + mark = function (tag) { return perf.mark(tag); }; + measure = function (name, startTag, endTag) { + perf.measure(name, startTag, endTag); + perf.clearMarks(startTag); + perf.clearMarks(endTag); + perf.clearMeasures(name); + }; + } +} + +/* not type checking this file because flow doesn't play well with Proxy */ + +var initProxy; + +{ + var allowedGlobals = makeMap( + 'Infinity,undefined,NaN,isFinite,isNaN,' + + 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' + + 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' + + 'require' // for Webpack/Browserify + ); + + var warnNonPresent = function (target, key) { + warn( + "Property or method \"" + key + "\" is not defined on the instance but " + + "referenced during render. Make sure to declare reactive data " + + "properties in the data option.", + target + ); + }; + + var hasProxy = + typeof Proxy !== 'undefined' && + Proxy.toString().match(/native code/); + + if (hasProxy) { + var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta'); + config.keyCodes = new Proxy(config.keyCodes, { + set: function set (target, key, value) { + if (isBuiltInModifier(key)) { + warn(("Avoid overwriting built-in modifier in config.keyCodes: ." + key)); + return false + } else { + target[key] = value; + return true + } + } + }); + } + + var hasHandler = { + has: function has (target, key) { + var has = key in target; + var isAllowed = allowedGlobals(key) || key.charAt(0) === '_'; + if (!has && !isAllowed) { + warnNonPresent(target, key); + } + return has || !isAllowed + } + }; + + var getHandler = { + get: function get (target, key) { + if (typeof key === 'string' && !(key in target)) { + warnNonPresent(target, key); + } + return target[key] + } + }; + + initProxy = function initProxy (vm) { + if (hasProxy) { + // determine which proxy handler to use + var options = vm.$options; + var handlers = options.render && options.render._withStripped + ? getHandler + : hasHandler; + vm._renderProxy = new Proxy(vm, handlers); + } else { + vm._renderProxy = vm; + } + }; +} + +/* */ + +var VNode = function VNode ( + tag, + data, + children, + text, + elm, + context, + componentOptions +) { + this.tag = tag; + this.data = data; + this.children = children; + this.text = text; + this.elm = elm; + this.ns = undefined; + this.context = context; + this.functionalContext = undefined; + this.key = data && data.key; + this.componentOptions = componentOptions; + this.componentInstance = undefined; + this.parent = undefined; + this.raw = false; + this.isStatic = false; + this.isRootInsert = true; + this.isComment = false; + this.isCloned = false; + this.isOnce = false; +}; + +var prototypeAccessors = { child: {} }; + +// DEPRECATED: alias for componentInstance for backwards compat. +/* istanbul ignore next */ +prototypeAccessors.child.get = function () { + return this.componentInstance +}; + +Object.defineProperties( VNode.prototype, prototypeAccessors ); + +var createEmptyVNode = function () { + var node = new VNode(); + node.text = ''; + node.isComment = true; + return node +}; + +function createTextVNode (val) { + return new VNode(undefined, undefined, undefined, String(val)) +} + +// optimized shallow clone +// used for static nodes and slot nodes because they may be reused across +// multiple renders, cloning them avoids errors when DOM manipulations rely +// on their elm reference. +function cloneVNode (vnode) { + var cloned = new VNode( + vnode.tag, + vnode.data, + vnode.children, + vnode.text, + vnode.elm, + vnode.context, + vnode.componentOptions + ); + cloned.ns = vnode.ns; + cloned.isStatic = vnode.isStatic; + cloned.key = vnode.key; + cloned.isCloned = true; + return cloned +} + +function cloneVNodes (vnodes) { + var len = vnodes.length; + var res = new Array(len); + for (var i = 0; i < len; i++) { + res[i] = cloneVNode(vnodes[i]); + } + return res +} + +/* */ + +var normalizeEvent = cached(function (name) { + var passive = name.charAt(0) === '&'; + name = passive ? name.slice(1) : name; + var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first + name = once$$1 ? name.slice(1) : name; + var capture = name.charAt(0) === '!'; + name = capture ? name.slice(1) : name; + return { + name: name, + once: once$$1, + capture: capture, + passive: passive + } +}); + +function createFnInvoker (fns) { + function invoker () { + var arguments$1 = arguments; + + var fns = invoker.fns; + if (Array.isArray(fns)) { + for (var i = 0; i < fns.length; i++) { + fns[i].apply(null, arguments$1); + } + } else { + // return handler return value for single handlers + return fns.apply(null, arguments) + } + } + invoker.fns = fns; + return invoker +} + +function updateListeners ( + on, + oldOn, + add, + remove$$1, + vm +) { + var name, cur, old, event; + for (name in on) { + cur = on[name]; + old = oldOn[name]; + event = normalizeEvent(name); + if (isUndef(cur)) { + "development" !== 'production' && warn( + "Invalid handler for event \"" + (event.name) + "\": got " + String(cur), + vm + ); + } else if (isUndef(old)) { + if (isUndef(cur.fns)) { + cur = on[name] = createFnInvoker(cur); + } + add(event.name, cur, event.once, event.capture, event.passive); + } else if (cur !== old) { + old.fns = cur; + on[name] = old; + } + } + for (name in oldOn) { + if (isUndef(on[name])) { + event = normalizeEvent(name); + remove$$1(event.name, oldOn[name], event.capture); + } + } +} + +/* */ + +function mergeVNodeHook (def, hookKey, hook) { + var invoker; + var oldHook = def[hookKey]; + + function wrappedHook () { + hook.apply(this, arguments); + // important: remove merged hook to ensure it's called only once + // and prevent memory leak + remove(invoker.fns, wrappedHook); + } + + if (isUndef(oldHook)) { + // no existing hook + invoker = createFnInvoker([wrappedHook]); + } else { + /* istanbul ignore if */ + if (isDef(oldHook.fns) && isTrue(oldHook.merged)) { + // already a merged invoker + invoker = oldHook; + invoker.fns.push(wrappedHook); + } else { + // existing plain hook + invoker = createFnInvoker([oldHook, wrappedHook]); + } + } + + invoker.merged = true; + def[hookKey] = invoker; +} + +/* */ + +function extractPropsFromVNodeData ( + data, + Ctor, + tag +) { + // we are only extracting raw values here. + // validation and default values are handled in the child + // component itself. + var propOptions = Ctor.options.props; + if (isUndef(propOptions)) { + return + } + var res = {}; + var attrs = data.attrs; + var props = data.props; + if (isDef(attrs) || isDef(props)) { + for (var key in propOptions) { + var altKey = hyphenate(key); + { + var keyInLowerCase = key.toLowerCase(); + if ( + key !== keyInLowerCase && + attrs && hasOwn(attrs, keyInLowerCase) + ) { + tip( + "Prop \"" + keyInLowerCase + "\" is passed to component " + + (formatComponentName(tag || Ctor)) + ", but the declared prop name is" + + " \"" + key + "\". " + + "Note that HTML attributes are case-insensitive and camelCased " + + "props need to use their kebab-case equivalents when using in-DOM " + + "templates. You should probably use \"" + altKey + "\" instead of \"" + key + "\"." + ); + } + } + checkProp(res, props, key, altKey, true) || + checkProp(res, attrs, key, altKey, false); + } + } + return res +} + +function checkProp ( + res, + hash, + key, + altKey, + preserve +) { + if (isDef(hash)) { + if (hasOwn(hash, key)) { + res[key] = hash[key]; + if (!preserve) { + delete hash[key]; + } + return true + } else if (hasOwn(hash, altKey)) { + res[key] = hash[altKey]; + if (!preserve) { + delete hash[altKey]; + } + return true + } + } + return false +} + +/* */ + +// The template compiler attempts to minimize the need for normalization by +// statically analyzing the template at compile time. +// +// For plain HTML markup, normalization can be completely skipped because the +// generated render function is guaranteed to return Array. There are +// two cases where extra normalization is needed: + +// 1. When the children contains components - because a functional component +// may return an Array instead of a single root. In this case, just a simple +// normalization is needed - if any child is an Array, we flatten the whole +// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep +// because functional components already normalize their own children. +function simpleNormalizeChildren (children) { + for (var i = 0; i < children.length; i++) { + if (Array.isArray(children[i])) { + return Array.prototype.concat.apply([], children) + } + } + return children +} + +// 2. When the children contains constructs that always generated nested Arrays, +// e.g.