@plasmicpkgs/plasmic-wordpress 0.0.142 → 0.0.144
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.d.ts +77 -7
- package/dist/index.esm.js +344 -0
- package/dist/index.esm.js.map +7 -0
- package/dist/index.js +367 -5
- package/dist/index.js.map +7 -0
- package/package.json +20 -14
- package/dist/plasmic-wordpress.cjs.development.js +0 -754
- package/dist/plasmic-wordpress.cjs.development.js.map +0 -1
- package/dist/plasmic-wordpress.cjs.production.min.js +0 -2
- package/dist/plasmic-wordpress.cjs.production.min.js.map +0 -1
- package/dist/plasmic-wordpress.esm.js +0 -740
- package/dist/plasmic-wordpress.esm.js.map +0 -1
- package/dist/utils.d.ts +0 -4
- package/dist/wordpress.d.ts +0 -40
package/dist/index.js
CHANGED
|
@@ -1,8 +1,370 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var __async = (__this, __arguments, generator) => {
|
|
30
|
+
return new Promise((resolve, reject) => {
|
|
31
|
+
var fulfilled = (value) => {
|
|
32
|
+
try {
|
|
33
|
+
step(generator.next(value));
|
|
34
|
+
} catch (e) {
|
|
35
|
+
reject(e);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var rejected = (value) => {
|
|
39
|
+
try {
|
|
40
|
+
step(generator.throw(value));
|
|
41
|
+
} catch (e) {
|
|
42
|
+
reject(e);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
46
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
47
|
+
});
|
|
48
|
+
};
|
|
1
49
|
|
|
2
|
-
|
|
50
|
+
// src/index.tsx
|
|
51
|
+
var src_exports = {};
|
|
52
|
+
__export(src_exports, {
|
|
53
|
+
WordpressFetcher: () => WordpressFetcher,
|
|
54
|
+
WordpressFetcherMeta: () => WordpressFetcherMeta,
|
|
55
|
+
WordpressField: () => WordpressField,
|
|
56
|
+
WordpressFieldMeta: () => WordpressFieldMeta,
|
|
57
|
+
WordpressProvider: () => WordpressProvider,
|
|
58
|
+
WordpressProviderMeta: () => WordpressProviderMeta,
|
|
59
|
+
queryWordpress: () => queryWordpress,
|
|
60
|
+
registerAll: () => registerAll,
|
|
61
|
+
registerAllCustomFunctions: () => registerAllCustomFunctions
|
|
62
|
+
});
|
|
63
|
+
module.exports = __toCommonJS(src_exports);
|
|
64
|
+
var import_registerComponent = __toESM(require("@plasmicapp/host/registerComponent"));
|
|
65
|
+
var import_registerGlobalContext = __toESM(require("@plasmicapp/host/registerGlobalContext"));
|
|
3
66
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
67
|
+
// src/wordpress.tsx
|
|
68
|
+
var import_host = require("@plasmicapp/host");
|
|
69
|
+
var import_query = require("@plasmicapp/query");
|
|
70
|
+
var import_dlv = __toESM(require("dlv"));
|
|
71
|
+
var import_react = __toESM(require("react"));
|
|
72
|
+
|
|
73
|
+
// src/custom-functions.ts
|
|
74
|
+
var import_registerFunction = __toESM(require("@plasmicapp/host/registerFunction"));
|
|
75
|
+
|
|
76
|
+
// src/utils.ts
|
|
77
|
+
var queryOperators = [
|
|
78
|
+
{
|
|
79
|
+
value: "search",
|
|
80
|
+
label: "Search"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
value: "slug",
|
|
84
|
+
label: "Filter by Slug"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
value: "author",
|
|
88
|
+
label: "Filter by author"
|
|
89
|
+
}
|
|
90
|
+
];
|
|
91
|
+
function ensure(x, message) {
|
|
92
|
+
if (x === null || x === void 0) {
|
|
93
|
+
debugger;
|
|
94
|
+
throw new Error(message != null ? message : `Value must not be undefined or null`);
|
|
95
|
+
} else {
|
|
96
|
+
return x;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// src/custom-functions.ts
|
|
101
|
+
function queryWordpress(wordpressUrl, type, queryOperator, filterValue, limit) {
|
|
102
|
+
return __async(this, null, function* () {
|
|
103
|
+
const urlParams = new URLSearchParams();
|
|
104
|
+
if (queryOperator && filterValue) {
|
|
105
|
+
urlParams.append(queryOperator, filterValue);
|
|
106
|
+
}
|
|
107
|
+
if (limit) {
|
|
108
|
+
urlParams.append("per_page", limit.toString());
|
|
109
|
+
}
|
|
110
|
+
const url = new URL(`wp-json/wp/v2/${type}`, wordpressUrl);
|
|
111
|
+
url.search = urlParams.toString();
|
|
112
|
+
const resp = yield fetch(url);
|
|
113
|
+
return yield resp.json();
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
var queryWordpressMeta = {
|
|
117
|
+
name: "queryWordpress",
|
|
118
|
+
displayName: "Query WordPress",
|
|
119
|
+
importPath: "@plasmicpkgs/plasmic-wordpress",
|
|
120
|
+
params: [
|
|
121
|
+
{
|
|
122
|
+
name: "wordpressUrl",
|
|
123
|
+
type: "string"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: "queryType",
|
|
127
|
+
type: "choice",
|
|
128
|
+
options: ["pages", "posts"]
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
name: "queryOperator",
|
|
132
|
+
type: "choice",
|
|
133
|
+
options: Object.values(queryOperators).map((item) => ({
|
|
134
|
+
label: item.label,
|
|
135
|
+
value: item.value
|
|
136
|
+
}))
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
name: "filterValue",
|
|
140
|
+
type: "string"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: "limit",
|
|
144
|
+
type: "number"
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
};
|
|
148
|
+
function registerAllCustomFunctions(loader) {
|
|
149
|
+
function _registerFunction(fn, meta) {
|
|
150
|
+
if (loader) {
|
|
151
|
+
loader.registerFunction(fn, meta);
|
|
152
|
+
} else {
|
|
153
|
+
(0, import_registerFunction.default)(fn, meta);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
_registerFunction(queryWordpress, queryWordpressMeta);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// src/wordpress.tsx
|
|
160
|
+
var modulePath = "@plasmicpkgs/plasmic-wordpress";
|
|
161
|
+
var CredentialsContext = import_react.default.createContext(void 0);
|
|
162
|
+
var WordpressProviderMeta = {
|
|
163
|
+
name: "WordpressProvider",
|
|
164
|
+
displayName: "Wordpress Provider",
|
|
165
|
+
description: "The endpoint of your Wordpress",
|
|
166
|
+
importName: "WordpressProvider",
|
|
167
|
+
importPath: modulePath,
|
|
168
|
+
props: {
|
|
169
|
+
wordpressUrl: {
|
|
170
|
+
type: "string",
|
|
171
|
+
displayName: "Wordpress URL",
|
|
172
|
+
description: "URL of your Wordpress ",
|
|
173
|
+
defaultValue: "https://techcrunch.com/"
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
function WordpressProvider({
|
|
178
|
+
wordpressUrl,
|
|
179
|
+
children
|
|
180
|
+
}) {
|
|
181
|
+
return /* @__PURE__ */ import_react.default.createElement(CredentialsContext.Provider, { value: { wordpressUrl } }, children);
|
|
182
|
+
}
|
|
183
|
+
var WordpressFetcherMeta = {
|
|
184
|
+
name: "WordpressFetcher",
|
|
185
|
+
displayName: "Wordpress Fetcher",
|
|
186
|
+
importName: "WordpressFetcher",
|
|
187
|
+
importPath: modulePath,
|
|
188
|
+
providesData: true,
|
|
189
|
+
description: "Fetches Wordpress data and repeats content of children once for every row fetched. ",
|
|
190
|
+
defaultStyles: {
|
|
191
|
+
display: "grid",
|
|
192
|
+
gridTemplateColumns: "1fr",
|
|
193
|
+
gridRowGap: "8px",
|
|
194
|
+
padding: "8px",
|
|
195
|
+
maxWidth: "100%"
|
|
196
|
+
},
|
|
197
|
+
props: {
|
|
198
|
+
children: {
|
|
199
|
+
type: "slot",
|
|
200
|
+
defaultValue: {
|
|
201
|
+
type: "vbox",
|
|
202
|
+
styles: {
|
|
203
|
+
padding: "8px"
|
|
204
|
+
},
|
|
205
|
+
children: {
|
|
206
|
+
type: "component",
|
|
207
|
+
name: "WordpressField"
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
queryType: {
|
|
212
|
+
type: "choice",
|
|
213
|
+
options: ["posts", "pages"]
|
|
214
|
+
},
|
|
215
|
+
queryOperator: {
|
|
216
|
+
type: "choice",
|
|
217
|
+
displayName: "Query Operator",
|
|
218
|
+
description: "Filter Parameter filter by",
|
|
219
|
+
options: () => {
|
|
220
|
+
return queryOperators.map((item) => ({
|
|
221
|
+
label: item == null ? void 0 : item.label,
|
|
222
|
+
value: item == null ? void 0 : item.value
|
|
223
|
+
}));
|
|
224
|
+
},
|
|
225
|
+
hidden: (props) => !props.queryType
|
|
226
|
+
},
|
|
227
|
+
filterValue: {
|
|
228
|
+
type: "string",
|
|
229
|
+
displayName: "Filter value",
|
|
230
|
+
description: "Value to filter",
|
|
231
|
+
hidden: (props) => !props.queryOperator
|
|
232
|
+
},
|
|
233
|
+
limit: {
|
|
234
|
+
type: "number",
|
|
235
|
+
displayName: "Limit",
|
|
236
|
+
description: "Limit"
|
|
237
|
+
},
|
|
238
|
+
noAutoRepeat: {
|
|
239
|
+
type: "boolean",
|
|
240
|
+
displayName: "No auto-repeat",
|
|
241
|
+
description: "Do not automatically repeat children for every posts or pages.",
|
|
242
|
+
defaultValue: false
|
|
243
|
+
},
|
|
244
|
+
noLayout: {
|
|
245
|
+
type: "boolean",
|
|
246
|
+
displayName: "No layout",
|
|
247
|
+
description: "When set, Wordpress Fetcher will not layout its children; instead, the layout set on its parent element will be used. Useful if you want to set flex gap or control container tag type.",
|
|
248
|
+
defaultValue: false
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
function WordpressFetcher({
|
|
253
|
+
queryOperator,
|
|
254
|
+
filterValue,
|
|
255
|
+
noAutoRepeat,
|
|
256
|
+
limit,
|
|
257
|
+
queryType,
|
|
258
|
+
children,
|
|
259
|
+
className,
|
|
260
|
+
noLayout
|
|
261
|
+
}) {
|
|
262
|
+
const { wordpressUrl } = ensure(
|
|
263
|
+
(0, import_react.useContext)(CredentialsContext),
|
|
264
|
+
"WordpressFetcher must be used within a WordpressProvider"
|
|
265
|
+
);
|
|
266
|
+
const cacheKey = JSON.stringify({
|
|
267
|
+
queryOperator,
|
|
268
|
+
filterValue,
|
|
269
|
+
limit,
|
|
270
|
+
queryType,
|
|
271
|
+
wordpressUrl
|
|
272
|
+
});
|
|
273
|
+
const { data } = (0, import_query.usePlasmicQueryData)(
|
|
274
|
+
queryType && wordpressUrl ? cacheKey : null,
|
|
275
|
+
() => __async(this, null, function* () {
|
|
276
|
+
return queryWordpress(
|
|
277
|
+
ensure(wordpressUrl, "Wordpress URL must be specified"),
|
|
278
|
+
ensure(queryType, "Query Type must be specified"),
|
|
279
|
+
queryOperator,
|
|
280
|
+
filterValue,
|
|
281
|
+
limit
|
|
282
|
+
);
|
|
283
|
+
})
|
|
284
|
+
);
|
|
285
|
+
const hasFilter = queryOperator && filterValue;
|
|
286
|
+
if (!queryType) {
|
|
287
|
+
return /* @__PURE__ */ import_react.default.createElement("div", null, "Please specify query type");
|
|
288
|
+
}
|
|
289
|
+
if (queryOperator && !filterValue) {
|
|
290
|
+
return /* @__PURE__ */ import_react.default.createElement("div", null, "Please specify Filter Value");
|
|
291
|
+
}
|
|
292
|
+
if (!queryOperator && filterValue) {
|
|
293
|
+
return /* @__PURE__ */ import_react.default.createElement("div", null, "Please specify Query Operator");
|
|
294
|
+
}
|
|
295
|
+
if (hasFilter && data.length === 0) {
|
|
296
|
+
return /* @__PURE__ */ import_react.default.createElement("div", null, "No published ", queryType, " found");
|
|
297
|
+
}
|
|
298
|
+
const currentName = `currentWordpress${queryType === "posts" ? "Post" : "Page"}`;
|
|
299
|
+
const renderedData = noAutoRepeat ? children : data == null ? void 0 : data.map((item, i) => /* @__PURE__ */ import_react.default.createElement(import_host.DataProvider, { key: item.id, name: currentName, data: item }, (0, import_host.repeatedElement)(i, children)));
|
|
300
|
+
const response = data;
|
|
301
|
+
return /* @__PURE__ */ import_react.default.createElement(import_host.DataProvider, { data: response, name: "wordpressItems" }, noLayout ? /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, " ", renderedData, " ") : /* @__PURE__ */ import_react.default.createElement("div", { className }, " ", renderedData, " "));
|
|
302
|
+
}
|
|
303
|
+
var WordpressFieldMeta = {
|
|
304
|
+
name: "WordpressField",
|
|
305
|
+
displayName: "Wordpress Field",
|
|
306
|
+
importName: "WordpressField",
|
|
307
|
+
importPath: modulePath,
|
|
308
|
+
props: {
|
|
309
|
+
field: {
|
|
310
|
+
type: "choice",
|
|
311
|
+
options: [
|
|
312
|
+
"title",
|
|
313
|
+
"slug",
|
|
314
|
+
"content",
|
|
315
|
+
"excerpt",
|
|
316
|
+
"date",
|
|
317
|
+
"modified",
|
|
318
|
+
"link",
|
|
319
|
+
"status"
|
|
320
|
+
],
|
|
321
|
+
displayName: "Field",
|
|
322
|
+
description: "Field to be displayed."
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
};
|
|
326
|
+
function WordpressField({ className, field }) {
|
|
327
|
+
const currentPost = (0, import_host.useSelector)("currentWordpressPost");
|
|
328
|
+
const currentPage = (0, import_host.useSelector)("currentWordpressPage");
|
|
329
|
+
const item = currentPost || currentPage;
|
|
330
|
+
if (!item) {
|
|
331
|
+
return /* @__PURE__ */ import_react.default.createElement("div", null, "WordpressField must be used within a WordpressFetcher ");
|
|
332
|
+
}
|
|
333
|
+
if (!field) {
|
|
334
|
+
return /* @__PURE__ */ import_react.default.createElement("div", null, "Please specify a valid path or select a field.");
|
|
335
|
+
}
|
|
336
|
+
const data = (0, import_dlv.default)(item, field);
|
|
337
|
+
if (typeof data === "object" && "rendered" in data) {
|
|
338
|
+
return /* @__PURE__ */ import_react.default.createElement(
|
|
339
|
+
"div",
|
|
340
|
+
{
|
|
341
|
+
className,
|
|
342
|
+
style: { whiteSpace: "normal" },
|
|
343
|
+
dangerouslySetInnerHTML: { __html: data.rendered }
|
|
344
|
+
}
|
|
345
|
+
);
|
|
346
|
+
} else if (!data || typeof data === "object") {
|
|
347
|
+
return /* @__PURE__ */ import_react.default.createElement("div", { className }, "Please specify a valid field.");
|
|
348
|
+
} else {
|
|
349
|
+
return /* @__PURE__ */ import_react.default.createElement("div", { className }, " ", data, " ");
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
// src/index.tsx
|
|
354
|
+
function registerAll(loader) {
|
|
355
|
+
const _registerComponent = (Component, defaultMeta) => {
|
|
356
|
+
if (loader) {
|
|
357
|
+
loader.registerComponent(Component, defaultMeta);
|
|
358
|
+
} else {
|
|
359
|
+
(0, import_registerComponent.default)(Component, defaultMeta);
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
if (loader) {
|
|
363
|
+
loader.registerGlobalContext(WordpressProvider, WordpressProviderMeta);
|
|
364
|
+
} else {
|
|
365
|
+
(0, import_registerGlobalContext.default)(WordpressProvider, WordpressProviderMeta);
|
|
366
|
+
}
|
|
367
|
+
_registerComponent(WordpressFetcher, WordpressFetcherMeta);
|
|
368
|
+
_registerComponent(WordpressField, WordpressFieldMeta);
|
|
8
369
|
}
|
|
370
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.tsx", "../src/wordpress.tsx", "../src/custom-functions.ts", "../src/utils.ts"],
|
|
4
|
+
"sourcesContent": ["import registerComponent, {\n ComponentMeta,\n} from \"@plasmicapp/host/registerComponent\";\nimport registerGlobalContext from \"@plasmicapp/host/registerGlobalContext\";\nimport {\n WordpressFetcher,\n WordpressFetcherMeta,\n WordpressField,\n WordpressFieldMeta,\n WordpressProvider,\n WordpressProviderMeta,\n} from \"./wordpress\";\n\nexport function registerAll(loader?: {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n}) {\n const _registerComponent = <T extends React.ComponentType<any>>(\n Component: T,\n defaultMeta: ComponentMeta<React.ComponentProps<T>>\n ) => {\n if (loader) {\n loader.registerComponent(Component, defaultMeta);\n } else {\n registerComponent(Component, defaultMeta);\n }\n };\n\n if (loader) {\n loader.registerGlobalContext(WordpressProvider, WordpressProviderMeta);\n } else {\n registerGlobalContext(WordpressProvider, WordpressProviderMeta);\n }\n\n _registerComponent(WordpressFetcher, WordpressFetcherMeta);\n _registerComponent(WordpressField, WordpressFieldMeta);\n}\n\nexport * from \"./custom-functions\";\nexport * from \"./wordpress\";\n", "import {\n ComponentMeta,\n DataProvider,\n GlobalContextMeta,\n repeatedElement,\n useSelector,\n} from \"@plasmicapp/host\";\nimport { usePlasmicQueryData } from \"@plasmicapp/query\";\nimport get from \"dlv\";\nimport React, { ReactNode, useContext } from \"react\";\nimport { queryWordpress } from \"./custom-functions\";\nimport { ensure, QueryOperator, queryOperators } from \"./utils\";\n\nconst modulePath = \"@plasmicpkgs/plasmic-wordpress\";\n\ninterface WordpressProviderProps {\n wordpressUrl?: string;\n}\n\nconst CredentialsContext = React.createContext<\n WordpressProviderProps | undefined\n>(undefined);\n\nexport const WordpressProviderMeta: GlobalContextMeta<WordpressProviderProps> =\n {\n name: \"WordpressProvider\",\n displayName: \"Wordpress Provider\",\n description: \"The endpoint of your Wordpress\",\n importName: \"WordpressProvider\",\n importPath: modulePath,\n props: {\n wordpressUrl: {\n type: \"string\",\n displayName: \"Wordpress URL\",\n description: \"URL of your Wordpress \",\n defaultValue: \"https://techcrunch.com/\",\n },\n },\n };\n\nexport function WordpressProvider({\n wordpressUrl,\n children,\n}: React.PropsWithChildren<WordpressProviderProps>) {\n return (\n <CredentialsContext.Provider value={{ wordpressUrl }}>\n {children}\n </CredentialsContext.Provider>\n );\n}\n\ninterface WordpressFetcherProps {\n children?: ReactNode;\n className?: string;\n noLayout?: boolean;\n queryType?: \"posts\" | \"pages\";\n noAutoRepeat?: boolean;\n limit?: number;\n queryOperator?: QueryOperator;\n filterValue?: string;\n setControlContextData?: (data: {\n posts?: { value: string; label: string }[];\n pages?: { value: string; label: string }[];\n }) => void;\n}\n\nexport const WordpressFetcherMeta: ComponentMeta<WordpressFetcherProps> = {\n name: \"WordpressFetcher\",\n displayName: \"Wordpress Fetcher\",\n importName: \"WordpressFetcher\",\n importPath: modulePath,\n providesData: true,\n description:\n \"Fetches Wordpress data and repeats content of children once for every row fetched. \",\n defaultStyles: {\n display: \"grid\",\n gridTemplateColumns: \"1fr\",\n gridRowGap: \"8px\",\n padding: \"8px\",\n maxWidth: \"100%\",\n },\n props: {\n children: {\n type: \"slot\",\n defaultValue: {\n type: \"vbox\",\n styles: {\n padding: \"8px\",\n },\n children: {\n type: \"component\",\n name: \"WordpressField\",\n },\n },\n },\n queryType: {\n type: \"choice\",\n options: [\"posts\", \"pages\"],\n },\n queryOperator: {\n type: \"choice\",\n displayName: \"Query Operator\",\n description: \"Filter Parameter filter by\",\n options: () => {\n return queryOperators.map((item: any) => ({\n label: item?.label,\n value: item?.value,\n }));\n },\n hidden: (props) => !props.queryType,\n },\n\n filterValue: {\n type: \"string\",\n displayName: \"Filter value\",\n description: \"Value to filter\",\n hidden: (props) => !props.queryOperator,\n },\n limit: {\n type: \"number\",\n displayName: \"Limit\",\n description: \"Limit\",\n },\n noAutoRepeat: {\n type: \"boolean\",\n displayName: \"No auto-repeat\",\n description:\n \"Do not automatically repeat children for every posts or pages.\",\n defaultValue: false,\n },\n noLayout: {\n type: \"boolean\",\n displayName: \"No layout\",\n description:\n \"When set, Wordpress Fetcher will not layout its children; instead, the layout set on its parent element will be used. Useful if you want to set flex gap or control container tag type.\",\n defaultValue: false,\n },\n },\n};\n\nexport function WordpressFetcher({\n queryOperator,\n filterValue,\n noAutoRepeat,\n limit,\n queryType,\n children,\n className,\n noLayout,\n}: WordpressFetcherProps) {\n const { wordpressUrl } = ensure(\n useContext(CredentialsContext),\n \"WordpressFetcher must be used within a WordpressProvider\"\n );\n const cacheKey = JSON.stringify({\n queryOperator,\n filterValue,\n limit,\n queryType,\n wordpressUrl,\n });\n\n const { data: data } = usePlasmicQueryData<any | null>(\n queryType && wordpressUrl ? cacheKey : null,\n async () => {\n return queryWordpress(\n ensure(wordpressUrl, \"Wordpress URL must be specified\"),\n ensure(queryType, \"Query Type must be specified\"),\n queryOperator,\n filterValue,\n limit\n );\n }\n );\n\n const hasFilter = queryOperator && filterValue;\n\n if (!queryType) {\n return <div>Please specify query type</div>;\n }\n\n if (queryOperator && !filterValue) {\n return <div>Please specify Filter Value</div>;\n }\n if (!queryOperator && filterValue) {\n return <div>Please specify Query Operator</div>;\n }\n if (hasFilter && data.length === 0) {\n return <div>No published {queryType} found</div>;\n }\n\n const currentName = `currentWordpress${\n queryType === \"posts\" ? \"Post\" : \"Page\"\n }`;\n const renderedData = noAutoRepeat\n ? children\n : data?.map((item: any, i: number) => (\n <DataProvider key={item.id} name={currentName} data={item}>\n {repeatedElement(i, children)}\n </DataProvider>\n ));\n\n const response = data;\n return (\n <DataProvider data={response} name=\"wordpressItems\">\n {noLayout ? (\n <> {renderedData} </>\n ) : (\n <div className={className}> {renderedData} </div>\n )}\n </DataProvider>\n );\n}\n\ninterface WordpressFieldProps {\n className?: string;\n field?: string;\n setControlContextData?: (data: { data: any }) => void;\n}\nexport const WordpressFieldMeta: ComponentMeta<WordpressFieldProps> = {\n name: \"WordpressField\",\n displayName: \"Wordpress Field\",\n importName: \"WordpressField\",\n importPath: modulePath,\n props: {\n field: {\n type: \"choice\",\n options: [\n \"title\",\n \"slug\",\n \"content\",\n \"excerpt\",\n \"date\",\n \"modified\",\n \"link\",\n \"status\",\n ],\n displayName: \"Field\",\n description: \"Field to be displayed.\",\n },\n },\n};\nexport function WordpressField({ className, field }: WordpressFieldProps) {\n const currentPost = useSelector(\"currentWordpressPost\");\n const currentPage = useSelector(\"currentWordpressPage\");\n\n const item = currentPost || currentPage;\n\n if (!item) {\n return <div>WordpressField must be used within a WordpressFetcher </div>;\n }\n\n if (!field) {\n return <div>Please specify a valid path or select a field.</div>;\n }\n\n const data = get(item, field as string);\n\n if (typeof data === \"object\" && \"rendered\" in data) {\n return (\n <div\n className={className}\n style={{ whiteSpace: \"normal\" }}\n dangerouslySetInnerHTML={{ __html: data.rendered }}\n />\n );\n } else if (!data || typeof data === \"object\") {\n return <div className={className}>Please specify a valid field.</div>;\n } else {\n return <div className={className}> {data} </div>;\n }\n}\n", "import registerFunction, {\n CustomFunctionMeta,\n} from \"@plasmicapp/host/registerFunction\";\n\nimport { QueryOperator, queryOperators } from \"./utils\";\n\nexport async function queryWordpress(\n wordpressUrl: string,\n type: \"pages\" | \"posts\",\n queryOperator?: QueryOperator,\n filterValue?: string,\n limit?: number\n): Promise<any> {\n const urlParams = new URLSearchParams();\n if (queryOperator && filterValue) {\n urlParams.append(queryOperator, filterValue);\n }\n if (limit) {\n urlParams.append(\"per_page\", limit.toString());\n }\n const url = new URL(`wp-json/wp/v2/${type}`, wordpressUrl);\n url.search = urlParams.toString();\n\n const resp = await fetch(url);\n return await resp.json();\n}\n\nconst queryWordpressMeta: CustomFunctionMeta<typeof queryWordpress> = {\n name: \"queryWordpress\",\n displayName: \"Query WordPress\",\n importPath: \"@plasmicpkgs/plasmic-wordpress\",\n params: [\n {\n name: \"wordpressUrl\",\n type: \"string\",\n },\n {\n name: \"queryType\",\n type: \"choice\",\n options: [\"pages\", \"posts\"],\n },\n {\n name: \"queryOperator\",\n type: \"choice\",\n options: Object.values(queryOperators).map((item) => ({\n label: item.label,\n value: item.value,\n })),\n },\n {\n name: \"filterValue\",\n type: \"string\",\n },\n {\n name: \"limit\",\n type: \"number\",\n },\n ],\n};\n\nexport function registerAllCustomFunctions(loader?: { registerFunction: any }) {\n function _registerFunction<T extends (...args: any[]) => any>(\n fn: T,\n meta: CustomFunctionMeta<T>\n ) {\n if (loader) {\n loader.registerFunction(fn, meta);\n } else {\n registerFunction(fn, meta);\n }\n }\n\n _registerFunction(queryWordpress, queryWordpressMeta);\n}\n", "export const queryOperators = [\n {\n value: \"search\",\n label: \"Search\",\n },\n {\n value: \"slug\",\n label: \"Filter by Slug\",\n },\n {\n value: \"author\",\n label: \"Filter by author\",\n },\n] as const;\n\nexport type QueryOperator = (typeof queryOperators)[number][\"value\"];\n\nexport function ensure<T>(x: T | null | undefined, message?: string): T {\n if (x === null || x === undefined) {\n debugger;\n throw new Error(message ?? `Value must not be undefined or null`);\n } else {\n return x;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["registerFunction", "React", "get", "registerComponent", "registerGlobalContext"]
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plasmicpkgs/plasmic-wordpress",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.144",
|
|
4
4
|
"description": "Plasmic Wordpress components.",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"
|
|
7
|
-
"module": "dist/
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"module": "./dist/index.esm.js",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.esm.js",
|
|
12
|
+
"require": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
8
15
|
"publishConfig": {
|
|
9
16
|
"access": "public"
|
|
10
17
|
},
|
|
@@ -12,11 +19,12 @@
|
|
|
12
19
|
"dist"
|
|
13
20
|
],
|
|
14
21
|
"scripts": {
|
|
15
|
-
"
|
|
16
|
-
"build": "
|
|
22
|
+
"build": "yarn build:types && yarn build:index",
|
|
23
|
+
"build:types": "yarn tsc",
|
|
24
|
+
"build:index": "node ../../build.mjs ./src/index.tsx",
|
|
17
25
|
"test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests",
|
|
18
|
-
"lint": "tsdx lint",
|
|
19
26
|
"prepublishOnly": "npm run build",
|
|
27
|
+
"postpublish": "bash ../../scripts/publish-api-doc-model.sh",
|
|
20
28
|
"size": "size-limit",
|
|
21
29
|
"analyze": "size-limit --why"
|
|
22
30
|
},
|
|
@@ -27,16 +35,16 @@
|
|
|
27
35
|
},
|
|
28
36
|
"size-limit": [
|
|
29
37
|
{
|
|
30
|
-
"path": "dist/
|
|
38
|
+
"path": "dist/index.js",
|
|
31
39
|
"limit": "10 KB"
|
|
32
40
|
},
|
|
33
41
|
{
|
|
34
|
-
"path": "dist/
|
|
42
|
+
"path": "dist/index.esm.js",
|
|
35
43
|
"limit": "10 KB"
|
|
36
44
|
}
|
|
37
45
|
],
|
|
38
46
|
"devDependencies": {
|
|
39
|
-
"@plasmicapp/host": "1.0.
|
|
47
|
+
"@plasmicapp/host": "1.0.222",
|
|
40
48
|
"@plasmicapp/query": "0.1.79",
|
|
41
49
|
"@size-limit/preset-small-lib": "^7.0.8",
|
|
42
50
|
"@types/react": "^18.0.27",
|
|
@@ -44,13 +52,11 @@
|
|
|
44
52
|
"husky": "^7.0.4",
|
|
45
53
|
"react": "^18.2.0",
|
|
46
54
|
"react-dom": "^18.2.0",
|
|
47
|
-
"size-limit": "^7.0.8"
|
|
48
|
-
"tsdx": "^0.14.1",
|
|
49
|
-
"tslib": "^2.3.1"
|
|
55
|
+
"size-limit": "^7.0.8"
|
|
50
56
|
},
|
|
51
57
|
"dependencies": {
|
|
52
58
|
"@types/dlv": "^1.1.2",
|
|
53
59
|
"dlv": "^1.1.3"
|
|
54
60
|
},
|
|
55
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "6b519d95f66aaa8216056c031362e6da32034e2d"
|
|
56
62
|
}
|