galadrim-feedback 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -3,8 +3,8 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var reactQuery = require('@tanstack/react-query');
5
5
  var React = require('react');
6
- var axios = require('axios');
7
6
  var reactDom = require('react-dom');
7
+ var axios = require('axios');
8
8
 
9
9
  const api = axios.create({
10
10
  baseURL: "http://localhost:3000",
@@ -112,16 +112,13 @@ const FeedbackItem = ({ feedback }) => {
112
112
  }, children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("p", { style: { fontSize: "16px", fontWeight: "bold" }, children: "Feedback" }), jsxRuntime.jsxs("p", { style: { fontSize: "14px" }, children: ["Created at: ", feedback.createdAt.toLocaleString()] }), jsxRuntime.jsx("a", { href: feedback.elementId, target: "_blank", children: "Go to component" })] }), jsxRuntime.jsx("button", { onClick: handleDeleteFeedback, children: "Delete" })] }), jsxRuntime.jsx("p", { style: { fontSize: "14px" }, children: feedback.comment })] }), document.body);
113
113
  };
114
114
 
115
- new reactQuery.QueryClient();
116
115
  function Root() {
117
116
  const [isOpen, setIsOpen] = React.useState(false);
118
117
  const { data: feedbacks } = useFeedbacks();
119
118
  console.log("feedbacks 1 : ", feedbacks);
120
- const [creatingFeedback, setCreatingFeedback] = React.useState(false);
121
119
  const { mutate: createFeedback } = useCreateFeedback();
122
120
  React.useEffect(() => {
123
121
  if (isOpen) {
124
- console.log("Opening feedbacks canvas");
125
122
  window.addEventListener("keydown", handleKeyPress);
126
123
  return () => {
127
124
  window.removeEventListener("keypress", handleKeyPress);
@@ -129,13 +126,11 @@ function Root() {
129
126
  }
130
127
  }, [isOpen]);
131
128
  const handleKeyPress = (event) => {
132
- console.log(event.key);
133
129
  if (event.key === "Escape") {
134
130
  setIsOpen(false);
135
131
  }
136
132
  };
137
133
  const handleClick = (e) => {
138
- console.log("click");
139
134
  e.stopPropagation();
140
135
  e.preventDefault();
141
136
  const node = e.target;
@@ -149,8 +144,6 @@ function Root() {
149
144
  const newFeedback = {
150
145
  x,
151
146
  y,
152
- screenWidth: window.innerWidth,
153
- screenHeight: window.innerHeight,
154
147
  comment: "test",
155
148
  path: window.location.pathname,
156
149
  elementId,
@@ -160,12 +153,10 @@ function Root() {
160
153
  createFeedback(newFeedback);
161
154
  document.body.classList.remove("comment-cursor");
162
155
  document.removeEventListener("click", handleClick, true);
163
- setCreatingFeedback(false);
164
156
  setIsOpen(true);
165
157
  };
166
158
  const handleCreateFeedback = (e) => {
167
159
  e.stopPropagation();
168
- setCreatingFeedback(true);
169
160
  document.body.classList.add("comment-cursor");
170
161
  document.addEventListener("click", handleClick, true);
171
162
  };
@@ -202,4 +193,4 @@ function App() {
202
193
  }
203
194
 
204
195
  module.exports = App;
205
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvc2VydmljZXMvYXBpLnRzIiwiLi4vc3JjL3NlcnZpY2VzL2ZlZWRiYWNrLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZmVlZGJhY2svRmVlZGJhY2tJdGVtLnRzeCIsIi4uL3NyYy9wYWdlcy9Sb290LnRzeCIsIi4uL3NyYy9BcHAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcblxuY29uc3QgYXBpID0gYXhpb3MuY3JlYXRlKHtcbiAgYmFzZVVSTDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIixcbn0pO1xuXG5hcGkuaW50ZXJjZXB0b3JzLnJlcXVlc3QudXNlKFxuICBhc3luYyAoY29uZmlnKSA9PiB7XG4gICAgLy8gY29uc3QgdG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRhc2hib2FyZEdhbGFkcmltQXV0aFRva2VuXCIpO1xuICAgIC8vIGlmICh0b2tlbiAmJiBjb25maWcuaGVhZGVycykge1xuICAgIC8vICAgY29uZmlnLmhlYWRlcnNbXCJ4LWRhc2hib2FyZC10b2tlblwiXSA9IHRva2VuO1xuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICBkZWxldGUgYXBpLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uLkF1dGhvcml6YXRpb247XG4gICAgLy8gfVxuICAgIHJldHVybiBjb25maWc7XG4gIH0sXG4gIChlcnJvcikgPT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gIH1cbik7XG5cbmV4cG9ydCBkZWZhdWx0IGFwaTtcbiIsImltcG9ydCB7IHVzZU11dGF0aW9uLCB1c2VRdWVyeSwgdXNlUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgYXBpIGZyb20gXCIuL2FwaVwiO1xuaW1wb3J0IHsgRmVlZGJhY2ssIEZlZWRiYWNrUGF5bG9hZCB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgZmV0Y2hGZWVkYmFja3MgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpLmdldDxGZWVkYmFja1tdPihcIi9mZWVkYmFja1wiKTtcbiAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRmVlZGJhY2sgPSBhc3luYyAoZmVlZGJhY2s6IEZlZWRiYWNrUGF5bG9hZCkgPT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaS5wb3N0KFwiL2ZlZWRiYWNrXCIsIGZlZWRiYWNrKTtcbiAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlRmVlZGJhY2sgPSBhc3luYyAoZmVlZGJhY2s6IEZlZWRiYWNrUGF5bG9hZCkgPT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaS5wdXQoXCIvZmVlZGJhY2tcIiwgZmVlZGJhY2spO1xuICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVGZWVkYmFjayA9IGFzeW5jIChmZWVkYmFjazogRmVlZGJhY2spID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGkuZGVsZXRlKGAvZmVlZGJhY2svJHtmZWVkYmFjay5pZH1gKTtcbiAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlRmVlZGJhY2tzID0gKCkgPT4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBbXCJmZWVkYmFja3NcIl0sXG4gICAgcXVlcnlGbjogZmV0Y2hGZWVkYmFja3MsXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUNyZWF0ZUZlZWRiYWNrID0gKCkgPT4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogY3JlYXRlRmVlZGJhY2ssXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcIkZlZWRiYWNrIGNyZWF0ZWRcIik7XG5cbiAgICAgIHJldHVybiBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBbXCJmZWVkYmFja3NcIl0gfSk7XG4gICAgfSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlVXBkYXRlRmVlZGJhY2sgPSAoKSA9PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiB1cGRhdGVGZWVkYmFjayxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHJldHVybiBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBbXCJmZWVkYmFja3NcIl0gfSk7XG4gICAgfSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlRGVsZXRlRmVlZGJhY2sgPSAoKSA9PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBkZWxldGVGZWVkYmFjayxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHJldHVybiBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBbXCJmZWVkYmFja3NcIl0gfSk7XG4gICAgfSxcbiAgfSk7XG59O1xuIiwiaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGVsZXRlRmVlZGJhY2sgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZmVlZGJhY2tcIjtcblxuZXhwb3J0IGNvbnN0IEZlZWRiYWNrSXRlbSA9ICh7IGZlZWRiYWNrIH06IHsgZmVlZGJhY2s6IEZlZWRiYWNrIH0pID0+IHtcbiAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCB7IG11dGF0ZTogZGVsZXRlRmVlZGJhY2sgfSA9IHVzZURlbGV0ZUZlZWRiYWNrKCk7XG4gIGNvbnN0IFtwb3NpdGlvbiwgc2V0UG9zaXRpb25dID0gdXNlU3RhdGUoeyB0b3A6IDAsIGxlZnQ6IDAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVSZXNpemUgPSAoKSA9PiB7XG4gICAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgIXRhcmdldEVsZW1lbnQuY3VycmVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBkaW1lbnNpb25zID0gdGFyZ2V0RWxlbWVudC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgc2V0UG9zaXRpb24oe1xuICAgICAgICB0b3A6IGZlZWRiYWNrLnkgKyBkaW1lbnNpb25zLnRvcCArIHdpbmRvdy5zY3JvbGxZLFxuICAgICAgICBsZWZ0OiBmZWVkYmFjay54ICsgZGltZW5zaW9ucy5sZWZ0ICsgd2luZG93LnNjcm9sbFgsXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PihcbiAgICAgIGBbZGF0YS1pZD1cIiR7ZmVlZGJhY2suZWxlbWVudElkfVwiXWBcbiAgICApO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50c1tmZWVkYmFjay5lbGVtZW50SW5kZXhdO1xuXG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVsZW1lbnQpO1xuXG4gICAgICB0YXJnZXRFbGVtZW50LmN1cnJlbnQgPSBlbGVtZW50O1xuICAgICAgaGFuZGxlUmVzaXplKCk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBoYW5kbGVSZXNpemUpO1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBoYW5kbGVSZXNpemUpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtmZWVkYmFja10pO1xuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUZlZWRiYWNrID0gKCkgPT4ge1xuICAgIGRlbGV0ZUZlZWRiYWNrKGZlZWRiYWNrKTtcbiAgfTtcblxuICAvLyBJZiB3ZSBoYXZlbid0IGZvdW5kIGEgbWF0Y2hpbmcgRE9NIG5vZGUsIGRvbid0IHJlbmRlciBhbnl0aGluZ1xuICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgIXRhcmdldEVsZW1lbnQuY3VycmVudCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc29sZS5sb2coXCJyZW5kcnJcIiwgcG9zaXRpb24pO1xuXG4gIC8vIFJlbmRlciB0aGlzIGNvbXBvbmVudCBpbnNpZGUgYHRhcmdldEVsZW1lbnRgIHVzaW5nIGEgUG9ydGFsXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPGRpdlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgdG9wOiBwb3NpdGlvbi50b3AsXG4gICAgICAgIGxlZnQ6IHBvc2l0aW9uLmxlZnQsXG4gICAgICAgIHdpZHRoOiBcIjIwMHB4XCIsXG4gICAgICAgIGhlaWdodDogXCIxMDBweFwiLFxuICAgICAgICBib3JkZXI6IFwiMXB4IHNvbGlkIGJsYWNrXCIsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogXCJ3aGl0ZVwiLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHAgc3R5bGU9e3sgZm9udFNpemU6IFwiMTZweFwiLCBmb250V2VpZ2h0OiBcImJvbGRcIiB9fT5GZWVkYmFjazwvcD5cbiAgICAgICAgICA8cCBzdHlsZT17eyBmb250U2l6ZTogXCIxNHB4XCIgfX0+XG4gICAgICAgICAgICBDcmVhdGVkIGF0OiB7ZmVlZGJhY2suY3JlYXRlZEF0LnRvTG9jYWxlU3RyaW5nKCl9XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxhIGhyZWY9e2ZlZWRiYWNrLmVsZW1lbnRJZH0gdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICBHbyB0byBjb21wb25lbnRcbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9e2hhbmRsZURlbGV0ZUZlZWRiYWNrfT5EZWxldGU8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHAgc3R5bGU9e3sgZm9udFNpemU6IFwiMTRweFwiIH19PntmZWVkYmFjay5jb21tZW50fTwvcD5cbiAgICA8L2Rpdj4sXG4gICAgZG9jdW1lbnQuYm9keVxuICApO1xufTtcbiIsImltcG9ydCB7IFF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tIFwiLi9PdmVybGF5XCI7XG5pbXBvcnQgeyB1c2VDcmVhdGVGZWVkYmFjaywgdXNlRmVlZGJhY2tzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2ZlZWRiYWNrXCI7XG5pbXBvcnQgeyBGZWVkYmFja1BheWxvYWQgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IEZlZWRiYWNrSXRlbSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2ZlZWRiYWNrL0ZlZWRiYWNrSXRlbVwiO1xuXG5jb25zdCBxdWVyeUNsaWVudCA9IG5ldyBRdWVyeUNsaWVudCgpO1xuXG5mdW5jdGlvbiBSb290KCkge1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB7IGRhdGE6IGZlZWRiYWNrcyB9ID0gdXNlRmVlZGJhY2tzKCk7XG5cbiAgY29uc29sZS5sb2coXCJmZWVkYmFja3MgMSA6IFwiLCBmZWVkYmFja3MpO1xuXG4gIGNvbnN0IFtjcmVhdGluZ0ZlZWRiYWNrLCBzZXRDcmVhdGluZ0ZlZWRiYWNrXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IG11dGF0ZTogY3JlYXRlRmVlZGJhY2sgfSA9IHVzZUNyZWF0ZUZlZWRiYWNrKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIk9wZW5pbmcgZmVlZGJhY2tzIGNhbnZhc1wiKTtcblxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleVByZXNzKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgaGFuZGxlS2V5UHJlc3MpO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIFtpc09wZW5dKTtcblxuICBjb25zdCBoYW5kbGVLZXlQcmVzcyA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGV2ZW50LmtleSk7XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSB7XG4gICAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChlOiBhbnkpID0+IHtcbiAgICBjb25zb2xlLmxvZyhcImNsaWNrXCIpO1xuXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3Qgbm9kZSA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICBjb25zdCBlbGVtZW50SWQgPSBub2RlPy5kYXRhc2V0LmlkIHx8IFwiXCI7XG4gICAgY29uc3QgYWxsRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PihcbiAgICAgIGBbZGF0YS1pZD1cIiR7ZWxlbWVudElkfVwiXWBcbiAgICApO1xuXG4gICAgY29uc3QgYXJyQWxsRWxlbWVudHMgPSBBcnJheS5mcm9tKGFsbEVsZW1lbnRzKTtcblxuICAgIGNvbnN0IGVsZW1lbnRJbmRleCA9IGFyckFsbEVsZW1lbnRzLmluZGV4T2Yobm9kZSBhcyBIVE1MRWxlbWVudCk7XG5cbiAgICBjb25zdCB4ID0gZS5vZmZzZXRYO1xuICAgIGNvbnN0IHkgPSBlLm9mZnNldFk7XG4gICAgY29uc29sZS5sb2coZSk7XG4gICAgY29uc3QgbmV3RmVlZGJhY2s6IEZlZWRiYWNrUGF5bG9hZCA9IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgc2NyZWVuV2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgc2NyZWVuSGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHQsXG4gICAgICBjb21tZW50OiBcInRlc3RcIixcbiAgICAgIHBhdGg6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgIGVsZW1lbnRJZCxcbiAgICAgIGVsZW1lbnRJbmRleCxcbiAgICB9O1xuICAgIGNvbnNvbGUubG9nKG5ld0ZlZWRiYWNrKTtcbiAgICBjcmVhdGVGZWVkYmFjayhuZXdGZWVkYmFjayk7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwiY29tbWVudC1jdXJzb3JcIik7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNsaWNrLCB0cnVlKTtcbiAgICBzZXRDcmVhdGluZ0ZlZWRiYWNrKGZhbHNlKTtcbiAgICBzZXRJc09wZW4odHJ1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ3JlYXRlRmVlZGJhY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHNldENyZWF0aW5nRmVlZGJhY2sodHJ1ZSk7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29tbWVudC1jdXJzb3JcIik7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNsaWNrLCB0cnVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgcG9zaXRpb246IFwiZml4ZWRcIixcbiAgICAgICAgICB0b3A6IFwiY2FsYygxMDB2aCAtIDYycHgpXCIsXG4gICAgICAgICAgbGVmdDogXCJjYWxjKDEwMHZ3IC0gMTI0cHgpXCIsXG4gICAgICAgICAgd2lkdGg6IFwiMTAwcHhcIixcbiAgICAgICAgICBoZWlnaHQ6IFwiNTBweFwiLFxuICAgICAgICAgIHpJbmRleDogMTAwMDAwMCxcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwODVGRlwiLFxuICAgICAgICAgIGNvbG9yOiBcIndoaXRlXCIsXG4gICAgICAgICAgYm9yZGVyUmFkaXVzOiA0LFxuICAgICAgICB9fVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc09wZW4oIWlzT3Blbil9XG4gICAgICA+XG4gICAgICAgIFNob3cgRmVlZGJhY2tcbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHBvc2l0aW9uOiBcImZpeGVkXCIsXG4gICAgICAgICAgdG9wOiBcImNhbGMoMTAwdmggLSAxMjJweClcIixcbiAgICAgICAgICBsZWZ0OiBcImNhbGMoMTAwdncgLSAxMjRweClcIixcbiAgICAgICAgICB3aWR0aDogXCIxMDBweFwiLFxuICAgICAgICAgIGhlaWdodDogXCI1MHB4XCIsXG4gICAgICAgICAgekluZGV4OiAxMDAwMDAwLFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDA4NUZGXCIsXG4gICAgICAgICAgY29sb3I6IFwid2hpdGVcIixcbiAgICAgICAgICBib3JkZXJSYWRpdXM6IDQsXG4gICAgICAgIH19XG4gICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNyZWF0ZUZlZWRiYWNrfVxuICAgICAgPlxuICAgICAgICBOZXcgRmVlZGJhY2tcbiAgICAgIDwvYnV0dG9uPlxuICAgICAge2lzT3BlbiAmJlxuICAgICAgICBmZWVkYmFja3MgJiZcbiAgICAgICAgZmVlZGJhY2tzXG4gICAgICAgICAgLmZpbHRlcigoZmVlZGJhY2spID0+IGZlZWRiYWNrLnBhdGggPT09IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSlcbiAgICAgICAgICAubWFwKChmZWVkYmFjaykgPT4gKFxuICAgICAgICAgICAgPEZlZWRiYWNrSXRlbSBrZXk9e2ZlZWRiYWNrLmlkfSBmZWVkYmFjaz17ZmVlZGJhY2t9IC8+XG4gICAgICAgICAgKSl9XG4gICAgPC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJvb3Q7XG4iLCJpbXBvcnQgeyBRdWVyeUNsaWVudCwgUXVlcnlDbGllbnRQcm92aWRlciB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcbmltcG9ydCBSb290IGZyb20gXCIuL3BhZ2VzL1Jvb3RcIjtcbmltcG9ydCBcIi4vaW5kZXguY3NzXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IHF1ZXJ5Q2xpZW50ID0gbmV3IFF1ZXJ5Q2xpZW50KCk7XG5cbmZ1bmN0aW9uIEFwcCgpIHtcbiAgcmV0dXJuIChcbiAgICA8UXVlcnlDbGllbnRQcm92aWRlciBjbGllbnQ9e3F1ZXJ5Q2xpZW50fT5cbiAgICAgIDxSb290IC8+XG4gICAgPC9RdWVyeUNsaWVudFByb3ZpZGVyPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBBcHA7XG4iXSwibmFtZXMiOlsidXNlUXVlcnkiLCJ1c2VRdWVyeUNsaWVudCIsInVzZU11dGF0aW9uIiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJjcmVhdGVQb3J0YWwiLCJfanN4cyIsIl9qc3giLCJRdWVyeUNsaWVudCIsIl9GcmFnbWVudCIsIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUN2QixJQUFBLE9BQU8sRUFBRSx1QkFBdUI7QUFDakMsQ0FBQSxDQUFDO0FBRUYsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUMxQixPQUFPLE1BQU0sS0FBSTs7Ozs7OztBQU9mLElBQUEsT0FBTyxNQUFNO0FBQ2YsQ0FBQyxFQUNELENBQUMsS0FBSyxLQUFJO0FBQ1IsSUFBQSxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQzlCLENBQUMsQ0FDRjs7QUNmTSxNQUFNLGNBQWMsR0FBRyxZQUFXO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBYSxXQUFXLENBQUM7SUFDdkQsT0FBTyxRQUFRLENBQUMsSUFBSTtBQUN0QixDQUFDO0FBRU0sTUFBTSxjQUFjLEdBQUcsT0FBTyxRQUF5QixLQUFJO0lBQ2hFLE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDO0lBQ3RELE9BQU8sUUFBUSxDQUFDLElBQUk7QUFDdEIsQ0FBQztBQU9NLE1BQU0sY0FBYyxHQUFHLE9BQU8sUUFBa0IsS0FBSTtBQUN6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
196
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvc2VydmljZXMvYXBpLnRzIiwiLi4vc3JjL3NlcnZpY2VzL2ZlZWRiYWNrLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZmVlZGJhY2svRmVlZGJhY2tJdGVtLnRzeCIsIi4uL3NyYy9wYWdlcy9Sb290LnRzeCIsIi4uL3NyYy9BcHAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcblxuY29uc3QgYXBpID0gYXhpb3MuY3JlYXRlKHtcbiAgYmFzZVVSTDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIixcbn0pO1xuXG5hcGkuaW50ZXJjZXB0b3JzLnJlcXVlc3QudXNlKFxuICBhc3luYyAoY29uZmlnKSA9PiB7XG4gICAgLy8gY29uc3QgdG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRhc2hib2FyZEdhbGFkcmltQXV0aFRva2VuXCIpO1xuICAgIC8vIGlmICh0b2tlbiAmJiBjb25maWcuaGVhZGVycykge1xuICAgIC8vICAgY29uZmlnLmhlYWRlcnNbXCJ4LWRhc2hib2FyZC10b2tlblwiXSA9IHRva2VuO1xuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICBkZWxldGUgYXBpLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uLkF1dGhvcml6YXRpb247XG4gICAgLy8gfVxuICAgIHJldHVybiBjb25maWc7XG4gIH0sXG4gIChlcnJvcikgPT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gIH1cbik7XG5cbmV4cG9ydCBkZWZhdWx0IGFwaTtcbiIsImltcG9ydCB7IHVzZU11dGF0aW9uLCB1c2VRdWVyeSwgdXNlUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgYXBpIGZyb20gXCIuL2FwaVwiO1xuaW1wb3J0IHsgRmVlZGJhY2ssIEZlZWRiYWNrUGF5bG9hZCB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgZmV0Y2hGZWVkYmFja3MgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpLmdldDxGZWVkYmFja1tdPihcIi9mZWVkYmFja1wiKTtcbiAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRmVlZGJhY2sgPSBhc3luYyAoZmVlZGJhY2s6IEZlZWRiYWNrUGF5bG9hZCkgPT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaS5wb3N0KFwiL2ZlZWRiYWNrXCIsIGZlZWRiYWNrKTtcbiAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlRmVlZGJhY2sgPSBhc3luYyAoZmVlZGJhY2s6IEZlZWRiYWNrUGF5bG9hZCkgPT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaS5wdXQoXCIvZmVlZGJhY2tcIiwgZmVlZGJhY2spO1xuICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVGZWVkYmFjayA9IGFzeW5jIChmZWVkYmFjazogRmVlZGJhY2spID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGkuZGVsZXRlKGAvZmVlZGJhY2svJHtmZWVkYmFjay5pZH1gKTtcbiAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlRmVlZGJhY2tzID0gKCkgPT4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBbXCJmZWVkYmFja3NcIl0sXG4gICAgcXVlcnlGbjogZmV0Y2hGZWVkYmFja3MsXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUNyZWF0ZUZlZWRiYWNrID0gKCkgPT4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogY3JlYXRlRmVlZGJhY2ssXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcIkZlZWRiYWNrIGNyZWF0ZWRcIik7XG5cbiAgICAgIHJldHVybiBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBbXCJmZWVkYmFja3NcIl0gfSk7XG4gICAgfSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlVXBkYXRlRmVlZGJhY2sgPSAoKSA9PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiB1cGRhdGVGZWVkYmFjayxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHJldHVybiBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBbXCJmZWVkYmFja3NcIl0gfSk7XG4gICAgfSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlRGVsZXRlRmVlZGJhY2sgPSAoKSA9PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBkZWxldGVGZWVkYmFjayxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHJldHVybiBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBbXCJmZWVkYmFja3NcIl0gfSk7XG4gICAgfSxcbiAgfSk7XG59O1xuIiwiaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGVsZXRlRmVlZGJhY2sgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZmVlZGJhY2tcIjtcblxuZXhwb3J0IGNvbnN0IEZlZWRiYWNrSXRlbSA9ICh7IGZlZWRiYWNrIH06IHsgZmVlZGJhY2s6IEZlZWRiYWNrIH0pID0+IHtcbiAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCB7IG11dGF0ZTogZGVsZXRlRmVlZGJhY2sgfSA9IHVzZURlbGV0ZUZlZWRiYWNrKCk7XG4gIGNvbnN0IFtwb3NpdGlvbiwgc2V0UG9zaXRpb25dID0gdXNlU3RhdGUoeyB0b3A6IDAsIGxlZnQ6IDAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVSZXNpemUgPSAoKSA9PiB7XG4gICAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgIXRhcmdldEVsZW1lbnQuY3VycmVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBkaW1lbnNpb25zID0gdGFyZ2V0RWxlbWVudC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgc2V0UG9zaXRpb24oe1xuICAgICAgICB0b3A6IGZlZWRiYWNrLnkgKyBkaW1lbnNpb25zLnRvcCArIHdpbmRvdy5zY3JvbGxZLFxuICAgICAgICBsZWZ0OiBmZWVkYmFjay54ICsgZGltZW5zaW9ucy5sZWZ0ICsgd2luZG93LnNjcm9sbFgsXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PihcbiAgICAgIGBbZGF0YS1pZD1cIiR7ZmVlZGJhY2suZWxlbWVudElkfVwiXWBcbiAgICApO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50c1tmZWVkYmFjay5lbGVtZW50SW5kZXhdO1xuXG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVsZW1lbnQpO1xuXG4gICAgICB0YXJnZXRFbGVtZW50LmN1cnJlbnQgPSBlbGVtZW50O1xuICAgICAgaGFuZGxlUmVzaXplKCk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBoYW5kbGVSZXNpemUpO1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBoYW5kbGVSZXNpemUpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtmZWVkYmFja10pO1xuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUZlZWRiYWNrID0gKCkgPT4ge1xuICAgIGRlbGV0ZUZlZWRiYWNrKGZlZWRiYWNrKTtcbiAgfTtcblxuICAvLyBJZiB3ZSBoYXZlbid0IGZvdW5kIGEgbWF0Y2hpbmcgRE9NIG5vZGUsIGRvbid0IHJlbmRlciBhbnl0aGluZ1xuICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgIXRhcmdldEVsZW1lbnQuY3VycmVudCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc29sZS5sb2coXCJyZW5kcnJcIiwgcG9zaXRpb24pO1xuXG4gIC8vIFJlbmRlciB0aGlzIGNvbXBvbmVudCBpbnNpZGUgYHRhcmdldEVsZW1lbnRgIHVzaW5nIGEgUG9ydGFsXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPGRpdlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgdG9wOiBwb3NpdGlvbi50b3AsXG4gICAgICAgIGxlZnQ6IHBvc2l0aW9uLmxlZnQsXG4gICAgICAgIHdpZHRoOiBcIjIwMHB4XCIsXG4gICAgICAgIGhlaWdodDogXCIxMDBweFwiLFxuICAgICAgICBib3JkZXI6IFwiMXB4IHNvbGlkIGJsYWNrXCIsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogXCJ3aGl0ZVwiLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHAgc3R5bGU9e3sgZm9udFNpemU6IFwiMTZweFwiLCBmb250V2VpZ2h0OiBcImJvbGRcIiB9fT5GZWVkYmFjazwvcD5cbiAgICAgICAgICA8cCBzdHlsZT17eyBmb250U2l6ZTogXCIxNHB4XCIgfX0+XG4gICAgICAgICAgICBDcmVhdGVkIGF0OiB7ZmVlZGJhY2suY3JlYXRlZEF0LnRvTG9jYWxlU3RyaW5nKCl9XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxhIGhyZWY9e2ZlZWRiYWNrLmVsZW1lbnRJZH0gdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICBHbyB0byBjb21wb25lbnRcbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9e2hhbmRsZURlbGV0ZUZlZWRiYWNrfT5EZWxldGU8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHAgc3R5bGU9e3sgZm9udFNpemU6IFwiMTRweFwiIH19PntmZWVkYmFjay5jb21tZW50fTwvcD5cbiAgICA8L2Rpdj4sXG4gICAgZG9jdW1lbnQuYm9keVxuICApO1xufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZlZWRiYWNrSXRlbSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2ZlZWRiYWNrL0ZlZWRiYWNrSXRlbVwiO1xuaW1wb3J0IHsgdXNlQ3JlYXRlRmVlZGJhY2ssIHVzZUZlZWRiYWNrcyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9mZWVkYmFja1wiO1xuaW1wb3J0IHsgRmVlZGJhY2tQYXlsb2FkIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5cbmZ1bmN0aW9uIFJvb3QoKSB7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHsgZGF0YTogZmVlZGJhY2tzIH0gPSB1c2VGZWVkYmFja3MoKTtcblxuICBjb25zb2xlLmxvZyhcImZlZWRiYWNrcyAxIDogXCIsIGZlZWRiYWNrcyk7XG5cbiAgY29uc3QgeyBtdXRhdGU6IGNyZWF0ZUZlZWRiYWNrIH0gPSB1c2VDcmVhdGVGZWVkYmFjaygpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbikge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleVByZXNzKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgaGFuZGxlS2V5UHJlc3MpO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIFtpc09wZW5dKTtcblxuICBjb25zdCBoYW5kbGVLZXlQcmVzcyA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09IFwiRXNjYXBlXCIpIHtcbiAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBub2RlID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGNvbnN0IGVsZW1lbnRJZCA9IG5vZGU/LmRhdGFzZXQuaWQgfHwgXCJcIjtcbiAgICBjb25zdCBhbGxFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KFxuICAgICAgYFtkYXRhLWlkPVwiJHtlbGVtZW50SWR9XCJdYFxuICAgICk7XG5cbiAgICBjb25zdCBhcnJBbGxFbGVtZW50cyA9IEFycmF5LmZyb20oYWxsRWxlbWVudHMpO1xuXG4gICAgY29uc3QgZWxlbWVudEluZGV4ID0gYXJyQWxsRWxlbWVudHMuaW5kZXhPZihub2RlIGFzIEhUTUxFbGVtZW50KTtcblxuICAgIGNvbnN0IHggPSBlLm9mZnNldFg7XG4gICAgY29uc3QgeSA9IGUub2Zmc2V0WTtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgICBjb25zdCBuZXdGZWVkYmFjazogRmVlZGJhY2tQYXlsb2FkID0ge1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBjb21tZW50OiBcInRlc3RcIixcbiAgICAgIHBhdGg6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgIGVsZW1lbnRJZCxcbiAgICAgIGVsZW1lbnRJbmRleCxcbiAgICB9O1xuICAgIGNvbnNvbGUubG9nKG5ld0ZlZWRiYWNrKTtcbiAgICBjcmVhdGVGZWVkYmFjayhuZXdGZWVkYmFjayk7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwiY29tbWVudC1jdXJzb3JcIik7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNsaWNrLCB0cnVlKTtcbiAgICBzZXRJc09wZW4odHJ1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ3JlYXRlRmVlZGJhY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcImNvbW1lbnQtY3Vyc29yXCIpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVDbGljaywgdHJ1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHBvc2l0aW9uOiBcImZpeGVkXCIsXG4gICAgICAgICAgdG9wOiBcImNhbGMoMTAwdmggLSA2MnB4KVwiLFxuICAgICAgICAgIGxlZnQ6IFwiY2FsYygxMDB2dyAtIDEyNHB4KVwiLFxuICAgICAgICAgIHdpZHRoOiBcIjEwMHB4XCIsXG4gICAgICAgICAgaGVpZ2h0OiBcIjUwcHhcIixcbiAgICAgICAgICB6SW5kZXg6IDEwMDAwMDAsXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDg1RkZcIixcbiAgICAgICAgICBjb2xvcjogXCJ3aGl0ZVwiLFxuICAgICAgICAgIGJvcmRlclJhZGl1czogNCxcbiAgICAgICAgfX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNPcGVuKCFpc09wZW4pfVxuICAgICAgPlxuICAgICAgICBTaG93IEZlZWRiYWNrXG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBwb3NpdGlvbjogXCJmaXhlZFwiLFxuICAgICAgICAgIHRvcDogXCJjYWxjKDEwMHZoIC0gMTIycHgpXCIsXG4gICAgICAgICAgbGVmdDogXCJjYWxjKDEwMHZ3IC0gMTI0cHgpXCIsXG4gICAgICAgICAgd2lkdGg6IFwiMTAwcHhcIixcbiAgICAgICAgICBoZWlnaHQ6IFwiNTBweFwiLFxuICAgICAgICAgIHpJbmRleDogMTAwMDAwMCxcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwODVGRlwiLFxuICAgICAgICAgIGNvbG9yOiBcIndoaXRlXCIsXG4gICAgICAgICAgYm9yZGVyUmFkaXVzOiA0LFxuICAgICAgICB9fVxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVDcmVhdGVGZWVkYmFja31cbiAgICAgID5cbiAgICAgICAgTmV3IEZlZWRiYWNrXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIHtpc09wZW4gJiZcbiAgICAgICAgZmVlZGJhY2tzICYmXG4gICAgICAgIGZlZWRiYWNrc1xuICAgICAgICAgIC5maWx0ZXIoKGZlZWRiYWNrKSA9PiBmZWVkYmFjay5wYXRoID09PSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpXG4gICAgICAgICAgLm1hcCgoZmVlZGJhY2spID0+IChcbiAgICAgICAgICAgIDxGZWVkYmFja0l0ZW0ga2V5PXtmZWVkYmFjay5pZH0gZmVlZGJhY2s9e2ZlZWRiYWNrfSAvPlxuICAgICAgICAgICkpfVxuICAgIDwvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBSb290O1xuIiwiaW1wb3J0IHsgUXVlcnlDbGllbnQsIFF1ZXJ5Q2xpZW50UHJvdmlkZXIgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgUm9vdCBmcm9tIFwiLi9wYWdlcy9Sb290XCI7XG5pbXBvcnQgXCIuL2luZGV4LmNzc1wiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBxdWVyeUNsaWVudCA9IG5ldyBRdWVyeUNsaWVudCgpO1xuXG5mdW5jdGlvbiBBcHAoKSB7XG4gIHJldHVybiAoXG4gICAgPFF1ZXJ5Q2xpZW50UHJvdmlkZXIgY2xpZW50PXtxdWVyeUNsaWVudH0+XG4gICAgICA8Um9vdCAvPlxuICAgIDwvUXVlcnlDbGllbnRQcm92aWRlcj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQXBwO1xuIl0sIm5hbWVzIjpbInVzZVF1ZXJ5IiwidXNlUXVlcnlDbGllbnQiLCJ1c2VNdXRhdGlvbiIsInVzZVJlZiIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiY3JlYXRlUG9ydGFsIiwiX2pzeHMiLCJfanN4IiwiX0ZyYWdtZW50IiwiUXVlcnlDbGllbnQiLCJRdWVyeUNsaWVudFByb3ZpZGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUVBLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDdkIsSUFBQSxPQUFPLEVBQUUsdUJBQXVCO0FBQ2pDLENBQUEsQ0FBQztBQUVGLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FDMUIsT0FBTyxNQUFNLEtBQUk7Ozs7Ozs7QUFPZixJQUFBLE9B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
package/dist/index.es.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { useQuery, useQueryClient, useMutation, QueryClient, QueryClientProvider } from '@tanstack/react-query';
3
3
  import React, { useRef, useState, useEffect } from 'react';
4
- import axios from 'axios';
5
4
  import { createPortal } from 'react-dom';
5
+ import axios from 'axios';
6
6
 
7
7
  const api = axios.create({
8
8
  baseURL: "http://localhost:3000",
@@ -110,16 +110,13 @@ const FeedbackItem = ({ feedback }) => {
110
110
  }, children: [jsxs("div", { children: [jsx("p", { style: { fontSize: "16px", fontWeight: "bold" }, children: "Feedback" }), jsxs("p", { style: { fontSize: "14px" }, children: ["Created at: ", feedback.createdAt.toLocaleString()] }), jsx("a", { href: feedback.elementId, target: "_blank", children: "Go to component" })] }), jsx("button", { onClick: handleDeleteFeedback, children: "Delete" })] }), jsx("p", { style: { fontSize: "14px" }, children: feedback.comment })] }), document.body);
111
111
  };
112
112
 
113
- new QueryClient();
114
113
  function Root() {
115
114
  const [isOpen, setIsOpen] = React.useState(false);
116
115
  const { data: feedbacks } = useFeedbacks();
117
116
  console.log("feedbacks 1 : ", feedbacks);
118
- const [creatingFeedback, setCreatingFeedback] = React.useState(false);
119
117
  const { mutate: createFeedback } = useCreateFeedback();
120
118
  useEffect(() => {
121
119
  if (isOpen) {
122
- console.log("Opening feedbacks canvas");
123
120
  window.addEventListener("keydown", handleKeyPress);
124
121
  return () => {
125
122
  window.removeEventListener("keypress", handleKeyPress);
@@ -127,13 +124,11 @@ function Root() {
127
124
  }
128
125
  }, [isOpen]);
129
126
  const handleKeyPress = (event) => {
130
- console.log(event.key);
131
127
  if (event.key === "Escape") {
132
128
  setIsOpen(false);
133
129
  }
134
130
  };
135
131
  const handleClick = (e) => {
136
- console.log("click");
137
132
  e.stopPropagation();
138
133
  e.preventDefault();
139
134
  const node = e.target;
@@ -147,8 +142,6 @@ function Root() {
147
142
  const newFeedback = {
148
143
  x,
149
144
  y,
150
- screenWidth: window.innerWidth,
151
- screenHeight: window.innerHeight,
152
145
  comment: "test",
153
146
  path: window.location.pathname,
154
147
  elementId,
@@ -158,12 +151,10 @@ function Root() {
158
151
  createFeedback(newFeedback);
159
152
  document.body.classList.remove("comment-cursor");
160
153
  document.removeEventListener("click", handleClick, true);
161
- setCreatingFeedback(false);
162
154
  setIsOpen(true);
163
155
  };
164
156
  const handleCreateFeedback = (e) => {
165
157
  e.stopPropagation();
166
- setCreatingFeedback(true);
167
158
  document.body.classList.add("comment-cursor");
168
159
  document.addEventListener("click", handleClick, true);
169
160
  };
@@ -200,4 +191,4 @@ function App() {
200
191
  }
201
192
 
202
193
  export { App as default };
203
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2aWNlcy9hcGkudHMiLCIuLi9zcmMvc2VydmljZXMvZmVlZGJhY2sudHMiLCIuLi9zcmMvY29tcG9uZW50cy9mZWVkYmFjay9GZWVkYmFja0l0ZW0udHN4IiwiLi4vc3JjL3BhZ2VzL1Jvb3QudHN4IiwiLi4vc3JjL0FwcC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuXG5jb25zdCBhcGkgPSBheGlvcy5jcmVhdGUoe1xuICBiYXNlVVJMOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMFwiLFxufSk7XG5cbmFwaS5pbnRlcmNlcHRvcnMucmVxdWVzdC51c2UoXG4gIGFzeW5jIChjb25maWcpID0+IHtcbiAgICAvLyBjb25zdCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZGFzaGJvYXJkR2FsYWRyaW1BdXRoVG9rZW5cIik7XG4gICAgLy8gaWYgKHRva2VuICYmIGNvbmZpZy5oZWFkZXJzKSB7XG4gICAgLy8gICBjb25maWcuaGVhZGVyc1tcIngtZGFzaGJvYXJkLXRva2VuXCJdID0gdG9rZW47XG4gICAgLy8gfSBlbHNlIHtcbiAgICAvLyAgIGRlbGV0ZSBhcGkuZGVmYXVsdHMuaGVhZGVycy5jb21tb24uQXV0aG9yaXphdGlvbjtcbiAgICAvLyB9XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfSxcbiAgKGVycm9yKSA9PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgfVxuKTtcblxuZXhwb3J0IGRlZmF1bHQgYXBpO1xuIiwiaW1wb3J0IHsgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5LCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcbmltcG9ydCBhcGkgZnJvbSBcIi4vYXBpXCI7XG5pbXBvcnQgeyBGZWVkYmFjaywgRmVlZGJhY2tQYXlsb2FkIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBmZXRjaEZlZWRiYWNrcyA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGkuZ2V0PEZlZWRiYWNrW10+KFwiL2ZlZWRiYWNrXCIpO1xuICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVGZWVkYmFjayA9IGFzeW5jIChmZWVkYmFjazogRmVlZGJhY2tQYXlsb2FkKSA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpLnBvc3QoXCIvZmVlZGJhY2tcIiwgZmVlZGJhY2spO1xuICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVGZWVkYmFjayA9IGFzeW5jIChmZWVkYmFjazogRmVlZGJhY2tQYXlsb2FkKSA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpLnB1dChcIi9mZWVkYmFja1wiLCBmZWVkYmFjayk7XG4gIHJldHVybiByZXNwb25zZS5kYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUZlZWRiYWNrID0gYXN5bmMgKGZlZWRiYWNrOiBGZWVkYmFjaykgPT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaS5kZWxldGUoYC9mZWVkYmFjay8ke2ZlZWRiYWNrLmlkfWApO1xuICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VGZWVkYmFja3MgPSAoKSA9PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IFtcImZlZWRiYWNrc1wiXSxcbiAgICBxdWVyeUZuOiBmZXRjaEZlZWRiYWNrcyxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlQ3JlYXRlRmVlZGJhY2sgPSAoKSA9PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBjcmVhdGVGZWVkYmFjayxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwiRmVlZGJhY2sgY3JlYXRlZFwiKTtcblxuICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IFtcImZlZWRiYWNrc1wiXSB9KTtcbiAgICB9LFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VVcGRhdGVGZWVkYmFjayA9ICgpID0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IHVwZGF0ZUZlZWRiYWNrLFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IFtcImZlZWRiYWNrc1wiXSB9KTtcbiAgICB9LFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VEZWxldGVGZWVkYmFjayA9ICgpID0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGRlbGV0ZUZlZWRiYWNrLFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IFtcImZlZWRiYWNrc1wiXSB9KTtcbiAgICB9LFxuICB9KTtcbn07XG4iLCJpbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZlZWRiYWNrIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyB1c2VEZWxldGVGZWVkYmFjayB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9mZWVkYmFja1wiO1xuXG5leHBvcnQgY29uc3QgRmVlZGJhY2tJdGVtID0gKHsgZmVlZGJhY2sgfTogeyBmZWVkYmFjazogRmVlZGJhY2sgfSkgPT4ge1xuICBjb25zdCB0YXJnZXRFbGVtZW50ID0gdXNlUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHsgbXV0YXRlOiBkZWxldGVGZWVkYmFjayB9ID0gdXNlRGVsZXRlRmVlZGJhY2soKTtcbiAgY29uc3QgW3Bvc2l0aW9uLCBzZXRQb3NpdGlvbl0gPSB1c2VTdGF0ZSh7IHRvcDogMCwgbGVmdDogMCB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVJlc2l6ZSA9ICgpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0RWxlbWVudCB8fCAhdGFyZ2V0RWxlbWVudC5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRpbWVuc2lvbnMgPSB0YXJnZXRFbGVtZW50LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBzZXRQb3NpdGlvbih7XG4gICAgICAgIHRvcDogZmVlZGJhY2sueSArIGRpbWVuc2lvbnMudG9wICsgd2luZG93LnNjcm9sbFksXG4gICAgICAgIGxlZnQ6IGZlZWRiYWNrLnggKyBkaW1lbnNpb25zLmxlZnQgKyB3aW5kb3cuc2Nyb2xsWCxcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KFxuICAgICAgYFtkYXRhLWlkPVwiJHtmZWVkYmFjay5lbGVtZW50SWR9XCJdYFxuICAgICk7XG4gICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2ZlZWRiYWNrLmVsZW1lbnRJbmRleF07XG5cbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgY29uc29sZS5sb2coZWxlbWVudCk7XG5cbiAgICAgIHRhcmdldEVsZW1lbnQuY3VycmVudCA9IGVsZW1lbnQ7XG4gICAgICBoYW5kbGVSZXNpemUoKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIGhhbmRsZVJlc2l6ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIGhhbmRsZVJlc2l6ZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW2ZlZWRiYWNrXSk7XG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlRmVlZGJhY2sgPSAoKSA9PiB7XG4gICAgZGVsZXRlRmVlZGJhY2soZmVlZGJhY2spO1xuICB9O1xuXG4gIC8vIElmIHdlIGhhdmVuJ3QgZm91bmQgYSBtYXRjaGluZyBET00gbm9kZSwgZG9uJ3QgcmVuZGVyIGFueXRoaW5nXG4gIGlmICghdGFyZ2V0RWxlbWVudCB8fCAhdGFyZ2V0RWxlbWVudC5jdXJyZW50KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zb2xlLmxvZyhcInJlbmRyclwiLCBwb3NpdGlvbik7XG5cbiAgLy8gUmVuZGVyIHRoaXMgY29tcG9uZW50IGluc2lkZSBgdGFyZ2V0RWxlbWVudGAgdXNpbmcgYSBQb3J0YWxcbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbChcbiAgICA8ZGl2XG4gICAgICBzdHlsZT17e1xuICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICB0b3A6IHBvc2l0aW9uLnRvcCxcbiAgICAgICAgbGVmdDogcG9zaXRpb24ubGVmdCxcbiAgICAgICAgd2lkdGg6IFwiMjAwcHhcIixcbiAgICAgICAgaGVpZ2h0OiBcIjEwMHB4XCIsXG4gICAgICAgIGJvcmRlcjogXCIxcHggc29saWQgYmxhY2tcIixcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIndoaXRlXCIsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8cCBzdHlsZT17eyBmb250U2l6ZTogXCIxNnB4XCIsIGZvbnRXZWlnaHQ6IFwiYm9sZFwiIH19PkZlZWRiYWNrPC9wPlxuICAgICAgICAgIDxwIHN0eWxlPXt7IGZvbnRTaXplOiBcIjE0cHhcIiB9fT5cbiAgICAgICAgICAgIENyZWF0ZWQgYXQ6IHtmZWVkYmFjay5jcmVhdGVkQXQudG9Mb2NhbGVTdHJpbmcoKX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGEgaHJlZj17ZmVlZGJhY2suZWxlbWVudElkfSB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICAgIEdvIHRvIGNvbXBvbmVudFxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gb25DbGljaz17aGFuZGxlRGVsZXRlRmVlZGJhY2t9PkRlbGV0ZTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8cCBzdHlsZT17eyBmb250U2l6ZTogXCIxNHB4XCIgfX0+e2ZlZWRiYWNrLmNvbW1lbnR9PC9wPlxuICAgIDwvZGl2PixcbiAgICBkb2N1bWVudC5ib2R5XG4gICk7XG59O1xuIiwiaW1wb3J0IHsgUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gXCIuL092ZXJsYXlcIjtcbmltcG9ydCB7IHVzZUNyZWF0ZUZlZWRiYWNrLCB1c2VGZWVkYmFja3MgfSBmcm9tIFwiLi4vc2VydmljZXMvZmVlZGJhY2tcIjtcbmltcG9ydCB7IEZlZWRiYWNrUGF5bG9hZCB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgRmVlZGJhY2tJdGVtIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZmVlZGJhY2svRmVlZGJhY2tJdGVtXCI7XG5cbmNvbnN0IHF1ZXJ5Q2xpZW50ID0gbmV3IFF1ZXJ5Q2xpZW50KCk7XG5cbmZ1bmN0aW9uIFJvb3QoKSB7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHsgZGF0YTogZmVlZGJhY2tzIH0gPSB1c2VGZWVkYmFja3MoKTtcblxuICBjb25zb2xlLmxvZyhcImZlZWRiYWNrcyAxIDogXCIsIGZlZWRiYWNrcyk7XG5cbiAgY29uc3QgW2NyZWF0aW5nRmVlZGJhY2ssIHNldENyZWF0aW5nRmVlZGJhY2tdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IHsgbXV0YXRlOiBjcmVhdGVGZWVkYmFjayB9ID0gdXNlQ3JlYXRlRmVlZGJhY2soKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiT3BlbmluZyBmZWVkYmFja3MgY2FudmFzXCIpO1xuXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5UHJlc3MpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlwcmVzc1wiLCBoYW5kbGVLZXlQcmVzcyk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW2lzT3Blbl0pO1xuXG4gIGNvbnN0IGhhbmRsZUtleVByZXNzID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgY29uc29sZS5sb2coZXZlbnQua2V5KTtcblxuICAgIGlmIChldmVudC5rZXkgPT09IFwiRXNjYXBlXCIpIHtcbiAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGU6IGFueSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKFwiY2xpY2tcIik7XG5cbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBub2RlID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGNvbnN0IGVsZW1lbnRJZCA9IG5vZGU/LmRhdGFzZXQuaWQgfHwgXCJcIjtcbiAgICBjb25zdCBhbGxFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KFxuICAgICAgYFtkYXRhLWlkPVwiJHtlbGVtZW50SWR9XCJdYFxuICAgICk7XG5cbiAgICBjb25zdCBhcnJBbGxFbGVtZW50cyA9IEFycmF5LmZyb20oYWxsRWxlbWVudHMpO1xuXG4gICAgY29uc3QgZWxlbWVudEluZGV4ID0gYXJyQWxsRWxlbWVudHMuaW5kZXhPZihub2RlIGFzIEhUTUxFbGVtZW50KTtcblxuICAgIGNvbnN0IHggPSBlLm9mZnNldFg7XG4gICAgY29uc3QgeSA9IGUub2Zmc2V0WTtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgICBjb25zdCBuZXdGZWVkYmFjazogRmVlZGJhY2tQYXlsb2FkID0ge1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBzY3JlZW5XaWR0aDogd2luZG93LmlubmVyV2lkdGgsXG4gICAgICBzY3JlZW5IZWlnaHQ6IHdpbmRvdy5pbm5lckhlaWdodCxcbiAgICAgIGNvbW1lbnQ6IFwidGVzdFwiLFxuICAgICAgcGF0aDogd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgZWxlbWVudElkLFxuICAgICAgZWxlbWVudEluZGV4LFxuICAgIH07XG4gICAgY29uc29sZS5sb2cobmV3RmVlZGJhY2spO1xuICAgIGNyZWF0ZUZlZWRiYWNrKG5ld0ZlZWRiYWNrKTtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJjb21tZW50LWN1cnNvclwiKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlQ2xpY2ssIHRydWUpO1xuICAgIHNldENyZWF0aW5nRmVlZGJhY2soZmFsc2UpO1xuICAgIHNldElzT3Blbih0cnVlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDcmVhdGVGZWVkYmFjayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgc2V0Q3JlYXRpbmdGZWVkYmFjayh0cnVlKTtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb21tZW50LWN1cnNvclwiKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlQ2xpY2ssIHRydWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBwb3NpdGlvbjogXCJmaXhlZFwiLFxuICAgICAgICAgIHRvcDogXCJjYWxjKDEwMHZoIC0gNjJweClcIixcbiAgICAgICAgICBsZWZ0OiBcImNhbGMoMTAwdncgLSAxMjRweClcIixcbiAgICAgICAgICB3aWR0aDogXCIxMDBweFwiLFxuICAgICAgICAgIGhlaWdodDogXCI1MHB4XCIsXG4gICAgICAgICAgekluZGV4OiAxMDAwMDAwLFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDA4NUZGXCIsXG4gICAgICAgICAgY29sb3I6IFwid2hpdGVcIixcbiAgICAgICAgICBib3JkZXJSYWRpdXM6IDQsXG4gICAgICAgIH19XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzT3BlbighaXNPcGVuKX1cbiAgICAgID5cbiAgICAgICAgU2hvdyBGZWVkYmFja1xuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgcG9zaXRpb246IFwiZml4ZWRcIixcbiAgICAgICAgICB0b3A6IFwiY2FsYygxMDB2aCAtIDEyMnB4KVwiLFxuICAgICAgICAgIGxlZnQ6IFwiY2FsYygxMDB2dyAtIDEyNHB4KVwiLFxuICAgICAgICAgIHdpZHRoOiBcIjEwMHB4XCIsXG4gICAgICAgICAgaGVpZ2h0OiBcIjUwcHhcIixcbiAgICAgICAgICB6SW5kZXg6IDEwMDAwMDAsXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDg1RkZcIixcbiAgICAgICAgICBjb2xvcjogXCJ3aGl0ZVwiLFxuICAgICAgICAgIGJvcmRlclJhZGl1czogNCxcbiAgICAgICAgfX1cbiAgICAgICAgb25DbGljaz17aGFuZGxlQ3JlYXRlRmVlZGJhY2t9XG4gICAgICA+XG4gICAgICAgIE5ldyBGZWVkYmFja1xuICAgICAgPC9idXR0b24+XG4gICAgICB7aXNPcGVuICYmXG4gICAgICAgIGZlZWRiYWNrcyAmJlxuICAgICAgICBmZWVkYmFja3NcbiAgICAgICAgICAuZmlsdGVyKChmZWVkYmFjaykgPT4gZmVlZGJhY2sucGF0aCA9PT0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKVxuICAgICAgICAgIC5tYXAoKGZlZWRiYWNrKSA9PiAoXG4gICAgICAgICAgICA8RmVlZGJhY2tJdGVtIGtleT17ZmVlZGJhY2suaWR9IGZlZWRiYWNrPXtmZWVkYmFja30gLz5cbiAgICAgICAgICApKX1cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUm9vdDtcbiIsImltcG9ydCB7IFF1ZXJ5Q2xpZW50LCBRdWVyeUNsaWVudFByb3ZpZGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuaW1wb3J0IFJvb3QgZnJvbSBcIi4vcGFnZXMvUm9vdFwiO1xuaW1wb3J0IFwiLi9pbmRleC5jc3NcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgcXVlcnlDbGllbnQgPSBuZXcgUXVlcnlDbGllbnQoKTtcblxuZnVuY3Rpb24gQXBwKCkge1xuICByZXR1cm4gKFxuICAgIDxRdWVyeUNsaWVudFByb3ZpZGVyIGNsaWVudD17cXVlcnlDbGllbnR9PlxuICAgICAgPFJvb3QgLz5cbiAgICA8L1F1ZXJ5Q2xpZW50UHJvdmlkZXI+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFwcDtcbiJdLCJuYW1lcyI6WyJfanN4cyIsIl9qc3giLCJfRnJhZ21lbnQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDdkIsSUFBQSxPQUFPLEVBQUUsdUJBQXVCO0FBQ2pDLENBQUEsQ0FBQztBQUVGLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FDMUIsT0FBTyxNQUFNLEtBQUk7Ozs7Ozs7QUFPZixJQUFBLE9BQU8sTUFBTTtBQUNmLENBQUMsRUFDRCxDQUFDLEtBQUssS0FBSTtBQUNSLElBQUEsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUM5QixDQUFDLENBQ0Y7O0FDZk0sTUFBTSxjQUFjLEdBQUcsWUFBVztJQUN2QyxNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQWEsV0FBVyxDQUFDO0lBQ3ZELE9BQU8sUUFBUSxDQUFDLElBQUk7QUFDdEIsQ0FBQztBQUVNLE1BQU0sY0FBYyxHQUFHLE9BQU8sUUFBeUIsS0FBSTtJQUNoRSxNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQztJQUN0RCxPQUFPLFFBQVEsQ0FBQyxJQUFJO0FBQ3RCLENBQUM7QUFPTSxNQUFNLGNBQWMsR0FBRyxPQUFPLFFBQWtCLEtBQUk7QUFDekQsSUFBQSxNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQSxVQUFBLEVBQWEsUUFBUSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUM7SUFDN0QsT0FBTyxRQUFRLENBQUMsSUFBSTtBQUN0QixDQUFD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
194
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2aWNlcy9hcGkudHMiLCIuLi9zcmMvc2VydmljZXMvZmVlZGJhY2sudHMiLCIuLi9zcmMvY29tcG9uZW50cy9mZWVkYmFjay9GZWVkYmFja0l0ZW0udHN4IiwiLi4vc3JjL3BhZ2VzL1Jvb3QudHN4IiwiLi4vc3JjL0FwcC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuXG5jb25zdCBhcGkgPSBheGlvcy5jcmVhdGUoe1xuICBiYXNlVVJMOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMFwiLFxufSk7XG5cbmFwaS5pbnRlcmNlcHRvcnMucmVxdWVzdC51c2UoXG4gIGFzeW5jIChjb25maWcpID0+IHtcbiAgICAvLyBjb25zdCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZGFzaGJvYXJkR2FsYWRyaW1BdXRoVG9rZW5cIik7XG4gICAgLy8gaWYgKHRva2VuICYmIGNvbmZpZy5oZWFkZXJzKSB7XG4gICAgLy8gICBjb25maWcuaGVhZGVyc1tcIngtZGFzaGJvYXJkLXRva2VuXCJdID0gdG9rZW47XG4gICAgLy8gfSBlbHNlIHtcbiAgICAvLyAgIGRlbGV0ZSBhcGkuZGVmYXVsdHMuaGVhZGVycy5jb21tb24uQXV0aG9yaXphdGlvbjtcbiAgICAvLyB9XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfSxcbiAgKGVycm9yKSA9PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgfVxuKTtcblxuZXhwb3J0IGRlZmF1bHQgYXBpO1xuIiwiaW1wb3J0IHsgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5LCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcbmltcG9ydCBhcGkgZnJvbSBcIi4vYXBpXCI7XG5pbXBvcnQgeyBGZWVkYmFjaywgRmVlZGJhY2tQYXlsb2FkIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBmZXRjaEZlZWRiYWNrcyA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGkuZ2V0PEZlZWRiYWNrW10+KFwiL2ZlZWRiYWNrXCIpO1xuICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVGZWVkYmFjayA9IGFzeW5jIChmZWVkYmFjazogRmVlZGJhY2tQYXlsb2FkKSA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpLnBvc3QoXCIvZmVlZGJhY2tcIiwgZmVlZGJhY2spO1xuICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVGZWVkYmFjayA9IGFzeW5jIChmZWVkYmFjazogRmVlZGJhY2tQYXlsb2FkKSA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpLnB1dChcIi9mZWVkYmFja1wiLCBmZWVkYmFjayk7XG4gIHJldHVybiByZXNwb25zZS5kYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUZlZWRiYWNrID0gYXN5bmMgKGZlZWRiYWNrOiBGZWVkYmFjaykgPT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaS5kZWxldGUoYC9mZWVkYmFjay8ke2ZlZWRiYWNrLmlkfWApO1xuICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VGZWVkYmFja3MgPSAoKSA9PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IFtcImZlZWRiYWNrc1wiXSxcbiAgICBxdWVyeUZuOiBmZXRjaEZlZWRiYWNrcyxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlQ3JlYXRlRmVlZGJhY2sgPSAoKSA9PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBjcmVhdGVGZWVkYmFjayxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwiRmVlZGJhY2sgY3JlYXRlZFwiKTtcblxuICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IFtcImZlZWRiYWNrc1wiXSB9KTtcbiAgICB9LFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VVcGRhdGVGZWVkYmFjayA9ICgpID0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IHVwZGF0ZUZlZWRiYWNrLFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IFtcImZlZWRiYWNrc1wiXSB9KTtcbiAgICB9LFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VEZWxldGVGZWVkYmFjayA9ICgpID0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGRlbGV0ZUZlZWRiYWNrLFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IFtcImZlZWRiYWNrc1wiXSB9KTtcbiAgICB9LFxuICB9KTtcbn07XG4iLCJpbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZlZWRiYWNrIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyB1c2VEZWxldGVGZWVkYmFjayB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9mZWVkYmFja1wiO1xuXG5leHBvcnQgY29uc3QgRmVlZGJhY2tJdGVtID0gKHsgZmVlZGJhY2sgfTogeyBmZWVkYmFjazogRmVlZGJhY2sgfSkgPT4ge1xuICBjb25zdCB0YXJnZXRFbGVtZW50ID0gdXNlUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHsgbXV0YXRlOiBkZWxldGVGZWVkYmFjayB9ID0gdXNlRGVsZXRlRmVlZGJhY2soKTtcbiAgY29uc3QgW3Bvc2l0aW9uLCBzZXRQb3NpdGlvbl0gPSB1c2VTdGF0ZSh7IHRvcDogMCwgbGVmdDogMCB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVJlc2l6ZSA9ICgpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0RWxlbWVudCB8fCAhdGFyZ2V0RWxlbWVudC5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRpbWVuc2lvbnMgPSB0YXJnZXRFbGVtZW50LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBzZXRQb3NpdGlvbih7XG4gICAgICAgIHRvcDogZmVlZGJhY2sueSArIGRpbWVuc2lvbnMudG9wICsgd2luZG93LnNjcm9sbFksXG4gICAgICAgIGxlZnQ6IGZlZWRiYWNrLnggKyBkaW1lbnNpb25zLmxlZnQgKyB3aW5kb3cuc2Nyb2xsWCxcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KFxuICAgICAgYFtkYXRhLWlkPVwiJHtmZWVkYmFjay5lbGVtZW50SWR9XCJdYFxuICAgICk7XG4gICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2ZlZWRiYWNrLmVsZW1lbnRJbmRleF07XG5cbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgY29uc29sZS5sb2coZWxlbWVudCk7XG5cbiAgICAgIHRhcmdldEVsZW1lbnQuY3VycmVudCA9IGVsZW1lbnQ7XG4gICAgICBoYW5kbGVSZXNpemUoKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIGhhbmRsZVJlc2l6ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIGhhbmRsZVJlc2l6ZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW2ZlZWRiYWNrXSk7XG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlRmVlZGJhY2sgPSAoKSA9PiB7XG4gICAgZGVsZXRlRmVlZGJhY2soZmVlZGJhY2spO1xuICB9O1xuXG4gIC8vIElmIHdlIGhhdmVuJ3QgZm91bmQgYSBtYXRjaGluZyBET00gbm9kZSwgZG9uJ3QgcmVuZGVyIGFueXRoaW5nXG4gIGlmICghdGFyZ2V0RWxlbWVudCB8fCAhdGFyZ2V0RWxlbWVudC5jdXJyZW50KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zb2xlLmxvZyhcInJlbmRyclwiLCBwb3NpdGlvbik7XG5cbiAgLy8gUmVuZGVyIHRoaXMgY29tcG9uZW50IGluc2lkZSBgdGFyZ2V0RWxlbWVudGAgdXNpbmcgYSBQb3J0YWxcbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbChcbiAgICA8ZGl2XG4gICAgICBzdHlsZT17e1xuICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICB0b3A6IHBvc2l0aW9uLnRvcCxcbiAgICAgICAgbGVmdDogcG9zaXRpb24ubGVmdCxcbiAgICAgICAgd2lkdGg6IFwiMjAwcHhcIixcbiAgICAgICAgaGVpZ2h0OiBcIjEwMHB4XCIsXG4gICAgICAgIGJvcmRlcjogXCIxcHggc29saWQgYmxhY2tcIixcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIndoaXRlXCIsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8cCBzdHlsZT17eyBmb250U2l6ZTogXCIxNnB4XCIsIGZvbnRXZWlnaHQ6IFwiYm9sZFwiIH19PkZlZWRiYWNrPC9wPlxuICAgICAgICAgIDxwIHN0eWxlPXt7IGZvbnRTaXplOiBcIjE0cHhcIiB9fT5cbiAgICAgICAgICAgIENyZWF0ZWQgYXQ6IHtmZWVkYmFjay5jcmVhdGVkQXQudG9Mb2NhbGVTdHJpbmcoKX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGEgaHJlZj17ZmVlZGJhY2suZWxlbWVudElkfSB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICAgIEdvIHRvIGNvbXBvbmVudFxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gb25DbGljaz17aGFuZGxlRGVsZXRlRmVlZGJhY2t9PkRlbGV0ZTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8cCBzdHlsZT17eyBmb250U2l6ZTogXCIxNHB4XCIgfX0+e2ZlZWRiYWNrLmNvbW1lbnR9PC9wPlxuICAgIDwvZGl2PixcbiAgICBkb2N1bWVudC5ib2R5XG4gICk7XG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRmVlZGJhY2tJdGVtIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZmVlZGJhY2svRmVlZGJhY2tJdGVtXCI7XG5pbXBvcnQgeyB1c2VDcmVhdGVGZWVkYmFjaywgdXNlRmVlZGJhY2tzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2ZlZWRiYWNrXCI7XG5pbXBvcnQgeyBGZWVkYmFja1BheWxvYWQgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcblxuZnVuY3Rpb24gUm9vdCgpIHtcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgeyBkYXRhOiBmZWVkYmFja3MgfSA9IHVzZUZlZWRiYWNrcygpO1xuXG4gIGNvbnNvbGUubG9nKFwiZmVlZGJhY2tzIDEgOiBcIiwgZmVlZGJhY2tzKTtcblxuICBjb25zdCB7IG11dGF0ZTogY3JlYXRlRmVlZGJhY2sgfSA9IHVzZUNyZWF0ZUZlZWRiYWNrKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5UHJlc3MpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlwcmVzc1wiLCBoYW5kbGVLZXlQcmVzcyk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW2lzT3Blbl0pO1xuXG4gIGNvbnN0IGhhbmRsZUtleVByZXNzID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikge1xuICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IG5vZGUgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgY29uc3QgZWxlbWVudElkID0gbm9kZT8uZGF0YXNldC5pZCB8fCBcIlwiO1xuICAgIGNvbnN0IGFsbEVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oXG4gICAgICBgW2RhdGEtaWQ9XCIke2VsZW1lbnRJZH1cIl1gXG4gICAgKTtcblxuICAgIGNvbnN0IGFyckFsbEVsZW1lbnRzID0gQXJyYXkuZnJvbShhbGxFbGVtZW50cyk7XG5cbiAgICBjb25zdCBlbGVtZW50SW5kZXggPSBhcnJBbGxFbGVtZW50cy5pbmRleE9mKG5vZGUgYXMgSFRNTEVsZW1lbnQpO1xuXG4gICAgY29uc3QgeCA9IGUub2Zmc2V0WDtcbiAgICBjb25zdCB5ID0gZS5vZmZzZXRZO1xuICAgIGNvbnNvbGUubG9nKGUpO1xuICAgIGNvbnN0IG5ld0ZlZWRiYWNrOiBGZWVkYmFja1BheWxvYWQgPSB7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIGNvbW1lbnQ6IFwidGVzdFwiLFxuICAgICAgcGF0aDogd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgZWxlbWVudElkLFxuICAgICAgZWxlbWVudEluZGV4LFxuICAgIH07XG4gICAgY29uc29sZS5sb2cobmV3RmVlZGJhY2spO1xuICAgIGNyZWF0ZUZlZWRiYWNrKG5ld0ZlZWRiYWNrKTtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJjb21tZW50LWN1cnNvclwiKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlQ2xpY2ssIHRydWUpO1xuICAgIHNldElzT3Blbih0cnVlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDcmVhdGVGZWVkYmFjayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29tbWVudC1jdXJzb3JcIik7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNsaWNrLCB0cnVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgcG9zaXRpb246IFwiZml4ZWRcIixcbiAgICAgICAgICB0b3A6IFwiY2FsYygxMDB2aCAtIDYycHgpXCIsXG4gICAgICAgICAgbGVmdDogXCJjYWxjKDEwMHZ3IC0gMTI0cHgpXCIsXG4gICAgICAgICAgd2lkdGg6IFwiMTAwcHhcIixcbiAgICAgICAgICBoZWlnaHQ6IFwiNTBweFwiLFxuICAgICAgICAgIHpJbmRleDogMTAwMDAwMCxcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwODVGRlwiLFxuICAgICAgICAgIGNvbG9yOiBcIndoaXRlXCIsXG4gICAgICAgICAgYm9yZGVyUmFkaXVzOiA0LFxuICAgICAgICB9fVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc09wZW4oIWlzT3Blbil9XG4gICAgICA+XG4gICAgICAgIFNob3cgRmVlZGJhY2tcbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHBvc2l0aW9uOiBcImZpeGVkXCIsXG4gICAgICAgICAgdG9wOiBcImNhbGMoMTAwdmggLSAxMjJweClcIixcbiAgICAgICAgICBsZWZ0OiBcImNhbGMoMTAwdncgLSAxMjRweClcIixcbiAgICAgICAgICB3aWR0aDogXCIxMDBweFwiLFxuICAgICAgICAgIGhlaWdodDogXCI1MHB4XCIsXG4gICAgICAgICAgekluZGV4OiAxMDAwMDAwLFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDA4NUZGXCIsXG4gICAgICAgICAgY29sb3I6IFwid2hpdGVcIixcbiAgICAgICAgICBib3JkZXJSYWRpdXM6IDQsXG4gICAgICAgIH19XG4gICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNyZWF0ZUZlZWRiYWNrfVxuICAgICAgPlxuICAgICAgICBOZXcgRmVlZGJhY2tcbiAgICAgIDwvYnV0dG9uPlxuICAgICAge2lzT3BlbiAmJlxuICAgICAgICBmZWVkYmFja3MgJiZcbiAgICAgICAgZmVlZGJhY2tzXG4gICAgICAgICAgLmZpbHRlcigoZmVlZGJhY2spID0+IGZlZWRiYWNrLnBhdGggPT09IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSlcbiAgICAgICAgICAubWFwKChmZWVkYmFjaykgPT4gKFxuICAgICAgICAgICAgPEZlZWRiYWNrSXRlbSBrZXk9e2ZlZWRiYWNrLmlkfSBmZWVkYmFjaz17ZmVlZGJhY2t9IC8+XG4gICAgICAgICAgKSl9XG4gICAgPC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJvb3Q7XG4iLCJpbXBvcnQgeyBRdWVyeUNsaWVudCwgUXVlcnlDbGllbnRQcm92aWRlciB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcbmltcG9ydCBSb290IGZyb20gXCIuL3BhZ2VzL1Jvb3RcIjtcbmltcG9ydCBcIi4vaW5kZXguY3NzXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IHF1ZXJ5Q2xpZW50ID0gbmV3IFF1ZXJ5Q2xpZW50KCk7XG5cbmZ1bmN0aW9uIEFwcCgpIHtcbiAgcmV0dXJuIChcbiAgICA8UXVlcnlDbGllbnRQcm92aWRlciBjbGllbnQ9e3F1ZXJ5Q2xpZW50fT5cbiAgICAgIDxSb290IC8+XG4gICAgPC9RdWVyeUNsaWVudFByb3ZpZGVyPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBBcHA7XG4iXSwibmFtZXMiOlsiX2pzeHMiLCJfanN4IiwiX0ZyYWdtZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3ZCLElBQUEsT0FBTyxFQUFFLHVCQUF1QjtBQUNqQyxDQUFBLENBQUM7QUFFRixHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQzFCLE9BQU8sTUFBTSxLQUFJOzs7Ozs7O0FBT2YsSUFBQSxPQUFPLE1BQU07QUFDZixDQUFDLEVBQ0QsQ0FBQyxLQUFLLEtBQUk7QUFDUixJQUFBLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDOUIsQ0FBQyxDQUNGOztBQ2ZNLE1BQU0sY0FBYyxHQUFHLFlBQVc7SUFD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
@@ -3,5 +3,5 @@
3
3
  @tailwind utilities;
4
4
 
5
5
  .comment-cursor {
6
- cursor: url("/comment.svg"), auto !important;
6
+ cursor: url("./assets/comment.svg"), auto !important;
7
7
  }
package/package.json CHANGED
@@ -1,11 +1,15 @@
1
1
  {
2
2
  "name": "galadrim-feedback",
3
3
  "private": false,
4
- "version": "0.0.2",
4
+ "version": "0.0.4",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs.js",
7
7
  "module": "dist/index.es.js",
8
8
  "types": "dist/index.d.ts",
9
+ "files": [
10
+ "dist/",
11
+ "assets/"
12
+ ],
9
13
  "scripts": {
10
14
  "build": "rollup -c",
11
15
  "prepublishOnly": "npm run build"
@@ -25,6 +29,7 @@
25
29
  "@rollup/plugin-json": "^6.1.0",
26
30
  "@rollup/plugin-node-resolve": "^16.0.0",
27
31
  "@rollup/plugin-typescript": "^12.1.2",
32
+ "@rollup/plugin-url": "^8.0.2",
28
33
  "@types/react": "^18.3.10",
29
34
  "@types/react-dom": "^18.3.0",
30
35
  "@vitejs/plugin-react": "^4.3.2",
@@ -36,6 +41,7 @@
36
41
  "globals": "^15.9.0",
37
42
  "postcss": "^8.4.49",
38
43
  "rollup": "^4.30.1",
44
+ "rollup-plugin-copy": "^3.5.0",
39
45
  "rollup-plugin-node-polyfills": "^0.2.1",
40
46
  "rollup-plugin-postcss": "^4.0.2",
41
47
  "sass": "^1.83.1",
package/eslint.config.js DELETED
@@ -1,28 +0,0 @@
1
- import js from '@eslint/js'
2
- import globals from 'globals'
3
- import reactHooks from 'eslint-plugin-react-hooks'
4
- import reactRefresh from 'eslint-plugin-react-refresh'
5
- import tseslint from 'typescript-eslint'
6
-
7
- export default tseslint.config(
8
- { ignores: ['dist'] },
9
- {
10
- extends: [js.configs.recommended, ...tseslint.configs.recommended],
11
- files: ['**/*.{ts,tsx}'],
12
- languageOptions: {
13
- ecmaVersion: 2020,
14
- globals: globals.browser,
15
- },
16
- plugins: {
17
- 'react-hooks': reactHooks,
18
- 'react-refresh': reactRefresh,
19
- },
20
- rules: {
21
- ...reactHooks.configs.recommended.rules,
22
- 'react-refresh/only-export-components': [
23
- 'warn',
24
- { allowConstantExport: true },
25
- ],
26
- },
27
- },
28
- )
package/rollup.config.js DELETED
@@ -1,40 +0,0 @@
1
- // rollup.config.js
2
- import commonjs from "@rollup/plugin-commonjs";
3
- import resolve from "@rollup/plugin-node-resolve";
4
- import typescript from "@rollup/plugin-typescript";
5
- import postcss from "rollup-plugin-postcss";
6
- import json from "@rollup/plugin-json";
7
- import nodePolyfills from "rollup-plugin-node-polyfills";
8
- import pkg from "./package.json" assert { type: "json" };
9
-
10
- export default {
11
- input: "src/App.tsx", // Your entry point
12
- output: [
13
- {
14
- file: pkg.main, // dist/index.cjs.js
15
- format: "cjs",
16
- sourcemap: "inline",
17
- },
18
- {
19
- file: pkg.module, // dist/index.es.js
20
- format: "es",
21
- sourcemap: "inline",
22
- },
23
- ],
24
- external: [
25
- // Peer dependencies (don’t bundle React, ReactDOM, etc.)
26
- ...Object.keys(pkg.peerDependencies || {}),
27
- ],
28
- plugins: [
29
- resolve(),
30
- nodePolyfills(),
31
- commonjs(),
32
- postcss({
33
- extract: "src/index.css",
34
- }),
35
- typescript({
36
- tsconfig: "./tsconfig.json",
37
- }),
38
- json(),
39
- ],
40
- };
package/src/App.tsx DELETED
@@ -1,16 +0,0 @@
1
- import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
2
- import Root from "./pages/Root";
3
- import "./index.css";
4
- import React from "react";
5
-
6
- const queryClient = new QueryClient();
7
-
8
- function App() {
9
- return (
10
- <QueryClientProvider client={queryClient}>
11
- <Root />
12
- </QueryClientProvider>
13
- );
14
- }
15
-
16
- export default App;
@@ -1,27 +0,0 @@
1
- import classNames from "classnames";
2
-
3
- export const IconButton = ({
4
- text,
5
- iconPath,
6
- twButtonBackgroundColor,
7
- onClick,
8
- }: {
9
- text: string;
10
- iconPath: string;
11
- twButtonBackgroundColor: string;
12
- onClick: () => void;
13
- }) => {
14
- return (
15
- <button
16
- onClick={onClick}
17
- className={classNames(
18
- "flex-shrink-0 flex flex-row items-center px-4 py-2 gap-2 rounded-[8px] text-white font-[500] ",
19
- twButtonBackgroundColor,
20
- "hover:bg-opacity-80"
21
- )}
22
- >
23
- <img src={iconPath} className="w-6 h-6" />
24
- {text}
25
- </button>
26
- );
27
- };
@@ -1,20 +0,0 @@
1
- import { IconButton } from "./IconButton";
2
-
3
- export const PlusButton = ({
4
- text,
5
- twButtonBackgroundColor,
6
- onClick,
7
- }: {
8
- text: string;
9
- twButtonBackgroundColor: string;
10
- onClick: () => void;
11
- }) => {
12
- return (
13
- <IconButton
14
- text={text}
15
- iconPath="/plus.svg"
16
- twButtonBackgroundColor={twButtonBackgroundColor}
17
- onClick={onClick}
18
- />
19
- );
20
- };
@@ -1,89 +0,0 @@
1
- import { createPortal } from "react-dom";
2
- import { useEffect, useRef, useState } from "react";
3
- import { Feedback } from "../../types/types";
4
- import { useDeleteFeedback } from "../../services/feedback";
5
-
6
- export const FeedbackItem = ({ feedback }: { feedback: Feedback }) => {
7
- const targetElement = useRef<HTMLElement | null>(null);
8
- const { mutate: deleteFeedback } = useDeleteFeedback();
9
- const [position, setPosition] = useState({ top: 0, left: 0 });
10
-
11
- useEffect(() => {
12
- const handleResize = () => {
13
- if (!targetElement || !targetElement.current) {
14
- return;
15
- }
16
- const dimensions = targetElement.current.getBoundingClientRect();
17
- setPosition({
18
- top: feedback.y + dimensions.top + window.scrollY,
19
- left: feedback.x + dimensions.left + window.scrollX,
20
- });
21
- };
22
-
23
- const elements = document.querySelectorAll<HTMLElement>(
24
- `[data-id="${feedback.elementId}"]`
25
- );
26
- const element = elements[feedback.elementIndex];
27
-
28
- if (element) {
29
- console.log(element);
30
-
31
- targetElement.current = element;
32
- handleResize();
33
- window.addEventListener("resize", handleResize);
34
- }
35
-
36
- return () => {
37
- if (element) {
38
- window.removeEventListener("resize", handleResize);
39
- }
40
- };
41
- }, [feedback]);
42
-
43
- const handleDeleteFeedback = () => {
44
- deleteFeedback(feedback);
45
- };
46
-
47
- // If we haven't found a matching DOM node, don't render anything
48
- if (!targetElement || !targetElement.current) {
49
- return null;
50
- }
51
-
52
- console.log("rendrr", position);
53
-
54
- // Render this component inside `targetElement` using a Portal
55
- return createPortal(
56
- <div
57
- style={{
58
- position: "absolute",
59
- top: position.top,
60
- left: position.left,
61
- width: "200px",
62
- height: "100px",
63
- border: "1px solid black",
64
- backgroundColor: "white",
65
- }}
66
- >
67
- <div
68
- style={{
69
- display: "flex",
70
- justifyContent: "space-between",
71
- alignItems: "center",
72
- }}
73
- >
74
- <div>
75
- <p style={{ fontSize: "16px", fontWeight: "bold" }}>Feedback</p>
76
- <p style={{ fontSize: "14px" }}>
77
- Created at: {feedback.createdAt.toLocaleString()}
78
- </p>
79
- <a href={feedback.elementId} target="_blank">
80
- Go to component
81
- </a>
82
- </div>
83
- <button onClick={handleDeleteFeedback}>Delete</button>
84
- </div>
85
- <p style={{ fontSize: "14px" }}>{feedback.comment}</p>
86
- </div>,
87
- document.body
88
- );
89
- };
@@ -1,3 +0,0 @@
1
- export const Avatar = ({ avatar }: { avatar: string }) => {
2
- return <img src={avatar} className="w-10 h-10 rounded-full" />;
3
- };
@@ -1,43 +0,0 @@
1
- import { useRef } from "react";
2
-
3
- export const Modal = ({
4
- isVisible,
5
- closeModal,
6
- limitWidth = true,
7
- children,
8
- }: {
9
- isVisible: boolean;
10
- closeModal?: () => void;
11
- limitWidth?: boolean;
12
- children: React.ReactNode;
13
- }) => {
14
- const resizing = useRef(false);
15
-
16
- if (!isVisible) {
17
- return null;
18
- }
19
- const width = limitWidth ? "w-[400px]" : "";
20
- return (
21
- <div
22
- className="modal"
23
- onMouseDown={(e) => {
24
- const target = e.target as HTMLElement;
25
- if (target.tagName === "TEXTAREA") {
26
- resizing.current = true;
27
- }
28
- }}
29
- onMouseUp={() => {
30
- setTimeout(() => {
31
- resizing.current = false;
32
- }, 100);
33
- }}
34
- onClick={(e) => {
35
- if (closeModal && e.target === e.currentTarget && !resizing.current) {
36
- closeModal();
37
- }
38
- }}
39
- >
40
- <div className={`${width} bg-white rounded-lg`}>{children}</div>
41
- </div>
42
- );
43
- };
package/src/index.css DELETED
@@ -1,7 +0,0 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
4
-
5
- .comment-cursor {
6
- cursor: url("/comment.svg"), auto !important;
7
- }
@@ -1,38 +0,0 @@
1
- import { Dispatch, useEffect } from "react";
2
- import { FeedbackItem } from "../components/feedback/FeedbackItem";
3
- import { useFeedbacks } from "../services/feedback";
4
- import { Feedback } from "../types/types";
5
-
6
- export const FeedbacksCanvas = ({
7
- isOpen,
8
- setIsOpen,
9
- feedbacks,
10
- }: {
11
- isOpen: boolean;
12
- setIsOpen: Dispatch<React.SetStateAction<boolean>>;
13
- feedbacks: Feedback[];
14
- }) => {
15
- if (!isOpen) {
16
- return null;
17
- }
18
-
19
- return (
20
- <div
21
- style={{
22
- zIndex: 2147483647, // Maximum zIndex
23
- position: "fixed",
24
- top: 0,
25
- left: 0,
26
- width: "100vw",
27
- height: "100vh",
28
- }}
29
- >
30
- {feedbacks &&
31
- feedbacks
32
- .filter((feedback) => feedback.path === window.location.pathname)
33
- .map((feedback) => (
34
- <FeedbackItem key={feedback.id} feedback={feedback} />
35
- ))}
36
- </div>
37
- );
38
- };
@@ -1,26 +0,0 @@
1
- import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
2
- import { Dispatch } from "react";
3
- import { FeedbacksCanvas } from "./FeedbacksCanvas";
4
- import { Feedback } from "../types/types";
5
-
6
- export const Overlay = ({
7
- isOpen,
8
- setIsOpen,
9
- queryClient,
10
- feedbacks,
11
- }: {
12
- isOpen: boolean;
13
- setIsOpen: Dispatch<React.SetStateAction<boolean>>;
14
- queryClient: QueryClient;
15
- feedbacks: Feedback[];
16
- }) => {
17
- return (
18
- <QueryClientProvider client={queryClient}>
19
- <FeedbacksCanvas
20
- isOpen={isOpen}
21
- setIsOpen={setIsOpen}
22
- feedbacks={feedbacks}
23
- />
24
- </QueryClientProvider>
25
- );
26
- };
@@ -1,128 +0,0 @@
1
- import { QueryClient } from "@tanstack/react-query";
2
- import React, { useEffect } from "react";
3
- import ReactDOM from "react-dom";
4
- import { Overlay } from "./Overlay";
5
- import { useCreateFeedback, useFeedbacks } from "../services/feedback";
6
- import { FeedbackPayload } from "../types/types";
7
- import { FeedbackItem } from "../components/feedback/FeedbackItem";
8
-
9
- const queryClient = new QueryClient();
10
-
11
- function Root() {
12
- const [isOpen, setIsOpen] = React.useState(false);
13
- const { data: feedbacks } = useFeedbacks();
14
-
15
- console.log("feedbacks 1 : ", feedbacks);
16
-
17
- const [creatingFeedback, setCreatingFeedback] = React.useState(false);
18
-
19
- const { mutate: createFeedback } = useCreateFeedback();
20
-
21
- useEffect(() => {
22
- if (isOpen) {
23
- console.log("Opening feedbacks canvas");
24
-
25
- window.addEventListener("keydown", handleKeyPress);
26
- return () => {
27
- window.removeEventListener("keypress", handleKeyPress);
28
- };
29
- }
30
- }, [isOpen]);
31
-
32
- const handleKeyPress = (event: KeyboardEvent) => {
33
- console.log(event.key);
34
-
35
- if (event.key === "Escape") {
36
- setIsOpen(false);
37
- }
38
- };
39
-
40
- const handleClick = (e: any) => {
41
- console.log("click");
42
-
43
- e.stopPropagation();
44
- e.preventDefault();
45
- const node = e.target as HTMLElement | null;
46
- const elementId = node?.dataset.id || "";
47
- const allElements = document.querySelectorAll<HTMLElement>(
48
- `[data-id="${elementId}"]`
49
- );
50
-
51
- const arrAllElements = Array.from(allElements);
52
-
53
- const elementIndex = arrAllElements.indexOf(node as HTMLElement);
54
-
55
- const x = e.offsetX;
56
- const y = e.offsetY;
57
- console.log(e);
58
- const newFeedback: FeedbackPayload = {
59
- x,
60
- y,
61
- screenWidth: window.innerWidth,
62
- screenHeight: window.innerHeight,
63
- comment: "test",
64
- path: window.location.pathname,
65
- elementId,
66
- elementIndex,
67
- };
68
- console.log(newFeedback);
69
- createFeedback(newFeedback);
70
- document.body.classList.remove("comment-cursor");
71
- document.removeEventListener("click", handleClick, true);
72
- setCreatingFeedback(false);
73
- setIsOpen(true);
74
- };
75
-
76
- const handleCreateFeedback = (e: React.MouseEvent<HTMLButtonElement>) => {
77
- e.stopPropagation();
78
- setCreatingFeedback(true);
79
- document.body.classList.add("comment-cursor");
80
- document.addEventListener("click", handleClick, true);
81
- };
82
-
83
- return (
84
- <>
85
- <div
86
- style={{
87
- position: "fixed",
88
- top: "calc(100vh - 62px)",
89
- left: "calc(100vw - 124px)",
90
- width: "100px",
91
- height: "50px",
92
- zIndex: 1000000,
93
- backgroundColor: "#0085FF",
94
- color: "white",
95
- borderRadius: 4,
96
- }}
97
- onClick={() => setIsOpen(!isOpen)}
98
- >
99
- Show Feedback
100
- </div>
101
- <button
102
- style={{
103
- position: "fixed",
104
- top: "calc(100vh - 122px)",
105
- left: "calc(100vw - 124px)",
106
- width: "100px",
107
- height: "50px",
108
- zIndex: 1000000,
109
- backgroundColor: "#0085FF",
110
- color: "white",
111
- borderRadius: 4,
112
- }}
113
- onClick={handleCreateFeedback}
114
- >
115
- New Feedback
116
- </button>
117
- {isOpen &&
118
- feedbacks &&
119
- feedbacks
120
- .filter((feedback) => feedback.path === window.location.pathname)
121
- .map((feedback) => (
122
- <FeedbackItem key={feedback.id} feedback={feedback} />
123
- ))}
124
- </>
125
- );
126
- }
127
-
128
- export default Root;
@@ -1,22 +0,0 @@
1
- import axios from "axios";
2
-
3
- const api = axios.create({
4
- baseURL: "http://localhost:3000",
5
- });
6
-
7
- api.interceptors.request.use(
8
- async (config) => {
9
- // const token = localStorage.getItem("dashboardGaladrimAuthToken");
10
- // if (token && config.headers) {
11
- // config.headers["x-dashboard-token"] = token;
12
- // } else {
13
- // delete api.defaults.headers.common.Authorization;
14
- // }
15
- return config;
16
- },
17
- (error) => {
18
- return Promise.reject(error);
19
- }
20
- );
21
-
22
- export default api;
@@ -1,62 +0,0 @@
1
- import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
2
- import api from "./api";
3
- import { Feedback, FeedbackPayload } from "../types/types";
4
-
5
- export const fetchFeedbacks = async () => {
6
- const response = await api.get<Feedback[]>("/feedback");
7
- return response.data;
8
- };
9
-
10
- export const createFeedback = async (feedback: FeedbackPayload) => {
11
- const response = await api.post("/feedback", feedback);
12
- return response.data;
13
- };
14
-
15
- export const updateFeedback = async (feedback: FeedbackPayload) => {
16
- const response = await api.put("/feedback", feedback);
17
- return response.data;
18
- };
19
-
20
- export const deleteFeedback = async (feedback: Feedback) => {
21
- const response = await api.delete(`/feedback/${feedback.id}`);
22
- return response.data;
23
- };
24
-
25
- export const useFeedbacks = () => {
26
- return useQuery({
27
- queryKey: ["feedbacks"],
28
- queryFn: fetchFeedbacks,
29
- });
30
- };
31
-
32
- export const useCreateFeedback = () => {
33
- const queryClient = useQueryClient();
34
- return useMutation({
35
- mutationFn: createFeedback,
36
- onSuccess: () => {
37
- console.log("Feedback created");
38
-
39
- return queryClient.invalidateQueries({ queryKey: ["feedbacks"] });
40
- },
41
- });
42
- };
43
-
44
- export const useUpdateFeedback = () => {
45
- const queryClient = useQueryClient();
46
- return useMutation({
47
- mutationFn: updateFeedback,
48
- onSuccess: () => {
49
- return queryClient.invalidateQueries({ queryKey: ["feedbacks"] });
50
- },
51
- });
52
- };
53
-
54
- export const useDeleteFeedback = () => {
55
- const queryClient = useQueryClient();
56
- return useMutation({
57
- mutationFn: deleteFeedback,
58
- onSuccess: () => {
59
- return queryClient.invalidateQueries({ queryKey: ["feedbacks"] });
60
- },
61
- });
62
- };
@@ -1,16 +0,0 @@
1
- export interface FeedbackPayload {
2
- x: number;
3
- y: number;
4
- screenWidth: number;
5
- screenHeight: number;
6
- elementId: string;
7
- elementIndex: number;
8
- comment: string;
9
- path: string;
10
- }
11
-
12
- export interface Feedback extends FeedbackPayload {
13
- id: string;
14
- createdAt: Date;
15
- updatedAt: Date;
16
- }
@@ -1,46 +0,0 @@
1
- /** @type {import('tailwindcss').Config} */
2
- export default {
3
- content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
4
- theme: {
5
- extend: {
6
- colors: {
7
- gray: {
8
- 50: "#F2F2F2",
9
- 75: "#F4F5F7",
10
- 100: "#E2E8F0",
11
- 200: "#EAECF0",
12
- 300: "#676D78",
13
- 400: "#343D4B",
14
- 500: "#010C1E",
15
- 600: "#475467",
16
- 700: "#CBD5E1",
17
- 900: "#101828",
18
- },
19
- blue: {
20
- 50: "#F5FAFF",
21
- 100: "#EBF5FF",
22
- 500: "#0085FF",
23
- },
24
- red: {
25
- 100: "#FFD3E0",
26
- 500: "#FF2462",
27
- },
28
- rose: {
29
- 100: "#FFD3E0",
30
- 200: "#FFA7C0",
31
- },
32
- orange: {
33
- 50: "#FEF6EE",
34
- 200: "#F9DBAF",
35
- 700: "#B93815",
36
- },
37
- green: {
38
- 50: "#ECFDF3",
39
- 200: "#ABEFC6",
40
- 700: "#067647",
41
- },
42
- },
43
- },
44
- },
45
- plugins: [],
46
- };
package/tsconfig.json DELETED
@@ -1,18 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2017",
4
- "module": "ESNext",
5
- "jsx": "react-jsx",
6
- // Generate type definitions
7
- "declaration": true,
8
- "declarationDir": "dist/types",
9
- "outDir": "dist",
10
- "moduleResolution": "node",
11
- "isolatedModules": true,
12
- "esModuleInterop": true,
13
- "skipLibCheck": true,
14
- "strict": true
15
- },
16
- "include": ["src"],
17
- "exclude": ["node_modules", "**/*.test.*"]
18
- }