Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
scratch-www
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
xpstem
scratch-www
Commits
c7cc1b62
Commit
c7cc1b62
authored
Feb 19, 2016
by
morant
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Revert "Fix review comments, and organize code a bit.""
This reverts commit
e9cb08d2
.
parent
e9cb08d2
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
316 additions
and
622 deletions
+316
-622
src/components/microworld/microworld.jsx
src/components/microworld/microworld.jsx
+58
-63
src/components/microworld/microworld.scss
src/components/microworld/microworld.scss
+148
-355
src/components/nestedcarousel/nestedcarousel.json
src/components/nestedcarousel/nestedcarousel.json
+42
-0
src/components/nestedcarousel/nestedcarousel.jsx
src/components/nestedcarousel/nestedcarousel.jsx
+25
-14
src/components/nestedcarousel/nestedcarousel.scss
src/components/nestedcarousel/nestedcarousel.scss
+8
-0
src/components/thumbnail/thumbnail.jsx
src/components/thumbnail/thumbnail.jsx
+10
-2
src/components/tipsslider/tipsslider.json
src/components/tipsslider/tipsslider.json
+0
-50
src/components/tipsslider/tipsslider.scss
src/components/tipsslider/tipsslider.scss
+0
-75
src/views/microworld_art/microworld_art.json
src/views/microworld_art/microworld_art.json
+5
-19
src/views/microworld_art/microworld_art.jsx
src/views/microworld_art/microworld_art.jsx
+3
-1
src/views/microworld_fashion/microworld_fashion.json
src/views/microworld_fashion/microworld_fashion.json
+6
-22
src/views/microworld_fashion/microworld_fashion.jsx
src/views/microworld_fashion/microworld_fashion.jsx
+3
-1
src/views/microworld_hiphop/microworld_hiphop.json
src/views/microworld_hiphop/microworld_hiphop.json
+5
-19
src/views/microworld_hiphop/microworld_hiphop.jsx
src/views/microworld_hiphop/microworld_hiphop.jsx
+3
-1
No files found.
src/components/microworld/microworld.jsx
View file @
c7cc1b62
var
classNames
=
require
(
'
classnames
'
);
var
React
=
require
(
'
react
'
);
var
render
=
require
(
'
../../lib/render.jsx
'
);
var
omit
=
require
(
'
lodash.omit
'
);
require
(
'
./microworld.scss
'
);
var
Box
=
require
(
'
../../components/box/box.jsx
'
);
var
Carousel
=
require
(
'
../../components/carousel/carousel.jsx
'
);
var
Modal
=
require
(
'
../../components/modal/modal.jsx
'
);
var
TipsSlider
=
require
(
'
../../components/tipsslider/tipsslider
.jsx
'
);
var
NestedCarousel
=
require
(
'
../../components/nestedcarousel/nestedcarousel
.jsx
'
);
var
Microworld
=
React
.
createClass
({
type
:
'
Microworld
'
,
propTypes
:
{
microworldData
:
React
.
PropTypes
.
node
.
isRequired
},
showVideo
:
function
(
key
)
{
markVideoOpen
:
function
(
key
)
{
{
/* When a video is clicked, mark it as an open video, so the video Modal will open.
Key is the number of the video, so distinguish between different videos on the page */
}
var
videoOpenArr
=
this
.
state
.
videoOpen
;
videoOpenArr
[
key
]
=
true
;
this
.
setState
({
videoOpen
:
videoOpenArr
});
},
closeVideo
:
function
(
key
)
{
markVideoClosed
:
function
(
key
)
{
{
/* When a video's x is clicked, mark it as closed, so the video Modal will disappear.
Key is the number of the video, so distinguish between different videos on the page */
}
var
videoOpenArr
=
this
.
state
.
videoOpen
;
videoOpenArr
[
key
]
=
false
;
this
.
setState
({
videoOpen
:
videoOpenArr
});
},
getInitialState
:
function
()
{
return
{
videoOpen
:
{},
featuredGlobal
:
{},
featuredLocal
:
{},
microworld_data
:
this
.
props
.
microworldData
videoOpen
:
{}
};
},
renderVideos
:
function
()
{
var
videos
=
this
.
state
.
microworld_data
.
videos
var
videos
=
this
.
props
.
microworldData
.
videos
;
if
(
!
videos
||
videos
.
length
<=
0
)
{
return
null
;
}
...
...
@@ -59,23 +58,23 @@ var Microworld = React.createClass({
return
(
<
div
>
<
div
className=
"video"
>
<
div
className=
"play-button"
onClick=
{
this
.
showVideo
.
bind
(
this
,
key
)
}
>
<
div
className=
"play-button"
onClick=
{
this
.
markVideoOpen
.
bind
(
this
,
key
)
}
>
</
div
>
<
img
src=
{
video
.
image
}
/>
</
div
>
<
Modal
className=
"video-modal"
isOpen=
{
this
.
state
.
videoOpen
[
key
]
}
onRequestClose=
{
this
.
closeVideo
.
bind
(
this
,
key
)
}
onRequestClose=
{
this
.
markVideoClosed
.
bind
(
this
,
key
)
}
style=
{
{
content
:
frameProps
}
}
>
<
iframe
src=
{
video
.
link
}
width=
"560"
height=
"315"
frameBorder=
"0"
webkitallowfullscreen
mozallowfullscreen
allowfullscreen
></
iframe
>
<
iframe
src=
{
video
.
link
}
width=
"560"
height=
"315"
frameBorder=
"0"
webkitallowfullscreen
mozallowfullscreen
allowfullscreen
></
iframe
>
</
Modal
>
</
div
>
)
)
;
},
renderEditorWindow
:
function
()
{
var
projectId
=
this
.
state
.
microworld_d
ata
.
microworld_project_id
;
renderEditorWindow
:
function
()
{
var
projectId
=
this
.
props
.
microworldD
ata
.
microworld_project_id
;
if
(
!
projectId
)
{
return
null
;
...
...
@@ -83,34 +82,33 @@ var Microworld = React.createClass({
return
(
<
div
className=
"editor section"
>
<
h1
>
Start Creating!
</
h1
>
<
a
href=
{
"
//scratch.mit.edu/projects/
"
+
projectId
+
"
/#editor
"
}
>
<
img
src=
"/images/scratch-og.png"
style=
{
{
width
:
"
6%
"
,
position
:
"
absolute
"
,
left
:
"
75%
"
}
}
></
img
>
<
a
href=
{
'
//scratch.mit.edu/projects/
'
+
projectId
+
'
/#editor
'
}
>
<
img
src=
"/images/scratch-og.png"
style=
{
{
width
:
'
6%
'
,
position
:
'
absolute
'
,
left
:
'
75%
'
}
}
></
img
>
</
a
>
<
iframe
src=
{
"
//scratch.mit.edu/projects/embed-editor/
"
+
projectId
+
"
/?isMicroworld=true
"
}
<
iframe
src=
{
'
//scratch.mit.edu/projects/embed-editor/
'
+
projectId
+
'
/?isMicroworld=true
'
}
frameBorder=
"0"
>
</
iframe
>
{
this
.
renderTips
()
}
</
div
>
)
)
;
},
renderTips
:
function
()
{
var
tips
=
this
.
state
.
microworld_d
ata
.
tips
;
renderTips
:
function
()
{
var
tips
=
this
.
props
.
microworldD
ata
.
tips
;
if
(
!
tips
||
tips
.
length
<=
0
)
{
return
null
;
}
return
(
<
div
className=
"box
tipsslider
"
>
<
div
className=
"box
nestedcarousel
"
>
<
div
className=
"box-header"
>
</
div
>
<
div
className=
"box-content"
>
<
TipsSlider
items=
{
tips
}
settings=
{
{
slidesToShow
:
1
,
slidesToScroll
:
1
}
}
/>
<
NestedCarousel
items=
{
tips
}
settings=
{
{
slidesToShow
:
1
,
slidesToScroll
:
1
}
}
/>
</
div
>
</
div
>
)
)
;
},
renderStarterProject
:
function
()
{
var
starterProjects
=
this
.
state
.
microworld_d
ata
.
starter_projects
;
renderStarterProject
:
function
()
{
var
starterProjects
=
this
.
props
.
microworldD
ata
.
starter_projects
;
if
(
!
starterProjects
||
starterProjects
.
length
<=
0
){
return
null
;
}
...
...
@@ -124,10 +122,10 @@ var Microworld = React.createClass({
<
Carousel
items=
{
starterProjects
}
/>
</
Box
>
</
div
>
)
)
;
},
renderProjectIdeasBox
:
function
()
{
var
communityProjects
=
this
.
state
.
microworld_d
ata
.
community_projects
;
renderProjectIdeasBox
:
function
()
{
var
communityProjects
=
this
.
props
.
microworldD
ata
.
community_projects
;
if
(
!
communityProjects
||
communityProjects
.
size
<=
0
)
{
return
null
;
}
...
...
@@ -135,7 +133,7 @@ var Microworld = React.createClass({
var
featured
=
communityProjects
.
featured_projects
;
var
all
=
communityProjects
.
newest_projects
;
var
rows
=
[]
var
rows
=
[]
;
if
(
featured
&&
featured
.
length
>
0
){
rows
.
push
(
<
Box
...
...
@@ -143,7 +141,7 @@ var Microworld = React.createClass({
key=
"community_featured_projects"
>
<
Carousel
items=
{
featured
}
/>
</
Box
>
)
)
;
}
if
(
all
&&
all
.
length
>
0
)
{
rows
.
push
(
...
...
@@ -152,7 +150,7 @@ var Microworld = React.createClass({
key=
"community_all_projects"
>
<
Carousel
items=
{
all
}
/>
</
Box
>
)
)
;
}
if
(
rows
.
length
<=
0
)
{
return
null
;
...
...
@@ -162,10 +160,10 @@ var Microworld = React.createClass({
<
h1
>
Get inspiration from other projects
</
h1
>
{
rows
}
</
div
>
)
)
;
},
renderForum
:
function
()
{
if
(
!
this
.
state
.
microworld_d
ata
.
show_forum
)
{
renderForum
:
function
()
{
if
(
!
this
.
props
.
microworldD
ata
.
show_forum
)
{
return
null
;
}
...
...
@@ -174,64 +172,61 @@ var Microworld = React.createClass({
<
h1
>
Chat with others!
</
h1
>
<
img
src=
"/images/forum-image.png"
/>
</
div
>
)
)
;
},
renderDesignStudio
:
function
()
{
var
designChallenge
=
this
.
state
.
microworld_d
ata
.
design_challenge
;
renderDesignStudio
:
function
()
{
var
designChallenge
=
this
.
props
.
microworldD
ata
.
design_challenge
;
if
(
!
designChallenge
)
{
return
null
;
}
if
(
designChallenge
.
studio_id
)
{
var
studioHref
=
'
https://scratch.mit.edu//studios/
'
+
designChallenge
.
studio_id
+
'
/
'
var
studioHref
=
'
https://scratch.mit.edu//studios/
'
+
designChallenge
.
studio_id
+
'
/
'
;
}
var
designStudioIntro
;
if
(
designChallenge
.
project_id
)
{
return
(
<
div
className=
"side-by-side section"
>
<
h1
>
Join our Design Challenge!
</
h1
>
<
div
className=
"design-studio"
>
<
iframe
src=
{
"
https://scratch.mit.edu/projects/
"
+
designChallenge
.
project_id
+
"
/#fullscreen
"
}
frameBorder=
"0"
>
</
iframe
>
<
iframe
src=
{
'
https://scratch.mit.edu/projects/
'
+
designChallenge
.
project_id
+
'
/#fullscreen
'
}
frameBorder=
"0"
>
</
iframe
>
</
div
>
<
div
className=
"design-studio-projects"
>
<
Box
title=
"Examples"
key=
"scratch_design_studio"
moreTitle=
{
studioHref
?
"
Visit the studio
"
:
null
}
moreTitle=
{
studioHref
?
'
Visit the studio
'
:
null
}
moreHref=
{
studioHref
?
studioHref
:
null
}
>
<
Carousel
settings=
{
{
slidesToShow
:
2
,
slidesToScroll
:
2
}
}
items=
{
this
.
state
.
microworld_data
.
design_challenge
.
studio1
}
/>
<
Carousel
settings=
{
{
slidesToShow
:
2
,
slidesToScroll
:
2
}
}
items=
{
this
.
state
.
microworld_data
.
design_challenge
.
studio2
}
/>
{
/* The two carousels are used to show two rows of projects, one above the
other. This should be probably be changed, to allow better scrolling. */
}
<
Carousel
settings=
{
{
slidesToShow
:
2
,
slidesToScroll
:
2
}
}
items=
{
this
.
props
.
microworldData
.
design_challenge
.
studio1
}
/>
<
Carousel
settings=
{
{
slidesToShow
:
2
,
slidesToScroll
:
2
}
}
items=
{
this
.
props
.
microworldData
.
design_challenge
.
studio2
}
/>
</
Box
>
</
div
>
</
div
>
)
)
;
}
else
{
return
(
return
(
<
div
className=
"section"
>
<
h1
>
Join our Design Challenge!
</
h1
>
<
Box
title=
"design Challenge Projects"
key=
"scratch_design_studio"
moreTitle=
{
studioHref
?
"
Visit the studio
"
:
null
}
moreTitle=
{
studioHref
?
'
Visit the studio
'
:
null
}
moreHref=
{
studioHref
?
studioHref
:
null
}
>
<
Carousel
items=
{
this
.
state
.
microworld_d
ata
.
design_challenge
.
studio1
.
concat
(
this
.
state
.
microworld_d
ata
.
design_challenge
.
studio2
)
}
/>
<
Carousel
items=
{
this
.
props
.
microworldD
ata
.
design_challenge
.
studio1
.
concat
(
this
.
props
.
microworldD
ata
.
design_challenge
.
studio2
)
}
/>
</
Box
>
</
div
>
)
)
;
}
},
render
:
function
()
{
var
classes
=
classNames
(
'
top-banner
'
);
var
microworldData
=
this
.
state
.
microworld_data
;
return
(
<
div
className=
"inner"
>
<
div
className=
"top-banner section"
>
<
h1
>
{
microworldData
.
title
}
</
h1
>
<
p
>
{
microworldData
.
description
.
join
(
"
"
)
}
</
p
>
<
h1
>
{
this
.
props
.
microworldData
.
title
}
</
h1
>
<
p
>
{
this
.
props
.
microworldData
.
description
.
join
(
'
'
)
}
</
p
>
</
div
>
{
this
.
renderVideos
()
}
...
...
src/components/microworld/microworld.scss
View file @
c7cc1b62
...
...
@@ -4,386 +4,179 @@
$base-bg
:
$ui-white
;
#view
{
padding
:
0
;
background-color
:
$base-bg
;
background-color
:
$base-bg
;
padding
:
0
;
// To be integrated into the Global Typography standards
h3
,
p
{
font-weight
:
300
;
// To be integrated into the Global Typography standards
h3
,
p
{
font-weight
:
300
;
}
p
{
line-height
:
2em
;
}
h1
{
margin
:
0
auto
;
padding
:
5px
0
;
max-width
:
500px
;
text-align
:
center
;
color
:
$type-gray
;
}
.top-banner
,
.videos-section
,
.section
{
padding
:
30px
0
;
width
:
100%
;
h1
,
p
{
margin
:
0
auto
;
padding
:
5px
0
;
max-width
:
500px
;
text-align
:
center
;
color
:
$type-gray
;
}
}
.videos-container
{
display
:
flex
;
margin
:
0
auto
;
justify-content
:
center
;
flex-wrap
:
wrap
;
align-items
:
center
;
.videos
{
display
:
inline-flex
;
justify-content
:
center
;
flex-wrap
:
wrap
;
}
.video
{
position
:relative
;
margin
:
10px
;
border-radius
:
7px
;
background-color
:
$active-gray
;
padding
:
2px
;
max-width
:
290px
;
}
img
{
width
:
calc
(
100%
-
20px
);
height
:
179px
;
margin
:
10px
10px
5px
10px
;
border-radius
:
5px
;
}
.play-button
{
display
:
block
;
top
:
calc
(
50%
-
25px
);
left
:
calc
(
50%
-
35px
);
opacity
:
.8
;
border
:
5px
solid
$ui-border
;
border-radius
:
20px
;
background-color
:
$type-gray
;
width
:
70px
;
height
:
50px
;
&
,
&
:after
{
position
:
absolute
;
margin
:
0
;
cursor
:
pointer
;
padding
:
0
;
}
&
:after
{
$play-arrow
:
rgba
(
255
,
255
,
255
,
0
);
top
:
37px
;
left
:
28px
;
margin-top
:
-30px
;
border
:
solid
transparent
;
border-width
:
18px
;
border-color
:
$play-arrow
;
border-left-color
:
$ui-white
;
width
:
0
;
height
:
0
;
content
:
" "
;
pointer-events
:
none
;
}
}
}
.content
{
img
{
margin-left
:
auto
;
margin-right
:
auto
;
display
:
block
;
}
.box
,
iframe
{
margin-left
:
auto
;
margin-right
:
auto
;
padding-bottom
:
15px
;
padding-top
:
25px
;
border
:
0px
;
display
:
block
;
}
iframe
{
width
:
900px
;
height
:
600px
;
p
{
line-height
:
2em
;
}
.box
{
width
:
900px
;
h1
{
margin
:
0
auto
;
padding
:
5px
0
;
max-width
:
500px
;
text-align
:
center
;
color
:
$type-gray
;
}
.
side-by-side
{
margin-left
:
auto
;
margin-right
:
auto
;
width
:
900px
;
height
:
520px
;
.
top-banner
,
.videos-section
,
.section
{
padding
:
30px
0
;
width
:
100%
;
.box
{
width
:
400px
;
}
.design-studio-projects
,
.design-studio
{
width
:
400px
;
height
:
500px
;
display
:
inline-block
;
}
.design-studio-projects
{
float
:right
;
}
.design-studio
{
float
:
left
;
iframe
{
margin-top
:
60px
;
width
:
960px
;
-webkit-transform
:
scale
(
0
.5
);
-webkit-transform-origin
:
top
left
;
-moz-transform
:
scale
(
0
.5
);
h1
,
p
{
margin
:
0
auto
;
padding
:
5px
0
;
max-width
:
500px
;
text-align
:
center
;
color
:
$type-gray
;
}
}
}
}
.box-content
.tipsslider
{
text-align
:
center
;
.thumbnail
{
display
:
inline-block
;
margin
:
0px
50px
;
}
}
.pathways
.box-content
{
padding
:
20px
;}
.pathways
.rightcol
{
float
:right
;
width
:
30%
;
clear
:none
;
margin-bottom
:
20px
}
.pathways
.rightcol
.box-content
{
background-color
:
#FBFBFB
}
.pathways
.rightcol
.box
{
margin-bottom
:
-10px
;
position
:relative
}
.pathways
.thumb-with-subtext
img
{
width
:
158px
;
height
:
128px
;
border
:
1px
solid
#ccc
}
.pathways
.thumb-with-subtext
p
{
width
:
158px
;
height
:auto
}
.pathways
.thumb-with-subtext
{
white-space
:normal
;
display
:inline-block
;
width
:
30%
;
margin
:
0
9px
;
vertical-align
:top
}
.pathways
.thumb-with-title-and-sublinks
{
white-space
:normal
;
display
:inline-block
;
width
:auto
;
margin
:
0
20px
20px
20px
;
vertical-align
:top
;
text-align
:left
;}
.pathways
.thumb-with-title-and-sublinks
.span
{}
.pathways
.thumb-with-title-and-sublinks
a
{
display
:block
}
.pathways
.intro
{
overflow
:auto
;
margin-bottom
:
20px
;
}
.pathways
h1
{
text-align
:center
;}
.pathways
.tutorial-pane
{
height
:
300px
}
.pathways
.leftcol
,
.pathways
.rightcol
{
//margin-right: 20px;float:left;}
.pathways
.leftcol
{
width
:
50%
;
}
.pathways
.rightcol
{
text-align
:
center
;
margin-left
:
8%
;
}
.pathways
.intro
.rightcol
{
margin
:
0
;
text-align
:
right
;
}
.pathways
.intro
.leftcol
{
margin
:
20px
;
float
:
left
;
position
:
relative
;
}
.pathways
.intro
.introinfo
{
font-size
:
17px
;
position
:
absolute
;
top
:
0
;
}
.pathways
.intro
.introinfo
ul
{
list-style-type
:
none
;
margin
:
0
;
}
.pathways
.intro
h1
{
text-align
:
left
;
}
.pathways
.intro
p
{
font-size
:
18px
;
padding-right
:
25px
;
text-align
:
left
;
}
.pathways
.microworld
{
padding
:
5px
;
}
.pathways
.editor-and-tips
{
padding
:
15px
15px
0px
15px
;
border-radius
:
15px
15px
0
0
;
box-shadow
:
0px
0px
8px
#cccccc
inset
,
0
2px
3px
rgba
(
34
,
25
,
25
,
0
.3
);
border-top
:
1px
solid
#E0E0E0
;
border-right
:
1px
solid
#E0E0E0
;
border-left
:
1px
solid
#E0E0E0
;
background-color
:
white
;
margin-bottom
:
50px
;
/* offset-x | offset-y | blur-radius | color */
.videos-container
{
display
:
flex
;
margin
:
0
auto
;
}
//for tips slideshow
justify-content
:
center
;
flex-wrap
:
wrap
;
align-items
:
center
;
.pathways
.tips-slider.flexslider
{
}
.pathways
.flexslider
.flex-prev
{
top
:
130px
;
margin-left
:
50px
;
}
.pathways
.flexslider
.flex-next
{
margin-right
:
50px
;
top
:
130px
;
}
.videos
{
display
:
inline-flex
;
justify-content
:
center
;
flex-wrap
:
wrap
;
}
.pathways
.tips
{
background-color
:
#E6E6E8
;
width
:
887px
;
margin-left
:
10px
;
padding-bottom
:
1px
;
margin-bottom
:
15px
;
border
:
1px
solid
#D0D1D2
;
}
.pathways
.tips
h3
{
text-align
:
center
;
font-size
:
1
.4em
;
padding
:
5px
;
}
.video
{
position
:
relative
;
margin
:
10px
;
border-radius
:
7px
;
background-color
:
$active-gray
;
padding
:
2px
;
max-width
:
290px
;
}
.pathways
.tip-slide
{
width
:
80%
;
margin
:
0
auto
;
text-align
:
center
;
//background: lightgray;
}
.pathways
.tip-step
{
display
:
inline-block
;
margin
:
0
10px
;
min-width
:
180px
;
padding
:
10px
;
text-align
:
center
;
vertical-align
:
middle
;
height
:
140px
;
background-color
:
white
;
border-radius
:
10px
;
position
:
relative
;
}
img
{
margin
:
10px
10px
5px
;
border-radius
:
5px
;
width
:
calc
(
100%
-
20px
);
height
:
179px
;
}
.pathways
.tip-step
h5
{
color
:
#5C5D5F
;
font-size
:
1
.1em
;
font-weight
:
400
;
position
:
absolute
;
border-radius
:
0
0
10px
10px
;
width
:
100%
;
bottom
:
0
;
margin
:
0
;
left
:
0
;
}
.pathways
.tip-step
img
{
margin-left
:
auto
;
margin-right
:
auto
;
position
:
relative
;
top
:
45%
;
transform
:
translateY
(
-50%
);
overflow
:
hidden
;
height
:
50
;
.play-button
{
display
:
block
;
top
:
calc
(
50%
-
25px
);
left
:
calc
(
50%
-
35px
);
opacity
:
.8
;
border
:
5px
solid
$ui-border
;
border-radius
:
20px
;
background-color
:
$type-gray
;
width
:
70px
;
height
:
50px
;
&
,
&
:after
{
position
:
absolute
;
margin
:
0
;
cursor
:
pointer
;
padding
:
0
;
}
&
:after
{
$play-arrow
:
rgba
(
255
,
255
,
255
,
0
);
top
:
37px
;
left
:
28px
;
margin-top
:
-30px
;
border
:
solid
transparent
;
border-width
:
18px
;
border-color
:
$play-arrow
;
border-left-color
:
$ui-white
;
width
:
0
;
height
:
0
;
content
:
" "
;
pointer-events
:
none
;
}
}
}
.pathways
.tips-download
{
background-color
:
#E6E6E8
;
padding
:
8px
;
font-size
:
1
.1em
;
margin
:
0
-16px
;
text-align
:
center
;
font-family
:
"helvetica neue"
,
arial
,
sans-serif
;
}
.content
{
img
{
display
:
block
;
margin-right
:
auto
;
margin-left
:
auto
;
}
.pathways
.tips-download
a
:hover:after
{
text-decoration
:
none
;
}
.pathways
.button
{
padding-left
:
.5em
;
padding-right
:
.5em
;
}
.get-started
.button
{
text-size
:
12px
;
border-color
:
#ED8629
;
background-color
:
#E58220
;
background-image
:
-webkit-linear-gradient
(
top
,
#FF9522
,
#E58220
);
background-image
:
-moz-linear-gradient
(
top
,
#FF9522
,
#E58220
);
background-image
:
-ms-linear-gradient
(
top
,
#FF9522
,
#E58220
);
background-image
:
-o-linear-gradient
(
top
,
#FF9522
,
#E58220
);
background-image
:
linear-gradient
(
top
,
#FF9522
,
#E58220
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
Gradient
(
startColorStr
=
#FF9522
,
endColorStr
=
#E58220
);
}
//.pathways .box {background-color:#fff;}
.pathways
.box-content
{
margin
:
5px
0
;
border-top
:
none
;
}
.pathways
.tutorial-pane
.box-content
{
background-color
:
#f7f7f7
;
padding
:
20px
30px
;
display
:
inline-block
;
}
.pathways
.slider-carousel
{
padding
:
10px
43px
;
}
.box
,
iframe
{
display
:
block
;
margin-right
:
auto
;
margin-left
:
auto
;
border
:
0
;
padding-top
:
25px
;
padding-bottom
:
15px
;
}
.gallery.thumb
{
position
:
relative
;
}
iframe
{
width
:
900px
;
height
:
600px
;
}
.pathways
.gallery.thumb.item
{
display
:
inline-block
;
width
:
33%
;
font-size
:
14px
;
}
.box
{
width
:
900px
;
}
.pathways
.gallery.thumb
a
.image
{
display
:
block
;
.side-by-side
{
margin-right
:
auto
;
margin-left
:
auto
;
width
:
900px
;
height
:
520px
;
.box
{
width
:
400px
;
}
.design-studio-projects
,
.design-studio
{
display
:
inline-block
;
width
:
400px
;
height
:
500px
;
}
.design-studio-projects
{
float
:
right
;
}
.design-studio
{
float
:
left
;
iframe
{
margin-top
:
60px
;
width
:
960px
;
-webkit-transform
:
scale
(
.5
);
-webkit-transform-origin
:
top
left
;
-moz-transform
:
scale
(
.5
);
}
}
}
}
.pathways
.gallery.thumb
span
.image
img
{
background-color
:
#fff
;
width
:
170px
;
height
:
100px
;
margin
:
5px
;
}
.box-content
{
.nestedcarousel
{
text-align
:
center
;
.pathways
.gallery.thumb
.stats
{
vertical-align
:
top
;
opacity
:
.9
;
border-radius
:
5px
;
background-color
:
#333
;
color
:
white
!
important
;
position
:
absolute
;
bottom
:
30px
;
right
:
120px
;
padding
:
1px
;
.thumbnail
{
display
:
inline-block
;
margin
:
0
50px
;
}
}
}
}
}
src/components/nestedcarousel/nestedcarousel.json
0 → 100644
View file @
c7cc1b62
[
{
"title"
:
"Start Dancing"
,
"thumbnails"
:[
{
"type"
:
"tip"
,
"title"
:
"First, select a sprite"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/dancer-sprite.png"
},
{
"type"
:
"tip"
,
"title"
:
"Then, try this script"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/switch-wait.gif"
},
{
"type"
:
"tip"
,
"title"
:
"Start it!"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/green-flag.gif"
}
]
},
{
"title"
:
"Repeat the Dance"
,
"thumbnails"
:[
{
"type"
:
"tip"
,
"title"
:
"Add another
\"
wait
\"
"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/add-wait.gif"
},
{
"type"
:
"tip"
,
"title"
:
"Drag this block over"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/add-repeat.gif"
},
{
"type"
:
"tip"
,
"title"
:
"Start it"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/green-flag.gif"
}
]
}
]
\ No newline at end of file
src/components/
tipsslider/tipsslider
.jsx
→
src/components/
nestedcarousel/nestedcarousel
.jsx
View file @
c7cc1b62
...
...
@@ -7,16 +7,24 @@ var Thumbnail = require('../thumbnail/thumbnail.jsx');
require
(
'
slick-carousel/slick/slick.scss
'
);
require
(
'
slick-carousel/slick/slick-theme.scss
'
);
require
(
'
./
tipsslider
.scss
'
);
require
(
'
./
nestedcarousel
.scss
'
);
var
TipsSlider
=
React
.
createClass
({
type
:
'
TipsSlider
'
,
{
/*
NestedCarousel is used to show a carousel, where each slide is composed of a few
thumbnails (for example, to show step-by-syep tips, where each stage has a few steps).
It creates the thumbnails without links.
Each slide has a title, and then a list of thumbnails, that will be shown together.
*/
}
var
NestedCarousel
=
React
.
createClass
({
type
:
'
NestedCarousel
'
,
propTypes
:
{
items
:
React
.
PropTypes
.
array
},
getDefaultProps
:
function
()
{
return
{
items
:
require
(
'
./
tipsslider.json
'
),
items
:
require
(
'
./
nestedcarousel.json
'
)
};
},
render
:
function
()
{
...
...
@@ -33,32 +41,35 @@ var TipsSlider = React.createClass({
var
arrows
=
this
.
props
.
items
.
length
>
settings
.
slidesToShow
;
var
classes
=
classNames
(
'
tipsslider
'
,
'
nestedcarousel
'
,
'
carousel
'
,
this
.
props
.
className
);
var
stages
=
[];
for
(
var
i
=
0
;
i
<
this
.
props
.
items
.
length
;
i
++
)
{
var
items
=
this
.
props
.
items
[
i
].
t
ip
s
;
var
items
=
this
.
props
.
items
[
i
].
t
humbnail
s
;
var
thumbnails
=
[];
for
(
var
j
=
0
;
j
<
items
.
length
;
j
++
)
{
var
item
=
items
[
j
];
thumbnails
.
push
(<
Thumbnail
key=
{
item
.
id
}
var
item
=
items
[
j
];
thumbnails
.
push
(
<
Thumbnail
key=
{
'
inner_
'
+
i
+
'
_
'
+
j
}
title=
{
item
.
title
}
src=
{
item
.
thumbnailUrl
}
/>)
src=
{
item
.
thumbnailUrl
}
linkTitle
=
{
false
}
/>);
}
stages
.
push
(
<
div
className=
"testing"
key=
{
"
stage_
"
+
i
}
>
<
div
key=
{
'
outer_
'
+
i
}
>
<
h3
>
{
this
.
props
.
items
[
i
].
title
}
</
h3
>
{
thumbnails
}
</
div
>)
}
</
div
>)
;
}
return
(
<
Slider
className=
{
classes
}
arrows=
{
arrows
}
{
...
settings
}
>
{
stages
}
{
stages
}
</
Slider
>
);
}
});
module
.
exports
=
TipsSlider
;
module
.
exports
=
NestedCarousel
;
src/components/nestedcarousel/nestedcarousel.scss
0 → 100644
View file @
c7cc1b62
@import
"../../colors"
;
@import
"../carousel/carousel.scss"
;
.nestedcarousel
{
.slick-slide
{
padding-left
:
60px
;
}
}
src/components/thumbnail/thumbnail.jsx
View file @
c7cc1b62
...
...
@@ -15,7 +15,8 @@ var Thumbnail = React.createClass({
src
:
''
,
type
:
'
project
'
,
showLoves
:
false
,
showRemixes
:
false
showRemixes
:
false
,
linkTitle
:
true
};
},
render
:
function
()
{
...
...
@@ -54,13 +55,20 @@ var Thumbnail = React.createClass({
</
div
>
);
}
var
titleElement
;
if
(
this
.
props
.
linkTitle
)
{
titleElement
=
<
a
href=
{
this
.
props
.
href
}
>
{
this
.
props
.
title
}
</
a
>;
}
else
{
titleElement
=
this
.
props
.
title
;
}
return
(
<
div
className=
{
classes
}
>
<
a
className=
"thumbnail-image"
href=
{
this
.
props
.
href
}
>
<
img
src=
{
this
.
props
.
src
}
/>
</
a
>
<
div
className=
"thumbnail-title"
>
<
a
href=
{
this
.
props
.
href
}
>
{
this
.
props
.
title
}
</
a
>
{
titleElement
}
</
div
>
{
extra
}
</
div
>
...
...
src/components/tipsslider/tipsslider.json
deleted
100644 → 0
View file @
e9cb08d2
[
{
"id"
:
1
,
"type"
:
"project"
,
"title"
:
"Project1"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/add-repeat.gif"
,
"creator"
:
""
,
"href"
:
"/images/microworlds/hiphop/add-repeat.gif"
},
{
"id"
:
2
,
"type"
:
"project"
,
"title"
:
"Project2"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/add-wait.gif"
,
"creator"
:
""
,
"href"
:
"/images/microworlds/hiphop/add-wait.gif"
},
{
"id"
:
3
,
"type"
:
"project"
,
"title"
:
"Project"
,
"thumbnailUrl"
:
""
,
"creator"
:
""
,
"href"
:
"#"
},
{
"id"
:
4
,
"type"
:
"project"
,
"title"
:
"Project"
,
"thumbnailUrl"
:
""
,
"creator"
:
""
,
"href"
:
"#"
},
{
"id"
:
5
,
"type"
:
"project"
,
"title"
:
"Project"
,
"thumbnailUrl"
:
""
,
"creator"
:
""
,
"href"
:
"#"
},
{
"id"
:
6
,
"type"
:
"project"
,
"title"
:
"Project"
,
"thumbnailUrl"
:
""
,
"creator"
:
""
,
"href"
:
"#"
}
]
src/components/tipsslider/tipsslider.scss
deleted
100644 → 0
View file @
e9cb08d2
@import
"../../colors"
;
.tipsslider
{
$icon-size
:
40px
;
$button-offset
:
$icon-size
+
5px
;
$box-content-offset
:
20px
;
//padding: 12px $button-offset;
.box-content
&
{
padding
:
12px
$button-offset
-
20px
;
}
.slick-next
,
.slick-prev
{
margin-top
:
-
$icon-size
/
2
;
width
:
$icon-size
;
height
:
$icon-size
;
&
:before
{
display
:
block
;
background-repeat
:
no-repeat
;
background-position
:
center
center
;
background-size
:
70%
;
width
:
$icon-size
;
height
:
$icon-size
;
font-size
:
$icon-size
;
content
:
""
;
}
&
.slick-disabled
:before
{
opacity
:
1
;
}
}
.slick-prev
{
left
:
0
;
&
:before
{
background-image
:
url("/svgs/carousel/prev_ui-dark-gray.svg")
;
}
&
:hover:before
{
background-image
:
url("/svgs/carousel/prev_ui-blue.svg")
;
background-size
:
90%
;
}
.box-content
&
{
left
:
-
$box-content-offset
;
}
}
.slick-next
{
right
:
0
;
&
:before
{
background-image
:
url("/svgs/carousel/next_ui-dark-gray.svg")
;
}
&
:hover:before
{
background-image
:
url("/svgs/carousel/next_ui-blue.svg")
;
background-size
:
90%
;
}
.box-content
&
{
right
:
-
$box-content-offset
;
}
}
.slick-slide
{
padding-right
:
30px
;
}
}
src/views/microworld_art/microworld_art.json
View file @
c7cc1b62
...
...
@@ -27,21 +27,18 @@
"tips"
:[
{
"title"
:
"Start Dancing"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
1
,
"type"
:
"tip"
,
"title"
:
"First, select a sprite"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/dancer-sprite.png"
},
{
"id"
:
2
,
"type"
:
"tip"
,
"title"
:
"Then, try this script"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/switch-wait.gif"
},
{
"id"
:
3
,
"type"
:
"tip"
,
"title"
:
"Start it!"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/green-flag.gif"
...
...
@@ -50,21 +47,18 @@
},
{
"title"
:
"Repeat the Dance"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
4
,
"type"
:
"tip"
,
"title"
:
"Add another
\"
wait
\"
"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/add-wait.gif"
},
{
"id"
:
5
,
"type"
:
"tip"
,
"title"
:
"Drag this block over"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/add-repeat.gif"
},
{
"id"
:
6
,
"type"
:
"tip"
,
"title"
:
"Start it"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/green-flag.gif"
...
...
@@ -73,15 +67,13 @@
},
{
"title"
:
"Play Music"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
7
,
"type"
:
"tip"
,
"title"
:
"Add music that repeats"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/add-play-sound.gif"
},
{
"id"
:
8
,
"type"
:
"tip"
,
"title"
:
"Start it"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/green-flag.gif"
...
...
@@ -90,21 +82,18 @@
},
{
"title"
:
"Shadow Dance"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
7
,
"type"
:
"tip"
,
"title"
:
"Add this block"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/shadow-dance.gif"
},
{
"id"
:
8
,
"type"
:
"tip"
,
"title"
:
"Start it"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/green-flag.gif"
},
{
"id"
:
9
,
"type"
:
"tip"
,
"title"
:
"Click the stop sign to reset"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/stop.gif"
...
...
@@ -113,21 +102,18 @@
},
{
"title"
:
"More things to try"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
10
,
"type"
:
"tip"
,
"title"
:
"Try different dance moves"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/change-dance-moves.gif"
},
{
"id"
:
11
,
"type"
:
"tip"
,
"title"
:
"Add more moves"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/long-dance-script.png"
},
{
"id"
:
12
,
"type"
:
"tip"
,
"title"
:
"Change the timing"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/change-dance-timing.png"
...
...
src/views/microworld_art/microworld_art.jsx
View file @
c7cc1b62
var
render
=
require
(
'
../../lib/render.jsx
'
);
var
Microworld
=
require
(
'
../../components/microworld/microworld.jsx
'
);
render
(<
Microworld
microworldData=
{
require
(
"
./microworld_art.json
"
)
}
/>,
document
.
getElementById
(
'
view
'
));
var
microworldData
=
require
(
'
./microworld_art.json
'
);
render
(<
Microworld
microworldData=
{
microworldData
}
/>,
document
.
getElementById
(
'
view
'
));
src/views/microworld_fashion/microworld_fashion.json
View file @
c7cc1b62
...
...
@@ -16,15 +16,13 @@
"tips"
:[
{
"title"
:
"Click on blocks to see what they do"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
0
,
"type"
:
"tip"
,
"title"
:
" Try clicking this block "
,
"thumbnailUrl"
:
"/images/microworlds/fashion/click-block-color.gif"
},
{
"id"
:
1
,
"type"
:
"tip"
,
"title"
:
" Or this block"
,
"thumbnailUrl"
:
"/images/microworlds/fashion/click-block-costume.gif"
...
...
@@ -33,21 +31,18 @@
},
{
"title"
:
"Try changing colors"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
2
,
"type"
:
"tip"
,
"title"
:
" First, select a clothing item "
,
"thumbnailUrl"
:
"/images/microworlds/fashion/shirts-sprite.png"
},
{
"id"
:
3
,
"type"
:
"tip"
,
"title"
:
" Then, try this script"
,
"thumbnailUrl"
:
"/images/microworlds/fashion/when-clicked-color.gif"
},
{
"id"
:
4
,
"type"
:
"tip"
,
"title"
:
" Test it out!"
,
"thumbnailUrl"
:
"/images/microworlds/fashion/click-shirt.gif"
...
...
@@ -56,21 +51,18 @@
},
{
"title"
:
"Try changing costumes"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
5
,
"type"
:
"tip"
,
"title"
:
"Select a piece of clothing "
,
"thumbnailUrl"
:
"/images/microworlds/fashion/hats-sprite.png"
},
{
"id"
:
6
,
"type"
:
"tip"
,
"title"
:
"Then, switch costumes"
,
"thumbnailUrl"
:
"/images/microworlds/fashion/when-clicked-costume.gif"
},
{
"id"
:
7
,
"type"
:
"tip"
,
"title"
:
" Now, click it!"
,
"thumbnailUrl"
:
"/images/microworlds/fashion/click-hat.gif"
...
...
@@ -79,21 +71,18 @@
},
{
"title"
:
"Say hello"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
8
,
"type"
:
"tip"
,
"title"
:
"Select the person"
,
"thumbnailUrl"
:
"/images/microworlds/fashion/person-sprite.png"
},
{
"id"
:
9
,
"type"
:
"tip"
,
"title"
:
"Type in a phrase"
,
"thumbnailUrl"
:
"/images/microworlds/fashion/say-something.gif"
},
{
"id"
:
10
,
"type"
:
"tip"
,
"title"
:
"Then, try this script"
,
"thumbnailUrl"
:
"/images/microworlds/fashion/when-clicked-say.gif"
...
...
@@ -102,15 +91,13 @@
},
{
"title"
:
"Move the sprites"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
11
,
"type"
:
"tip"
,
"title"
:
"Select an accessory"
,
"thumbnailUrl"
:
"/images/microworlds/fashion/accessories-sprite.png"
},
{
"id"
:
12
,
"type"
:
"tip"
,
"title"
:
"Tell it where to go"
,
"thumbnailUrl"
:
"/images/microworlds/fashion/when-clicked-goto.gif"
...
...
@@ -119,21 +106,18 @@
},
{
"title"
:
"Other things to try"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
13
,
"type"
:
"tip"
,
"title"
:
"Add a sound "
,
"thumbnailUrl"
:
"/images/microworlds/fashion/play-drum.png"
},
{
"id"
:
14
,
"type"
:
"tip"
,
"title"
:
" Explore other costumes "
,
"thumbnailUrl"
:
"/images/microworlds/fashion/next-costume.png"
},
{
"id"
:
15
,
"type"
:
"tip"
,
"title"
:
"Make longer scripts "
,
"thumbnailUrl"
:
"/images/microworlds/fashion/block-stack.png"
...
...
src/views/microworld_fashion/microworld_fashion.jsx
View file @
c7cc1b62
var
render
=
require
(
'
../../lib/render.jsx
'
);
var
Microworld
=
require
(
'
../../components/microworld/microworld.jsx
'
);
render
(<
Microworld
microworldData=
{
require
(
"
./microworld_fashion.json
"
)
}
/>,
document
.
getElementById
(
'
view
'
));
var
microworldData
=
require
(
'
./microworld_fashion.json
'
);
render
(<
Microworld
microworldData=
{
microworldData
}
/>,
document
.
getElementById
(
'
view
'
));
src/views/microworld_hiphop/microworld_hiphop.json
View file @
c7cc1b62
...
...
@@ -16,21 +16,18 @@
"tips"
:[
{
"title"
:
"Start Dancing"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
1
,
"type"
:
"tip"
,
"title"
:
"First, select a sprite"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/dancer-sprite.png"
},
{
"id"
:
2
,
"type"
:
"tip"
,
"title"
:
"Then, try this script"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/switch-wait.gif"
},
{
"id"
:
3
,
"type"
:
"tip"
,
"title"
:
"Start it!"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/green-flag.gif"
...
...
@@ -39,21 +36,18 @@
},
{
"title"
:
"Repeat the Dance"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
4
,
"type"
:
"tip"
,
"title"
:
"Add another
\"
wait
\"
"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/add-wait.gif"
},
{
"id"
:
5
,
"type"
:
"tip"
,
"title"
:
"Drag this block over"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/add-repeat.gif"
},
{
"id"
:
6
,
"type"
:
"tip"
,
"title"
:
"Start it"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/green-flag.gif"
...
...
@@ -62,15 +56,13 @@
},
{
"title"
:
"Play Music"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
7
,
"type"
:
"tip"
,
"title"
:
"Add music that repeats"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/add-play-sound.gif"
},
{
"id"
:
8
,
"type"
:
"tip"
,
"title"
:
"Start it"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/green-flag.gif"
...
...
@@ -79,21 +71,18 @@
},
{
"title"
:
"Shadow Dance"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
7
,
"type"
:
"tip"
,
"title"
:
"Add this block"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/shadow-dance.gif"
},
{
"id"
:
8
,
"type"
:
"tip"
,
"title"
:
"Start it"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/green-flag.gif"
},
{
"id"
:
9
,
"type"
:
"tip"
,
"title"
:
"Click the stop sign to reset"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/stop.gif"
...
...
@@ -102,21 +91,18 @@
},
{
"title"
:
"More things to try"
,
"t
ip
s"
:[
"t
humbnail
s"
:[
{
"id"
:
10
,
"type"
:
"tip"
,
"title"
:
"Try different dance moves"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/change-dance-moves.gif"
},
{
"id"
:
11
,
"type"
:
"tip"
,
"title"
:
"Add more moves"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/long-dance-script.png"
},
{
"id"
:
12
,
"type"
:
"tip"
,
"title"
:
"Change the timing"
,
"thumbnailUrl"
:
"/images/microworlds/hiphop/change-dance-timing.png"
...
...
src/views/microworld_hiphop/microworld_hiphop.jsx
View file @
c7cc1b62
var
render
=
require
(
'
../../lib/render.jsx
'
);
var
Microworld
=
require
(
'
../../components/microworld/microworld.jsx
'
);
render
(<
Microworld
microworldData=
{
require
(
"
./microworld_hiphop.json
"
)
}
/>,
document
.
getElementById
(
'
view
'
));
var
microworldData
=
require
(
'
./microworld_hiphop.json
'
);
render
(<
Microworld
microworldData=
{
microworldData
}
/>,
document
.
getElementById
(
'
view
'
));
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment