Skip to content

Commit cc967bb

Browse files
committed
Modify .gitignore for npm.
1 parent a30a454 commit cc967bb

File tree

4 files changed

+106
-2
lines changed

4 files changed

+106
-2
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
# production
1212
/build
13-
/dist
1413

1514
# misc
1615
.DS_Store

dist/Retool.js

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2+
3+
import React from 'react';
4+
import './retool.css';
5+
6+
class Retool extends React.Component {
7+
constructor(props) {
8+
super(props);
9+
10+
_defineProperty(this, "startListening", () => {
11+
window.addEventListener('message', e => this.handle(e));
12+
});
13+
14+
_defineProperty(this, "startWatchers", () => {
15+
var watcherKeys = Object.keys(this.state.elementWatchers);
16+
17+
for (var i = 0; i < watcherKeys.length; i++) {
18+
var key = watcherKeys[i];
19+
var watcher = this.state.elementWatchers[key];
20+
var selector = watcher.selector;
21+
var node = document.querySelector(selector);
22+
var value = node?.textContent;
23+
24+
if (value !== watcher.prevValue) {
25+
watcher.prevValue = value;
26+
watcher.iframe.contentWindow.postMessage({
27+
type: 'PARENT_WINDOW_RESULT',
28+
result: value,
29+
id: watcher.queryId,
30+
pageName: watcher.pageName
31+
}, '*');
32+
}
33+
}
34+
35+
setTimeout(this.startWatchers, 100);
36+
});
37+
38+
_defineProperty(this, "createOrReplaceWatcher", (selector, pageName, queryId) => {
39+
var watcherId = pageName + '-' + queryId;
40+
var watchers = { ...this.state.elementWatchers
41+
};
42+
watchers[watcherId] = {
43+
iframe: this.iframe,
44+
selector: selector,
45+
pageName: pageName,
46+
queryId: queryId,
47+
prevValue: null
48+
};
49+
this.setState({
50+
elementWatchers: watchers
51+
});
52+
});
53+
54+
_defineProperty(this, "handle", event => {
55+
if (!this.iframe.contentWindow) return;
56+
var node;
57+
58+
if (event.data.type === 'PARENT_WINDOW_QUERY') {
59+
node = document.querySelector(event.data.selector);
60+
this.createOrReplaceWatcher(event.data.selector, event.data.pageName, event.data.id);
61+
this.iframe.contentWindow.postMessage({
62+
type: 'PARENT_WINDOW_RESULT',
63+
result: node?.textContent,
64+
id: event.data.id,
65+
pageName: event.data.pageName
66+
}, '*');
67+
}
68+
69+
if (event.data.type === 'PARENT_WINDOW_PREVIEW_QUERY') {
70+
node = document.querySelector(event.data.selector);
71+
this.iframe.contentWindow.postMessage({
72+
type: 'PARENT_WINDOW_PREVIEW_RESULT',
73+
result: node?.textContent,
74+
id: event.data.id
75+
}, '*');
76+
}
77+
});
78+
79+
this.state = {
80+
url: props.url,
81+
elementWatchers: {}
82+
};
83+
}
84+
85+
componentDidMount() {
86+
this.startListening();
87+
this.startWatchers();
88+
}
89+
90+
render() {
91+
return /*#__PURE__*/React.createElement("iframe", {
92+
frameBorder: "none",
93+
src: this.state.url,
94+
ref: e => {
95+
this.iframe = e;
96+
}
97+
});
98+
}
99+
100+
}
101+
102+
export default Retool;

dist/retool.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
iframe {
2+
width: 100%;
3+
height: 100%
4+
}

src/App.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
import './App.css';
32
import Retool from './components/Retool'
43

0 commit comments

Comments
 (0)