2015-02-12 04:26:43 +00:00
|
|
|
/**
|
2015-03-23 17:55:49 +00:00
|
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* This source code is licensed under the BSD-style license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
*
|
2015-02-12 04:26:43 +00:00
|
|
|
* @providesModule Header
|
|
|
|
*/
|
2016-11-21 01:49:21 +00:00
|
|
|
'use strict';
|
2015-02-12 04:26:43 +00:00
|
|
|
|
|
|
|
var React = require('React');
|
2016-11-21 01:49:21 +00:00
|
|
|
|
2017-04-12 23:09:48 +00:00
|
|
|
var PropTypes = require('prop-types');
|
|
|
|
|
2015-02-12 22:43:41 +00:00
|
|
|
var slugify = require('slugify');
|
2015-02-12 04:26:43 +00:00
|
|
|
|
|
|
|
var Header = React.createClass({
|
2016-02-29 17:20:24 +00:00
|
|
|
contextTypes: {
|
2017-04-12 23:09:48 +00:00
|
|
|
permalink: PropTypes.string
|
2016-02-29 15:32:56 +00:00
|
|
|
},
|
|
|
|
|
2015-02-12 04:26:43 +00:00
|
|
|
render: function() {
|
2015-02-12 22:43:41 +00:00
|
|
|
var slug = slugify(this.props.toSlug || this.props.children);
|
2015-03-16 02:54:14 +00:00
|
|
|
var H = 'h' + this.props.level;
|
2016-02-29 17:20:24 +00:00
|
|
|
var base = this.context.permalink || '';
|
2015-03-16 02:54:14 +00:00
|
|
|
return (
|
|
|
|
<H {...this.props}>
|
2016-11-21 01:49:21 +00:00
|
|
|
<a className="anchor" name={slug} />
|
2015-02-12 04:26:43 +00:00
|
|
|
{this.props.children}
|
2016-02-29 17:20:24 +00:00
|
|
|
{' '}<a className="hash-link" href={base + '#' + slug}>#</a>
|
2015-02-12 04:26:43 +00:00
|
|
|
</H>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
module.exports = Header;
|