diff --git a/demo/App.js b/demo/App.js
index 50ce944..c9d4af3 100644
--- a/demo/App.js
+++ b/demo/App.js
@@ -18,7 +18,7 @@ import {
} from 'react-native-debug-console';
network.attach();
-log.attach();
+log.attach(true);
context.hello = () => 'earth';
console.log('fooo');
diff --git a/demo/package.json b/demo/package.json
index 555ef9b..f870f4e 100644
--- a/demo/package.json
+++ b/demo/package.json
@@ -16,14 +16,15 @@
"react-dom": "^16.8.6",
"react-native": "https://github.com/expo/react-native/archive/sdk-33.0.0.tar.gz",
"react-native-debug-console": "2.0.0-alpha.1",
- "react-native-web": "^0.11.4"
+ "react-native-web": "0.11.4"
},
"devDependencies": {
"@babel/runtime": "^7.5.0",
+ "babel-plugin-module-resolver": "^3.2.0",
"babel-preset-expo": "^5.1.1",
"expo-cli": "^2.21.2",
"expo-yarn-workspaces": "^1.2.0",
- "babel-plugin-module-resolver": "^3.2.0"
+ "react-art": "^16.8.6"
},
"private": true
}
diff --git a/lib/package.json b/lib/package.json
index 929b72c..de63315 100644
--- a/lib/package.json
+++ b/lib/package.json
@@ -8,12 +8,12 @@
"license": "MIT",
"dependencies": {
"react-native-json-tree": "^1.2.0",
- "styled-components": "^4.3.1"
+ "styled-components": "^5.0.0-beta.8"
},
"peerDependencies": {
- "prop-types": "^15.6.0",
- "react": "^16.8.3",
- "react-native": "^0.59.8"
+ "prop-types": "^15.6.0",
+ "react": "^16.8.3",
+ "react-native": "^0.59.8"
},
"devDependencies": {}
}
diff --git a/lib/src/components/DevTool/Console/Output.js b/lib/src/components/DevTool/Console/Output.js
index 3b6b5e0..eb0db62 100644
--- a/lib/src/components/DevTool/Console/Output.js
+++ b/lib/src/components/DevTool/Console/Output.js
@@ -1,4 +1,4 @@
-import React, { Fragment } from 'react';
+import React, { Fragment, createRef } from 'react';
import styled from 'styled-components/native';
import JSONTree from 'react-native-json-tree';
import {
@@ -102,28 +102,32 @@ const Console = ({
logs,
includeStackTrace,
filter = [],
-}) => (
- this.scrollView = ref}
- onContentSizeChange={(contentWidth, contentHeight)=>{
- this.scrollView.scrollToEnd({animated: true});
- }}
- >
-
- {logs.filter(l => filter.includes(l.type)).map((log, i) => (
-
-
- {log.type}
-
-
-
- ))}
-
-
-);
+}) => {
+ // const ref = createRef();
+ return (
+ {
+ /*if (ref.current) {
+ ref.current.scrollView.scrollToEnd({animated: true});
+ }*/
+ }}
+ >
+
+ {logs.filter(l => filter.includes(l.type)).map((log, i) => (
+
+
+ {log.type}
+
+
+
+ ))}
+
+
+ );
+};
export default Console;
diff --git a/lib/src/components/DevTool/Modal.js b/lib/src/components/DevTool/Modal.js
index 44bcf61..7dd463f 100644
--- a/lib/src/components/DevTool/Modal.js
+++ b/lib/src/components/DevTool/Modal.js
@@ -1,12 +1,11 @@
import React, { Component } from 'react';
import {
- Button,
- Modal,
SafeAreaView,
KeyboardAvoidingView,
} from 'react-native';
import events from '../../events';
import DevTool from './index';
+import Modal from '../base/Modal';
class Events extends Component {
diff --git a/lib/src/components/base/Modal/index.js b/lib/src/components/base/Modal/index.js
new file mode 100644
index 0000000..131f0d4
--- /dev/null
+++ b/lib/src/components/base/Modal/index.js
@@ -0,0 +1,5 @@
+import {
+ Modal
+} from 'react-native';
+
+export default Modal;
\ No newline at end of file
diff --git a/lib/src/components/base/Modal/index.web.js b/lib/src/components/base/Modal/index.web.js
new file mode 100644
index 0000000..330e5f7
--- /dev/null
+++ b/lib/src/components/base/Modal/index.web.js
@@ -0,0 +1,41 @@
+import React, { useEffect, useState } from 'react';
+import { createPortal } from 'react-dom';
+import styled from 'styled-components';
+
+const Wrapper = styled.div`
+ position: fixed;
+ background: #fff;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+`;
+
+const Modal = ({
+ visible,
+ children
+}) => {
+ const [root, setRoot] = useState();
+ useEffect(() => {
+ const elm = document.createElement('div');
+ document.body.appendChild(elm);
+ setRoot(elm);
+ }, []);
+
+ const elm = visible ? (
+ {children}
+ ) : null;
+
+ if (!root) {
+ return null;
+ }
+
+ return createPortal(
+ elm,
+ root,
+ );
+};
+
+export default Modal;
\ No newline at end of file
diff --git a/lib/src/components/base/Toolbar/Selector.js b/lib/src/components/base/Toolbar/Selector.js
index 5ccdede..712554d 100644
--- a/lib/src/components/base/Toolbar/Selector.js
+++ b/lib/src/components/base/Toolbar/Selector.js
@@ -3,18 +3,15 @@ import {
SafeAreaView,
TouchableOpacity,
} from 'react-native';
-import styled from 'styled-components/native';
import State from '../../data/State';
import Button from './Button';
import Row from '../Row';
import Icon from '../Icon';
+import Modal from '../Modal';
import {
Body,
} from '../text';
-const Modal = styled.Modal`
-`;
-
const Selector = ({
multiSelect = false,
onSelect,
diff --git a/lib/src/log.js b/lib/src/log.js
index 334f35c..cf4c9dc 100644
--- a/lib/src/log.js
+++ b/lib/src/log.js
@@ -27,6 +27,9 @@ class Log {
}
log(type, data, keep) {
+ if (data && data[0] && data[0].indexOf && data[0].indexOf('Warning: Using the "className" prop on') === 0) {
+ return;
+ }
const entry = {
type,
data,
@@ -68,9 +71,11 @@ class Log {
debug: (...data) => this.debug(data, keep),
verbose: (...data) => this.debug(data, keep),
};
- ErrorUtils.setGlobalHandler((err, fatal) => {
- this.error([err], keep);
- });
+ if (global.ErrorUtils) {
+ global.ErrorUtils.setGlobalHandler((err, fatal) => {
+ this.error([err], keep);
+ });
+ }
}
detach() {
diff --git a/package.json b/package.json
index 876ffd8..7d33781 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,8 @@
],
"scripts": {
"postinstall": "lerna bootstrap",
- "demo:ios": "lerna run --scope=react-native-debug-console-demo --stream ios"
+ "demo:ios": "lerna run --scope=react-native-debug-console-demo --stream ios",
+ "demo:web": "lerna run --scope=react-native-debug-console-demo --stream web"
},
"devDependencies": {
"lerna": "^3.0.3"
diff --git a/yarn.lock b/yarn.lock
index b209266..b8b0d7a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -823,7 +823,7 @@
"@babel/parser" "^7.4.4"
"@babel/types" "^7.4.4"
-"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.0":
+"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.4.5", "@babel/traverse@^7.5.0":
version "7.5.0"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.0.tgz#4216d6586854ef5c3c4592dab56ec7eb78485485"
integrity sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg==
@@ -859,6 +859,11 @@
resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.2.tgz#7f4c71b7654068dfcccad29553520f984cc66b30"
integrity sha512-hnHhwQzvPCW1QjBWFyBtsETdllOM92BfrKWbUTmh9aeOlcVOiXvlPsK4104xH8NsaKfg86PTFsWkueQeUfMA/w==
+"@emotion/stylis@^0.8.3":
+ version "0.8.4"
+ resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.4.tgz#6c51afdf1dd0d73666ba09d2eb6c25c220d6fe4c"
+ integrity sha512-TLmkCVm8f8gH0oLv+HWKiu7e8xmBIaokhxcEKPh1m8pXiV/akCiq50FvYgOwY42rjejck8nsdQxZlXZ7pmyBUQ==
+
"@emotion/unitless@^0.7.0":
version "0.7.4"
resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.4.tgz#a87b4b04e5ae14a88d48ebef15015f6b7d1f5677"
@@ -2723,7 +2728,7 @@ arrify@^1.0.0, arrify@^1.0.1:
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
-art@^0.10.0:
+art@^0.10.0, art@^0.10.1:
version "0.10.3"
resolved "https://registry.yarnpkg.com/art/-/art-0.10.3.tgz#b01d84a968ccce6208df55a733838c96caeeaea2"
integrity sha512-HXwbdofRTiJT6qZX/FnchtldzJjS3vkLJxQilc3Xj+ma2MXjY4UAyQ0ls1XZYVnDvVIBiFZbC6QsvtW86TD6tQ==
@@ -8577,11 +8582,6 @@ mem@^4.0.0:
mimic-fn "^2.0.0"
p-is-promise "^2.0.0"
-memoize-one@^5.0.0:
- version "5.0.4"
- resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.0.4.tgz#005928aced5c43d890a4dfab18ca908b0ec92cbc"
- integrity sha512-P0z5IeAH6qHHGkJIXWw0xC2HNEgkx/9uWWBQw64FJj3/ol14VYdfVGWWr0fXfjhhv3TKVIqUq65os6O4GUNksA==
-
memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
@@ -8621,7 +8621,7 @@ meow@^4.0.0:
redent "^2.0.0"
trim-newlines "^2.0.0"
-merge-anything@^2.2.4:
+merge-anything@^2.2.5:
version "2.2.5"
resolved "https://registry.yarnpkg.com/merge-anything/-/merge-anything-2.2.5.tgz#37ef13f36359ee64f09c657d2cef45f7e29493f9"
integrity sha512-WgZGR7EQ1D8pyh57uKBbkPhUCJZLGdMzbDaxL4MDTJSGsvtpGdm8myr6DDtgJwT46xiFBlHqxbveDRpFBWlKWQ==
@@ -10798,7 +10798,7 @@ promzard@^0.3.0:
dependencies:
read "1"
-prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2:
+prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2:
version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
@@ -11040,6 +11040,18 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8:
minimist "^1.2.0"
strip-json-comments "~2.0.1"
+react-art@^16.8.6:
+ version "16.8.6"
+ resolved "https://registry.yarnpkg.com/react-art/-/react-art-16.8.6.tgz#66707f8bb20a27147bce47402e38eefc9fd863fd"
+ integrity sha512-viR81SLSrUNF8YCLCdhLKKP3hLMxpyJPzozl0Zq6F3ALKGcynBd92MZHVl1oLkMBvCyS4Qf8s5pandJg34YHxA==
+ dependencies:
+ art "^0.10.1"
+ create-react-class "^15.6.2"
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+ prop-types "^15.6.2"
+ scheduler "^0.13.6"
+
"react-base16-styling@github:dean177/react-base16-styling#fbc6593":
version "0.4.6"
resolved "https://codeload.github.com/dean177/react-base16-styling/tar.gz/fbc6593cc58c5f4662c40b85964c7f9fbcb3984d"
@@ -11130,7 +11142,7 @@ react-google-maps@^9.4.5:
scriptjs "^2.5.8"
warning "^3.0.0"
-react-is@^16.6.0, react-is@^16.8.1:
+react-is@^16.8.1:
version "16.8.6"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16"
integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==
@@ -11189,10 +11201,10 @@ react-native-view-shot@2.6.0:
resolved "https://registry.yarnpkg.com/react-native-view-shot/-/react-native-view-shot-2.6.0.tgz#3b23675826f67658366352c4b97b59a6aded2f43"
integrity sha512-yO9vWi/11m2hEJl8FrW1SMeVzFfPtMKh20MUInGqlsL0H8Ya2JGGlFfrBzx1KiFR2hFb5OdsTLYNtcVZtJ6pLQ==
-react-native-web@^0.11.4:
- version "0.11.5"
- resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.11.5.tgz#adf2eff902fdb32e86be7877294d9a6bb0ad3815"
- integrity sha512-KVvE6s32uBgp5m1BNSfNOXvGo1wt/pORSKvi8oy8tdhAPYqsr0oMuMP3rZd8vk+MpiYt1Z8raS/n+DK2xj85Jg==
+react-native-web@0.11.4:
+ version "0.11.4"
+ resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.11.4.tgz#86e8158d83a6a41983e43b1c84acaaa342d443b2"
+ integrity sha512-xuiHd9mxtOUlCY/CY8UO25a3cX5u3qsEdhl7zXLDNbJ0nu1Tf98GsplBZgdnDB0q/LpYVPQWmjnTEerncsO2vw==
dependencies:
array-find-index "^1.0.2"
create-react-class "^15.6.2"
@@ -12075,6 +12087,11 @@ sha.js@^2.4.0, sha.js@^2.4.8:
inherits "^2.0.1"
safe-buffer "^5.0.1"
+shallowequal@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
+ integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
+
sharp-cli@1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/sharp-cli/-/sharp-cli-1.10.0.tgz#d201c85303ee66be286051157c2161053860aeb3"
@@ -12686,22 +12703,20 @@ style-loader@^0.23.1:
loader-utils "^1.1.0"
schema-utils "^1.0.0"
-styled-components@^4.3.1:
- version "4.3.2"
- resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-4.3.2.tgz#4ca81918c812d3006f60ac5fdec7d6b64a9509cc"
- integrity sha512-NppHzIFavZ3TsIU3R1omtddJ0Bv1+j50AKh3ZWyXHuFvJq1I8qkQ5mZ7uQgD89Y8zJNx2qRo6RqAH1BmoVafHw==
+styled-components@^5.0.0-beta.8:
+ version "5.0.0-beta.8"
+ resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.0.0-beta.8.tgz#ad1e672589a891987f5492cbe3ca6f480fcd99dc"
+ integrity sha512-g4MrDmfaoR2jJnA56+JSTFf1ZsDpJYdvTyQSw3HWOHoV/KlCgaSFmU8TrHfTy7DwWQskxyX//IQInNZdn4mGcA==
dependencies:
"@babel/helper-module-imports" "^7.0.0"
- "@babel/traverse" "^7.0.0"
+ "@babel/traverse" "^7.4.5"
"@emotion/is-prop-valid" "^0.8.1"
+ "@emotion/stylis" "^0.8.3"
"@emotion/unitless" "^0.7.0"
babel-plugin-styled-components ">= 1"
css-to-react-native "^2.2.2"
- memoize-one "^5.0.0"
- merge-anything "^2.2.4"
- prop-types "^15.5.4"
- react-is "^16.6.0"
- stylis "^3.5.0"
+ merge-anything "^2.2.5"
+ shallowequal "^1.1.0"
stylis-rule-sheet "^0.0.10"
supports-color "^5.5.0"
@@ -12719,11 +12734,6 @@ stylis-rule-sheet@^0.0.10:
resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430"
integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==
-stylis@^3.5.0:
- version "3.5.4"
- resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe"
- integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==
-
subscriptions-transport-ws@0.9.8:
version "0.9.8"
resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.8.tgz#3a26ab96e06f78cf4ace8d083f6227fa55970947"