From 458cb07292efc8f1ddbdffebce0226101513ad41 Mon Sep 17 00:00:00 2001 From: "B.E. Henriksen" Date: Sun, 15 Nov 2015 17:57:44 +0100 Subject: [PATCH] Adds React-Soundplayer through webpack:webpack. commit 04e6be14d89dfc1fa27271abca76fac273ed8a05 Author: B.E. Henriksen Date: Sun Nov 15 16:18:58 2015 +0100 Replaces soundcloud Blaze template with React-Soundplayer. commit 48c50ecaee0c8838f0333e06598b99fc5c8b1c5e Author: B.E. Henriksen Date: Fri Nov 13 18:01:51 2015 +0100 Moves dependency to component. I.e. modules/Soundplayer/webpack.packages.json. commit 1a085f47e02747f369a3752029e807e9092b5718 Author: B.E. Henriksen Date: Thu Nov 12 23:42:35 2015 +0100 Removes unused packages. commit 32a0cc9bb5a9c201e9ce3c144f8d7171c0870ee3 Author: B.E. Henriksen Date: Thu Nov 12 23:22:07 2015 +0100 Moves layout setup into init. Avoid errors in production. commit 340996541fc1f7207ee0764dff55a6b33a007d4e Author: B.E. Henriksen Date: Thu Nov 12 19:52:49 2015 +0100 Updates ISSUE. commit 01159f65c1e34dd4d212872fba307ef95b2f32b1 Author: B.E. Henriksen Date: Thu Nov 12 19:52:12 2015 +0100 Changes globals associated with routes to jiku(.again) namespace Not much but it's an improvement. commit 7ebe1d3c3414e5ae40fce969a47610ecfa60dd59 Author: B.E. Henriksen Date: Thu Nov 12 17:58:47 2015 +0100 Improves routing. NB! Non-working section entry (doesn't pan). commit 2fc842e050e86b7195614120401f6d52398c37aa Author: B.E. Henriksen Date: Thu Nov 12 15:17:13 2015 +0100 Updates ISSUE. commit 072643947003c4108902833002699dd876a37e0d Author: B.E. Henriksen Date: Thu Nov 12 15:13:03 2015 +0100 Fixes missing react-dom. npm WARN EPEERINVALID react-soundplayer@0.3.1 requires a peer of react-dom@^0.14.x but none was installed. commit 8a2a357e2548a92be40b153b073a2b681fdb083a Author: B.E. Henriksen Date: Thu Nov 12 14:43:52 2015 +0100 Updates ISSUE.md. Some git issues... commit d4ad0322c40d724c22965c0b6a9402944f7b9c23 Author: B.E. Henriksen Date: Thu Nov 12 12:19:05 2015 +0100 Bumps versions. commit 92e682d0df5df40d86c1f5fc701a29cda3352d31 Author: B.E. Henriksen Date: Thu Nov 12 12:18:45 2015 +0100 Removes CSSNext through Webpack. Using Meteor packages. commit ee9c20877aae587cea54c53cd3b002608bd0d382 Author: B.E. Henriksen Date: Thu Nov 12 12:18:16 2015 +0100 Removes unused extensions. commit 1f4377c1c9bb692134057ef8a46fb3fd6987352f Author: B.E. Henriksen Date: Thu Nov 12 12:17:21 2015 +0100 Bumps React-Soundplayer. 0.3.1 relies on React ^0.14.x and react-dom. commit bdd396f7e0a60440b90c5c417792bd145e792f6a Author: B.E. Henriksen Date: Wed Nov 11 12:02:39 2015 +0100 Fixes CSS conflict with React-Soundplayer. commit f7a728ce46ef336dcb59806e12eae23cf514e9f8 Author: B.E. Henriksen Date: Wed Nov 11 10:24:36 2015 +0100 Symlinks Soundplayer for seperate use and versioning. commit 58dc77dc6f177d686a74dc15bdc35f4a7333e122 Author: B.E. Henriksen Date: Wed Nov 11 10:23:54 2015 +0100 Adds untouched basscss config. commit 44f99adc8629ab52360ca2667b0f5e46a976841e Author: B.E. Henriksen Date: Wed Nov 11 10:22:22 2015 +0100 Adds kit:cssnext(-basscss). For (React) components. commit a3a45ad1e06dde9048f6655452f9a774e81166b7 Author: B.E. Henriksen Date: Tue Nov 10 21:39:14 2015 +0100 Refactors Modernizr into jiku:modernizr. # Conflicts: # .meteor/packages commit bf3f29f152dd4736d12c2d1dbd4c1908f6457da7 Author: B.E. Henriksen Date: Sun Nov 8 20:57:41 2015 +0100 Bumps versions. commit a4a41fa49e670d67410c8be970608ed58a655f7e Author: B.E. Henriksen Date: Sun Nov 8 20:22:10 2015 +0100 Bumps versions. commit e2a2df094eb3ee6806adad366de1ff3967a184e2 Author: B.E. Henriksen Date: Sun Nov 8 20:22:02 2015 +0100 Adds Webpacked React component to Blaze template. Also see FlowRouter routings, where reactComponent is provided. commit 05f9f6f791f650de5dc0f75dbc9eb02ec78ae8a4 Author: B.E. Henriksen Date: Sun Nov 8 20:19:32 2015 +0100 Removes unused routings for entry/client/routes.jsx. Avoids conflicts, etc. commit 91c5af5511f177082f56e36677e5f30757572d98 Author: B.E. Henriksen Date: Sun Nov 8 20:17:11 2015 +0100 Missing from last commit. Unsure why. commit 97e43704480170de6a8d282c16b5ed1aea494cd6 Author: B.E. Henriksen Date: Sun Nov 8 20:14:20 2015 +0100 Readds server entry. Seems it's needed? Maybe just for webpack:webpack, and not Webpack itself. I.e. got errors like While processing files with webpack:webpack ... MemoryFileSystem.js:86:10: Path doesn't exist '/memory/webpack/server.js' at MemoryFileSystem.readFileSync commit db216a6037b67f478aa2420232c3606cb426e640 Author: B.E. Henriksen Date: Sun Nov 8 17:31:35 2015 +0100 Removes unused assets, CSS. commit b9a052512d4ca13aa539760df2548d2dcc1c9736 Author: B.E. Henriksen Date: Sun Nov 8 17:26:57 2015 +0100 Removes server entry. commit 2a09e376f42f952bc615dad1ccdc4ac8c0aa6f2a Author: B.E. Henriksen Date: Sun Nov 8 16:43:29 2015 +0100 Initial commit. Based on /Volumes/Data/Dev/Studies/Meteor/webpack:webpack/simple/origin @ de7ebf3. Adds webpack:webpack to .meter/packages. Tracks /modules and /node_modules, to avoid them appearing in other branches. Ignore if they're used in master at some point. commit 68c4d6bf333c1c4fa14ee7528561b6724f204599 Author: B.E. Henriksen Date: Thu Nov 12 00:46:20 2015 +0100 Adds ISSUE.md. --- .meteor/packages | 10 +- .meteor/versions | 30 +++-- client/init.coffee | 44 ++++++- client/lib/basscss.next.css | 146 +++++++++++++++++++++++ client/sections/common/body.coffee | 10 +- client/sections/common/sections.coffee | 5 + client/sections/common/style/index.styl | 4 - client/sections/footer/style/social.css | 82 ++++++------- client/sections/player/soundcloud.coffee | 9 -- entry/client/entry.js | 1 + entry/client/meteor.startup.js | 4 + entry/client/routes.jsx | 44 +++++++ entry/client/webpack.conf.js | 16 +++ entry/server/entry.js | 0 entry/server/webpack.conf.js | 13 ++ entry/webpack.conf.js | 23 ++++ index.jade | 6 +- lib/router.coffee | 63 ---------- modules/Soundplayer/client | 1 + node_modules | 1 + webpack.packages.json | 18 +++ 21 files changed, 384 insertions(+), 146 deletions(-) create mode 100644 client/lib/basscss.next.css create mode 100644 client/sections/common/sections.coffee delete mode 100644 client/sections/player/soundcloud.coffee create mode 100644 entry/client/entry.js create mode 100644 entry/client/meteor.startup.js create mode 100644 entry/client/routes.jsx create mode 100644 entry/client/webpack.conf.js create mode 100644 entry/server/entry.js create mode 100644 entry/server/webpack.conf.js create mode 100644 entry/webpack.conf.js delete mode 100644 lib/router.coffee create mode 120000 modules/Soundplayer/client create mode 120000 node_modules create mode 100644 webpack.packages.json diff --git a/.meteor/packages b/.meteor/packages index c7f37c5..dea5a94 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -4,7 +4,6 @@ # 'meteor add' and 'meteor remove' will edit this file for you, # but you can also edit it by hand. -insecure fds:pixijs webapp raix:eventemitter @@ -20,18 +19,15 @@ jiku:visualizers standard-minifiers meteor-base mobile-experience -mongo blaze-html-templates session jquery tracker logging reload -random -ejson spacebars -check stolinski:stylus-multi +service-configuration kadira:flow-router kadira:blaze-layout jiku:env @@ -40,8 +36,10 @@ jiku:scroll meteorhacks:fast-render okgrow:analytics kadira:debug -jiku:player themeteorchef:bert mquandalle:jade react-template-helper +webpack:webpack jiku:modernizr +kit:cssnext +kit:cssnext-basscss diff --git a/.meteor/versions b/.meteor/versions index 22cab13..e4dd54a 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -16,7 +16,7 @@ check@1.1.0 chuangbo:cookie@1.1.0 chuangbo:marked@0.3.5_1 coffeescript@1.0.11 -cosmos:browserify@0.8.1 +cosmos:browserify@0.8.3 ddp@1.2.2 ddp-client@1.2.1 ddp-common@1.2.2 @@ -26,7 +26,7 @@ deps@1.0.9 diff-sequence@1.0.1 ecmascript@0.1.6 ecmascript-runtime@0.2.6 -ecwyne:mathjs@2.1.1 +ecwyne:mathjs@0.25.0 ejson@1.0.7 email@1.0.8 fastclick@1.0.7 @@ -42,12 +42,10 @@ http@1.1.1 id-map@1.0.4 infinitedg:gsap@1.16.0 infinitedg:tween@0.14.0 -insecure@1.0.4 jiku:datgui@0.0.1 jiku:env@0.0.1 jiku:interface@0.0.1 jiku:modernizr@3.2.0 -jiku:player@0.0.1 jiku:progress@0.0.1 jiku:scroll@0.0.1 jiku:three@0.0.1 @@ -56,7 +54,9 @@ jiku:visualizers@0.0.1 jquery@1.11.4 kadira:blaze-layout@2.2.0 kadira:debug@2.2.4 -kadira:flow-router@2.7.0 +kadira:flow-router@2.9.0 +kit:cssnext@1.0.2 +kit:cssnext-basscss@1.1.1 lalomartins:markd@0.1.1 launch-screen@1.0.4 livedata@1.0.15 @@ -66,8 +66,8 @@ meteor@1.1.10 meteor-base@1.0.1 meteorhacks:fast-render@2.10.0 meteorhacks:inject-data@1.4.1 -meteorhacks:kadira@2.24.1 -meteorhacks:meteorx@1.4.1 +meteorhacks:kadira@2.23.4 +meteorhacks:meteorx@1.3.1 meteorhacks:picker@1.0.3 minifiers@1.1.7 minimongo@1.0.10 @@ -80,22 +80,25 @@ mquandalle:jade@0.4.5 mquandalle:jade-compiler@0.4.5 npm-mongo@1.4.39_1 observe-sequence@1.0.7 -okgrow:analytics@0.4.3 +okgrow:analytics@1.0.4 ordered-dict@1.0.4 +package-version-parser@3.0.4 promise@0.5.1 qazuor:animated-border-menus@1.0.2 raix:eventemitter@0.1.3 random@1.0.5 rate-limit@1.0.0 -react-runtime@0.13.3_7 -react-runtime-dev@0.13.3_7 -react-runtime-prod@0.13.3_6 -react-template-helper@0.1.6 +react-runtime@0.14.1_1 +react-runtime-dev@0.14.1 +react-runtime-prod@0.14.1 +react-template-helper@0.2.3 reactive-dict@1.1.3 reactive-var@1.0.6 reload@1.1.4 retry@1.0.4 routepolicy@1.0.6 +sanjo:meteor-files-helpers@1.2.0_1 +sanjo:meteor-version@1.0.0 service-configuration@1.0.5 session@1.1.1 spacebars@1.0.7 @@ -112,3 +115,6 @@ underscorestring:underscore.string@3.2.2 url@1.0.5 webapp@1.2.3 webapp-hashing@1.0.5 +webpack:npmworkaround@0.1.0 +webpack:reload@0.2.0 +webpack:webpack@0.3.1 diff --git a/client/init.coffee b/client/init.coffee index 2b99b20..6d68ce3 100644 --- a/client/init.coffee +++ b/client/init.coffee @@ -1,14 +1,52 @@ Meteor.startup -> BlazeLayout.setRoot '#container' + + @jiku = @jiku || {} + @jiku.again = @jiku.again || {} + + @jiku.again.layouts = [ + name: 'normal' + templates: [ + { name: 'pane' } + { name: 'particles' } + { + name: 'sections' + sections: [ + 'header' + 'about' + 'player' + 'contribute' + 'footer' + ] + } + { name: 'menu' } + ] + ] + + @jiku.again.sections = [ + 'header' + 'about' + 'player' + 'contribute' + 'footer' + ] + if (Meteor.settings.env is 'dev') then @jiku.again.sections.splice(2, 0, 'crappycrap') + + @jiku.again.externalDirect = false + @jiku.again.lastPath = '' + Session.setDefault 'state', 'init' + Session.set 'goTo', false + @SiteEvent = new EventEmitter - @SoundEvent = new EventEmitter + if Meteor.settings.public.debugAnalytics then analytics.debug() else analytics.debug(false) analytics.identify '123', name: 'Anonymous' + marked.setOptions breaks: true onLayout = (data) -> - layout = _.find layouts, (l) -> + layout = _.find jiku.again.layouts, (l) -> l.name is 'normal' template = _.find layout.templates, (t) -> @@ -20,7 +58,7 @@ Meteor.startup -> Session.set 'state', 'normal' _.delay -> SiteEvent.emit 'activate', {}, 100 - if externalDirect + if jiku.again.externalDirect _.delay -> SiteEvent.emit 'activateExtra', {}, 100 _.each layout.templates, (t) -> t.state = '' SiteEvent.on 'layout', onLayout diff --git a/client/lib/basscss.next.css b/client/lib/basscss.next.css new file mode 100644 index 0000000..c5f2297 --- /dev/null +++ b/client/lib/basscss.next.css @@ -0,0 +1,146 @@ +/* + * Bassplate + * Boilerplate for Basscss with cssnext + * http://github.com/basscss/bassplate + * + * Remove or comment out unneeded modules and import your own files. + * Adjust global media queries and custom properties below. + * + */ + + +/* Basscss Modules */ +@import 'basscss-base-reset'; +@import 'basscss-base-forms'; +@import 'basscss-base-tables'; +@import 'basscss-base-typography'; +@import 'basscss-color-base'; +@import 'basscss-color-forms'; +@import 'basscss-color-tables'; +@import 'basscss-btn'; +@import 'basscss-btn-primary'; +@import 'basscss-btn-outline'; +@import 'basscss-type-scale'; +@import 'basscss-utility-typography'; +@import 'basscss-utility-layout'; +@import 'basscss-align'; +@import 'basscss-white-space'; +@import 'basscss-positions'; +@import 'basscss-responsive-states'; +@import 'basscss-grid'; +@import 'flex-object'; +@import 'basscss-borders'; +@import 'basscss-colors'; +@import 'basscss-background-colors'; + + +/* Optional Modules (not included in Basscss by default) */ +/* +@import 'basscss-btn-sizes'; +@import 'basscss-color-forms-dark'; +@import 'basscss-input-range'; +@import 'basscss-progress'; +@import 'basscss-background-images'; +@import 'basscss-media-object'; +@import 'basscss-responsive-white-space'; +@import 'basscss-utility-headings'; +@import 'basscss-ui-utility-groups'; +@import 'basscss-table-object'; +@import 'basscss-highlight-dark'; +@import 'basscss-highlight'; +*/ + + +/* Example custom file import */ +/* +@import './color/borders'; +*/ + + +/* Default custom properties */ +@import 'basscss-defaults'; + + +/* Custom media queries */ +/* +@custom-media --breakpoint-sm (min-width: 40em); +@custom-media --breakpoint-md (min-width: 52em); +@custom-media --breakpoint-lg (min-width: 64em); +*/ + + +/* Custom properties */ +/* +:root { + + --font-family: 'Helvetica Neue', Helvetica, sans-serif; + --line-height: 1.5; + --heading-font-family: var(--font-family); + --heading-font-weight: bold; + --heading-line-height: 1.25; + --monospace-font-family: 'Source Code Pro', Consolas, monospace; + + --h1: 2rem; + --h2: 1.5rem; + --h3: 1.25rem; + --h4: 1rem; + --h5: .875rem; + --h6: .75rem; + + --bold-font-weight: bold; + + --space-1: .5rem; + --space-2: 1rem; + --space-3: 2rem; + --space-4: 4rem; + + --form-field-font-size: 1rem; + --form-field-height: 2.25rem; + --form-field-padding-y: .5rem; + --form-field-padding-x: .5rem; + + --button-font-size: inherit; + --button-font-weight: bold; + --button-line-height: 1.125rem; + --button-padding-y: .5rem; + --button-padding-x: 1rem; + + --container-width: 64em; + + --black: #111; + --gray: #aaa; + --silver: #ddd; + --white: #fff; + + --aqua: #7fdbff; + --blue: #0074d9; + --navy: #001f3f; + --teal: #39cccc; + --green: #2ecc40; + --olive: #3d9970; + --lime: #01ff70; + + --yellow: #ffdc00; + --orange: #ff851b; + --red: #ff4136; + --fuchsia:#f012be; + --purple: #b10dc9; + --maroon: #85144b; + + + --darken-1: rgba(0,0,0,.0625); + --darken-2: rgba(0,0,0,.125); + --darken-3: rgba(0,0,0,.25); + --darken-4: rgba(0,0,0,.5); + + --border-width: 1px; + --border-radius: 3px; + --border-color: var(--darken-2); + --hover-background-color: var(--darken-1); + + --link-color: var(--blue); + --button-background-color: var(--blue); + --pre-background-color: var(--silver); + +} +*/ diff --git a/client/sections/common/body.coffee b/client/sections/common/body.coffee index 6158db8..8b3c643 100644 --- a/client/sections/common/body.coffee +++ b/client/sections/common/body.coffee @@ -47,7 +47,7 @@ onActivateExtra = (e) -> $('section#header').addClass 'disable-clicks' SiteEvent.emit 'toggleStyle', 'scroll', 'body', 'on' SiteEvent.emit 'toggleStyle', 'visibility', 'menu', 'on' - SoundEvent.emit 'play', data: 'Play «Priss».' if Meteor.settings.public.soundcloud.active + SiteEvent.emit 'play', { randomize: true } if Meteor.settings.public.soundcloud.active $(document).on 'click', 'a[href^="/"]', (e) -> id = $(this).attr('href').split('/')[1] @@ -58,11 +58,11 @@ $(document).on 'click', 'a[href^="/"]', (e) -> SiteEvent.emit 'scrollTo', { position: id } Template.sections.rendered = -> - _.each sections, (section, i) -> + _.each jiku.again.sections, (section, i) -> scene = new ScrollMagic.Scene( triggerElement: 'section#' + section - triggerHook: _.contains(["0", "#{sections.length - 1}"], i) and "onEnter" or "onLeave" - offset: _.contains(["0", "#{sections.length - 1}"], i) and "0" or "1" + triggerHook: _.contains(["0", "#{jiku.again.sections.length - 1}"], i) and "onEnter" or "onLeave" + offset: _.contains(["0", "#{jiku.again.sections.length - 1}"], i) and "0" or "1" ) .setClassToggle 'a#' + section, 'active' .setTween(TweenMax.to('section#' + section, 1, transform: 'opacity(1)', ease: Linear.easeNone)) @@ -72,7 +72,7 @@ Template.sections.rendered = -> SiteEvent.emit 'setHistory', { id: @triggerElement?().id } scene.addIndicators name: 'SECTION ' + section if Session.get("env") is "dev" - if (sections.length - 1 is i) and (FlowRouter.getParam 'scrollTo') + if (jiku.again.sections.length - 1 is i) and (FlowRouter.getParam 'scrollTo') SiteEvent.emit 'scrollTo', { position: FlowRouter.getParam 'scrollTo' } SiteEvent.emit 'layout', { template: 'sections', state: 'rendered' } diff --git a/client/sections/common/sections.coffee b/client/sections/common/sections.coffee new file mode 100644 index 0000000..8dcd9a0 --- /dev/null +++ b/client/sections/common/sections.coffee @@ -0,0 +1,5 @@ +Template.sections.helpers + hasReactComponent: -> + !_.isUndefined FlowRouter.current().route.options.reactComponent + reactComponent: -> + FlowRouter.current().route.options.reactComponent() diff --git a/client/sections/common/style/index.styl b/client/sections/common/style/index.styl index bc5f09c..28174ee 100644 --- a/client/sections/common/style/index.styl +++ b/client/sections/common/style/index.styl @@ -199,7 +199,3 @@ section > hr position fixed z-index 200 pointer-events none - -#soundcloud - position absolute - z-index 300 diff --git a/client/sections/footer/style/social.css b/client/sections/footer/style/social.css index 0ac4b17..26c85db 100644 --- a/client/sections/footer/style/social.css +++ b/client/sections/footer/style/social.css @@ -10,7 +10,7 @@ footer.center { text-transform: lowercase; } -.btn { +#footer div#social .btn { clear: both; white-space: nowrap; font-size: .9em; @@ -22,27 +22,27 @@ footer.center { transition: all .5s; } -.btn:hover { +#footer div#social .btn:hover { box-shadow: 0 5px 20px 0 rgba(0, 0, 0, 0.45); } -.btn:focus { +#footer div#social .btn:focus { box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.4); } -.btn > span, -.btn-icon > i { +#footer div#social .btn > span, +#footer div#social .btn-icon > i { padding: .3em 1.5em; } -.btn > span, -.btn > span:after, -.btn-icon > i { +#footer div#social .btn > span, +#footer div#social .btn > span:after, +#footer div#social .btn-icon > i { -webkit-transition: all .5s; -moz-transition: all .5s; transition: all .5s; } -.btn > span { +#footer div#social .btn > span { padding: 0px 4em; white-space: nowrap; color: #FFF; @@ -51,22 +51,22 @@ footer.center { position: relative; } -.btn:hover > span { +#footer div#social .btn:hover > span { background: #b8b8b8; } -.btn:focus > span { +#footer div#social .btn:focus > span { background: #9a9a9a; } -.btn-icon > i { +#footer div#social .btn-icon > i { position: relative; text-align: center; font-size: 2em; color: #fff; } -.btn > span:after { +#footer div#social .btn > span:after { bottom: 100%; left: 50%; border: 1.5em solid; @@ -76,100 +76,100 @@ footer.center { margin-left: -1.5em; } -.btn-icon:hover > i, -.btn-icon:focus > i { +#footer div#social .btn-icon:hover > i, +#footer div#social .btn-icon:focus > i { color: #FFF; } -.btn-icon > span { +#footer div#social .btn-icon > span { border-radius: 0em 0em 4em 4em; } /*Facebook*/ -.btn-facebook:hover > i, -.btn-facebook:focus > i { +#footer div#social .btn-facebook:hover > i, +#footer div#social .btn-facebook:focus > i { color: #3b5998; } -.btn-facebook:hover > span { +#footer div#social .btn-facebook:hover > span { background: #3b5998; } /*Twitter*/ -.btn-twitter:hover > i, -.btn-twitter:focus > i { +#footer div#social .btn-twitter:hover > i, +#footer div#social .btn-twitter:focus > i { color: #55acee; } -.btn-twitter:hover > span { +#footer div#social .btn-twitter:hover > span { background: #55acee; } /*Google*/ -.btn-google-plus:hover > i, -.btn-googleplus:focus > i { +#footer div#social .btn-google-plus:hover > i, +#footer div#social .btn-googleplus:focus > i { color: #dd4b39; } -.btn-google-plus:hover > span { +#footer div#social .btn-google-plus:hover > span { background: #dd4b39; } /*YouTube*/ -.btn-youtube:hover > i, -.btn-youtube:focus > i { +#footer div#social .btn-youtube:hover > i, +#footer div#social .btn-youtube:focus > i { color: #dd4b39; } -.btn-youtube:hover > span { +#footer div#social .btn-youtube:hover > span { background: #dd4b39; } /*SoundCloud*/ -.btn-soundcloud:hover > i, -.btn-soundcloud:focus > i { +#footer div#social .btn-soundcloud:hover > i, +#footer div#social .btn-soundcloud:focus > i { color: #ff7700; } -.btn-soundcloud:hover > span { +#footer div#social .btn-soundcloud:hover > span { background: #ff7700; } /*LinkedIn*/ -.btn-linkedin:hover > i, -.btn-linkedin:focus > i { +#footer div#social .btn-linkedin:hover > i, +#footer div#social .btn-linkedin:focus > i { color: #007bb6; } -.btn-linkedin:hover > span { +#footer div#social .btn-linkedin:hover > span { background: #007bb6; } /* Overrides above */ -.btn:hover > i, -.btn:focus > i { +#footer div#social .btn:hover > i, +#footer div#social .btn:focus > i { color: #97f; } -.btn > span { +#footer div#social .btn > span { background: #97f; color: #eee; } -.btn:hover > span, -.btn:focus > span { +#footer div#social .btn:hover > span, +#footer div#social .btn:focus > span { background: #eee; color: #000; } -.btn:hover > span:after, -.btn:focus > span:after { +#footer div#social .btn:hover > span:after, +#footer div#social .btn:focus > span:after { border-color: transparent transparent #eee transparent; } diff --git a/client/sections/player/soundcloud.coffee b/client/sections/player/soundcloud.coffee deleted file mode 100644 index c98ee30..0000000 --- a/client/sections/player/soundcloud.coffee +++ /dev/null @@ -1,9 +0,0 @@ -soundCloudPlayer = new jikuPlayer.SoundCloud Meteor.settings.public.soundcloud.key -soundCloudPlayer.load { permalink: "jiku/sets/again" } - -Template.soundcloud.rendered = -> - SoundEvent.on 'play', soundCloudPlayer.play - SiteEvent.emit 'layout', { template: 'soundcloud', state: 'rendered' } - -Template.soundcloud.onDestroyed = -> - SoundEvent.removeListener 'play', soundCloudPlayer.play diff --git a/entry/client/entry.js b/entry/client/entry.js new file mode 100644 index 0000000..86c73e4 --- /dev/null +++ b/entry/client/entry.js @@ -0,0 +1 @@ +import './routes'; diff --git a/entry/client/meteor.startup.js b/entry/client/meteor.startup.js new file mode 100644 index 0000000..67f514c --- /dev/null +++ b/entry/client/meteor.startup.js @@ -0,0 +1,4 @@ +// This file is sent directly to Meteor without going through Webpack +// You can initialize anything you need before your app start here + +FlowRouter.wait(); diff --git a/entry/client/routes.jsx b/entry/client/routes.jsx new file mode 100644 index 0000000..1841598 --- /dev/null +++ b/entry/client/routes.jsx @@ -0,0 +1,44 @@ +import Soundplayer from 'Soundplayer/client/Soundplayer'; + +var render = function(args) { + BlazeLayout.render('layoutNormal', { + pane: 'pane', + particles: 'particles', + sections: 'sections', + menu: 'menu' + }); +}; + +FlowRouter.route('/', { + name: 'home', + reactComponent: function() { return Soundplayer; }, + action: function(params, queryParams) { + render(); + } +}); + +FlowRouter.route('/:scrollTo', { + name: 'home_scroll', + reactComponent: function() { return Soundplayer; }, + triggersEnter: [ + function(context, redirect) { + if (!_.contains(jiku.again.sections, context.path.split('/')[1])) { + redirect('/'); + } + } + ], + action: function(params, queryParams) { + if (_.isEmpty(jiku.again.lastPath) && (_.contains(jiku.again.sections, params.scrollTo))) { + jiku.again.externalDirect = true; + render(); + } + } +}); + +var setLastPath = function(context, redirect, stop) { + jiku.again.lastPath = context.path.split('/')[1]; +}; + +FlowRouter.triggers.exit([setLastPath]); + +FlowRouter.initialize(); diff --git a/entry/client/webpack.conf.js b/entry/client/webpack.conf.js new file mode 100644 index 0000000..3947485 --- /dev/null +++ b/entry/client/webpack.conf.js @@ -0,0 +1,16 @@ +var webpack = require('webpack'); + +var babelSettings = { stage: 0 }; + +module.exports = { + entry: './entry', + module: { + loaders: [ + { test: /\.jsx?$/, loader: 'babel', query: babelSettings, exclude: /node_modules/ }, + // { test: /\.css$/, loader: 'style!css!style-loader!css-loader!cssnext-loader' }, + { test: /\.css$/, loader: 'style-loader!css-loader!cssnext-loader' }, + { test: /\.(png|jpe?g)(\?.*)?$/, loader: 'url?limit=8182' }, + { test: /\.(svg|ttf|woff|eot)(\?.*)?$/, loader: 'file' } + ] + } +}; diff --git a/entry/server/entry.js b/entry/server/entry.js new file mode 100644 index 0000000..e69de29 diff --git a/entry/server/webpack.conf.js b/entry/server/webpack.conf.js new file mode 100644 index 0000000..b88dcc6 --- /dev/null +++ b/entry/server/webpack.conf.js @@ -0,0 +1,13 @@ +var webpack = require('webpack'); + +module.exports = { + entry: './entry', + module: { + loaders: [ + { test: /\.jsx?$/, loader: 'babel', query: { stage: 0 }, exclude: /node_modules/ }, + { test: /\.css$/, loader: 'style-collector!css' }, + { test: /\.(png|jpe?g)(\?.*)?$/, loader: 'url?limit=8182' }, + { test: /\.(svg|ttf|woff|eot)(\?.*)?$/, loader: 'file' } + ] + } +}; diff --git a/entry/webpack.conf.js b/entry/webpack.conf.js new file mode 100644 index 0000000..ca2d13c --- /dev/null +++ b/entry/webpack.conf.js @@ -0,0 +1,23 @@ +var webpack = require('webpack'); +var path = require('path'); + +module.exports = { + externals: { + // Use Meteor package for react(-dom), etc. + 'react': 'React', + 'react-dom': 'React.DOM', + 'react-addons-transition-group': 'React.addons.TransitionGroup', + 'react-addons-create-fragment': 'React.addons.createFragment', + 'react-addons-pure-render-mixin': 'React.addons.PureRenderMixin', + 'react-addons-update': 'React.addons.update', + 'react-addons-linked-state-mixin': 'React.addons.PureRenderMixin', + 'react-soundplayer': 'SoundPlayerContainer' + }, + devServer: { + host: 'localhost' + }, + resolve: { + root: path.join(__dirname, '..', 'modules'), + extensions: ['', '.js', '.jsx', '.json', '.css'] + } +}; diff --git a/index.jade b/index.jade index 0c4f1c9..8402aec 100644 --- a/index.jade +++ b/index.jade @@ -24,6 +24,8 @@ template(name='sections') section#player.box +markdown {{>player}} + .react + +React(component=reactComponent) if isDev section#crappycrap.box +markdown @@ -40,7 +42,7 @@ template(name='logo') template(name='footer') .center - #social + #social.react +React(component=Social) template(name='menu') @@ -63,5 +65,3 @@ template(name='pane') template(name='particles') #particles - -template(name='soundcloud') diff --git a/lib/router.coffee b/lib/router.coffee deleted file mode 100644 index d34bd91..0000000 --- a/lib/router.coffee +++ /dev/null @@ -1,63 +0,0 @@ -if Meteor.isClient - @layouts = [{ - name: 'normal' - templates: [{ - name: 'pane' - }, { - name: 'soundcloud' - }, { - name: 'particles' - }, { - name: 'sections' - sections: ['header', 'about', 'player', 'contribute', 'footer'] - }, { - name: 'menu' - }] - }] - - @sections = [ - 'header' - 'about' - 'player' - 'contribute' - 'footer' - ] - @sections.splice(2, 0, "crappycrap") if Meteor.settings.env is "dev" - - @externalDirect = true - @lastPath = "" - - Session.set "goTo", false - - render = (args) -> - # I.e. uses default templates unless provided - BlazeLayout.render 'layoutNormal', - pane: args?.templates?.pane or 'pane' - soundcloud: args?.templates?.soundcloud or 'soundcloud' - particles: args?.templates?.particles or 'particles' - sections: args?.templates?.sections or 'sections' - menu: args?.templates?.menu or 'menu' - - FlowRouter.route '/', - name: 'home' - action: (params, queryParams) => - @externalDirect = false - render() - - FlowRouter.route '/:scrollTo', - name: 'home_scroll' - triggersEnter: [(context, redirect) -> - unless _.contains sections, context.path.split('/')[1] - redirect '/' - ] - action: (params, queryParams) => - # From external, template takes care of internal - if _.isEmpty(lastPath) and (_.contains sections, params.scrollTo) - @externalDirect = true - render() - - setLastPath = (context, redirect, stop) -> lastPath = context.path.split('/')[1] - - FlowRouter.notFound = action: -> redirect '/' - - FlowRouter.triggers.exit [setLastPath] diff --git a/modules/Soundplayer/client b/modules/Soundplayer/client new file mode 120000 index 0000000..6d7c540 --- /dev/null +++ b/modules/Soundplayer/client @@ -0,0 +1 @@ +/Volumes/Data/Dev/Components/jiku/React/Soundplayer/basic \ No newline at end of file diff --git a/node_modules b/node_modules new file mode 120000 index 0000000..4cf35ad --- /dev/null +++ b/node_modules @@ -0,0 +1 @@ +.meteor/local/webpack-npm/node_modules \ No newline at end of file diff --git a/webpack.packages.json b/webpack.packages.json new file mode 100644 index 0000000..dd4ae04 --- /dev/null +++ b/webpack.packages.json @@ -0,0 +1,18 @@ +{ + "babel": "^5.8.23", + "react-mixin": "^3.0.0", + + "babel-loader": "^5.3.2", + "null-loader": "^0.1.1", + "url-loader": "^0.5.6", + "file-loader": "^0.8.4", + "style-loader": "^0.13.0", + "css-loader": "^0.21.0", + "style-collector-loader": "^0.1.0", + + "classnames": "^2.0.0", + "babel-plugin-react-transform": "^1.1.1", + "react-transform-hmr": "^1.0.1", + "react-transform-catch-errors": "^1.0.0", + "redbox-react": "^1.1.1" +}