Skip to content

Instantly share code, notes, and snippets.

@machour
Created November 9, 2017 19:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save machour/6d14cbe96c7cbcb095401c8aa0c84a61 to your computer and use it in GitHub Desktop.
Save machour/6d14cbe96c7cbcb095401c8aa0c84a61 to your computer and use it in GitHub Desktop.
diff --git a/src/components/github-htmlview.component.js b/src/components/github-htmlview.component.js
index 7d68ffb..2dc3eee 100644
--- a/src/components/github-htmlview.component.js
+++ b/src/components/github-htmlview.component.js
@@ -197,6 +197,8 @@ export class GithubHtmlView extends Component {
/<span class="email-hidden-toggle"><a href="#">…<\/a><\/span>/g,
''
)
+ .replace(/<\/summary>/g, '</summary><hidden>')
+ .replace(/<\/details>/g, '</hidden></details>')
// Remove links & spans around images
.replace(/<a[^>]+><img([^>]+)><\/a>/g, '<img$1>')
.replace(/<span[^>]*><img([^>]+)><\/span>/g, '<img$1>')
@@ -243,7 +245,7 @@ export class GithubHtmlView extends Component {
<View key={index}>{defaultRenderer(node.children, node)}</View>
),
code: (node, index, siblings, parent, defaultRenderer) => {
- if (parent.name === 'pre') {
+ if (parent && parent.name === 'pre') {
return (
<SyntaxHighlighter
key={index}
@@ -294,6 +296,32 @@ export class GithubHtmlView extends Component {
return undefined;
},
+ details: (node, index, siblings, parent, defaultRenderer) => {
+ const tags = onlyTagsChildren(node);
+
+ return (
+ <ToggleView
+ TouchableView={collapse => {
+ const prefix = collapse ? '▸' : '▾';
+
+ return [
+ <Text style={{ textSize: 20 }}>{prefix}</Text>,
+ defaultRenderer([tags[0]], node),
+ ];
+ }}
+ TouchableStyle={{
+ flexDirection: 'row',
+ justifyContent: 'flex-start',
+ alignItems: 'center',
+ }}
+ >
+ {defaultRenderer([tags[1]], node)}
+ </ToggleView>
+ );
+ },
+ summary: (node, index, siblings, parent, defaultRenderer) => {
+ return <View>{defaultRenderer(node.children, parent)}</View>;
+ },
img: (node, index, siblings, parent, defaultRenderer) => {
if (hasAncestor(node, ['ol', 'ul', 'span'])) {
return (
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment