powr-sdk-web 6.13.2 → 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
@@ -183,12 +183,6 @@ Object.defineProperty(exports, "PowrBaseAppWrapper", {
183
183
  return _shell.PowrBaseAppWrapper;
184
184
  }
185
185
  });
186
- Object.defineProperty(exports, "PowrBaseBlogs", {
187
- enumerable: true,
188
- get: function get() {
189
- return _blogs["default"];
190
- }
191
- });
192
186
  Object.defineProperty(exports, "PowrBaseChat", {
193
187
  enumerable: true,
194
188
  get: function get() {
@@ -715,7 +709,6 @@ var _payments = _interopRequireDefault(require("./payments"));
715
709
  var _waitlists = _interopRequireDefault(require("./waitlists"));
716
710
  var _activities = _interopRequireDefault(require("./activities"));
717
711
  var _calendar = _interopRequireDefault(require("./calendar"));
718
- var _blogs = _interopRequireDefault(require("./blogs"));
719
712
  var _likes = _interopRequireDefault(require("./likes"));
720
713
  var _auth = _interopRequireDefault(require("./auth"));
721
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
+ }
@@ -0,0 +1,373 @@
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"] = PowrPostsAdmin;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _auth = require("../utils/auth");
10
+ var _session = require("../session");
11
+ var cache;
12
+ 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; }
13
+ 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; }
14
+ 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; }
15
+ 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; }
16
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
17
+ 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); }
18
+ 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 }; })(); }
19
+ 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); }
20
+ 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); }
21
+ 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); }); }; }
22
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
23
+ 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."); }
24
+ 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; } }
25
+ 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; }
26
+ 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; } }
27
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
28
+ var input = {
29
+ marginRight: 8,
30
+ marginBottom: 8,
31
+ padding: 6
32
+ };
33
+ function PowrPostsAdmin(_ref) {
34
+ var projectId = _ref.projectId,
35
+ apiUrl = _ref.apiUrl;
36
+ var session = (0, _session.usePowrSession)();
37
+ var _useState = (0, _react.useState)("posts"),
38
+ _useState2 = _slicedToArray(_useState, 2),
39
+ tab = _useState2[0],
40
+ setTab = _useState2[1];
41
+ var _useState3 = (0, _react.useState)([]),
42
+ _useState4 = _slicedToArray(_useState3, 2),
43
+ rows = _useState4[0],
44
+ setRows = _useState4[1];
45
+ var _useState5 = (0, _react.useState)([]),
46
+ _useState6 = _slicedToArray(_useState5, 2),
47
+ authors = _useState6[0],
48
+ setAuthors = _useState6[1];
49
+ var _useState7 = (0, _react.useState)(""),
50
+ _useState8 = _slicedToArray(_useState7, 2),
51
+ status = _useState8[0],
52
+ setStatus = _useState8[1];
53
+ var _useState9 = (0, _react.useState)(""),
54
+ _useState0 = _slicedToArray(_useState9, 2),
55
+ error = _useState0[0],
56
+ setError = _useState0[1];
57
+ var _useState1 = (0, _react.useState)(true),
58
+ _useState10 = _slicedToArray(_useState1, 2),
59
+ loading = _useState10[0],
60
+ setLoading = _useState10[1];
61
+ var _useState11 = (0, _react.useState)({
62
+ displayName: "",
63
+ phone: "",
64
+ role: "writer"
65
+ }),
66
+ _useState12 = _slicedToArray(_useState11, 2),
67
+ form = _useState12[0],
68
+ setForm = _useState12[1];
69
+ var headers = session !== null && session !== void 0 && session.token ? {
70
+ Authorization: "Bearer ".concat(session.token)
71
+ } : undefined;
72
+ var loadPosts = (0, _react.useCallback)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
73
+ var path, _yield$apiCall, data, ok;
74
+ return _regenerator().w(function (_context) {
75
+ while (1) switch (_context.n) {
76
+ case 0:
77
+ path = status ? "/posts/all?status=".concat(encodeURIComponent(status)) : "/posts/all";
78
+ _context.n = 1;
79
+ return (0, _auth.apiCall)(apiUrl, path, projectId, {
80
+ headers: headers
81
+ });
82
+ case 1:
83
+ _yield$apiCall = _context.v;
84
+ data = _yield$apiCall.data;
85
+ ok = _yield$apiCall.ok;
86
+ if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
87
+ _context.n = 2;
88
+ break;
89
+ }
90
+ setError((data === null || data === void 0 ? void 0 : data.message) || "Could not load posts.");
91
+ setRows([]);
92
+ return _context.a(2);
93
+ case 2:
94
+ setRows(Array.isArray(data.data) ? data.data : []);
95
+ case 3:
96
+ return _context.a(2);
97
+ }
98
+ }, _callee);
99
+ })), [apiUrl, projectId, session === null || session === void 0 ? void 0 : session.token, status]);
100
+ var loadAuthors = (0, _react.useCallback)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
101
+ var _yield$apiCall2, data, ok;
102
+ return _regenerator().w(function (_context2) {
103
+ while (1) switch (_context2.n) {
104
+ case 0:
105
+ _context2.n = 1;
106
+ return (0, _auth.apiCall)(apiUrl, "/posts/authors", projectId, {
107
+ headers: headers
108
+ });
109
+ case 1:
110
+ _yield$apiCall2 = _context2.v;
111
+ data = _yield$apiCall2.data;
112
+ ok = _yield$apiCall2.ok;
113
+ if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
114
+ _context2.n = 2;
115
+ break;
116
+ }
117
+ setError((data === null || data === void 0 ? void 0 : data.message) || "Could not load writers.");
118
+ setAuthors([]);
119
+ return _context2.a(2);
120
+ case 2:
121
+ setAuthors(Array.isArray(data.data) ? data.data : []);
122
+ case 3:
123
+ return _context2.a(2);
124
+ }
125
+ }, _callee2);
126
+ })), [apiUrl, projectId, session === null || session === void 0 ? void 0 : session.token]);
127
+ (0, _react.useEffect)(function () {
128
+ setLoading(true);
129
+ setError("");
130
+ var job = tab === "posts" ? loadPosts() : loadAuthors();
131
+ job["catch"](function () {
132
+ return setError("Could not load.");
133
+ })["finally"](function () {
134
+ return setLoading(false);
135
+ });
136
+ }, [tab, loadPosts, loadAuthors]);
137
+ function act(_x, _x2) {
138
+ return _act.apply(this, arguments);
139
+ }
140
+ function _act() {
141
+ _act = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(id, action) {
142
+ var _yield$apiCall3, data, ok;
143
+ return _regenerator().w(function (_context3) {
144
+ while (1) switch (_context3.n) {
145
+ case 0:
146
+ setError("");
147
+ _context3.n = 1;
148
+ return (0, _auth.apiCall)(apiUrl, "/posts/".concat(id, "/").concat(action), projectId, {
149
+ method: "POST",
150
+ headers: headers
151
+ });
152
+ case 1:
153
+ _yield$apiCall3 = _context3.v;
154
+ data = _yield$apiCall3.data;
155
+ ok = _yield$apiCall3.ok;
156
+ if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
157
+ _context3.n = 2;
158
+ break;
159
+ }
160
+ setError((data === null || data === void 0 ? void 0 : data.message) || "Could not update.");
161
+ return _context3.a(2);
162
+ case 2:
163
+ _context3.n = 3;
164
+ return loadPosts();
165
+ case 3:
166
+ return _context3.a(2);
167
+ }
168
+ }, _callee3);
169
+ }));
170
+ return _act.apply(this, arguments);
171
+ }
172
+ function addAuthor(_x3) {
173
+ return _addAuthor.apply(this, arguments);
174
+ }
175
+ function _addAuthor() {
176
+ _addAuthor = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(event) {
177
+ var _yield$apiCall4, data, ok;
178
+ return _regenerator().w(function (_context4) {
179
+ while (1) switch (_context4.n) {
180
+ case 0:
181
+ event.preventDefault();
182
+ setError("");
183
+ _context4.n = 1;
184
+ return (0, _auth.apiCall)(apiUrl, "/posts/authors", projectId, {
185
+ method: "POST",
186
+ headers: headers,
187
+ body: form
188
+ });
189
+ case 1:
190
+ _yield$apiCall4 = _context4.v;
191
+ data = _yield$apiCall4.data;
192
+ ok = _yield$apiCall4.ok;
193
+ if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
194
+ _context4.n = 2;
195
+ break;
196
+ }
197
+ setError((data === null || data === void 0 ? void 0 : data.message) || "Could not add that writer.");
198
+ return _context4.a(2);
199
+ case 2:
200
+ setForm({
201
+ displayName: "",
202
+ phone: "",
203
+ role: "writer"
204
+ });
205
+ _context4.n = 3;
206
+ return loadAuthors();
207
+ case 3:
208
+ return _context4.a(2);
209
+ }
210
+ }, _callee4);
211
+ }));
212
+ return _addAuthor.apply(this, arguments);
213
+ }
214
+ function removeAuthor(_x4) {
215
+ return _removeAuthor.apply(this, arguments);
216
+ }
217
+ function _removeAuthor() {
218
+ _removeAuthor = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(id) {
219
+ var _yield$apiCall5, data, ok;
220
+ return _regenerator().w(function (_context5) {
221
+ while (1) switch (_context5.n) {
222
+ case 0:
223
+ setError("");
224
+ _context5.n = 1;
225
+ return (0, _auth.apiCall)(apiUrl, "/posts/authors/".concat(id), projectId, {
226
+ method: "DELETE",
227
+ headers: headers
228
+ });
229
+ case 1:
230
+ _yield$apiCall5 = _context5.v;
231
+ data = _yield$apiCall5.data;
232
+ ok = _yield$apiCall5.ok;
233
+ if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
234
+ _context5.n = 2;
235
+ break;
236
+ }
237
+ setError((data === null || data === void 0 ? void 0 : data.message) || "Could not remove.");
238
+ return _context5.a(2);
239
+ case 2:
240
+ _context5.n = 3;
241
+ return loadAuthors();
242
+ case 3:
243
+ return _context5.a(2);
244
+ }
245
+ }, _callee5);
246
+ }));
247
+ return _removeAuthor.apply(this, arguments);
248
+ }
249
+ return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
250
+ style: {
251
+ marginBottom: 12
252
+ }
253
+ }, /*#__PURE__*/_react["default"].createElement("button", {
254
+ type: "button",
255
+ onClick: function onClick() {
256
+ return setTab("posts");
257
+ }
258
+ }, "Posts"), /*#__PURE__*/_react["default"].createElement("button", {
259
+ type: "button",
260
+ onClick: function onClick() {
261
+ return setTab("authors");
262
+ },
263
+ style: {
264
+ marginLeft: 8
265
+ }
266
+ }, "Writers")), error ? /*#__PURE__*/_react["default"].createElement("p", null, error) : null, loading ? /*#__PURE__*/_react["default"].createElement("p", null, "Loading\u2026") : null, tab === "posts" && !loading ? /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("select", {
267
+ style: input,
268
+ value: status,
269
+ onChange: function onChange(event) {
270
+ return setStatus(event.target.value);
271
+ }
272
+ }, /*#__PURE__*/_react["default"].createElement("option", {
273
+ value: ""
274
+ }, "All"), /*#__PURE__*/_react["default"].createElement("option", {
275
+ value: "draft"
276
+ }, "Draft"), /*#__PURE__*/_react["default"].createElement("option", {
277
+ value: "in_review"
278
+ }, "In review"), /*#__PURE__*/_react["default"].createElement("option", {
279
+ value: "published"
280
+ }, "Published"), /*#__PURE__*/_react["default"].createElement("option", {
281
+ value: "archived"
282
+ }, "Archived")), !rows.length ? /*#__PURE__*/_react["default"].createElement("p", null, "No posts.") : null, /*#__PURE__*/_react["default"].createElement("table", {
283
+ style: {
284
+ width: "100%",
285
+ borderCollapse: "collapse",
286
+ fontSize: 14
287
+ }
288
+ }, /*#__PURE__*/_react["default"].createElement("tbody", null, rows.map(function (row) {
289
+ var _row$author;
290
+ return /*#__PURE__*/_react["default"].createElement("tr", {
291
+ key: row._id
292
+ }, /*#__PURE__*/_react["default"].createElement("td", {
293
+ style: {
294
+ padding: 8,
295
+ borderBottom: "1px solid #e5e7eb"
296
+ }
297
+ }, /*#__PURE__*/_react["default"].createElement("strong", null, row.title), /*#__PURE__*/_react["default"].createElement("div", {
298
+ style: {
299
+ color: "#6b7280"
300
+ }
301
+ }, row.status, " \xB7 ", ((_row$author = row.author) === null || _row$author === void 0 ? void 0 : _row$author.displayName) || "No name")), /*#__PURE__*/_react["default"].createElement("td", {
302
+ style: {
303
+ padding: 8,
304
+ borderBottom: "1px solid #e5e7eb",
305
+ whiteSpace: "nowrap"
306
+ }
307
+ }, row.status !== "published" ? /*#__PURE__*/_react["default"].createElement("button", {
308
+ type: "button",
309
+ onClick: function onClick() {
310
+ return act(row._id, "publish");
311
+ }
312
+ }, "Publish") : /*#__PURE__*/_react["default"].createElement("button", {
313
+ type: "button",
314
+ onClick: function onClick() {
315
+ return act(row._id, "unpublish");
316
+ }
317
+ }, "Take down"), row.status !== "archived" ? /*#__PURE__*/_react["default"].createElement("button", {
318
+ type: "button",
319
+ onClick: function onClick() {
320
+ return act(row._id, "archive");
321
+ },
322
+ style: {
323
+ marginLeft: 8
324
+ }
325
+ }, "Archive") : null));
326
+ })))) : null, tab === "authors" && !loading ? /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("form", {
327
+ onSubmit: addAuthor
328
+ }, /*#__PURE__*/_react["default"].createElement("input", {
329
+ style: input,
330
+ placeholder: "Name",
331
+ value: form.displayName,
332
+ onChange: function onChange(event) {
333
+ return setForm(_objectSpread(_objectSpread({}, form), {}, {
334
+ displayName: event.target.value
335
+ }));
336
+ }
337
+ }), /*#__PURE__*/_react["default"].createElement("input", {
338
+ style: input,
339
+ placeholder: "Phone",
340
+ value: form.phone,
341
+ onChange: function onChange(event) {
342
+ return setForm(_objectSpread(_objectSpread({}, form), {}, {
343
+ phone: event.target.value
344
+ }));
345
+ }
346
+ }), /*#__PURE__*/_react["default"].createElement("select", {
347
+ style: input,
348
+ value: form.role,
349
+ onChange: function onChange(event) {
350
+ return setForm(_objectSpread(_objectSpread({}, form), {}, {
351
+ role: event.target.value
352
+ }));
353
+ }
354
+ }, /*#__PURE__*/_react["default"].createElement("option", {
355
+ value: "writer"
356
+ }, "Writer"), /*#__PURE__*/_react["default"].createElement("option", {
357
+ value: "editor"
358
+ }, "Editor")), /*#__PURE__*/_react["default"].createElement("button", {
359
+ type: "submit"
360
+ }, "Add writer")), /*#__PURE__*/_react["default"].createElement("ul", null, authors.map(function (author) {
361
+ return /*#__PURE__*/_react["default"].createElement("li", {
362
+ key: author._id
363
+ }, author.displayName, " \xB7 ", author.handle, " \xB7 ", author.role, /*#__PURE__*/_react["default"].createElement("button", {
364
+ type: "button",
365
+ onClick: function onClick() {
366
+ return removeAuthor(author._id);
367
+ },
368
+ style: {
369
+ marginLeft: 8
370
+ }
371
+ }, "Remove"));
372
+ }))) : null);
373
+ }
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+
3
+ 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 }; })(); }
4
+ 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); }
5
+ 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); }
6
+ 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); }); }; }
7
+ var _require = require("../config"),
8
+ resolvePowrApiUrl = _require.resolvePowrApiUrl;
9
+ function readJson(_x) {
10
+ return _readJson.apply(this, arguments);
11
+ }
12
+ function _readJson() {
13
+ _readJson = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(url) {
14
+ var response, data, _t;
15
+ return _regenerator().w(function (_context) {
16
+ while (1) switch (_context.p = _context.n) {
17
+ case 0:
18
+ _context.n = 1;
19
+ return fetch(url);
20
+ case 1:
21
+ response = _context.v;
22
+ data = null;
23
+ _context.p = 2;
24
+ _context.n = 3;
25
+ return response.json();
26
+ case 3:
27
+ data = _context.v;
28
+ _context.n = 5;
29
+ break;
30
+ case 4:
31
+ _context.p = 4;
32
+ _t = _context.v;
33
+ data = null;
34
+ case 5:
35
+ return _context.a(2, {
36
+ ok: response.ok,
37
+ status: response.status,
38
+ data: data
39
+ });
40
+ }
41
+ }, _callee, null, [[2, 4]]);
42
+ }));
43
+ return _readJson.apply(this, arguments);
44
+ }
45
+ function hostFor(apiUrl, projectId, path, query) {
46
+ var host = resolvePowrApiUrl(apiUrl);
47
+ var params = new URLSearchParams();
48
+ if (projectId) params.set("projectId", String(projectId));
49
+ Object.keys(query || {}).forEach(function (key) {
50
+ var value = query[key];
51
+ if (value !== undefined && value !== null && value !== "") params.set(key, String(value));
52
+ });
53
+ var qs = params.toString();
54
+ return "".concat(host).concat(path).concat(qs ? "?".concat(qs) : "");
55
+ }
56
+ function fetchPosts() {
57
+ return _fetchPosts.apply(this, arguments);
58
+ }
59
+ function _fetchPosts() {
60
+ _fetchPosts = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
61
+ var _ref,
62
+ projectId,
63
+ apiUrl,
64
+ tag,
65
+ author,
66
+ page,
67
+ limit,
68
+ _yield$readJson,
69
+ ok,
70
+ data,
71
+ _args2 = arguments;
72
+ return _regenerator().w(function (_context2) {
73
+ while (1) switch (_context2.n) {
74
+ case 0:
75
+ _ref = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {}, projectId = _ref.projectId, apiUrl = _ref.apiUrl, tag = _ref.tag, author = _ref.author, page = _ref.page, limit = _ref.limit;
76
+ _context2.n = 1;
77
+ return readJson(hostFor(apiUrl, projectId, "/posts", {
78
+ tag: tag,
79
+ author: author,
80
+ page: page,
81
+ limit: limit
82
+ }));
83
+ case 1:
84
+ _yield$readJson = _context2.v;
85
+ ok = _yield$readJson.ok;
86
+ data = _yield$readJson.data;
87
+ if (!(!ok || !data || !data.success)) {
88
+ _context2.n = 2;
89
+ break;
90
+ }
91
+ return _context2.a(2, []);
92
+ case 2:
93
+ return _context2.a(2, Array.isArray(data.data) ? data.data : []);
94
+ }
95
+ }, _callee2);
96
+ }));
97
+ return _fetchPosts.apply(this, arguments);
98
+ }
99
+ function fetchPost() {
100
+ return _fetchPost.apply(this, arguments);
101
+ }
102
+ function _fetchPost() {
103
+ _fetchPost = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
104
+ var _ref2,
105
+ projectId,
106
+ apiUrl,
107
+ slug,
108
+ _yield$readJson2,
109
+ ok,
110
+ data,
111
+ _args3 = arguments;
112
+ return _regenerator().w(function (_context3) {
113
+ while (1) switch (_context3.n) {
114
+ case 0:
115
+ _ref2 = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {}, projectId = _ref2.projectId, apiUrl = _ref2.apiUrl, slug = _ref2.slug;
116
+ if (slug) {
117
+ _context3.n = 1;
118
+ break;
119
+ }
120
+ return _context3.a(2, null);
121
+ case 1:
122
+ _context3.n = 2;
123
+ return readJson(hostFor(apiUrl, projectId, "/posts/".concat(encodeURIComponent(slug))));
124
+ case 2:
125
+ _yield$readJson2 = _context3.v;
126
+ ok = _yield$readJson2.ok;
127
+ data = _yield$readJson2.data;
128
+ if (!(!ok || !data || !data.success)) {
129
+ _context3.n = 3;
130
+ break;
131
+ }
132
+ return _context3.a(2, null);
133
+ case 3:
134
+ return _context3.a(2, data.data || null);
135
+ }
136
+ }, _callee3);
137
+ }));
138
+ return _fetchPost.apply(this, arguments);
139
+ }
140
+ function fetchAuthor() {
141
+ return _fetchAuthor.apply(this, arguments);
142
+ }
143
+ function _fetchAuthor() {
144
+ _fetchAuthor = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
145
+ var _ref3,
146
+ projectId,
147
+ apiUrl,
148
+ handle,
149
+ _yield$readJson3,
150
+ ok,
151
+ data,
152
+ _args4 = arguments;
153
+ return _regenerator().w(function (_context4) {
154
+ while (1) switch (_context4.n) {
155
+ case 0:
156
+ _ref3 = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : {}, projectId = _ref3.projectId, apiUrl = _ref3.apiUrl, handle = _ref3.handle;
157
+ if (handle) {
158
+ _context4.n = 1;
159
+ break;
160
+ }
161
+ return _context4.a(2, null);
162
+ case 1:
163
+ _context4.n = 2;
164
+ return readJson(hostFor(apiUrl, projectId, "/posts/authors/".concat(encodeURIComponent(handle))));
165
+ case 2:
166
+ _yield$readJson3 = _context4.v;
167
+ ok = _yield$readJson3.ok;
168
+ data = _yield$readJson3.data;
169
+ if (!(!ok || !data || !data.success)) {
170
+ _context4.n = 3;
171
+ break;
172
+ }
173
+ return _context4.a(2, null);
174
+ case 3:
175
+ return _context4.a(2, data.data || null);
176
+ }
177
+ }, _callee4);
178
+ }));
179
+ return _fetchAuthor.apply(this, arguments);
180
+ }
181
+ module.exports = {
182
+ fetchPosts: fetchPosts,
183
+ fetchPost: fetchPost,
184
+ fetchAuthor: fetchAuthor
185
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powr-sdk-web",
3
- "version": "6.13.2",
3
+ "version": "6.14.0",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist"
@@ -1,44 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
- var _likes = _interopRequireDefault(require("../likes"));
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
10
- var BlogCard = function BlogCard(_ref) {
11
- var imageUrl = _ref.imageUrl,
12
- tags = _ref.tags,
13
- title = _ref.title,
14
- description = _ref.description,
15
- author = _ref.author,
16
- date = _ref.date,
17
- projectId = _ref.projectId,
18
- userId = _ref.userId,
19
- contentId = _ref.contentId;
20
- return /*#__PURE__*/_react["default"].createElement("div", {
21
- className: "bg-white rounded-2xl shadow-lg overflow-hidden flex flex-col transition-transform hover:scale-105 duration-200 w-full"
22
- }, /*#__PURE__*/_react["default"].createElement("img", {
23
- src: imageUrl || "https://tse3.mm.bing.net/th/id/OIP.rlpNF9-6aK12Vm8dSRAGjgHaHa?pid=Api&P=0&h=220",
24
- alt: title,
25
- className: "w-full h-48 object-cover object-center"
26
- }), /*#__PURE__*/_react["default"].createElement("div", {
27
- className: "p-6 flex flex-col flex-1"
28
- }, /*#__PURE__*/_react["default"].createElement("h3", {
29
- className: "text-xl font-bold mb-2 text-gray-900"
30
- }, title), /*#__PURE__*/_react["default"].createElement("p", {
31
- className: "text-gray-600 text-sm flex-1 mb-4"
32
- }, description), /*#__PURE__*/_react["default"].createElement("div", {
33
- className: "flex items-center justify-between mt-auto pt-2"
34
- }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
35
- className: "font-semibold text-sm text-gray-800"
36
- }, author || 'Unknown'), /*#__PURE__*/_react["default"].createElement("div", {
37
- className: "text-xs text-gray-500"
38
- }, date)), /*#__PURE__*/_react["default"].createElement(_likes["default"], {
39
- userId: userId,
40
- projectId: projectId,
41
- contentId: contentId
42
- }))));
43
- };
44
- var _default = exports["default"] = BlogCard;
@@ -1,112 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _BlogCard = _interopRequireDefault(require("./BlogCard"));
9
- var _auth = require("../utils/auth");
10
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
- var cache;
12
- 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; }
13
- 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 }; })(); }
14
- 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); }
15
- 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); }
16
- 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); }); }; }
17
- function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
18
- 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."); }
19
- 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; } }
20
- 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; }
21
- 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; } }
22
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
23
- var PowrBaseBlogs = function PowrBaseBlogs(_ref) {
24
- var projectId = _ref.projectId,
25
- userId = _ref.userId,
26
- apiUrl = _ref.apiUrl;
27
- var _useState = (0, _react.useState)([]),
28
- _useState2 = _slicedToArray(_useState, 2),
29
- blogs = _useState2[0],
30
- setBlogs = _useState2[1];
31
- var _useState3 = (0, _react.useState)(true),
32
- _useState4 = _slicedToArray(_useState3, 2),
33
- loading = _useState4[0],
34
- setLoading = _useState4[1];
35
- var _useState5 = (0, _react.useState)(null),
36
- _useState6 = _slicedToArray(_useState5, 2),
37
- error = _useState6[0],
38
- setError = _useState6[1];
39
- (0, _react.useEffect)(function () {
40
- var fetchBlogs = /*#__PURE__*/function () {
41
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
42
- var _yield$apiCall, data, ok, _t;
43
- return _regenerator().w(function (_context) {
44
- while (1) switch (_context.p = _context.n) {
45
- case 0:
46
- _context.p = 0;
47
- _context.n = 1;
48
- return (0, _auth.apiCall)(apiUrl, "/blogs", projectId);
49
- case 1:
50
- _yield$apiCall = _context.v;
51
- data = _yield$apiCall.data;
52
- ok = _yield$apiCall.ok;
53
- setBlogs((data === null || data === void 0 ? void 0 : data.blogs) || []);
54
- _context.n = 3;
55
- break;
56
- case 2:
57
- _context.p = 2;
58
- _t = _context.v;
59
- setError(_t.message);
60
- case 3:
61
- _context.p = 3;
62
- setLoading(false);
63
- return _context.f(3);
64
- case 4:
65
- return _context.a(2);
66
- }
67
- }, _callee, null, [[0, 2, 3, 4]]);
68
- }));
69
- return function fetchBlogs() {
70
- return _ref2.apply(this, arguments);
71
- };
72
- }();
73
- fetchBlogs();
74
- }, [projectId]);
75
- if (loading) return /*#__PURE__*/_react["default"].createElement("div", {
76
- className: "text-center py-10"
77
- }, "Loading blogs...");
78
- if (error) return /*#__PURE__*/_react["default"].createElement("div", {
79
- className: "text-center text-red-500 py-10"
80
- }, error);
81
- if (!blogs.length) return /*#__PURE__*/_react["default"].createElement("div", {
82
- className: "text-center py-10"
83
- }, "No blogs found.");
84
- var formatDate = function formatDate(dateStr) {
85
- if (!dateStr) return "";
86
- var date = new Date(dateStr);
87
- return date.toLocaleDateString(undefined, {
88
- year: 'numeric',
89
- month: 'short',
90
- day: 'numeric'
91
- });
92
- };
93
- return /*#__PURE__*/_react["default"].createElement("div", {
94
- className: "py-10 px-4 flex justify-center"
95
- }, /*#__PURE__*/_react["default"].createElement("div", {
96
- className: "w-full max-w-lg flex flex-col gap-8 items-center"
97
- }, blogs.map(function (blog) {
98
- return /*#__PURE__*/_react["default"].createElement(_BlogCard["default"], {
99
- key: blog._id,
100
- imageUrl: blog.imageUrl,
101
- tags: blog.tags,
102
- title: blog.title,
103
- description: blog.description,
104
- author: blog.author,
105
- date: formatDate(blog.date || blog.createdAt),
106
- projectId: projectId,
107
- userId: userId,
108
- contentId: blog._id
109
- });
110
- })));
111
- };
112
- var _default = exports["default"] = PowrBaseBlogs;