1
0
mirror of https://github.com/oceanprotocol/docs.git synced 2024-11-26 19:49:26 +01:00

output tweaks

This commit is contained in:
Matthias Kretschmann 2021-02-18 09:08:32 +01:00
parent 79acdfaee6
commit 09291aaa90
Signed by: m
GPG Key ID: 606EEEF3C479A91F
3 changed files with 92 additions and 85 deletions

138
package-lock.json generated
View File

@ -3155,13 +3155,20 @@
}, },
"dependencies": { "dependencies": {
"@graphql-tools/utils": { "@graphql-tools/utils": {
"version": "7.1.4", "version": "7.2.5",
"resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.1.4.tgz", "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.2.5.tgz",
"integrity": "sha512-4lxmstMpgHSM1ULD+1X5AcPFaizkdBubB7H9Rqr7Wh6L9bxUHBHFB3bhaFXT7FI0xE01Pt0IMsZadOIlhVTXrg==", "integrity": "sha512-S9RUkPimq+5eEDohDjiq/JCPUsiZblKRG8ve+diUwF1f8+r6FV2xGXrOt0qhQJiMxIO+BOK3DU9c+U3tX9Jo0w==",
"requires": { "requires": {
"@ardatan/aggregate-error": "0.0.6", "@ardatan/aggregate-error": "0.0.6",
"camel-case": "4.1.2", "camel-case": "4.1.2",
"tslib": "~2.0.1" "tslib": "~2.1.0"
},
"dependencies": {
"tslib": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
"integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
}
} }
}, },
"is-promise": { "is-promise": {
@ -3177,27 +3184,27 @@
} }
}, },
"@graphql-tools/delegate": { "@graphql-tools/delegate": {
"version": "7.0.7", "version": "7.0.9",
"resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-7.0.7.tgz", "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-7.0.9.tgz",
"integrity": "sha512-2sze+CJxu37b4jcQ4fyj6ap9TMnx8+NBtApSs1nWIVENzPE2510aNTsBHgSdTwSeV/tVIFkAtZZAlMEGYGXzQA==", "integrity": "sha512-nlelOb354cyweV+SpTXkoGZHKgJ1PwPkHWq/0RXM5LllQsR3OrSQKKWMrd1g9dyawEZbadCF3fDJJWSQ4HOg2g==",
"requires": { "requires": {
"@ardatan/aggregate-error": "0.0.6", "@ardatan/aggregate-error": "0.0.6",
"@graphql-tools/batch-execute": "^7.0.0", "@graphql-tools/batch-execute": "^7.0.0",
"@graphql-tools/schema": "^7.0.0", "@graphql-tools/schema": "^7.0.0",
"@graphql-tools/utils": "^7.0.2", "@graphql-tools/utils": "^7.1.6",
"dataloader": "2.0.0", "dataloader": "2.0.0",
"is-promise": "4.0.0", "is-promise": "4.0.0",
"tslib": "~2.0.1" "tslib": "~2.1.0"
}, },
"dependencies": { "dependencies": {
"@graphql-tools/utils": { "@graphql-tools/utils": {
"version": "7.1.4", "version": "7.2.5",
"resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.1.4.tgz", "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.2.5.tgz",
"integrity": "sha512-4lxmstMpgHSM1ULD+1X5AcPFaizkdBubB7H9Rqr7Wh6L9bxUHBHFB3bhaFXT7FI0xE01Pt0IMsZadOIlhVTXrg==", "integrity": "sha512-S9RUkPimq+5eEDohDjiq/JCPUsiZblKRG8ve+diUwF1f8+r6FV2xGXrOt0qhQJiMxIO+BOK3DU9c+U3tX9Jo0w==",
"requires": { "requires": {
"@ardatan/aggregate-error": "0.0.6", "@ardatan/aggregate-error": "0.0.6",
"camel-case": "4.1.2", "camel-case": "4.1.2",
"tslib": "~2.0.1" "tslib": "~2.1.0"
} }
}, },
"is-promise": { "is-promise": {
@ -3206,9 +3213,9 @@
"integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="
}, },
"tslib": { "tslib": {
"version": "2.0.3", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
"integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
} }
} }
}, },
@ -3308,9 +3315,9 @@
}, },
"dependencies": { "dependencies": {
"@graphql-tools/utils": { "@graphql-tools/utils": {
"version": "7.2.4", "version": "7.2.5",
"resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.2.4.tgz", "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.2.5.tgz",
"integrity": "sha512-EDSb98dTWX8FngvayWejip1DutOl0wGtNbXC7a3CZf5fiJS7bGHQ/8cSlMhe9XaHwpLJCbAk/Ijnp/dYbXk33w==", "integrity": "sha512-S9RUkPimq+5eEDohDjiq/JCPUsiZblKRG8ve+diUwF1f8+r6FV2xGXrOt0qhQJiMxIO+BOK3DU9c+U3tX9Jo0w==",
"requires": { "requires": {
"@ardatan/aggregate-error": "0.0.6", "@ardatan/aggregate-error": "0.0.6",
"camel-case": "4.1.2", "camel-case": "4.1.2",
@ -3440,28 +3447,28 @@
} }
}, },
"@graphql-tools/schema": { "@graphql-tools/schema": {
"version": "7.1.2", "version": "7.1.3",
"resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-7.1.2.tgz", "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-7.1.3.tgz",
"integrity": "sha512-GabNT51ErVHE2riDH4EQdRusUsI+nMElT8LdFHyuP53v8gwtleAj+LePQ9jif4NYUe/JQVqO8V28vPcHrA7gfQ==", "integrity": "sha512-ZY76hmcJlF1iyg3Im0sQ3ASRkiShjgv102vLTVcH22lEGJeCaCyyS/GF1eUHom418S60bS8Th6+autRUxfBiBg==",
"requires": { "requires": {
"@graphql-tools/utils": "^7.1.2", "@graphql-tools/utils": "^7.1.2",
"tslib": "~2.0.1" "tslib": "~2.1.0"
}, },
"dependencies": { "dependencies": {
"@graphql-tools/utils": { "@graphql-tools/utils": {
"version": "7.1.4", "version": "7.2.5",
"resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.1.4.tgz", "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.2.5.tgz",
"integrity": "sha512-4lxmstMpgHSM1ULD+1X5AcPFaizkdBubB7H9Rqr7Wh6L9bxUHBHFB3bhaFXT7FI0xE01Pt0IMsZadOIlhVTXrg==", "integrity": "sha512-S9RUkPimq+5eEDohDjiq/JCPUsiZblKRG8ve+diUwF1f8+r6FV2xGXrOt0qhQJiMxIO+BOK3DU9c+U3tX9Jo0w==",
"requires": { "requires": {
"@ardatan/aggregate-error": "0.0.6", "@ardatan/aggregate-error": "0.0.6",
"camel-case": "4.1.2", "camel-case": "4.1.2",
"tslib": "~2.0.1" "tslib": "~2.1.0"
} }
}, },
"tslib": { "tslib": {
"version": "2.0.3", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
"integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
} }
} }
}, },
@ -3545,25 +3552,32 @@
} }
}, },
"@graphql-tools/wrap": { "@graphql-tools/wrap": {
"version": "7.0.4", "version": "7.0.5",
"resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-7.0.4.tgz", "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-7.0.5.tgz",
"integrity": "sha512-txBs0W4k3WR86aEzBYXtKdGeeUXCNdRNxjQA/95T6ywNYoM8pw2mvpoXrWOvzbeaH3zwhbHY7kwii4atrC9irg==", "integrity": "sha512-KCWBXsDfvG46GNUawRltJL4j9BMGoOG7oo3WEyCQP+SByWXiTe5cBF45SLDVQgdjljGNZhZ4Lq/7avIkF7/zDQ==",
"requires": { "requires": {
"@graphql-tools/delegate": "^7.0.7", "@graphql-tools/delegate": "^7.0.7",
"@graphql-tools/schema": "^7.1.2", "@graphql-tools/schema": "^7.1.2",
"@graphql-tools/utils": "^7.1.4", "@graphql-tools/utils": "^7.2.1",
"is-promise": "4.0.0", "is-promise": "4.0.0",
"tslib": "~2.0.1" "tslib": "~2.0.1"
}, },
"dependencies": { "dependencies": {
"@graphql-tools/utils": { "@graphql-tools/utils": {
"version": "7.1.4", "version": "7.2.5",
"resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.1.4.tgz", "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.2.5.tgz",
"integrity": "sha512-4lxmstMpgHSM1ULD+1X5AcPFaizkdBubB7H9Rqr7Wh6L9bxUHBHFB3bhaFXT7FI0xE01Pt0IMsZadOIlhVTXrg==", "integrity": "sha512-S9RUkPimq+5eEDohDjiq/JCPUsiZblKRG8ve+diUwF1f8+r6FV2xGXrOt0qhQJiMxIO+BOK3DU9c+U3tX9Jo0w==",
"requires": { "requires": {
"@ardatan/aggregate-error": "0.0.6", "@ardatan/aggregate-error": "0.0.6",
"camel-case": "4.1.2", "camel-case": "4.1.2",
"tslib": "~2.0.1" "tslib": "~2.1.0"
},
"dependencies": {
"tslib": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
"integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
}
} }
}, },
"is-promise": { "is-promise": {
@ -5163,9 +5177,9 @@
}, },
"dependencies": { "dependencies": {
"@babel/runtime": { "@babel/runtime": {
"version": "7.12.5", "version": "7.12.13",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz",
"integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==",
"requires": { "requires": {
"regenerator-runtime": "^0.13.4" "regenerator-runtime": "^0.13.4"
} }
@ -6872,9 +6886,9 @@
}, },
"dependencies": { "dependencies": {
"tslib": { "tslib": {
"version": "2.0.3", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
"integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
} }
} }
}, },
@ -13580,9 +13594,9 @@
} }
}, },
"gatsby-source-graphql": { "gatsby-source-graphql": {
"version": "2.13.0", "version": "2.14.0",
"resolved": "https://registry.npmjs.org/gatsby-source-graphql/-/gatsby-source-graphql-2.13.0.tgz", "resolved": "https://registry.npmjs.org/gatsby-source-graphql/-/gatsby-source-graphql-2.14.0.tgz",
"integrity": "sha512-Z9kC6mYM/UlLdI4TrVqkzT3DVrB2chN8agwjCqIbqTu2X97NScg8rUnQEUAIoim8E273iW+8YsC15ITlxxaaeQ==", "integrity": "sha512-sl23ngwJRbw6ZdFJk9dBF3vONvpfw4DIhp4FZcQ0o8qWsGbkHhBxd9osNIFhIT+SwIDsqzEhsDg+acy31pGKbw==",
"requires": { "requires": {
"@babel/runtime": "^7.12.5", "@babel/runtime": "^7.12.5",
"@graphql-tools/links": "^7.0.3", "@graphql-tools/links": "^7.0.3",
@ -13597,17 +13611,17 @@
}, },
"dependencies": { "dependencies": {
"@babel/runtime": { "@babel/runtime": {
"version": "7.12.5", "version": "7.12.13",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz",
"integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==",
"requires": { "requires": {
"regenerator-runtime": "^0.13.4" "regenerator-runtime": "^0.13.4"
} }
}, },
"@graphql-tools/utils": { "@graphql-tools/utils": {
"version": "7.2.4", "version": "7.2.5",
"resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.2.4.tgz", "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.2.5.tgz",
"integrity": "sha512-EDSb98dTWX8FngvayWejip1DutOl0wGtNbXC7a3CZf5fiJS7bGHQ/8cSlMhe9XaHwpLJCbAk/Ijnp/dYbXk33w==", "integrity": "sha512-S9RUkPimq+5eEDohDjiq/JCPUsiZblKRG8ve+diUwF1f8+r6FV2xGXrOt0qhQJiMxIO+BOK3DU9c+U3tX9Jo0w==",
"requires": { "requires": {
"@ardatan/aggregate-error": "0.0.6", "@ardatan/aggregate-error": "0.0.6",
"camel-case": "4.1.2", "camel-case": "4.1.2",
@ -16876,9 +16890,9 @@
}, },
"dependencies": { "dependencies": {
"tslib": { "tslib": {
"version": "2.0.3", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
"integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
} }
} }
}, },
@ -17960,9 +17974,9 @@
}, },
"dependencies": { "dependencies": {
"tslib": { "tslib": {
"version": "2.0.3", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
"integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
} }
} }
}, },
@ -19032,9 +19046,9 @@
}, },
"dependencies": { "dependencies": {
"tslib": { "tslib": {
"version": "2.0.3", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
"integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
} }
} }
}, },

