mirror of
https://github.com/rowtype-yoga/psfp.git
synced 2024-09-11 16:25:36 +03:00
The foundation has been laid
This commit is contained in:
parent
6c57a5570c
commit
148366ac5d
@ -1 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 39 34" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><path d="M0,33.021l12.425,-21.521l3.753,6.5l-8.672,15.021l-7.506,0Zm24.85,0l-11.571,0l5.785,-10.021l5.786,10.021Zm13.279,0l-7.506,0l-15.311,-26.521l3.752,-6.5l19.065,33.021Z"/></svg>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 39 34" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><path d="M0,33.021l12.425,-21.521l3.753,6.5l-8.672,15.021l-7.506,0Zm24.85,0l-11.571,0l5.785,-10.021l5.786,10.021Zm13.279,0l-7.506,0l-15.311,-26.521l3.752,-6.5l19.065,33.021Z"/></svg>
|
Before Width: | Height: | Size: 622 B After Width: | Height: | Size: 586 B |
@ -1 +1 @@
|
||||
15549
|
||||
15877
|
@ -28,15 +28,6 @@ module.exports = {
|
||||
defaultLayouts: { default: path.resolve("./src/components/layout.js") }
|
||||
}
|
||||
},
|
||||
{
|
||||
resolve: "gatsby-plugin-web-font-loader",
|
||||
options: {
|
||||
custom: {
|
||||
families: ["Rubik"],
|
||||
urls: ["/fonts/fonts.css"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
resolve: `gatsby-plugin-alias-imports`,
|
||||
options: {
|
||||
|
245
blog/package-lock.json
generated
245
blog/package-lock.json
generated
@ -978,6 +978,19 @@
|
||||
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
|
||||
"integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
|
||||
},
|
||||
"@emotion/is-prop-valid": {
|
||||
"version": "0.7.3",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz",
|
||||
"integrity": "sha512-uxJqm/sqwXw3YPA5GXX365OBcJGFtxUVkB6WyezqFHlNe9jqUWH5ur2O2M8dGBz61kn1g3ZBlzUunFQXQIClhA==",
|
||||
"requires": {
|
||||
"@emotion/memoize": "0.7.1"
|
||||
}
|
||||
},
|
||||
"@emotion/memoize": {
|
||||
"version": "0.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.1.tgz",
|
||||
"integrity": "sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg=="
|
||||
},
|
||||
"@hapi/address": {
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
|
||||
@ -2303,6 +2316,14 @@
|
||||
"@xtuc/long": "4.2.2"
|
||||
}
|
||||
},
|
||||
"@welldone-software/why-did-you-render": {
|
||||
"version": "4.1.3-alpha.0",
|
||||
"resolved": "https://registry.npmjs.org/@welldone-software/why-did-you-render/-/why-did-you-render-4.1.3-alpha.0.tgz",
|
||||
"integrity": "sha512-YQVue1WNtFonSl/YJeg1Vjnx2+dX6F5r9Nv9QNKRh5Uky3vx4CBEez8EXu26lS2Ah3ZyU1AlpXh4r4i5nQJLUA==",
|
||||
"requires": {
|
||||
"lodash": "^4"
|
||||
}
|
||||
},
|
||||
"@xtuc/ieee754": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
|
||||
@ -4342,6 +4363,17 @@
|
||||
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
|
||||
"integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
|
||||
},
|
||||
"clipboard": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz",
|
||||
"integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"good-listener": "^1.2.2",
|
||||
"select": "^1.1.2",
|
||||
"tiny-emitter": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"clipboardy": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz",
|
||||
@ -4924,6 +4956,16 @@
|
||||
"timsort": "^0.3.0"
|
||||
}
|
||||
},
|
||||
"css-jss": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/css-jss/-/css-jss-10.1.1.tgz",
|
||||
"integrity": "sha512-HrSD06y4dCfZ6nHtG/SucJBG8tbt+lbyBsUbxfqujyycxPLLd/B9mRKW97B8Ua8VWK8LR4i9ur0P8szZEjoqzQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1",
|
||||
"jss-preset-default": "10.1.1"
|
||||
}
|
||||
},
|
||||
"css-loader": {
|
||||
"version": "3.5.1",
|
||||
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.5.1.tgz",
|
||||
@ -5665,6 +5707,12 @@
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
|
||||
},
|
||||
"delegate": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
|
||||
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==",
|
||||
"optional": true
|
||||
},
|
||||
"delegates": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
|
||||
@ -7448,6 +7496,14 @@
|
||||
"reusify": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"fault": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
|
||||
"integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
|
||||
"requires": {
|
||||
"format": "^0.2.0"
|
||||
}
|
||||
},
|
||||
"faye-websocket": {
|
||||
"version": "0.11.3",
|
||||
"resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
|
||||
@ -7738,6 +7794,11 @@
|
||||
"mime-types": "^2.1.12"
|
||||
}
|
||||
},
|
||||
"format": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
|
||||
"integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs="
|
||||
},
|
||||
"forwarded": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
|
||||
@ -9389,6 +9450,15 @@
|
||||
"slash": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"good-listener": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
|
||||
"integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"delegate": "^3.1.2"
|
||||
}
|
||||
},
|
||||
"got": {
|
||||
"version": "8.3.2",
|
||||
"resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz",
|
||||
@ -9835,6 +9905,11 @@
|
||||
"resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
|
||||
"integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ=="
|
||||
},
|
||||
"highlight.js": {
|
||||
"version": "9.15.10",
|
||||
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.10.tgz",
|
||||
"integrity": "sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw=="
|
||||
},
|
||||
"hmac-drbg": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
|
||||
@ -11311,6 +11386,16 @@
|
||||
"jss": "10.1.1"
|
||||
}
|
||||
},
|
||||
"jss-plugin-compose": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-compose/-/jss-plugin-compose-10.1.1.tgz",
|
||||
"integrity": "sha512-0fD+YVGk0fVnsLiNf7CG4Lv7lYwmNyeE62Fbccx8k1mMdFoE7he0hpx37tudsfKW2ArCE+hf4fmJDXPW8l6LBw==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"jss-plugin-default-unit": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.1.1.tgz",
|
||||
@ -11320,6 +11405,25 @@
|
||||
"jss": "10.1.1"
|
||||
}
|
||||
},
|
||||
"jss-plugin-expand": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-expand/-/jss-plugin-expand-10.1.1.tgz",
|
||||
"integrity": "sha512-ITO3RR4eTB3628B+gx8gLI7TKKE0TsFDBJ7BA648ZhXjHWQ5uxdC1bZld+++xnFL1l4kerj5tuWmZxS64C1Kcg==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1"
|
||||
}
|
||||
},
|
||||
"jss-plugin-extend": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-extend/-/jss-plugin-extend-10.1.1.tgz",
|
||||
"integrity": "sha512-dZl0hNsndP9GJM6yqA7lZmnx6KJHo/13Zeo5B3i2uaDNO9jd5Y3pp1XHURGfbFG3K29XsYBQPTgfBwQ7e7+nyA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"jss-plugin-global": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.1.1.tgz",
|
||||
@ -11357,6 +11461,26 @@
|
||||
"jss": "10.1.1"
|
||||
}
|
||||
},
|
||||
"jss-plugin-rule-value-observable": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-rule-value-observable/-/jss-plugin-rule-value-observable-10.1.1.tgz",
|
||||
"integrity": "sha512-l1zmLfS5Ks6CrthOIVTokHkDoI01ymnwNBlciN+IlaR4UsLEQBBL0+3BfQjOPvIYRAYXxYx3G7ebUHebr8mWyA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1",
|
||||
"symbol-observable": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"jss-plugin-template": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-template/-/jss-plugin-template-10.1.1.tgz",
|
||||
"integrity": "sha512-CPhNapLDgj6gIJOi3vj/QPohF/1OHuLQj8ZjBYqrnzCDSfYV5s2Rzp1TicFGxUb07BRLh62ymU+MgH1hbKGSTQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"jss-plugin-vendor-prefixer": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.1.1.tgz",
|
||||
@ -11367,6 +11491,27 @@
|
||||
"jss": "10.1.1"
|
||||
}
|
||||
},
|
||||
"jss-preset-default": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-10.1.1.tgz",
|
||||
"integrity": "sha512-YwQp/BZ8IiBwxDTQ4uPAjzI2k2njrw6RJegAPvhCB1MTmWN2oR9Dhb5aN3RtepUf/agUkewTMwQqoS6PijgVMg==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1",
|
||||
"jss-plugin-camel-case": "10.1.1",
|
||||
"jss-plugin-compose": "10.1.1",
|
||||
"jss-plugin-default-unit": "10.1.1",
|
||||
"jss-plugin-expand": "10.1.1",
|
||||
"jss-plugin-extend": "10.1.1",
|
||||
"jss-plugin-global": "10.1.1",
|
||||
"jss-plugin-nested": "10.1.1",
|
||||
"jss-plugin-props-sort": "10.1.1",
|
||||
"jss-plugin-rule-value-function": "10.1.1",
|
||||
"jss-plugin-rule-value-observable": "10.1.1",
|
||||
"jss-plugin-template": "10.1.1",
|
||||
"jss-plugin-vendor-prefixer": "10.1.1"
|
||||
}
|
||||
},
|
||||
"jsx-ast-utils": {
|
||||
"version": "2.2.3",
|
||||
"resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz",
|
||||
@ -11819,6 +11964,15 @@
|
||||
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
|
||||
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
|
||||
},
|
||||
"lowlight": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.12.1.tgz",
|
||||
"integrity": "sha512-OqaVxMGIESnawn+TU/QMV5BJLbUghUfjDWPAtFqDYDmDtr4FnB+op8xM+pR7nKlauHNUHXGt0VgWatFB8voS5w==",
|
||||
"requires": {
|
||||
"fault": "^1.0.2",
|
||||
"highlight.js": "~9.15.0"
|
||||
}
|
||||
},
|
||||
"lpad-align": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz",
|
||||
@ -14418,6 +14572,14 @@
|
||||
"utila": "~0.4"
|
||||
}
|
||||
},
|
||||
"prismjs": {
|
||||
"version": "1.20.0",
|
||||
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.20.0.tgz",
|
||||
"integrity": "sha512-AEDjSrVNkynnw6A+B1DsFkd6AVdTnp+/WoUixFRULlCLZVRZlVQMVWio/16jv7G1FscUxQxOQhWwApgbnxr6kQ==",
|
||||
"requires": {
|
||||
"clipboard": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"private": {
|
||||
"version": "0.1.8",
|
||||
"resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
|
||||
@ -15290,6 +15452,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"react-display-name": {
|
||||
"version": "0.2.5",
|
||||
"resolved": "https://registry.npmjs.org/react-display-name/-/react-display-name-0.2.5.tgz",
|
||||
"integrity": "sha512-I+vcaK9t4+kypiSgaiVWAipqHRXYmZIuAiS8vzFvXHHXVigg/sMKwlRgLy6LH2i3rmP+0Vzfl5lFsFRwF1r3pg=="
|
||||
},
|
||||
"react-dom": {
|
||||
"version": "16.13.1",
|
||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz",
|
||||
@ -15360,6 +15527,24 @@
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
|
||||
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
|
||||
},
|
||||
"react-jss": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/react-jss/-/react-jss-10.1.1.tgz",
|
||||
"integrity": "sha512-GCSKkyj6/bDNNgK1KtaU1FbTAKJ7CQE83p34qKpCc4tVPRi1wCfopyKot1cW/YYJizqltc2MaKzGqFK5eZhBSQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"@emotion/is-prop-valid": "^0.7.3",
|
||||
"css-jss": "10.1.1",
|
||||
"hoist-non-react-statics": "^3.2.0",
|
||||
"is-in-browser": "^1.1.3",
|
||||
"jss": "10.1.1",
|
||||
"jss-preset-default": "10.1.1",
|
||||
"prop-types": "^15.6.0",
|
||||
"shallow-equal": "^1.2.0",
|
||||
"theming": "3.2.0",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"react-lifecycles-compat": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
|
||||
@ -15414,6 +15599,18 @@
|
||||
"@react-spring/zdog": "9.0.0-canary.809.5.f01ecc2"
|
||||
}
|
||||
},
|
||||
"react-syntax-highlighter": {
|
||||
"version": "12.2.1",
|
||||
"resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-12.2.1.tgz",
|
||||
"integrity": "sha512-CTsp0ZWijwKRYFg9xhkWD4DSpQqE4vb2NKVMdPAkomnILSmsNBHE0n5GuI5zB+PU3ySVvXvdt9jo+ViD9XibCA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"highlight.js": "~9.15.1",
|
||||
"lowlight": "1.12.1",
|
||||
"prismjs": "^1.8.4",
|
||||
"refractor": "^2.4.1"
|
||||
}
|
||||
},
|
||||
"read": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
|
||||
@ -15577,6 +15774,26 @@
|
||||
"resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz",
|
||||
"integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw=="
|
||||
},
|
||||
"refractor": {
|
||||
"version": "2.10.1",
|
||||
"resolved": "https://registry.npmjs.org/refractor/-/refractor-2.10.1.tgz",
|
||||
"integrity": "sha512-Xh9o7hQiQlDbxo5/XkOX6H+x/q8rmlmZKr97Ie1Q8ZM32IRRd3B/UxuA/yXDW79DBSXGWxm2yRTbcTVmAciJRw==",
|
||||
"requires": {
|
||||
"hastscript": "^5.0.0",
|
||||
"parse-entities": "^1.1.2",
|
||||
"prismjs": "~1.17.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"prismjs": {
|
||||
"version": "1.17.1",
|
||||
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.17.1.tgz",
|
||||
"integrity": "sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q==",
|
||||
"requires": {
|
||||
"clipboard": "^2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"regenerate": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
|
||||
@ -16191,6 +16408,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"select": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
|
||||
"integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=",
|
||||
"optional": true
|
||||
},
|
||||
"select-hose": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
|
||||
@ -16402,6 +16625,11 @@
|
||||
"resolved": "https://registry.npmjs.org/shallow-compare/-/shallow-compare-1.2.2.tgz",
|
||||
"integrity": "sha512-LUMFi+RppPlrHzbqmFnINTrazo0lPNwhcgzuAXVVcfy/mqPDrQmHAyz5bvV0gDAuRFrk804V0HpQ6u9sZ0tBeg=="
|
||||
},
|
||||
"shallow-equal": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
|
||||
"integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
|
||||
},
|
||||
"shallowequal": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
|
||||
@ -17709,6 +17937,17 @@
|
||||
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
||||
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ="
|
||||
},
|
||||
"theming": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/theming/-/theming-3.2.0.tgz",
|
||||
"integrity": "sha512-n0fSNYXkX63rcFBBeAthy14IcgPZLHp0OGkGZheaj64j7cBoP7INLd6+7HIXqWVjFn1M5cYSiZ1nszi+jo/Szg==",
|
||||
"requires": {
|
||||
"hoist-non-react-statics": "^3.3.0",
|
||||
"prop-types": "^15.5.8",
|
||||
"react-display-name": "^0.2.4",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"through": {
|
||||
"version": "2.3.8",
|
||||
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
||||
@ -17751,6 +17990,12 @@
|
||||
"resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
|
||||
"integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q="
|
||||
},
|
||||
"tiny-emitter": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
|
||||
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==",
|
||||
"optional": true
|
||||
},
|
||||
"tiny-warning": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
|
||||
|
@ -7,6 +7,7 @@
|
||||
"@material-ui/styles": "^4.9.0",
|
||||
"@mdx-js/mdx": "^1.1.5",
|
||||
"@mdx-js/react": "^1.1.5",
|
||||
"@welldone-software/why-did-you-render": "^4.1.3-alpha.0",
|
||||
"gatsby": "^2.19.45",
|
||||
"gatsby-image": "^2.2.8",
|
||||
"gatsby-plugin-alias-imports": "^1.0.5",
|
||||
@ -27,8 +28,10 @@
|
||||
"react": "^16.8.6",
|
||||
"react-dom": "^16.8.6",
|
||||
"react-helmet": "^5.2.1",
|
||||
"react-jss": "^10.1.1",
|
||||
"react-monaco-editor": "^0.33.0",
|
||||
"react-spring": "^9.0.0-beta.34"
|
||||
"react-spring": "^9.0.0-beta.34",
|
||||
"react-syntax-highlighter": "^12.2.1"
|
||||
},
|
||||
"keywords": [
|
||||
"gatsby"
|
||||
|
@ -2,19 +2,30 @@ module PSLayout where
|
||||
|
||||
import Prelude
|
||||
|
||||
import Control.Monad.State (evalStateT, get, put, runStateT)
|
||||
import Control.Monad.State as State
|
||||
import Control.Monad.Trans.Class (lift)
|
||||
import Data.Array (foldMap)
|
||||
import Data.Array as A
|
||||
import Data.Array as Array
|
||||
import Data.Array.NonEmpty as NEA
|
||||
import Data.Either (Either(..))
|
||||
import Data.Foldable (fold)
|
||||
import Data.Function.Uncurried (mkFn2)
|
||||
import Data.Maybe (Maybe(..), fromMaybe, isJust)
|
||||
import Data.Monoid (guard)
|
||||
import Data.Monoid.Additive (Additive(..))
|
||||
import Data.Newtype (ala)
|
||||
import Data.Newtype as NT
|
||||
import Data.Nullable (Nullable)
|
||||
import Data.Nullable as Nullable
|
||||
import Data.String as String
|
||||
import Data.Traversable (Accum, mapAccumL)
|
||||
import Data.Tuple.Nested ((/\))
|
||||
import Debug.Trace (spy)
|
||||
import Effect (Effect)
|
||||
import Effect.Aff (launchAff_)
|
||||
import Effect.Class (liftEffect)
|
||||
import Effect.Class.Console (log)
|
||||
import JSS (jss, jssClasses)
|
||||
import Justifill (justifill)
|
||||
import Milkis.Impl (FetchImpl)
|
||||
@ -22,7 +33,7 @@ import React.Basic (JSX, ReactComponent, fragment)
|
||||
import React.Basic.DOM (unsafeCreateDOMComponent)
|
||||
import React.Basic.DOM as R
|
||||
import React.Basic.Helpers (jsx)
|
||||
import React.Basic.Hooks (ReactChildren, component, componentWithChildren, element, reactChildrenToArray, useEffect, useState)
|
||||
import React.Basic.Hooks (ReactChildren, component, componentWithChildren, element, memo, reactChildrenToArray, readRef, useEffect, useReducer, useRef, useState, writeRef)
|
||||
import React.Basic.Hooks as React
|
||||
import Unsafe.Coerce (unsafeCoerce)
|
||||
import Yoga.Box.Component as Box
|
||||
@ -67,7 +78,12 @@ type PreProps
|
||||
}
|
||||
}
|
||||
|
||||
data ShowModal
|
||||
= ShowModal Modal.Props
|
||||
| HideModal
|
||||
|
||||
mkLayout ∷
|
||||
∀ r.
|
||||
FetchImpl ->
|
||||
Effect
|
||||
( ReactComponent
|
||||
@ -77,31 +93,34 @@ mkLayout ∷
|
||||
)
|
||||
mkLayout fetchImpl = do
|
||||
themeProvider <- mkThemeProvider
|
||||
mdxProviderComponent <- mkMdxProviderComponent (apiCompiler fetchImpl)
|
||||
modal <- memo Modal.makeComponent
|
||||
clickAway <- memo ClickAway.makeComponent
|
||||
mdxProviderComponent <- memo $ mkMdxProviderComponent (apiCompiler fetchImpl)
|
||||
componentWithChildren "MDXLayout" \{ children, siteInfo } -> React.do
|
||||
maybeModalProps /\ dispatch <-
|
||||
useReducer Nothing case _, _ of
|
||||
_, ShowModal props -> Just props
|
||||
_, HideModal -> Nothing
|
||||
pure
|
||||
$ element themeProvider
|
||||
{ theme: fromTheme darkTheme
|
||||
, children:
|
||||
[ element mdxProviderComponent
|
||||
{ children
|
||||
, siteInfo
|
||||
}
|
||||
[ R.div_
|
||||
[ maybeModalProps
|
||||
# foldMap \modalProps ->
|
||||
fragment
|
||||
[ element clickAway { allowEscape: Just true, onClick: dispatch HideModal, style: Nothing }
|
||||
, element modal (justifill modalProps)
|
||||
]
|
||||
, element mdxProviderComponent
|
||||
{ children: spy "children" children
|
||||
, siteInfo
|
||||
, showModal: dispatch <<< ShowModal
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
|
||||
mkSecret ∷ Effect (ReactComponent { kids ∷ Array JSX, visible ∷ Boolean, register ∷ Effect Unit })
|
||||
mkSecret = do
|
||||
component "Secret" \{ kids, visible, register } -> React.do
|
||||
useEffect visible do
|
||||
unless visible register
|
||||
pure mempty
|
||||
pure
|
||||
$ R.div
|
||||
{ style: R.css { visibility: if visible then "visible" else "hidden" }
|
||||
, children: kids
|
||||
}
|
||||
|
||||
isQuiz ∷ JSX -> Boolean
|
||||
isQuiz a =
|
||||
(unsafeCoerce a).props.mdxType == "pre"
|
||||
@ -116,21 +135,19 @@ mkMdxProviderComponent ∷
|
||||
( ReactComponent
|
||||
{ children ∷ ReactChildren JSX
|
||||
, siteInfo ∷ SiteQueryResult
|
||||
, showModal ∷ Modal.Props -> Effect Unit
|
||||
}
|
||||
)
|
||||
mkMdxProviderComponent compiler = do
|
||||
cssBaseline <- mkCssBaseline
|
||||
editor <- mkCompileEditor compiler
|
||||
fillInTheGaps <- FillInTheGaps.makeComponent
|
||||
box <- Box.makeComponent
|
||||
sidebar <- mkSidebar
|
||||
header <- mkHeader
|
||||
cssBaseline <- memo mkCssBaseline
|
||||
editor <- memo $ mkCompileEditor compiler
|
||||
box <- memo $ Box.makeComponent
|
||||
sidebar <- memo mkSidebar
|
||||
header <- memo mkHeader
|
||||
yogaInlineCode <- InlineCode.makeComponent
|
||||
modal <- Modal.makeComponent
|
||||
clickAway <- ClickAway.makeComponent
|
||||
h <- mkH
|
||||
p <- mkP
|
||||
secret <- mkSecret
|
||||
quiz <- memo $ mkQuiz compiler
|
||||
h <- memo mkH
|
||||
p <- memo mkP
|
||||
useStyles <-
|
||||
makeStylesJSS
|
||||
$ jssClasses \(theme ∷ CSSTheme) ->
|
||||
@ -142,32 +159,23 @@ mkMdxProviderComponent compiler = do
|
||||
, padding: "3px"
|
||||
, borderRadius: "3px"
|
||||
}
|
||||
, flexer:
|
||||
{ display: "flex"
|
||||
, flexDirection: "row"
|
||||
}
|
||||
}
|
||||
componentWithChildren "MDXProviderComponent" \{ children, siteInfo } -> React.do
|
||||
componentWithChildren "MDXProviderComponent" \{ children, siteInfo, showModal } -> React.do
|
||||
classes <- useStyles {}
|
||||
visibleThrough /\ updateVisible <- useState 1
|
||||
questions /\ updateQuestions <- useState []
|
||||
maybeModal /\ updateModal <- useState Nothing
|
||||
visibleUntil /\ updateVisible <- useState 1
|
||||
let
|
||||
baseline child = element cssBaseline { kids: child }
|
||||
onFailure = showModal (justifill { title: "Failed", kids: [ R.text "Try again" ] } ∷ Modal.Props)
|
||||
onSuccess = updateVisible (_ + one)
|
||||
|
||||
kids = reactChildrenToArray children
|
||||
|
||||
foldVisible ∷ { i ∷ Int, acc ∷ Array JSX } -> JSX -> { i ∷ Int, acc ∷ Array JSX }
|
||||
foldVisible { i, acc } a =
|
||||
if i >= visibleThrough then
|
||||
{ i, acc }
|
||||
else
|
||||
if isQuiz a then
|
||||
{ i: i + 1, acc: A.snoc acc a }
|
||||
else
|
||||
{ i, acc: A.snoc acc a }
|
||||
|
||||
visibleKids = kids # A.foldl foldVisible { i: 0, acc: [] ∷ Array JSX } # _.acc
|
||||
mapVisible i kid =
|
||||
{ accum: i + if isQuiz kid then one else zero
|
||||
, value: guard (i < visibleUntil) (pure kid)
|
||||
}
|
||||
visibleKids :: Array JSX
|
||||
visibleKids = reactChildrenToArray children
|
||||
# mapAccumL mapVisible zero
|
||||
# _.value
|
||||
# Array.catMaybes
|
||||
|
||||
siteInfoJSX =
|
||||
R.div
|
||||
@ -177,8 +185,8 @@ mkMdxProviderComponent compiler = do
|
||||
, jsx box {} visibleKids
|
||||
]
|
||||
}
|
||||
|
||||
mdxComponents =
|
||||
mdxComponents /\ _ <-
|
||||
useState
|
||||
{ h1:
|
||||
\props ->
|
||||
element h ({ level: H2, text: props.children, className: Nothing })
|
||||
@ -197,9 +205,10 @@ mkMdxProviderComponent compiler = do
|
||||
, inlineCode:
|
||||
\props -> do
|
||||
R.span { className: classes.code, children: props.children }
|
||||
, pre:
|
||||
\(props ∷ PreProps) -> do
|
||||
, pre: mkFn2
|
||||
\(props ∷ PreProps) other -> do
|
||||
let
|
||||
_ = spy "other" other
|
||||
childrenQ = Nullable.toMaybe props.children
|
||||
|
||||
propsQ = (_.props >>> Nullable.toMaybe) =<< childrenQ
|
||||
@ -227,20 +236,7 @@ mkMdxProviderComponent compiler = do
|
||||
|
||||
segmentsQ = parseSegments (codeQ ?|| "")
|
||||
case isCode, language, segmentsQ of
|
||||
true, "purescript", Just initialSegments ->
|
||||
jsx box {}
|
||||
[ element fillInTheGaps
|
||||
{ initialSegments
|
||||
, incantate: \segments -> launchAff_ do
|
||||
let code = toCode segments
|
||||
result <- compiler.compileAndRun { code }
|
||||
liftEffect case result of
|
||||
Right r | String.stripSuffix (String.Pattern "\n") r.stdout == (findResult $ join segments) ->
|
||||
updateVisible (_ + 1)
|
||||
_ ->
|
||||
updateModal (const $ Just { title: "Failed", kids: [R.text "Try again"] })
|
||||
}
|
||||
]
|
||||
true, "purescript", Just initialSegments -> element quiz { initialSegments, onFailure, onSuccess }
|
||||
true, _, _ ->
|
||||
element editor
|
||||
{ initialCode: fromMaybe "" codeQ
|
||||
@ -250,20 +246,43 @@ mkMdxProviderComponent compiler = do
|
||||
false, _, _ -> element (unsafeCreateDOMComponent "pre") props
|
||||
}
|
||||
pure
|
||||
$ baseline
|
||||
[ element mdxProvider
|
||||
{ children:
|
||||
[ siteInfoJSX
|
||||
]
|
||||
, components: mdxComponents
|
||||
$ element mdxProvider
|
||||
{ children: pure $ jsx cssBaseline {} [ siteInfoJSX ]
|
||||
, components: mdxComponents
|
||||
}
|
||||
|
||||
mkQuiz ∷ _ -> Effect (ReactComponent _)
|
||||
mkQuiz compiler = do
|
||||
fillInTheGaps <- FillInTheGaps.makeComponent
|
||||
box <- Box.makeComponent
|
||||
component "Quiz" \({ initialSegments, onFailure, onSuccess } ∷ { initialSegments ∷ _, onFailure ∷ _, onSuccess :: _}) -> React.do
|
||||
segments /\ updateSegments <- useState initialSegments
|
||||
solved /\ updateSolved <- useState false
|
||||
pure
|
||||
$ jsx box {}
|
||||
[ element fillInTheGaps
|
||||
{ segments
|
||||
, incantate:
|
||||
launchAff_ do
|
||||
let
|
||||
code = toCode segments
|
||||
result <- compiler.compileAndRun { code }
|
||||
liftEffect case result of
|
||||
Right r
|
||||
| String.stripSuffix (String.Pattern "\n") r.stdout == (findResult $ join segments) -> do
|
||||
updateSolved (const true)
|
||||
onSuccess
|
||||
_ -> onFailure
|
||||
, updateSegments:
|
||||
\update -> do
|
||||
let
|
||||
updated = update segments
|
||||
case segments, updated of
|
||||
old, new
|
||||
| new == old -> mempty
|
||||
_, _ -> updateSegments (const updated)
|
||||
, readOnly: Just solved
|
||||
}
|
||||
, maybeModal # foldMap
|
||||
(\modalProps ->
|
||||
fragment [
|
||||
element clickAway { allowEscape: Just true, onClick: updateModal (const Nothing), style: Nothing },
|
||||
element modal (justifill modalProps)
|
||||
]
|
||||
)
|
||||
]
|
||||
|
||||
mkSidebar = do
|
||||
@ -271,20 +290,13 @@ mkSidebar = do
|
||||
useStyles <-
|
||||
makeStylesJSS
|
||||
$ jssClasses \(theme ∷ CSSTheme) ->
|
||||
{ flexer:
|
||||
jss
|
||||
{ display: "flex"
|
||||
, flexDirection: "row"
|
||||
, width: "300px"
|
||||
, height: "300px"
|
||||
}
|
||||
}
|
||||
{}
|
||||
component "Sidebar" \{ links } -> React.do
|
||||
classes <- useStyles {}
|
||||
pure
|
||||
$ element withSidebar
|
||||
( justifill
|
||||
{ sidebarChildren: [ R.div_ [ R.text "hahahaha" ] ]
|
||||
{ sidebarChildren: [ R.div_ [] ]
|
||||
, notSidebarChildren: [] ∷ Array JSX
|
||||
}
|
||||
)
|
||||
|
@ -2,7 +2,8 @@ import React from "react";
|
||||
import PropTypes from "prop-types";
|
||||
import { graphql, useStaticQuery } from "gatsby";
|
||||
import { preToCodeBlock } from "mdx-utils";
|
||||
const psLayout = require("./PSLayout.purs");
|
||||
const psLayout = require("../../output/PSLayout/index.js"); // [FIXME] use the next line
|
||||
// const psLayout = require("./PSLayout.purs");
|
||||
const fetch = typeof window !== "undefined" && window.fetch;
|
||||
|
||||
const PSLayout = psLayout.mkLayout(fetch)();
|
||||
@ -24,8 +25,4 @@ const Layout = ({ children }) => {
|
||||
return <PSLayout siteInfo={siteInfo}>{children}</PSLayout>;
|
||||
};
|
||||
|
||||
Layout.propTypes = {
|
||||
children: PropTypes.node.isRequired
|
||||
};
|
||||
|
||||
export default Layout;
|
||||
export default Layout;
|
@ -1,6 +1,5 @@
|
||||
import { Link } from 'gatsby'
|
||||
|
||||
import Layout from '../components/layout'
|
||||
import SEO from '../components/seo'
|
||||
|
||||
<SEO title="Home" keywords={['gatsby', 'application', 'react']} />
|
||||
|
@ -1,5 +1,6 @@
|
||||
import Layout from '../components/layout'
|
||||
import SEO from '../components/seo'
|
||||
import { Link } from 'gatsby'
|
||||
|
||||
<SEO title="Home" keywords={['gatsby', 'application', 'react']} />
|
||||
|
||||
@ -37,4 +38,6 @@ incantation = cast $
|
||||
|
||||
---
|
||||
|
||||
Guter Mann
|
||||
Guter Mann
|
||||
|
||||
<Link to="/optional/">Go to the first exercise</Link>
|
@ -2,22 +2,23 @@ module Yoga.FillInTheGaps.Component where
|
||||
|
||||
import Prelude
|
||||
import Data.Array as A
|
||||
import Data.Tuple.Nested ((/\))
|
||||
import Data.Maybe (Maybe(..))
|
||||
import Data.Monoid (guard)
|
||||
import Effect (Effect)
|
||||
import Justifill (justifill)
|
||||
import React.Basic (JSX, ReactComponent, element)
|
||||
import React.Basic.DOM as R
|
||||
import React.Basic.Events (handler_)
|
||||
import React.Basic.Helpers (jsx)
|
||||
import React.Basic.Hooks (component, useEffect, useState)
|
||||
import React.Basic.Hooks (component)
|
||||
import React.Basic.Hooks as React
|
||||
import React.Basic.SyntaxHighlighter.Component (HighlighterTheme, syntaxHighlighterImpl)
|
||||
import Yoga.Button.Component (ButtonType(..), mkButton)
|
||||
import Yoga.Cluster.Component as Cluster
|
||||
import Yoga.FillInTheGaps.Logic (Segment(..), complete, updateSegments)
|
||||
import Yoga.Helpers ((?||))
|
||||
import Yoga.Helpers (ifJustTrue, (?||))
|
||||
import Yoga.InlineCode.Component as InlineCode
|
||||
import Yoga.Stack.Component as Stack
|
||||
import Yoga.Cluster.Component as Cluster
|
||||
import Yoga.Theme.Styles (useTheme)
|
||||
import Yoga.Theme.Syntax (mkHighlighterTheme)
|
||||
|
||||
@ -27,43 +28,54 @@ visibleRange arr = { start, end }
|
||||
start = A.findIndex (_ == [ Start ]) arr ?|| 0
|
||||
end = A.findIndex (_ == [ End ]) arr ?|| A.length arr
|
||||
|
||||
renderSegments ∷ HighlighterTheme -> ReactComponent InlineCode.Props -> ((Array (Array Segment) -> Array (Array Segment)) -> Effect Unit) -> Array (Array Segment) -> JSX
|
||||
renderSegments highlighterTheme ic update arrs = R.div_ (A.mapWithIndex renderLine arrs)
|
||||
renderSegments ∷ Maybe Boolean -> HighlighterTheme -> ReactComponent InlineCode.Props -> ((Array (Array Segment) -> Array (Array Segment)) -> Effect Unit) -> Array (Array Segment) -> JSX
|
||||
renderSegments readOnly highlighterTheme ic update arrs = R.div_ (A.mapWithIndex renderLine arrs)
|
||||
where
|
||||
{ start, end } = visibleRange arrs
|
||||
renderLine i l = R.div_ (A.mapWithIndex (renderSegment i) l)
|
||||
renderSegment i j s =
|
||||
if between start end i then case s of
|
||||
Filler s' -> element syntaxHighlighterImpl { style: highlighterTheme, language: "purescript", children: s' }
|
||||
Hole width _ ->
|
||||
Hole width text ->
|
||||
element ic
|
||||
$ justifill
|
||||
{ width
|
||||
, onSubmit: update <<< updateSegments i j
|
||||
, update: update <<< updateSegments i j
|
||||
, text
|
||||
, readOnly
|
||||
}
|
||||
_ -> mempty
|
||||
else
|
||||
mempty
|
||||
|
||||
makeComponent ∷ Effect (ReactComponent { initialSegments ∷ Array (Array Segment), incantate ∷ Array (Array Segment) -> Effect Unit })
|
||||
type Props
|
||||
= { segments ∷ Array (Array Segment)
|
||||
, updateSegments ∷ (Array (Array Segment) -> Array (Array Segment)) -> Effect Unit
|
||||
, incantate ∷ Effect Unit
|
||||
, readOnly ∷ Maybe Boolean
|
||||
}
|
||||
|
||||
makeComponent ∷ Effect (ReactComponent Props)
|
||||
makeComponent = do
|
||||
ic <- InlineCode.makeComponent
|
||||
btn <- mkButton
|
||||
stack <- Stack.makeComponent
|
||||
cluster <- Cluster.makeComponent
|
||||
component "FillInTheGaps" \{ initialSegments, incantate } -> React.do
|
||||
segments /\ modifySegments <- useState initialSegments
|
||||
component "FillInTheGaps" \({ updateSegments, segments, incantate, readOnly } ∷ Props) -> React.do
|
||||
highlighterTheme <- useTheme <#> mkHighlighterTheme
|
||||
pure
|
||||
$ jsx stack {}
|
||||
[ renderSegments highlighterTheme ic (modifySegments) segments
|
||||
, jsx cluster {}
|
||||
[ R.div_
|
||||
[ jsx btn
|
||||
{ onClick: handler_ (incantate segments)
|
||||
, buttonType: if complete segments then HighlightedButton else DisabledButton
|
||||
}
|
||||
[ R.text "Incantate" ]
|
||||
]
|
||||
]
|
||||
[ renderSegments readOnly highlighterTheme ic updateSegments segments
|
||||
, if Just true == readOnly then
|
||||
mempty
|
||||
else
|
||||
jsx cluster {}
|
||||
[ R.div_
|
||||
[ jsx btn
|
||||
{ onClick: handler_ incantate
|
||||
, buttonType: if complete segments then HighlightedButton else DisabledButton
|
||||
}
|
||||
[ R.text "Incantate" ]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
@ -33,6 +33,7 @@ data Segment
|
||||
| Hole Int String
|
||||
|
||||
derive instance eqSegment ∷ Eq Segment
|
||||
derive instance ordSegment ∷ Ord Segment
|
||||
getResult ∷ Segment -> Maybe String
|
||||
getResult = case _ of
|
||||
ExpectedResult r -> Just r
|
||||
|
@ -1,8 +1,14 @@
|
||||
module Yoga.FillInTheGaps.Stories where
|
||||
|
||||
import Prelude hiding (add)
|
||||
import Data.String as String
|
||||
import Control.Monad.Trans.Class (lift)
|
||||
import Data.Maybe (Maybe(..))
|
||||
import Data.Tuple.Nested ((/\))
|
||||
import Effect (Effect)
|
||||
import Effect.Ref as Ref
|
||||
import React.Basic (ReactComponent)
|
||||
import React.Basic.Hooks (element, useState, component)
|
||||
import React.Basic.Hooks as React
|
||||
import Storybook.Decorator.FullScreen (fullScreenDecorator)
|
||||
import Storybook.React (Storybook, add, addDecorator, storiesOf)
|
||||
import Yoga.FillInTheGaps.Component as FillInTheGaps
|
||||
@ -13,9 +19,22 @@ stories ∷ Effect Storybook
|
||||
stories = do
|
||||
storiesOf "FillInTheGaps" do
|
||||
addDecorator fullScreenDecorator
|
||||
add "The FillInTheGaps" (FillInTheGaps.makeComponent)
|
||||
[ { initialSegments: parseSegments codeWithHoles ?|| [], incantate: pure (pure unit) }
|
||||
]
|
||||
segRef <- Ref.new [] # lift
|
||||
add "The FillInTheGaps" makeWrapper
|
||||
[ {} ]
|
||||
|
||||
makeWrapper ∷ Effect (ReactComponent {})
|
||||
makeWrapper = do
|
||||
gaps <- FillInTheGaps.makeComponent
|
||||
component "GapsWrapper" \_ -> React.do
|
||||
segments /\ updateSegments <- useState (parseSegments codeWithHoles ?|| [])
|
||||
pure
|
||||
$ element gaps
|
||||
{ segments
|
||||
, updateSegments
|
||||
, incantate: mempty
|
||||
, readOnly: Just false
|
||||
}
|
||||
|
||||
codeWithHoles =
|
||||
"""
|
||||
@ -25,22 +44,8 @@ import Grimoire
|
||||
|
||||
incantation :: Effect Unit
|
||||
--start here
|
||||
--please say Hello World
|
||||
incantation = cast
|
||||
"{-Hello World-}"
|
||||
--end here
|
||||
"""
|
||||
|
||||
correctCode =
|
||||
String.replace
|
||||
(String.Pattern "{-Hello World-}")
|
||||
(String.Replacement "Hello World")
|
||||
<<< String.replace
|
||||
(String.Pattern "--result Hello World")
|
||||
(String.Replacement "")
|
||||
<<< String.replace
|
||||
(String.Pattern "--start here")
|
||||
(String.Replacement "")
|
||||
<<< String.replace
|
||||
(String.Pattern "--end here")
|
||||
(String.Replacement "")
|
||||
$ codeWithHoles
|
||||
|
@ -1,11 +1,10 @@
|
||||
module Yoga.InlineCode.Component where
|
||||
|
||||
import Prelude
|
||||
import Prelude
|
||||
import CSS (value)
|
||||
import Data.Foldable (fold, intercalate)
|
||||
import Data.Maybe (Maybe)
|
||||
import Data.String (trim)
|
||||
import Data.Nullable (toNullable)
|
||||
import Data.Nullable as Nullable
|
||||
import Data.Time.Duration (Milliseconds(..))
|
||||
import Data.Tuple.Nested ((/\))
|
||||
import Effect (Effect)
|
||||
@ -13,12 +12,13 @@ import Effect.Aff (delay)
|
||||
import Effect.Class (liftEffect)
|
||||
import Foreign.Object as Obj
|
||||
import React.Basic.DOM as R
|
||||
import React.Basic.DOM.Events (capture, capture_, preventDefault, targetValue)
|
||||
import React.Basic.Events (handler, handler_)
|
||||
import React.Basic.Hooks (ReactComponent, component, useEffect, useState)
|
||||
import React.Basic.DOM.Events (targetValue)
|
||||
import React.Basic.Events (handler)
|
||||
import React.Basic.Hooks (ReactComponent, component, useState)
|
||||
import React.Basic.Hooks as React
|
||||
import React.Basic.Hooks.Aff (useAff)
|
||||
import Record.Extra (pick)
|
||||
import Unsafe.Coerce (unsafeCoerce)
|
||||
import Yoga.Helpers ((?||))
|
||||
import Yoga.InlineCode.Styles (styles)
|
||||
import Yoga.InlineCode.Styles as Styles
|
||||
@ -31,20 +31,22 @@ type PropsR
|
||||
= OptionalProps (Styles.PropsR)
|
||||
|
||||
type OptionalProps r
|
||||
= ( onSubmit ∷ String -> Effect Unit
|
||||
= ( update ∷ String -> Effect Unit
|
||||
, text ∷ Maybe String
|
||||
, className ∷ Maybe String
|
||||
, readOnly ∷ Maybe Boolean
|
||||
| r
|
||||
)
|
||||
|
||||
makeComponent ∷ Effect (ReactComponent Props)
|
||||
makeComponent = do
|
||||
useStyles <- makeStylesJSS styles
|
||||
component "InlineCode" \props@{ className, onSubmit } -> React.do
|
||||
value /\ modifyValue <- useState ""
|
||||
component "InlineCode" \props@{ className, text, update, readOnly } -> React.do
|
||||
value /\ modifyValue <- useState (text ?|| "")
|
||||
classes <- useStyles $ pick props
|
||||
useAff value do
|
||||
delay (200.0 # Milliseconds)
|
||||
onSubmit value # liftEffect
|
||||
update value # liftEffect
|
||||
pure
|
||||
$ R.div
|
||||
{ className: classes.form
|
||||
@ -53,8 +55,10 @@ makeComponent = do
|
||||
{ className: intercalate " " [ classes.inlinecode, fold className ]
|
||||
, maxLength: props.width ?|| 10
|
||||
, value
|
||||
, readOnly: readOnly ?|| false
|
||||
, disabled: readOnly ?|| false
|
||||
, spellCheck: false
|
||||
, autoComplete: false
|
||||
, autoComplete: unsafeCoerce "false"
|
||||
, autoCorrect: "off"
|
||||
, autoCapitalize: "off"
|
||||
, onChange:
|
||||
|
@ -60,6 +60,6 @@ mkWrapper = do
|
||||
pure
|
||||
$ element inlineCode
|
||||
( justifill
|
||||
{ onSubmit: dispatch <<< InlineCodeAction
|
||||
{ update: dispatch <<< InlineCodeAction
|
||||
}
|
||||
)
|
||||
|
@ -30,7 +30,7 @@ stories = do
|
||||
addDecorator fullScreenDecorator
|
||||
add "The InlineCode" InlineCode.makeComponent
|
||||
[ ( justifill
|
||||
{ onSubmit: log
|
||||
{ update: log
|
||||
}
|
||||
)
|
||||
]
|
||||
@ -38,7 +38,7 @@ stories = do
|
||||
[ { inside:
|
||||
\inlineCode ->
|
||||
[ R.text "hi!"
|
||||
, element inlineCode (justifill { onSubmit: log })
|
||||
, element inlineCode (justifill { update: log })
|
||||
, R.text "hello again!"
|
||||
]
|
||||
}
|
||||
@ -47,7 +47,7 @@ stories = do
|
||||
[ { inside:
|
||||
\inlineCode ->
|
||||
[ R.code_ [ R.text "main = logShow \"" ]
|
||||
, element inlineCode (justifill { onSubmit: log })
|
||||
, element inlineCode (justifill { update: log })
|
||||
, R.code_ [ R.text "\"" ]
|
||||
]
|
||||
}
|
||||
@ -96,7 +96,7 @@ mkRealWrapper = do
|
||||
$ R.div_
|
||||
[ R.h2_ [ R.text "Let's log some 'Magick'" ]
|
||||
, fragment $ renderCode codePrefix
|
||||
, element inlineCode (justifill { onSubmit: dispatch <<< InlineCodeSubmitted, width: String.length "Magick" })
|
||||
, element inlineCode (justifill { update: dispatch <<< InlineCodeSubmitted, width: String.length "Magick" })
|
||||
, fragment $ renderCode codeSuffix
|
||||
, R.br {}
|
||||
, case state of
|
||||
|
491
server/package-lock.json
generated
491
server/package-lock.json
generated
@ -4,6 +4,27 @@
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": {
|
||||
"version": "7.9.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
|
||||
"integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
|
||||
"requires": {
|
||||
"regenerator-runtime": "^0.13.4"
|
||||
}
|
||||
},
|
||||
"@emotion/is-prop-valid": {
|
||||
"version": "0.7.3",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz",
|
||||
"integrity": "sha512-uxJqm/sqwXw3YPA5GXX365OBcJGFtxUVkB6WyezqFHlNe9jqUWH5ur2O2M8dGBz61kn1g3ZBlzUunFQXQIClhA==",
|
||||
"requires": {
|
||||
"@emotion/memoize": "0.7.1"
|
||||
}
|
||||
},
|
||||
"@emotion/memoize": {
|
||||
"version": "0.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.1.tgz",
|
||||
"integrity": "sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg=="
|
||||
},
|
||||
"accepts": {
|
||||
"version": "1.3.7",
|
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
|
||||
@ -205,6 +226,21 @@
|
||||
"supports-color": "^5.3.0"
|
||||
}
|
||||
},
|
||||
"character-entities": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
|
||||
"integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw=="
|
||||
},
|
||||
"character-entities-legacy": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
|
||||
"integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA=="
|
||||
},
|
||||
"character-reference-invalid": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
|
||||
"integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg=="
|
||||
},
|
||||
"chownr": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz",
|
||||
@ -220,6 +256,17 @@
|
||||
"restore-cursor": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"clipboard": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz",
|
||||
"integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"good-listener": "^1.2.2",
|
||||
"select": "^1.1.2",
|
||||
"tiny-emitter": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "1.9.3",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||
@ -244,6 +291,11 @@
|
||||
"delayed-stream": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"comma-separated-tokens": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz",
|
||||
"integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw=="
|
||||
},
|
||||
"comment-json": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/comment-json/-/comment-json-2.4.1.tgz",
|
||||
@ -337,6 +389,30 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"css-jss": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/css-jss/-/css-jss-10.1.1.tgz",
|
||||
"integrity": "sha512-HrSD06y4dCfZ6nHtG/SucJBG8tbt+lbyBsUbxfqujyycxPLLd/B9mRKW97B8Ua8VWK8LR4i9ur0P8szZEjoqzQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1",
|
||||
"jss-preset-default": "10.1.1"
|
||||
}
|
||||
},
|
||||
"css-vendor": {
|
||||
"version": "2.0.8",
|
||||
"resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz",
|
||||
"integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.8.3",
|
||||
"is-in-browser": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"csstype": {
|
||||
"version": "2.6.10",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz",
|
||||
"integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w=="
|
||||
},
|
||||
"cyclist": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
|
||||
@ -366,6 +442,12 @@
|
||||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
|
||||
"dev": true
|
||||
},
|
||||
"delegate": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
|
||||
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==",
|
||||
"optional": true
|
||||
},
|
||||
"depd": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
|
||||
@ -528,6 +610,14 @@
|
||||
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
|
||||
"dev": true
|
||||
},
|
||||
"fault": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
|
||||
"integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
|
||||
"requires": {
|
||||
"format": "^0.2.0"
|
||||
}
|
||||
},
|
||||
"figgy-pudding": {
|
||||
"version": "3.5.1",
|
||||
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
|
||||
@ -581,6 +671,11 @@
|
||||
"mime-types": "^2.1.12"
|
||||
}
|
||||
},
|
||||
"format": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
|
||||
"integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs="
|
||||
},
|
||||
"forwarded": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
|
||||
@ -671,6 +766,15 @@
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"good-listener": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
|
||||
"integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"delegate": "^3.1.2"
|
||||
}
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
|
||||
@ -703,6 +807,35 @@
|
||||
"resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz",
|
||||
"integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ=="
|
||||
},
|
||||
"hast-util-parse-selector": {
|
||||
"version": "2.2.4",
|
||||
"resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz",
|
||||
"integrity": "sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA=="
|
||||
},
|
||||
"hastscript": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz",
|
||||
"integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==",
|
||||
"requires": {
|
||||
"comma-separated-tokens": "^1.0.0",
|
||||
"hast-util-parse-selector": "^2.0.0",
|
||||
"property-information": "^5.0.0",
|
||||
"space-separated-tokens": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"highlight.js": {
|
||||
"version": "9.15.10",
|
||||
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.10.tgz",
|
||||
"integrity": "sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw=="
|
||||
},
|
||||
"hoist-non-react-statics": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
|
||||
"integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
|
||||
"requires": {
|
||||
"react-is": "^16.7.0"
|
||||
}
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.7.2",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
|
||||
@ -726,6 +859,11 @@
|
||||
"sshpk": "^1.7.0"
|
||||
}
|
||||
},
|
||||
"hyphenate-style-name": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz",
|
||||
"integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ=="
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.4.24",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
||||
@ -766,12 +904,41 @@
|
||||
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
|
||||
"integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
|
||||
},
|
||||
"is-alphabetical": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
|
||||
"integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg=="
|
||||
},
|
||||
"is-alphanumerical": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
|
||||
"integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
|
||||
"requires": {
|
||||
"is-alphabetical": "^1.0.0",
|
||||
"is-decimal": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"is-decimal": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
|
||||
"integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw=="
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
|
||||
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
|
||||
"dev": true
|
||||
},
|
||||
"is-hexadecimal": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
|
||||
"integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw=="
|
||||
},
|
||||
"is-in-browser": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz",
|
||||
"integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU="
|
||||
},
|
||||
"is-plain-obj": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
|
||||
@ -808,6 +975,11 @@
|
||||
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
|
||||
"dev": true
|
||||
},
|
||||
"js-tokens": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
||||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
|
||||
},
|
||||
"jsbn": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
|
||||
@ -861,6 +1033,153 @@
|
||||
"verror": "1.10.0"
|
||||
}
|
||||
},
|
||||
"jss": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss/-/jss-10.1.1.tgz",
|
||||
"integrity": "sha512-Xz3qgRUFlxbWk1czCZibUJqhVPObrZHxY3FPsjCXhDld4NOj1BgM14Ir5hVm+Qr6OLqVljjGvoMcCdXNOAbdkQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"csstype": "^2.6.5",
|
||||
"is-in-browser": "^1.1.3",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"jss-plugin-camel-case": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.1.1.tgz",
|
||||
"integrity": "sha512-MDIaw8FeD5uFz1seQBKz4pnvDLnj5vIKV5hXSVdMaAVq13xR6SVTVWkIV/keyTs5txxTvzGJ9hXoxgd1WTUlBw==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"hyphenate-style-name": "^1.0.3",
|
||||
"jss": "10.1.1"
|
||||
}
|
||||
},
|
||||
"jss-plugin-compose": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-compose/-/jss-plugin-compose-10.1.1.tgz",
|
||||
"integrity": "sha512-0fD+YVGk0fVnsLiNf7CG4Lv7lYwmNyeE62Fbccx8k1mMdFoE7he0hpx37tudsfKW2ArCE+hf4fmJDXPW8l6LBw==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"jss-plugin-default-unit": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.1.1.tgz",
|
||||
"integrity": "sha512-UkeVCA/b3QEA4k0nIKS4uWXDCNmV73WLHdh2oDGZZc3GsQtlOCuiH3EkB/qI60v2MiCq356/SYWsDXt21yjwdg==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1"
|
||||
}
|
||||
},
|
||||
"jss-plugin-expand": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-expand/-/jss-plugin-expand-10.1.1.tgz",
|
||||
"integrity": "sha512-ITO3RR4eTB3628B+gx8gLI7TKKE0TsFDBJ7BA648ZhXjHWQ5uxdC1bZld+++xnFL1l4kerj5tuWmZxS64C1Kcg==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1"
|
||||
}
|
||||
},
|
||||
"jss-plugin-extend": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-extend/-/jss-plugin-extend-10.1.1.tgz",
|
||||
"integrity": "sha512-dZl0hNsndP9GJM6yqA7lZmnx6KJHo/13Zeo5B3i2uaDNO9jd5Y3pp1XHURGfbFG3K29XsYBQPTgfBwQ7e7+nyA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"jss-plugin-global": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.1.1.tgz",
|
||||
"integrity": "sha512-VBG3wRyi3Z8S4kMhm8rZV6caYBegsk+QnQZSVmrWw6GVOT/Z4FA7eyMu5SdkorDlG/HVpHh91oFN56O4R9m2VA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1"
|
||||
}
|
||||
},
|
||||
"jss-plugin-nested": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.1.1.tgz",
|
||||
"integrity": "sha512-ozEu7ZBSVrMYxSDplPX3H82XHNQk2DQEJ9TEyo7OVTPJ1hEieqjDFiOQOxXEj9z3PMqkylnUbvWIZRDKCFYw5Q==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"jss-plugin-props-sort": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.1.1.tgz",
|
||||
"integrity": "sha512-g/joK3eTDZB4pkqpZB38257yD4LXB0X15jxtZAGbUzcKAVUHPl9Jb47Y7lYmiGsShiV4YmQRqG1p2DHMYoK91g==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1"
|
||||
}
|
||||
},
|
||||
"jss-plugin-rule-value-function": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.1.1.tgz",
|
||||
"integrity": "sha512-ClV1lvJ3laU9la1CUzaDugEcwnpjPTuJ0yGy2YtcU+gG/w9HMInD5vEv7xKAz53Bk4WiJm5uLOElSEshHyhKNw==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1"
|
||||
}
|
||||
},
|
||||
"jss-plugin-rule-value-observable": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-rule-value-observable/-/jss-plugin-rule-value-observable-10.1.1.tgz",
|
||||
"integrity": "sha512-l1zmLfS5Ks6CrthOIVTokHkDoI01ymnwNBlciN+IlaR4UsLEQBBL0+3BfQjOPvIYRAYXxYx3G7ebUHebr8mWyA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1",
|
||||
"symbol-observable": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"jss-plugin-template": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-template/-/jss-plugin-template-10.1.1.tgz",
|
||||
"integrity": "sha512-CPhNapLDgj6gIJOi3vj/QPohF/1OHuLQj8ZjBYqrnzCDSfYV5s2Rzp1TicFGxUb07BRLh62ymU+MgH1hbKGSTQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"jss-plugin-vendor-prefixer": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.1.1.tgz",
|
||||
"integrity": "sha512-09MZpQ6onQrhaVSF6GHC4iYifQ7+4YC/tAP6D4ZWeZotvCMq1mHLqNKRIaqQ2lkgANjlEot2JnVi1ktu4+L4pw==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"css-vendor": "^2.0.7",
|
||||
"jss": "10.1.1"
|
||||
}
|
||||
},
|
||||
"jss-preset-default": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-10.1.1.tgz",
|
||||
"integrity": "sha512-YwQp/BZ8IiBwxDTQ4uPAjzI2k2njrw6RJegAPvhCB1MTmWN2oR9Dhb5aN3RtepUf/agUkewTMwQqoS6PijgVMg==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.1.1",
|
||||
"jss-plugin-camel-case": "10.1.1",
|
||||
"jss-plugin-compose": "10.1.1",
|
||||
"jss-plugin-default-unit": "10.1.1",
|
||||
"jss-plugin-expand": "10.1.1",
|
||||
"jss-plugin-extend": "10.1.1",
|
||||
"jss-plugin-global": "10.1.1",
|
||||
"jss-plugin-nested": "10.1.1",
|
||||
"jss-plugin-props-sort": "10.1.1",
|
||||
"jss-plugin-rule-value-function": "10.1.1",
|
||||
"jss-plugin-rule-value-observable": "10.1.1",
|
||||
"jss-plugin-template": "10.1.1",
|
||||
"jss-plugin-vendor-prefixer": "10.1.1"
|
||||
}
|
||||
},
|
||||
"log-symbols": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
|
||||
@ -881,6 +1200,23 @@
|
||||
"wrap-ansi": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"loose-envify": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
|
||||
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
|
||||
"requires": {
|
||||
"js-tokens": "^3.0.0 || ^4.0.0"
|
||||
}
|
||||
},
|
||||
"lowlight": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.12.1.tgz",
|
||||
"integrity": "sha512-OqaVxMGIESnawn+TU/QMV5BJLbUghUfjDWPAtFqDYDmDtr4FnB+op8xM+pR7nKlauHNUHXGt0VgWatFB8voS5w==",
|
||||
"requires": {
|
||||
"fault": "^1.0.2",
|
||||
"highlight.js": "~9.15.0"
|
||||
}
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
||||
@ -1042,6 +1378,11 @@
|
||||
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
|
||||
"dev": true
|
||||
},
|
||||
"object-assign": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
|
||||
},
|
||||
"on-finished": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||
@ -1085,6 +1426,19 @@
|
||||
"readable-stream": "^2.1.5"
|
||||
}
|
||||
},
|
||||
"parse-entities": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz",
|
||||
"integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==",
|
||||
"requires": {
|
||||
"character-entities": "^1.0.0",
|
||||
"character-entities-legacy": "^1.0.0",
|
||||
"character-reference-invalid": "^1.0.0",
|
||||
"is-alphanumerical": "^1.0.0",
|
||||
"is-decimal": "^1.0.0",
|
||||
"is-hexadecimal": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"parseurl": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
|
||||
@ -1113,6 +1467,14 @@
|
||||
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
|
||||
"dev": true
|
||||
},
|
||||
"prismjs": {
|
||||
"version": "1.20.0",
|
||||
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.20.0.tgz",
|
||||
"integrity": "sha512-AEDjSrVNkynnw6A+B1DsFkd6AVdTnp+/WoUixFRULlCLZVRZlVQMVWio/16jv7G1FscUxQxOQhWwApgbnxr6kQ==",
|
||||
"requires": {
|
||||
"clipboard": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"process-nextick-args": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||
@ -1125,6 +1487,24 @@
|
||||
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
|
||||
"dev": true
|
||||
},
|
||||
"prop-types": {
|
||||
"version": "15.7.2",
|
||||
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
|
||||
"integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
|
||||
"requires": {
|
||||
"loose-envify": "^1.4.0",
|
||||
"object-assign": "^4.1.1",
|
||||
"react-is": "^16.8.1"
|
||||
}
|
||||
},
|
||||
"property-information": {
|
||||
"version": "5.4.0",
|
||||
"resolved": "https://registry.npmjs.org/property-information/-/property-information-5.4.0.tgz",
|
||||
"integrity": "sha512-nmMWAm/3vKFGmmOWOcdLjgq/Hlxa+hsuR/px1Lp/UGEyc5A22A6l78Shc2C0E71sPmAqglni+HrS7L7VJ7AUCA==",
|
||||
"requires": {
|
||||
"xtend": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"proxy-addr": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
|
||||
@ -1245,6 +1625,46 @@
|
||||
"unpipe": "1.0.0"
|
||||
}
|
||||
},
|
||||
"react-display-name": {
|
||||
"version": "0.2.5",
|
||||
"resolved": "https://registry.npmjs.org/react-display-name/-/react-display-name-0.2.5.tgz",
|
||||
"integrity": "sha512-I+vcaK9t4+kypiSgaiVWAipqHRXYmZIuAiS8vzFvXHHXVigg/sMKwlRgLy6LH2i3rmP+0Vzfl5lFsFRwF1r3pg=="
|
||||
},
|
||||
"react-is": {
|
||||
"version": "16.13.1",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
|
||||
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
|
||||
},
|
||||
"react-jss": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/react-jss/-/react-jss-10.1.1.tgz",
|
||||
"integrity": "sha512-GCSKkyj6/bDNNgK1KtaU1FbTAKJ7CQE83p34qKpCc4tVPRi1wCfopyKot1cW/YYJizqltc2MaKzGqFK5eZhBSQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"@emotion/is-prop-valid": "^0.7.3",
|
||||
"css-jss": "10.1.1",
|
||||
"hoist-non-react-statics": "^3.2.0",
|
||||
"is-in-browser": "^1.1.3",
|
||||
"jss": "10.1.1",
|
||||
"jss-preset-default": "10.1.1",
|
||||
"prop-types": "^15.6.0",
|
||||
"shallow-equal": "^1.2.0",
|
||||
"theming": "3.2.0",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"react-syntax-highlighter": {
|
||||
"version": "12.2.1",
|
||||
"resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-12.2.1.tgz",
|
||||
"integrity": "sha512-CTsp0ZWijwKRYFg9xhkWD4DSpQqE4vb2NKVMdPAkomnILSmsNBHE0n5GuI5zB+PU3ySVvXvdt9jo+ViD9XibCA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"highlight.js": "~9.15.1",
|
||||
"lowlight": "1.12.1",
|
||||
"prismjs": "^1.8.4",
|
||||
"refractor": "^2.4.1"
|
||||
}
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.3.7",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
|
||||
@ -1260,6 +1680,31 @@
|
||||
"util-deprecate": "~1.0.1"
|
||||
}
|
||||
},
|
||||
"refractor": {
|
||||
"version": "2.10.1",
|
||||
"resolved": "https://registry.npmjs.org/refractor/-/refractor-2.10.1.tgz",
|
||||
"integrity": "sha512-Xh9o7hQiQlDbxo5/XkOX6H+x/q8rmlmZKr97Ie1Q8ZM32IRRd3B/UxuA/yXDW79DBSXGWxm2yRTbcTVmAciJRw==",
|
||||
"requires": {
|
||||
"hastscript": "^5.0.0",
|
||||
"parse-entities": "^1.1.2",
|
||||
"prismjs": "~1.17.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"prismjs": {
|
||||
"version": "1.17.1",
|
||||
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.17.1.tgz",
|
||||
"integrity": "sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q==",
|
||||
"requires": {
|
||||
"clipboard": "^2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"regenerator-runtime": {
|
||||
"version": "0.13.5",
|
||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
|
||||
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
|
||||
},
|
||||
"repeat-string": {
|
||||
"version": "1.6.1",
|
||||
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
|
||||
@ -1362,6 +1807,12 @@
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"select": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
|
||||
"integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=",
|
||||
"optional": true
|
||||
},
|
||||
"send": {
|
||||
"version": "0.17.1",
|
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
|
||||
@ -1405,6 +1856,11 @@
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
|
||||
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
|
||||
},
|
||||
"shallow-equal": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
|
||||
"integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
|
||||
},
|
||||
"shebang-command": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||
@ -1426,6 +1882,11 @@
|
||||
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
|
||||
"dev": true
|
||||
},
|
||||
"space-separated-tokens": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
|
||||
"integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA=="
|
||||
},
|
||||
"spago": {
|
||||
"version": "0.14.0",
|
||||
"resolved": "https://registry.npmjs.org/spago/-/spago-0.14.0.tgz",
|
||||
@ -1527,6 +1988,11 @@
|
||||
"has-flag": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"symbol-observable": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
|
||||
"integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
|
||||
},
|
||||
"tar": {
|
||||
"version": "4.4.13",
|
||||
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
|
||||
@ -1542,6 +2008,17 @@
|
||||
"yallist": "^3.0.3"
|
||||
}
|
||||
},
|
||||
"theming": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/theming/-/theming-3.2.0.tgz",
|
||||
"integrity": "sha512-n0fSNYXkX63rcFBBeAthy14IcgPZLHp0OGkGZheaj64j7cBoP7INLd6+7HIXqWVjFn1M5cYSiZ1nszi+jo/Szg==",
|
||||
"requires": {
|
||||
"hoist-non-react-statics": "^3.3.0",
|
||||
"prop-types": "^15.5.8",
|
||||
"react-display-name": "^0.2.4",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"through2": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
|
||||
@ -1552,6 +2029,17 @@
|
||||
"xtend": "~4.0.1"
|
||||
}
|
||||
},
|
||||
"tiny-emitter": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
|
||||
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==",
|
||||
"optional": true
|
||||
},
|
||||
"tiny-warning": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
|
||||
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
|
||||
},
|
||||
"toidentifier": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
|
||||
@ -1703,8 +2191,7 @@
|
||||
"xtend": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
|
||||
},
|
||||
"y18n": {
|
||||
"version": "4.0.0",
|
||||
|
@ -17,8 +17,8 @@
|
||||
"express": "^4.17.1",
|
||||
"fs-extra": "^9.0.0",
|
||||
"json-parser": "^3.1.2",
|
||||
"uuid": "^7.0.2",
|
||||
"minimist": "^1.2.2"
|
||||
"minimist": "^1.2.2",
|
||||
"uuid": "^7.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"purescript": "^0.13.6",
|
||||
|
Loading…
Reference in New Issue
Block a user