clowne 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +11 -51
- data/.travis.yml +11 -23
- data/Gemfile +9 -9
- data/README.md +8 -7
- data/Rakefile +3 -3
- data/clowne.gemspec +14 -8
- data/docs/.nojekyll +0 -0
- data/docs/.rubocop.yml +8 -2
- data/docs/CNAME +1 -0
- data/docs/README.md +131 -0
- data/docs/_sidebar.md +25 -0
- data/docs/active_record.md +2 -5
- data/docs/after_clone.md +3 -6
- data/docs/after_persist.md +7 -10
- data/docs/architecture.md +2 -5
- data/docs/assets/docsify.min.js +1 -0
- data/docs/assets/prism-ruby.min.js +1 -0
- data/docs/assets/styles.css +348 -0
- data/docs/assets/vue.css +1 -0
- data/docs/clone_mapper.md +2 -5
- data/docs/customization.md +1 -4
- data/docs/exclude_association.md +1 -4
- data/docs/finalize.md +4 -8
- data/docs/from_v02_to_v1.md +2 -10
- data/docs/getting_started.md +171 -0
- data/docs/implicit_cloner.md +1 -4
- data/docs/include_association.md +3 -6
- data/docs/index.html +29 -0
- data/docs/init_as.md +4 -8
- data/docs/inline_configuration.md +1 -4
- data/docs/nullify.md +1 -5
- data/docs/operation.md +3 -6
- data/docs/parameters.md +5 -8
- data/docs/sequel.md +1 -4
- data/docs/supported_adapters.md +3 -6
- data/docs/testing.md +18 -21
- data/docs/traits.md +1 -4
- data/gemfiles/activerecord42.gemfile +5 -5
- data/gemfiles/jruby.gemfile +6 -6
- data/gemfiles/railsmaster.gemfile +6 -6
- data/lib/clowne.rb +11 -11
- data/lib/clowne/adapters/active_record.rb +3 -3
- data/lib/clowne/adapters/active_record/associations.rb +7 -7
- data/lib/clowne/adapters/active_record/associations/base.rb +1 -1
- data/lib/clowne/adapters/active_record/associations/belongs_to.rb +1 -1
- data/lib/clowne/adapters/active_record/associations/has_one.rb +1 -1
- data/lib/clowne/adapters/active_record/resolvers/association.rb +1 -1
- data/lib/clowne/adapters/base.rb +6 -6
- data/lib/clowne/adapters/sequel.rb +7 -7
- data/lib/clowne/adapters/sequel/associations.rb +6 -6
- data/lib/clowne/adapters/sequel/associations/base.rb +2 -2
- data/lib/clowne/adapters/sequel/associations/many_to_many.rb +4 -4
- data/lib/clowne/adapters/sequel/associations/one_to_many.rb +1 -1
- data/lib/clowne/adapters/sequel/associations/one_to_one.rb +1 -1
- data/lib/clowne/adapters/sequel/operation.rb +3 -2
- data/lib/clowne/adapters/sequel/resolvers/after_persist.rb +1 -1
- data/lib/clowne/adapters/sequel/resolvers/association.rb +1 -1
- data/lib/clowne/adapters/sequel/specifications/after_persist_does_not_support.rb +1 -1
- data/lib/clowne/cloner.rb +8 -8
- data/lib/clowne/declarations.rb +15 -15
- data/lib/clowne/declarations/after_clone.rb +1 -1
- data/lib/clowne/declarations/after_persist.rb +1 -1
- data/lib/clowne/declarations/finalize.rb +1 -1
- data/lib/clowne/declarations/include_association.rb +1 -1
- data/lib/clowne/declarations/init_as.rb +1 -1
- data/lib/clowne/declarations/nullify.rb +1 -1
- data/lib/clowne/ext/orm_ext.rb +1 -1
- data/lib/clowne/ext/record_key.rb +1 -1
- data/lib/clowne/ext/string_constantize.rb +1 -1
- data/lib/clowne/ext/yield_self_then.rb +1 -1
- data/lib/clowne/planner.rb +1 -1
- data/lib/clowne/rspec.rb +3 -3
- data/lib/clowne/rspec/clone_association.rb +3 -3
- data/lib/clowne/rspec/clone_associations.rb +2 -2
- data/lib/clowne/rspec/helpers.rb +1 -1
- data/lib/clowne/utils/clone_mapper.rb +1 -1
- data/lib/clowne/utils/operation.rb +3 -3
- data/lib/clowne/utils/params.rb +1 -1
- data/lib/clowne/version.rb +1 -1
- metadata +50 -35
- data/docs/alternatives.md +0 -26
- data/docs/basic_example.md +0 -83
- data/docs/installation.md +0 -46
- data/docs/overview.md +0 -25
- data/docs/web/.gitignore +0 -11
- data/docs/web/README.md +0 -6
- data/docs/web/core/Footer.js +0 -88
- data/docs/web/i18n/en.json +0 -141
- data/docs/web/package.json +0 -14
- data/docs/web/pages/en/help.js +0 -50
- data/docs/web/pages/en/index.js +0 -231
- data/docs/web/pages/en/users.js +0 -47
- data/docs/web/sidebars.json +0 -38
- data/docs/web/siteConfig.js +0 -46
- data/docs/web/static/css/custom.css +0 -235
- data/docs/web/static/fonts/FiraCode-Medium.woff +0 -0
- data/docs/web/static/fonts/FiraCode-Regular.woff +0 -0
- data/docs/web/static/img/favicon/favicon.ico +0 -0
- data/docs/web/yarn.lock +0 -1741
data/docs/web/pages/en/help.js
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) 2017-present, Facebook, Inc.
|
3
|
-
*
|
4
|
-
* This source code is licensed under the MIT license found in the
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
6
|
-
*/
|
7
|
-
|
8
|
-
const React = require('react');
|
9
|
-
|
10
|
-
const CompLibrary = require('../../core/CompLibrary.js');
|
11
|
-
const Container = CompLibrary.Container;
|
12
|
-
const GridBlock = CompLibrary.GridBlock;
|
13
|
-
|
14
|
-
const siteConfig = require(process.cwd() + '/siteConfig.js');
|
15
|
-
|
16
|
-
class Help extends React.Component {
|
17
|
-
render() {
|
18
|
-
const supportLinks = [
|
19
|
-
{
|
20
|
-
content:
|
21
|
-
'Learn more using the [documentation on this site.](/test-site/docs/en/doc1.html)',
|
22
|
-
title: 'Browse Docs',
|
23
|
-
},
|
24
|
-
{
|
25
|
-
content: 'Ask questions about the documentation and project',
|
26
|
-
title: 'Join the community',
|
27
|
-
},
|
28
|
-
{
|
29
|
-
content: "Find out what's new with this project",
|
30
|
-
title: 'Stay up to date',
|
31
|
-
},
|
32
|
-
];
|
33
|
-
|
34
|
-
return (
|
35
|
-
<div className="docMainWrapper wrapper">
|
36
|
-
<Container className="mainContainer documentContainer postContainer">
|
37
|
-
<div className="post">
|
38
|
-
<header className="postHeader">
|
39
|
-
<h2>Need help?</h2>
|
40
|
-
</header>
|
41
|
-
<p>This project is maintained by a dedicated group of people.</p>
|
42
|
-
<GridBlock contents={supportLinks} layout="threeColumn" />
|
43
|
-
</div>
|
44
|
-
</Container>
|
45
|
-
</div>
|
46
|
-
);
|
47
|
-
}
|
48
|
-
}
|
49
|
-
|
50
|
-
module.exports = Help;
|
data/docs/web/pages/en/index.js
DELETED
@@ -1,231 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) 2017-present, Facebook, Inc.
|
3
|
-
*
|
4
|
-
* This source code is licensed under the MIT license found in the
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
6
|
-
*/
|
7
|
-
|
8
|
-
const React = require('react');
|
9
|
-
|
10
|
-
const CompLibrary = require('../../core/CompLibrary.js');
|
11
|
-
const MarkdownBlock = CompLibrary.MarkdownBlock; /* Used to read markdown */
|
12
|
-
const Container = CompLibrary.Container;
|
13
|
-
const GridBlock = CompLibrary.GridBlock;
|
14
|
-
|
15
|
-
const siteConfig = require(process.cwd() + '/siteConfig.js');
|
16
|
-
|
17
|
-
function imgUrl(img) {
|
18
|
-
return siteConfig.baseUrl + 'img/' + img;
|
19
|
-
}
|
20
|
-
|
21
|
-
function docUrl(doc, language) {
|
22
|
-
return siteConfig.baseUrl + 'docs/' + (language ? language + '/' : '') + doc;
|
23
|
-
}
|
24
|
-
|
25
|
-
function pageUrl(page, language) {
|
26
|
-
return siteConfig.baseUrl + (language ? language + '/' : '') + page;
|
27
|
-
}
|
28
|
-
|
29
|
-
class Button extends React.Component {
|
30
|
-
render() {
|
31
|
-
return (
|
32
|
-
<div className="pluginWrapper buttonWrapper">
|
33
|
-
<a className={`button ${this.props.className}`} href={this.props.href} target={this.props.target}>
|
34
|
-
{this.props.children}
|
35
|
-
</a>
|
36
|
-
</div>
|
37
|
-
);
|
38
|
-
}
|
39
|
-
}
|
40
|
-
|
41
|
-
Button.defaultProps = {
|
42
|
-
target: '_self',
|
43
|
-
className: '',
|
44
|
-
};
|
45
|
-
|
46
|
-
const SplashContainer = props => (
|
47
|
-
<div className="homeContainer">
|
48
|
-
<div className="homeSplashFade">
|
49
|
-
<div className="wrapper homeWrapper">{props.children}</div>
|
50
|
-
</div>
|
51
|
-
</div>
|
52
|
-
);
|
53
|
-
|
54
|
-
const Logo = props => (
|
55
|
-
<div className="projectLogo">
|
56
|
-
</div>
|
57
|
-
);
|
58
|
-
|
59
|
-
const ProjectTitle = props => (
|
60
|
-
<h2 className="projectTitle">
|
61
|
-
<span className="projectTitleName">{siteConfig.title}</span>
|
62
|
-
<small>{siteConfig.tagline}</small>
|
63
|
-
<p>
|
64
|
-
<a href="https://badge.fury.io/rb/clowne"><image title="Gem Version" src="https://badge.fury.io/rb/clowne.svg" /></a>
|
65
|
-
</p>
|
66
|
-
</h2>
|
67
|
-
);
|
68
|
-
|
69
|
-
const PromoSection = props => (
|
70
|
-
<div className="section promoSection">
|
71
|
-
<div className="promoRow">
|
72
|
-
<div className="pluginRowBlock">{props.children}</div>
|
73
|
-
</div>
|
74
|
-
</div>
|
75
|
-
);
|
76
|
-
|
77
|
-
class HomeSplash extends React.Component {
|
78
|
-
render() {
|
79
|
-
let language = this.props.language || '';
|
80
|
-
return (
|
81
|
-
<SplashContainer>
|
82
|
-
<div className="inner">
|
83
|
-
<ProjectTitle />
|
84
|
-
<PromoSection>
|
85
|
-
<Button href={docUrl("installation.html")}>Getting Started</Button>
|
86
|
-
</PromoSection>
|
87
|
-
</div>
|
88
|
-
</SplashContainer>
|
89
|
-
);
|
90
|
-
}
|
91
|
-
}
|
92
|
-
|
93
|
-
const Block = props => (
|
94
|
-
<Container
|
95
|
-
padding={props.padding}
|
96
|
-
id={props.id}
|
97
|
-
background={props.background}>
|
98
|
-
<GridBlock align="center" contents={props.children} layout={props.layout} />
|
99
|
-
</Container>
|
100
|
-
);
|
101
|
-
|
102
|
-
Block.defaultProps = {
|
103
|
-
padding: ['bottom', 'top'],
|
104
|
-
};
|
105
|
-
|
106
|
-
const Features = props => (
|
107
|
-
<Block layout="twoColumn" padding={['bottom']}>
|
108
|
-
{[
|
109
|
-
{
|
110
|
-
content: 'Rich DSL out-of-the-box',
|
111
|
-
imageAlign: 'top',
|
112
|
-
title: 'Powerful',
|
113
|
-
},
|
114
|
-
{
|
115
|
-
content: 'Supports ActiveRecord and Sequel<br/><small><em>ROM is coming soon!</em></small>',
|
116
|
-
imageAlign: 'top',
|
117
|
-
title: 'ORM adapters',
|
118
|
-
},
|
119
|
-
{
|
120
|
-
content: 'Easy to extend for your needs',
|
121
|
-
imageAlign: 'top',
|
122
|
-
title: 'Customizable',
|
123
|
-
},
|
124
|
-
{
|
125
|
-
content: "It's just Ruby without any dependency",
|
126
|
-
imageAlign: 'top',
|
127
|
-
title: 'Rails-free',
|
128
|
-
},
|
129
|
-
]}
|
130
|
-
</Block>
|
131
|
-
);
|
132
|
-
|
133
|
-
const FeatureCallout = props => (
|
134
|
-
<div
|
135
|
-
className="productShowcaseSection paddingBottom"
|
136
|
-
style={{textAlign: 'center'}}>
|
137
|
-
<h2>Feature Callout</h2>
|
138
|
-
<MarkdownBlock>These are features of this project</MarkdownBlock>
|
139
|
-
</div>
|
140
|
-
);
|
141
|
-
|
142
|
-
const LearnHow = props => (
|
143
|
-
<Block background="light">
|
144
|
-
{[
|
145
|
-
{
|
146
|
-
content: 'Talk about learning how to use this',
|
147
|
-
image: imgUrl('docusaurus.svg'),
|
148
|
-
imageAlign: 'right',
|
149
|
-
title: 'Learn How',
|
150
|
-
},
|
151
|
-
]}
|
152
|
-
</Block>
|
153
|
-
);
|
154
|
-
|
155
|
-
const TryOut = props => (
|
156
|
-
<Block id="try">
|
157
|
-
{[
|
158
|
-
{
|
159
|
-
content: 'Talk about trying this out',
|
160
|
-
image: imgUrl('docusaurus.svg'),
|
161
|
-
imageAlign: 'left',
|
162
|
-
title: 'Try it Out',
|
163
|
-
},
|
164
|
-
]}
|
165
|
-
</Block>
|
166
|
-
);
|
167
|
-
|
168
|
-
const Description = props => (
|
169
|
-
<Block background="dark">
|
170
|
-
{[
|
171
|
-
{
|
172
|
-
content: 'This is another description of how this project is useful',
|
173
|
-
image: imgUrl('docusaurus.svg'),
|
174
|
-
imageAlign: 'right',
|
175
|
-
title: 'Description',
|
176
|
-
},
|
177
|
-
]}
|
178
|
-
</Block>
|
179
|
-
);
|
180
|
-
|
181
|
-
const Showcase = props => {
|
182
|
-
if ((siteConfig.users || []).length === 0) {
|
183
|
-
return null;
|
184
|
-
}
|
185
|
-
const showcase = siteConfig.users
|
186
|
-
.filter(user => {
|
187
|
-
return user.pinned;
|
188
|
-
})
|
189
|
-
.map((user, i) => {
|
190
|
-
return (
|
191
|
-
<a href={user.infoLink} key={i}>
|
192
|
-
<img src={user.image} title={user.caption} />
|
193
|
-
</a>
|
194
|
-
);
|
195
|
-
});
|
196
|
-
|
197
|
-
return (
|
198
|
-
<div className="productShowcaseSection paddingBottom">
|
199
|
-
<h2>{"Who's Using This?"}</h2>
|
200
|
-
<p>This project is used by all these people</p>
|
201
|
-
<div className="logos">{showcase}</div>
|
202
|
-
<div className="more-users">
|
203
|
-
<a className="button" href={pageUrl('users.html', props.language)}>
|
204
|
-
More {siteConfig.title} Users
|
205
|
-
</a>
|
206
|
-
</div>
|
207
|
-
</div>
|
208
|
-
);
|
209
|
-
};
|
210
|
-
|
211
|
-
class Index extends React.Component {
|
212
|
-
render() {
|
213
|
-
let language = this.props.language || '';
|
214
|
-
|
215
|
-
return (
|
216
|
-
<div>
|
217
|
-
<HomeSplash language={language} />
|
218
|
-
<div className="mainContainer">
|
219
|
-
<Features />
|
220
|
-
{/* <FeatureCallout /> */}
|
221
|
-
{/* <LearnHow /> */}
|
222
|
-
{/* <TryOut /> */}
|
223
|
-
{/* <Description /> */}
|
224
|
-
{/* <Showcase language={language} /> */}
|
225
|
-
</div>
|
226
|
-
</div>
|
227
|
-
);
|
228
|
-
}
|
229
|
-
}
|
230
|
-
|
231
|
-
module.exports = Index;
|
data/docs/web/pages/en/users.js
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) 2017-present, Facebook, Inc.
|
3
|
-
*
|
4
|
-
* This source code is licensed under the MIT license found in the
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
6
|
-
*/
|
7
|
-
|
8
|
-
const React = require('react');
|
9
|
-
|
10
|
-
const CompLibrary = require('../../core/CompLibrary.js');
|
11
|
-
const Container = CompLibrary.Container;
|
12
|
-
|
13
|
-
const siteConfig = require(process.cwd() + '/siteConfig.js');
|
14
|
-
|
15
|
-
class Users extends React.Component {
|
16
|
-
render() {
|
17
|
-
const showcase = siteConfig.users.map((user, i) => {
|
18
|
-
return (
|
19
|
-
<a href={user.infoLink} key={i}>
|
20
|
-
<img src={user.image} title={user.caption} />
|
21
|
-
</a>
|
22
|
-
);
|
23
|
-
});
|
24
|
-
|
25
|
-
return (
|
26
|
-
<div className="mainContainer">
|
27
|
-
<Container padding={['bottom', 'top']}>
|
28
|
-
<div className="showcaseSection">
|
29
|
-
<div className="prose">
|
30
|
-
<h1>Who's Using This?</h1>
|
31
|
-
<p>This project is used by many folks</p>
|
32
|
-
</div>
|
33
|
-
<div className="logos">{showcase}</div>
|
34
|
-
<p>Are you using this project?</p>
|
35
|
-
<a
|
36
|
-
href="https://github.com/facebook/docusaurus/edit/master/website/siteConfig.js"
|
37
|
-
className="button">
|
38
|
-
Add your company
|
39
|
-
</a>
|
40
|
-
</div>
|
41
|
-
</Container>
|
42
|
-
</div>
|
43
|
-
);
|
44
|
-
}
|
45
|
-
}
|
46
|
-
|
47
|
-
module.exports = Users;
|
data/docs/web/sidebars.json
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"docs": {
|
3
|
-
"Getting Started": [
|
4
|
-
"installation",
|
5
|
-
"basic_example",
|
6
|
-
"overview",
|
7
|
-
"alternatives"
|
8
|
-
],
|
9
|
-
"API": [
|
10
|
-
"operation",
|
11
|
-
"include_association",
|
12
|
-
"exclude_association",
|
13
|
-
"nullify",
|
14
|
-
"finalize",
|
15
|
-
"after_clone",
|
16
|
-
"after_persist",
|
17
|
-
"init_as",
|
18
|
-
"traits",
|
19
|
-
"parameters"
|
20
|
-
],
|
21
|
-
"Adapters": [
|
22
|
-
"supported_adapters",
|
23
|
-
"active_record",
|
24
|
-
"sequel"
|
25
|
-
],
|
26
|
-
"Advanced Options": [
|
27
|
-
"implicit_cloner",
|
28
|
-
"inline_configuration",
|
29
|
-
"clone_mapper",
|
30
|
-
"architecture",
|
31
|
-
"testing",
|
32
|
-
"customization"
|
33
|
-
],
|
34
|
-
"Upgrade Notes": [
|
35
|
-
"from_v02_to_v10"
|
36
|
-
]
|
37
|
-
}
|
38
|
-
}
|
data/docs/web/siteConfig.js
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) 2017-present, Facebook, Inc.
|
3
|
-
*
|
4
|
-
* This source code is licensed under the MIT license found in the
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
6
|
-
*/
|
7
|
-
|
8
|
-
const siteConfig = {
|
9
|
-
title: 'Clowne' /* title for your website */,
|
10
|
-
tagline: 'A flexible gem for cloning your models',
|
11
|
-
url: 'http://clowne.evilmartians.io' /* your website url */,
|
12
|
-
cname: 'clowne.evilmartians.io',
|
13
|
-
baseUrl: '/' /* base url for your project */,
|
14
|
-
customDocsPath: '../docs',
|
15
|
-
projectName: 'clowne',
|
16
|
-
headerLinks: [
|
17
|
-
{doc: 'basic_example', label: 'Docs'},
|
18
|
-
{href: 'https://github.com/palkan/clowne', label: 'GitHub'},
|
19
|
-
],
|
20
|
-
users: [], /* users, */
|
21
|
-
/* path to images for header/footer */
|
22
|
-
// headerIcon: 'img/docusaurus.svg',
|
23
|
-
favicon: 'img/favicon/favicon.ico',
|
24
|
-
/* colors for website */
|
25
|
-
colors: {
|
26
|
-
primaryColor: '#9FA628', // '#ff5e5e'
|
27
|
-
secondaryColor: '#e3e3e3',
|
28
|
-
},
|
29
|
-
// This copyright info is used in /core/Footer.js and blog rss/atom feeds.
|
30
|
-
copyright:
|
31
|
-
'Copyright © ' +
|
32
|
-
new Date().getFullYear() +
|
33
|
-
' Evil Martians',
|
34
|
-
// organizationName: 'deltice', // or set an env variable ORGANIZATION_NAME
|
35
|
-
highlight: {
|
36
|
-
// Highlight.js theme to use for syntax highlighting in code blocks
|
37
|
-
theme: 'atom-one-light',
|
38
|
-
},
|
39
|
-
scripts: ['https://buttons.github.io/buttons.js'],
|
40
|
-
// You may provide arbitrary config keys to be used as needed by your template.
|
41
|
-
repoUrl: 'https://github.com/palkan/clowne',
|
42
|
-
gemUrl: 'https://rubygems.org/gems/clowne',
|
43
|
-
gaTrackingId: 'UA-104346673-2',
|
44
|
-
};
|
45
|
-
|
46
|
-
module.exports = siteConfig;
|
@@ -1,235 +0,0 @@
|
|
1
|
-
/* your custom css */
|
2
|
-
|
3
|
-
@font-face {
|
4
|
-
font-weight: 400;
|
5
|
-
font-style: normal;
|
6
|
-
font-family: "Stem Text";
|
7
|
-
src: url("//cdn.evilmartians.com/front/fonts/subset-StemText-Regular.woff") format("woff");
|
8
|
-
}
|
9
|
-
@font-face {
|
10
|
-
font-weight: 700;
|
11
|
-
font-style: normal;
|
12
|
-
font-family: "Stem Text";
|
13
|
-
src: url("//cdn.evilmartians.com/front/fonts/subset-StemText-Bold.woff") format("woff");
|
14
|
-
}
|
15
|
-
|
16
|
-
@font-face {
|
17
|
-
font-family: "Fira Code";
|
18
|
-
src: url("../fonts/FiraCode-Regular.woff") format("woff");
|
19
|
-
}
|
20
|
-
|
21
|
-
body {
|
22
|
-
font: 18px/30px "Stem Text", "Arial", sans-serif;
|
23
|
-
color: #363636;
|
24
|
-
background: #fff;
|
25
|
-
}
|
26
|
-
|
27
|
-
pre code {
|
28
|
-
font-family: "Fira Code";
|
29
|
-
font-size: 16px;
|
30
|
-
}
|
31
|
-
|
32
|
-
code {
|
33
|
-
font-family: "Fira Code";
|
34
|
-
font-size: 0.9em;
|
35
|
-
}
|
36
|
-
|
37
|
-
p {
|
38
|
-
line-height: initial;
|
39
|
-
}
|
40
|
-
|
41
|
-
footer .sitemap div {
|
42
|
-
flex: none;
|
43
|
-
}
|
44
|
-
|
45
|
-
.fixedHeaderContainer {
|
46
|
-
box-sizing: border-box;
|
47
|
-
background: #fff;
|
48
|
-
border-bottom: solid 1px #e3e3e3;
|
49
|
-
}
|
50
|
-
|
51
|
-
.fixedHeaderContainer a {
|
52
|
-
color: #9FA628;
|
53
|
-
}
|
54
|
-
|
55
|
-
header h2 {
|
56
|
-
color: #9FA628;
|
57
|
-
text-transform: uppercase;
|
58
|
-
}
|
59
|
-
|
60
|
-
.container .wrapper h2 {
|
61
|
-
font-weight: bold;
|
62
|
-
}
|
63
|
-
|
64
|
-
.mainContainer .wrapper a {
|
65
|
-
text-decoration: underline;
|
66
|
-
}
|
67
|
-
|
68
|
-
.projectTitle {
|
69
|
-
color: #111;
|
70
|
-
}
|
71
|
-
|
72
|
-
.projectTitleName {
|
73
|
-
color: #9FA628;
|
74
|
-
}
|
75
|
-
|
76
|
-
.mainContainer .wrapper a:hover {
|
77
|
-
text-decoration: none;
|
78
|
-
}
|
79
|
-
|
80
|
-
.mainContainer .wrapper .post h3 {
|
81
|
-
font-weight: bold;
|
82
|
-
}
|
83
|
-
|
84
|
-
small {
|
85
|
-
font-size: 80%;
|
86
|
-
}
|
87
|
-
|
88
|
-
.navigationSlider .slidingNav ul li a {
|
89
|
-
color: #9FA628;
|
90
|
-
}
|
91
|
-
|
92
|
-
nav.toc .toggleNav .navGroup.navGroupActive {
|
93
|
-
background: #fafafa;
|
94
|
-
color: #363636;
|
95
|
-
}
|
96
|
-
|
97
|
-
.mainContainer .wrapper .post .postHeader h1 {
|
98
|
-
margin-bottom: 30px;
|
99
|
-
}
|
100
|
-
|
101
|
-
.hljs-doctag {
|
102
|
-
color: #a0a1a7;
|
103
|
-
}
|
104
|
-
|
105
|
-
@keyframes humanoids-blink{
|
106
|
-
|
107
|
-
0%, 48%{
|
108
|
-
transform: scaleY(1);
|
109
|
-
}
|
110
|
-
|
111
|
-
50%{
|
112
|
-
transform: scaleY(0);
|
113
|
-
}
|
114
|
-
|
115
|
-
52%, 100%{
|
116
|
-
transform: scaleY(1);
|
117
|
-
}
|
118
|
-
}
|
119
|
-
|
120
|
-
.humanoids{
|
121
|
-
position: absolute;
|
122
|
-
bottom: -10px;
|
123
|
-
width: 150px;
|
124
|
-
height: 60px;
|
125
|
-
margin: 0 auto 0 -10px;
|
126
|
-
font-size: 0;
|
127
|
-
}
|
128
|
-
.humanoids circle{
|
129
|
-
transform: scaleY(1);
|
130
|
-
transform-origin: 50%;
|
131
|
-
animation-duration: 8s;
|
132
|
-
animation-name: humanoids-blink;
|
133
|
-
animation-iteration-count: infinite;
|
134
|
-
}
|
135
|
-
.humanoids svg{
|
136
|
-
height: 60px;
|
137
|
-
}
|
138
|
-
.humanoids__human, .humanoids__martian{
|
139
|
-
position: absolute;
|
140
|
-
width: 80px;
|
141
|
-
height: 90px;
|
142
|
-
transition: transform 300ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
|
143
|
-
transform: translateY(0);
|
144
|
-
}
|
145
|
-
.humanoids__human:hover, .humanoids__martian:hover{
|
146
|
-
transform: translateY(-12px);
|
147
|
-
}
|
148
|
-
.humanoids__martian{
|
149
|
-
left: 0;
|
150
|
-
}
|
151
|
-
.humanoids__human{
|
152
|
-
right: 0;
|
153
|
-
}
|
154
|
-
.humanoids__human circle{
|
155
|
-
animation-delay: 0.5s;
|
156
|
-
}
|
157
|
-
|
158
|
-
footer{
|
159
|
-
width: 100%;
|
160
|
-
z-index: 20;
|
161
|
-
padding: 60px;
|
162
|
-
justify-content: flex-end;
|
163
|
-
position: relative;
|
164
|
-
overflow: hidden;
|
165
|
-
}
|
166
|
-
|
167
|
-
footer.nav-footer {
|
168
|
-
box-shadow: none;
|
169
|
-
background: #363636;
|
170
|
-
}
|
171
|
-
|
172
|
-
footer .sitemap a {
|
173
|
-
display: inline;
|
174
|
-
}
|
175
|
-
|
176
|
-
footer h5{
|
177
|
-
color: white;
|
178
|
-
font-weight: normal;
|
179
|
-
}
|
180
|
-
.footer--block{
|
181
|
-
color: white;
|
182
|
-
font-size: 14px;
|
183
|
-
position: relative;
|
184
|
-
}
|
185
|
-
|
186
|
-
.footer--copy {
|
187
|
-
margin: 0 0 10px;
|
188
|
-
}
|
189
|
-
|
190
|
-
.footer--block.legals{
|
191
|
-
color:rgba(255, 255, 255, 0.6);
|
192
|
-
}
|
193
|
-
.footer--humanoids{
|
194
|
-
position: absolute;
|
195
|
-
bottom: -10px;
|
196
|
-
margin-left: 50%;
|
197
|
-
left: -60px;
|
198
|
-
}
|
199
|
-
.copy{
|
200
|
-
position: relative;
|
201
|
-
}
|
202
|
-
.copy:before{
|
203
|
-
content: '©';
|
204
|
-
position: absolute;
|
205
|
-
left: -20px;
|
206
|
-
top: 0;
|
207
|
-
line-height: 10px;
|
208
|
-
}
|
209
|
-
|
210
|
-
@media only screen and (min-device-width: 360px) and (max-device-width: 736px) {
|
211
|
-
.footer--block:not(:first-child) {
|
212
|
-
margin-top: 2em;
|
213
|
-
}
|
214
|
-
}
|
215
|
-
|
216
|
-
@media only screen and (min-width: 1024px) {
|
217
|
-
}
|
218
|
-
|
219
|
-
@media only screen and (max-width: 1023px) {
|
220
|
-
}
|
221
|
-
|
222
|
-
@media only screen and (min-width: 1400px) {
|
223
|
-
}
|
224
|
-
|
225
|
-
@media only screen and (min-width: 1500px) {
|
226
|
-
}
|
227
|
-
|
228
|
-
.projectTitleName{
|
229
|
-
font-weight: bold;
|
230
|
-
}
|
231
|
-
|
232
|
-
.mainContainer {
|
233
|
-
background: none;
|
234
|
-
border-top: 1px solid #e3e3e3;
|
235
|
-
}
|