View File

@ -41,7 +41,7 @@
"gatsby-remark-smartypants": "^2.9.0", "gatsby-remark-smartypants": "^2.9.0",
"gatsby-remark-vscode": "^3.2.0", "gatsby-remark-vscode": "^3.2.0",
"gatsby-source-filesystem": "^2.11.0", "gatsby-source-filesystem": "^2.11.0",
"gatsby-source-graphql": "^2.13.0", "gatsby-source-graphql": "^2.14.0",
"gatsby-transformer-remark": "^2.15.0", "gatsby-transformer-remark": "^2.15.0",
"gatsby-transformer-sharp": "^2.11.0", "gatsby-transformer-sharp": "^2.11.0",
"gatsby-transformer-xml": "^2.10.0", "gatsby-transformer-xml": "^2.10.0",

View File

@ -1,9 +1,9 @@
import React from 'react' import React from 'react'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import slugify from 'slugify' import slugify from 'slugify'
import shortid from 'shortid'
import Scroll from '../../components/Scroll' import Scroll from '../../components/Scroll'
import styles from './Entities.module.scss' import styles from './Entities.module.scss'
import shortid from 'shortid'
const Type = ({ type }) => { const Type = ({ type }) => {
let isArray = false let isArray = false
@ -32,7 +32,7 @@ const Type = ({ type }) => {
{typeArguments.map((typeArgument, i) => ( {typeArguments.map((typeArgument, i) => (
<span key={shortid.generate()}> <span key={shortid.generate()}>
{i !== 0 && <span className={styles.typeSymbol}>, </span>} {i !== 0 && <span className={styles.typeSymbol}>, </span>}
<Type type={typeArgument} /> {typeArgument.name}
</span> </span>
))} ))}
</span> </span>
@ -49,19 +49,6 @@ Type.propTypes = {
type: PropTypes.object.isRequired type: PropTypes.object.isRequired
} }
const PropertyDetails = ({ property }) => {
const { type } = property
return (
<div>
<Type type={type} />
</div>
)
}
PropertyDetails.propTypes = {
property: PropTypes.object
}
const MethodDetails = ({ property }) => { const MethodDetails = ({ property }) => {
const signature = property.signatures[0] const signature = property.signatures[0]
const { parameters, type } = signature const { parameters, type } = signature
@ -77,7 +64,7 @@ const MethodDetails = ({ property }) => {
const description = comment && (comment.text || comment.shortText) const description = comment && (comment.text || comment.shortText)
return ( return (
<div className={styles.parameters} key={shortid.generate()}> <div className={styles.parameters} key={name}>
<h5> <h5>
<code>{name}</code> <code>{name}</code>
{isOptional && ( {isOptional && (
@ -118,7 +105,6 @@ const PropertyWrapper = ({ property, sourceUrl, parentAnchor }) => {
const { isPublic, isStatic } = flags const { isPublic, isStatic } = flags
const signature = signatures && signatures[0] const signature = signatures && signatures[0]
const comment = (signature && signature.comment) || property.comment const comment = (signature && signature.comment) || property.comment
const { fileName, line } = sources[0]
const deprecation = (decorators || []).filter( const deprecation = (decorators || []).filter(
({ name }) => name === 'deprecated' ({ name }) => name === 'deprecated'
)[0] // Assuming deprecated annotation )[0] // Assuming deprecated annotation
@ -128,7 +114,10 @@ const PropertyWrapper = ({ property, sourceUrl, parentAnchor }) => {
deprecatedSlug = deprecatedUse && slugify(deprecatedUse.replace('.', '-')) deprecatedSlug = deprecatedUse && slugify(deprecatedUse.replace('.', '-'))
} }
const sourceLink = `${sourceUrl}${fileName}#L${line}` const sourceLink =
sources && sources[0]
? `${sourceUrl}${sources[0].fileName}#L${sources[0].line}`
: ''
return ( return (
<div <div
@ -174,18 +163,22 @@ const PropertyWrapper = ({ property, sourceUrl, parentAnchor }) => {
case 'Method': case 'Method':
return <MethodDetails property={property} /> return <MethodDetails property={property} />
case 'Property': case 'Property':
return <PropertyDetails property={property} /> return (
<div>
<Type type={property} />
</div>
)
} }
})()} })()}
{fileName && ( {sources && sources[0] && (
<a <a
className={styles.sourceLink} className={styles.sourceLink}
href={sourceLink} href={sourceLink}
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
> >
{`${fileName}#L${line}`} {`${sources[0].fileName}#L${sources[0].line}`}
</a> </a>
)} )}
</div> </div>
@ -214,7 +207,7 @@ const Entities = ({ entities, sourceUrl }) =>
{children && {children &&
children.map((property) => ( children.map((property) => (
<PropertyWrapper <PropertyWrapper
key={shortid.generate()} key={property.id}
property={property} property={property}
sourceUrl={sourceUrl} sourceUrl={sourceUrl}
parentAnchor={name && slugify(name)} parentAnchor={name && slugify(name)}