powr-sdk-web 6.13.1 → 6.14.0

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.
@@ -41,6 +41,16 @@ var CORE_SECTION_LOADERS = exports.CORE_SECTION_LOADERS = {
41
41
  return _interopRequireWildcard(require('../feedback/admin'));
42
42
  });
43
43
  },
44
+ posts: function posts() {
45
+ return Promise.resolve().then(function () {
46
+ return _interopRequireWildcard(require('../posts/admin'));
47
+ });
48
+ },
49
+ blogs: function blogs() {
50
+ return Promise.resolve().then(function () {
51
+ return _interopRequireWildcard(require('../posts/admin'));
52
+ });
53
+ },
44
54
  waitlist: function waitlist() {
45
55
  return Promise.resolve().then(function () {
46
56
  return _interopRequireWildcard(require('../waitlists/admin'));
package/dist/index.js CHANGED
@@ -147,6 +147,12 @@ Object.defineProperty(exports, "PRIORITY_COUNTRIES", {
147
147
  return _phone.PRIORITY_COUNTRIES;
148
148
  }
149
149
  });
150
+ Object.defineProperty(exports, "PULSE_DOWNLOAD_URL", {
151
+ enumerable: true,
152
+ get: function get() {
153
+ return _shell.PULSE_DOWNLOAD_URL;
154
+ }
155
+ });
150
156
  Object.defineProperty(exports, "PhoneInput", {
151
157
  enumerable: true,
152
158
  get: function get() {
@@ -177,12 +183,6 @@ Object.defineProperty(exports, "PowrBaseAppWrapper", {
177
183
  return _shell.PowrBaseAppWrapper;
178
184
  }
179
185
  });
180
- Object.defineProperty(exports, "PowrBaseBlogs", {
181
- enumerable: true,
182
- get: function get() {
183
- return _blogs["default"];
184
- }
185
- });
186
186
  Object.defineProperty(exports, "PowrBaseChat", {
187
187
  enumerable: true,
188
188
  get: function get() {
@@ -351,6 +351,12 @@ Object.defineProperty(exports, "PowrThemeSettings", {
351
351
  return _theme.PowrThemeSettings;
352
352
  }
353
353
  });
354
+ Object.defineProperty(exports, "PulseDownloadDoor", {
355
+ enumerable: true,
356
+ get: function get() {
357
+ return _shell.PulseDownloadDoor;
358
+ }
359
+ });
354
360
  Object.defineProperty(exports, "SESSION_MESSAGES", {
355
361
  enumerable: true,
356
362
  get: function get() {
@@ -703,7 +709,6 @@ var _payments = _interopRequireDefault(require("./payments"));
703
709
  var _waitlists = _interopRequireDefault(require("./waitlists"));
704
710
  var _activities = _interopRequireDefault(require("./activities"));
705
711
  var _calendar = _interopRequireDefault(require("./calendar"));
706
- var _blogs = _interopRequireDefault(require("./blogs"));
707
712
  var _likes = _interopRequireDefault(require("./likes"));
708
713
  var _auth = _interopRequireDefault(require("./auth"));
709
714
  var _sso = _interopRequireWildcard(require("./sso"));
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = PowrPostList;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
9
+ function hrefOf(post, hrefFor) {
10
+ if (typeof hrefFor === "function") return hrefFor(post);
11
+ return "/blog/".concat(post.slug);
12
+ }
13
+ function PowrPostList(_ref) {
14
+ var posts = _ref.posts,
15
+ Link = _ref.Link,
16
+ hrefFor = _ref.hrefFor,
17
+ empty = _ref.empty;
18
+ var items = Array.isArray(posts) ? posts : [];
19
+ if (!items.length) return /*#__PURE__*/_react["default"].createElement("p", null, empty || "No posts yet.");
20
+ var A = Link || "a";
21
+ return /*#__PURE__*/_react["default"].createElement("div", {
22
+ style: {
23
+ display: "grid",
24
+ gap: 16
25
+ }
26
+ }, items.map(function (post) {
27
+ return /*#__PURE__*/_react["default"].createElement(A, {
28
+ key: post._id || post.slug,
29
+ href: hrefOf(post, hrefFor),
30
+ style: {
31
+ color: "inherit",
32
+ textDecoration: "none"
33
+ }
34
+ }, /*#__PURE__*/_react["default"].createElement("article", {
35
+ style: {
36
+ borderBottom: "1px solid #e5e7eb",
37
+ paddingBottom: 16
38
+ }
39
+ }, post.coverUrl ? /*#__PURE__*/_react["default"].createElement("img", {
40
+ src: post.coverUrl,
41
+ alt: "",
42
+ style: {
43
+ width: "100%",
44
+ maxHeight: 220,
45
+ objectFit: "cover",
46
+ borderRadius: 8
47
+ }
48
+ }) : null, /*#__PURE__*/_react["default"].createElement("h2", {
49
+ style: {
50
+ margin: "8px 0 4px",
51
+ fontSize: 22
52
+ }
53
+ }, post.title), post.description ? /*#__PURE__*/_react["default"].createElement("p", {
54
+ style: {
55
+ margin: 0,
56
+ color: "#4b5563"
57
+ }
58
+ }, post.description) : null, /*#__PURE__*/_react["default"].createElement("p", {
59
+ style: {
60
+ margin: "6px 0 0",
61
+ fontSize: 13,
62
+ color: "#6b7280"
63
+ }
64
+ }, [post.author && post.author.displayName, post.readMinutes ? "".concat(post.readMinutes, " min") : ""].filter(Boolean).join(" · "))));
65
+ }));
66
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = PowrPost;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactMarkdown = _interopRequireDefault(require("react-markdown"));
9
+ var _remarkGfm = _interopRequireDefault(require("remark-gfm"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
+ function PowrPost(_ref) {
12
+ var post = _ref.post,
13
+ cta = _ref.cta;
14
+ if (!post) return null;
15
+ var when = post.publishedAt ? new Date(post.publishedAt).toLocaleDateString() : "";
16
+ return /*#__PURE__*/_react["default"].createElement("article", {
17
+ style: {
18
+ maxWidth: 720
19
+ }
20
+ }, post.coverUrl ? /*#__PURE__*/_react["default"].createElement("img", {
21
+ src: post.coverUrl,
22
+ alt: "",
23
+ style: {
24
+ width: "100%",
25
+ maxHeight: 360,
26
+ objectFit: "cover",
27
+ borderRadius: 8
28
+ }
29
+ }) : null, /*#__PURE__*/_react["default"].createElement("h1", {
30
+ style: {
31
+ marginBottom: 4
32
+ }
33
+ }, post.title), /*#__PURE__*/_react["default"].createElement("p", {
34
+ style: {
35
+ marginTop: 0,
36
+ color: "#6b7280",
37
+ fontSize: 14
38
+ }
39
+ }, [post.author && post.author.displayName, when, post.readMinutes ? "".concat(post.readMinutes, " min") : ""].filter(Boolean).join(" · ")), post.description ? /*#__PURE__*/_react["default"].createElement("p", {
40
+ style: {
41
+ fontSize: 18
42
+ }
43
+ }, post.description) : null, /*#__PURE__*/_react["default"].createElement("div", {
44
+ className: "powr-post-body"
45
+ }, /*#__PURE__*/_react["default"].createElement(_reactMarkdown["default"], {
46
+ remarkPlugins: [_remarkGfm["default"]]
47
+ }, post.bodyMd || "")), cta || null);
48
+ }
@@ -0,0 +1,330 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = PowrPostWriter;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _auth = require("../utils/auth");
10
+ var _session = require("../session");
11
+ var _uploader = _interopRequireDefault(require("../uploader"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
13
+ var cache;
14
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, "default": e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
15
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
16
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
18
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
19
+ function _toPrimitive(t, e) { if ("object" != _typeof(t) || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); }
20
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
21
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
22
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
23
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
24
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
25
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
26
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
27
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
28
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
29
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
30
+ var field = {
31
+ display: "block",
32
+ width: "100%",
33
+ marginTop: 4,
34
+ marginBottom: 12,
35
+ padding: 8
36
+ };
37
+ function PowrPostWriter(_ref) {
38
+ var projectId = _ref.projectId,
39
+ apiUrl = _ref.apiUrl;
40
+ var session = (0, _session.usePowrSession)();
41
+ var _useState = (0, _react.useState)([]),
42
+ _useState2 = _slicedToArray(_useState, 2),
43
+ rows = _useState2[0],
44
+ setRows = _useState2[1];
45
+ var _useState3 = (0, _react.useState)(null),
46
+ _useState4 = _slicedToArray(_useState3, 2),
47
+ current = _useState4[0],
48
+ setCurrent = _useState4[1];
49
+ var _useState5 = (0, _react.useState)(""),
50
+ _useState6 = _slicedToArray(_useState5, 2),
51
+ error = _useState6[0],
52
+ setError = _useState6[1];
53
+ var _useState7 = (0, _react.useState)(""),
54
+ _useState8 = _slicedToArray(_useState7, 2),
55
+ notice = _useState8[0],
56
+ setNotice = _useState8[1];
57
+ var _useState9 = (0, _react.useState)(true),
58
+ _useState0 = _slicedToArray(_useState9, 2),
59
+ loading = _useState0[0],
60
+ setLoading = _useState0[1];
61
+ var headers = session !== null && session !== void 0 && session.token ? {
62
+ Authorization: "Bearer ".concat(session.token)
63
+ } : undefined;
64
+ var load = (0, _react.useCallback)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
65
+ var _yield$apiCall, data, ok, response;
66
+ return _regenerator().w(function (_context) {
67
+ while (1) switch (_context.n) {
68
+ case 0:
69
+ setLoading(true);
70
+ setError("");
71
+ _context.n = 1;
72
+ return (0, _auth.apiCall)(apiUrl, "/posts/mine", projectId, {
73
+ headers: headers
74
+ });
75
+ case 1:
76
+ _yield$apiCall = _context.v;
77
+ data = _yield$apiCall.data;
78
+ ok = _yield$apiCall.ok;
79
+ response = _yield$apiCall.response;
80
+ if (response && response.status === 403) {
81
+ setError("Ask an admin to add you as a writer.");
82
+ setRows([]);
83
+ } else if (!ok || !(data !== null && data !== void 0 && data.success)) {
84
+ setError((data === null || data === void 0 ? void 0 : data.message) || "Could not load your posts.");
85
+ } else {
86
+ setRows(Array.isArray(data.data) ? data.data : []);
87
+ }
88
+ setLoading(false);
89
+ case 2:
90
+ return _context.a(2);
91
+ }
92
+ }, _callee);
93
+ })), [apiUrl, projectId, session === null || session === void 0 ? void 0 : session.token]);
94
+ (0, _react.useEffect)(function () {
95
+ load()["catch"](function () {
96
+ setError("Could not load your posts.");
97
+ setLoading(false);
98
+ });
99
+ }, [load]);
100
+ function blank() {
101
+ setCurrent({
102
+ title: "",
103
+ description: "",
104
+ tags: "",
105
+ coverUrl: "",
106
+ bodyMd: "",
107
+ status: "draft"
108
+ });
109
+ setNotice("");
110
+ }
111
+ function open(row) {
112
+ setCurrent({
113
+ _id: row._id,
114
+ title: row.title || "",
115
+ description: row.description || "",
116
+ tags: (row.tags || []).join(", "),
117
+ coverUrl: row.coverUrl || "",
118
+ bodyMd: row.bodyMd || "",
119
+ status: row.status,
120
+ slug: row.slug,
121
+ slugLocked: row.slugLocked
122
+ });
123
+ setNotice("");
124
+ }
125
+ function setField(key, value) {
126
+ setCurrent(function (prev) {
127
+ return _objectSpread(_objectSpread({}, prev || {}), {}, _defineProperty({}, key, value));
128
+ });
129
+ }
130
+ function save() {
131
+ return _save.apply(this, arguments);
132
+ }
133
+ function _save() {
134
+ _save = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
135
+ var body, path, _yield$apiCall2, data, ok;
136
+ return _regenerator().w(function (_context2) {
137
+ while (1) switch (_context2.n) {
138
+ case 0:
139
+ if (current) {
140
+ _context2.n = 1;
141
+ break;
142
+ }
143
+ return _context2.a(2);
144
+ case 1:
145
+ setError("");
146
+ setNotice("");
147
+ body = {
148
+ title: current.title,
149
+ description: current.description,
150
+ bodyMd: current.bodyMd,
151
+ coverUrl: current.coverUrl,
152
+ tags: current.tags
153
+ };
154
+ path = current._id ? "/posts/".concat(current._id) : "/posts";
155
+ _context2.n = 2;
156
+ return (0, _auth.apiCall)(apiUrl, path, projectId, {
157
+ method: current._id ? "PATCH" : "POST",
158
+ headers: headers,
159
+ body: body
160
+ });
161
+ case 2:
162
+ _yield$apiCall2 = _context2.v;
163
+ data = _yield$apiCall2.data;
164
+ ok = _yield$apiCall2.ok;
165
+ if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
166
+ _context2.n = 3;
167
+ break;
168
+ }
169
+ setError((data === null || data === void 0 ? void 0 : data.message) || "Could not save.");
170
+ return _context2.a(2);
171
+ case 3:
172
+ setNotice("Saved.");
173
+ open(data.data);
174
+ _context2.n = 4;
175
+ return load();
176
+ case 4:
177
+ return _context2.a(2);
178
+ }
179
+ }, _callee2);
180
+ }));
181
+ return _save.apply(this, arguments);
182
+ }
183
+ function submit() {
184
+ return _submit.apply(this, arguments);
185
+ }
186
+ function _submit() {
187
+ _submit = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
188
+ var _yield$apiCall3, data, ok;
189
+ return _regenerator().w(function (_context3) {
190
+ while (1) switch (_context3.n) {
191
+ case 0:
192
+ if (current !== null && current !== void 0 && current._id) {
193
+ _context3.n = 1;
194
+ break;
195
+ }
196
+ setError("Save the draft first.");
197
+ return _context3.a(2);
198
+ case 1:
199
+ _context3.n = 2;
200
+ return (0, _auth.apiCall)(apiUrl, "/posts/".concat(current._id, "/submit"), projectId, {
201
+ method: "POST",
202
+ headers: headers
203
+ });
204
+ case 2:
205
+ _yield$apiCall3 = _context3.v;
206
+ data = _yield$apiCall3.data;
207
+ ok = _yield$apiCall3.ok;
208
+ if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
209
+ _context3.n = 3;
210
+ break;
211
+ }
212
+ setError((data === null || data === void 0 ? void 0 : data.message) || "Could not send it.");
213
+ return _context3.a(2);
214
+ case 3:
215
+ setNotice("Sent for review.");
216
+ open(data.data);
217
+ _context3.n = 4;
218
+ return load();
219
+ case 4:
220
+ return _context3.a(2);
221
+ }
222
+ }, _callee3);
223
+ }));
224
+ return _submit.apply(this, arguments);
225
+ }
226
+ if (loading) return /*#__PURE__*/_react["default"].createElement("p", null, "Loading your posts\u2026");
227
+ if (error && !rows.length && !current) return /*#__PURE__*/_react["default"].createElement("p", null, error);
228
+ return /*#__PURE__*/_react["default"].createElement("div", {
229
+ style: {
230
+ display: "grid",
231
+ gridTemplateColumns: "240px 1fr",
232
+ gap: 24
233
+ }
234
+ }, /*#__PURE__*/_react["default"].createElement("aside", null, /*#__PURE__*/_react["default"].createElement("button", {
235
+ type: "button",
236
+ onClick: blank
237
+ }, "New post"), /*#__PURE__*/_react["default"].createElement("ul", {
238
+ style: {
239
+ listStyle: "none",
240
+ padding: 0
241
+ }
242
+ }, rows.map(function (row) {
243
+ return /*#__PURE__*/_react["default"].createElement("li", {
244
+ key: row._id,
245
+ style: {
246
+ marginTop: 8
247
+ }
248
+ }, /*#__PURE__*/_react["default"].createElement("button", {
249
+ type: "button",
250
+ onClick: function onClick() {
251
+ return open(row);
252
+ },
253
+ style: {
254
+ textAlign: "left"
255
+ }
256
+ }, row.title || "Untitled", /*#__PURE__*/_react["default"].createElement("div", {
257
+ style: {
258
+ fontSize: 12,
259
+ color: "#6b7280"
260
+ }
261
+ }, row.status)));
262
+ }))), current ? /*#__PURE__*/_react["default"].createElement("form", {
263
+ onSubmit: function onSubmit(event) {
264
+ event.preventDefault();
265
+ save();
266
+ }
267
+ }, error ? /*#__PURE__*/_react["default"].createElement("p", null, error) : null, notice ? /*#__PURE__*/_react["default"].createElement("p", null, notice) : null, /*#__PURE__*/_react["default"].createElement("label", null, "Title", /*#__PURE__*/_react["default"].createElement("input", {
268
+ style: field,
269
+ value: current.title,
270
+ onChange: function onChange(event) {
271
+ return setField("title", event.target.value);
272
+ }
273
+ })), /*#__PURE__*/_react["default"].createElement("label", null, "Short description", /*#__PURE__*/_react["default"].createElement("input", {
274
+ style: field,
275
+ value: current.description,
276
+ onChange: function onChange(event) {
277
+ return setField("description", event.target.value);
278
+ }
279
+ })), /*#__PURE__*/_react["default"].createElement("label", null, "Tags", /*#__PURE__*/_react["default"].createElement("input", {
280
+ style: field,
281
+ value: current.tags,
282
+ onChange: function onChange(event) {
283
+ return setField("tags", event.target.value);
284
+ },
285
+ placeholder: "vibe, cursor"
286
+ })), /*#__PURE__*/_react["default"].createElement("label", null, "Cover image link", /*#__PURE__*/_react["default"].createElement("input", {
287
+ style: field,
288
+ value: current.coverUrl,
289
+ onChange: function onChange(event) {
290
+ return setField("coverUrl", event.target.value);
291
+ }
292
+ })), /*#__PURE__*/_react["default"].createElement(_uploader["default"], {
293
+ apiUrl: apiUrl,
294
+ projectId: projectId,
295
+ maxFiles: 1,
296
+ acceptedFileTypes: "image/*",
297
+ onUploadComplete: function onUploadComplete(files) {
298
+ var last = files && files[files.length - 1];
299
+ if (!last || !last.url) return;
300
+ setCurrent(function (prev) {
301
+ return _objectSpread(_objectSpread({}, prev || {}), {}, {
302
+ bodyMd: "".concat(prev && prev.bodyMd || "", "\n\n![](").concat(last.url, ")\n"),
303
+ coverUrl: prev && prev.coverUrl || last.url
304
+ });
305
+ });
306
+ }
307
+ }), /*#__PURE__*/_react["default"].createElement("label", null, "Article", /*#__PURE__*/_react["default"].createElement("textarea", {
308
+ style: _objectSpread(_objectSpread({}, field), {}, {
309
+ minHeight: 280,
310
+ fontFamily: "inherit"
311
+ }),
312
+ value: current.bodyMd,
313
+ onChange: function onChange(event) {
314
+ return setField("bodyMd", event.target.value);
315
+ }
316
+ })), /*#__PURE__*/_react["default"].createElement("button", {
317
+ type: "submit"
318
+ }, "Save draft"), current._id && current.status === "draft" ? /*#__PURE__*/_react["default"].createElement("button", {
319
+ type: "button",
320
+ onClick: submit,
321
+ style: {
322
+ marginLeft: 8
323
+ }
324
+ }, "Send for review") : null, current.slug ? /*#__PURE__*/_react["default"].createElement("p", {
325
+ style: {
326
+ fontSize: 13,
327
+ color: "#6b7280"
328
+ }
329
+ }, "Link: /blog/", current.slug) : null) : /*#__PURE__*/_react["default"].createElement("p", null, "Pick a post, or start a new one."));
330
+ }