@openrails/contentkit-ui 0.79.0 → 0.81.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.
- package/README.md +82 -54
- package/dist/client/beacons.d.ts +53 -0
- package/dist/client/beacons.js +72 -0
- package/dist/client/beacons.js.map +1 -0
- package/dist/client/catalog.d.ts +2 -2
- package/dist/client/catalog.js +1 -1
- package/dist/client/catalog.js.map +1 -1
- package/dist/client/client.d.ts +24 -11
- package/dist/client/client.js +37 -29
- package/dist/client/client.js.map +1 -1
- package/dist/client/content/comments.d.ts +12 -8
- package/dist/client/content/comments.js +33 -20
- package/dist/client/content/comments.js.map +1 -1
- package/dist/client/content/favorites.d.ts +24 -9
- package/dist/client/content/favorites.js +21 -22
- package/dist/client/content/favorites.js.map +1 -1
- package/dist/client/content/moderation.d.ts +1 -1
- package/dist/client/content/moderation.js.map +1 -1
- package/dist/client/content/reactions.d.ts +11 -6
- package/dist/client/content/reactions.js +23 -18
- package/dist/client/content/reactions.js.map +1 -1
- package/dist/client/content/types.d.ts +40 -21
- package/dist/client/content/types.js +5 -2
- package/dist/client/content/types.js.map +1 -1
- package/dist/client/contents.d.ts +55 -0
- package/dist/client/contents.js +144 -0
- package/dist/client/contents.js.map +1 -0
- package/dist/client/discovery.d.ts +126 -0
- package/dist/client/discovery.js +125 -0
- package/dist/client/discovery.js.map +1 -0
- package/dist/client/generated/error-codes.d.ts +1 -1
- package/dist/client/generated/error-codes.js +12 -0
- package/dist/client/generated/error-codes.js.map +1 -1
- package/dist/client/generated/routes.d.ts +1244 -370
- package/dist/client/generated/routes.js +1870 -554
- package/dist/client/generated/routes.js.map +1 -1
- package/dist/client/generated/wire.d.ts +960 -134
- package/dist/client/generated/wire.js.map +1 -1
- package/dist/client/group-fields.d.ts +25 -0
- package/dist/client/group-fields.js +63 -0
- package/dist/client/group-fields.js.map +1 -0
- package/dist/client/groups.d.ts +58 -0
- package/dist/client/groups.js +119 -0
- package/dist/client/groups.js.map +1 -0
- package/dist/client/http.d.ts +24 -12
- package/dist/client/http.js +20 -24
- package/dist/client/http.js.map +1 -1
- package/dist/client/index.d.ts +11 -6
- package/dist/client/media/api.d.ts +1 -1
- package/dist/client/media/api.js +4 -2
- package/dist/client/media/api.js.map +1 -1
- package/dist/client/media/client.d.ts +8 -9
- package/dist/client/media/client.js +58 -71
- package/dist/client/media/client.js.map +1 -1
- package/dist/client/media/ref.d.ts +30 -0
- package/dist/client/media/ref.js +10 -3
- package/dist/client/media/ref.js.map +1 -1
- package/dist/client/offers.d.ts +41 -0
- package/dist/client/offers.js +66 -0
- package/dist/client/offers.js.map +1 -0
- package/dist/client/route.d.ts +2 -0
- package/dist/client/route.js +2 -1
- package/dist/client/route.js.map +1 -1
- package/dist/client/versions.d.ts +20 -0
- package/dist/client/versions.js +53 -0
- package/dist/client/versions.js.map +1 -0
- package/dist/client.js +35 -30
- package/dist/components/admin/content-manager.d.ts +80 -0
- package/dist/components/admin/content-manager.js +591 -0
- package/dist/components/admin/content-manager.js.map +1 -0
- package/dist/components/admin/group-manager.d.ts +24 -0
- package/dist/components/admin/group-manager.js +244 -0
- package/dist/components/admin/group-manager.js.map +1 -0
- package/dist/components/admin/media-item-panel.js +1 -1
- package/dist/components/admin/media-item-panel.js.map +1 -1
- package/dist/components/content/card.d.ts +44 -0
- package/dist/components/content/card.js +285 -0
- package/dist/components/content/card.js.map +1 -0
- package/dist/components/content/editors.d.ts +40 -0
- package/dist/components/content/editors.js +764 -0
- package/dist/components/content/editors.js.map +1 -0
- package/dist/components/content/filters.d.ts +28 -0
- package/dist/components/content/filters.js +134 -0
- package/dist/components/content/filters.js.map +1 -0
- package/dist/components/content/grid.d.ts +62 -0
- package/dist/components/content/grid.js +233 -0
- package/dist/components/content/grid.js.map +1 -0
- package/dist/components/content/index.d.ts +8 -0
- package/dist/components/content/listing.d.ts +20 -0
- package/dist/components/content/listing.js +150 -0
- package/dist/components/content/listing.js.map +1 -0
- package/dist/components/content/offer-fields.d.ts +8 -0
- package/dist/components/content/offer-fields.js +127 -0
- package/dist/components/content/offer-fields.js.map +1 -0
- package/dist/components/content/paywall.d.ts +53 -0
- package/dist/components/content/paywall.js +221 -0
- package/dist/components/content/paywall.js.map +1 -0
- package/dist/components/content/search.d.ts +27 -0
- package/dist/components/content/search.js +164 -0
- package/dist/components/content/search.js.map +1 -0
- package/dist/components/groups/banner.d.ts +51 -0
- package/dist/components/groups/banner.js +194 -0
- package/dist/components/groups/banner.js.map +1 -0
- package/dist/components/groups/directory.d.ts +37 -0
- package/dist/components/groups/directory.js +117 -0
- package/dist/components/groups/directory.js.map +1 -0
- package/dist/components/groups/editor.d.ts +44 -0
- package/dist/components/groups/editor.js +860 -0
- package/dist/components/groups/editor.js.map +1 -0
- package/dist/components/groups/fields.d.ts +13 -0
- package/dist/components/groups/fields.js +68 -0
- package/dist/components/groups/fields.js.map +1 -0
- package/dist/components/groups/header.d.ts +25 -0
- package/dist/components/groups/header.js +131 -0
- package/dist/components/groups/header.js.map +1 -0
- package/dist/components/groups/index.d.ts +6 -0
- package/dist/components/groups/memberships.d.ts +55 -0
- package/dist/components/groups/memberships.js +527 -0
- package/dist/components/groups/memberships.js.map +1 -0
- package/dist/components/groups/parts.d.ts +49 -0
- package/dist/components/groups/parts.js +172 -0
- package/dist/components/groups/parts.js.map +1 -0
- package/dist/components/media-folder-editor.js +153 -152
- package/dist/components/media-folder-editor.js.map +1 -1
- package/dist/components/social/comments.d.ts +7 -5
- package/dist/components/social/comments.js +6 -2
- package/dist/components/social/comments.js.map +1 -1
- package/dist/components/social/engagement.d.ts +4 -3
- package/dist/components/social/engagement.js.map +1 -1
- package/dist/components/social/moderation.d.ts +1 -1
- package/dist/components/social/moderation.js +3 -3
- package/dist/components/social/moderation.js.map +1 -1
- package/dist/editor/rich-text-editor.d.ts +4 -4
- package/dist/editor/rich-text-editor.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +23 -9
- package/dist/locales/admin/de.js +5 -66
- package/dist/locales/admin/de.js.map +1 -1
- package/dist/locales/admin/en.d.ts +5 -66
- package/dist/locales/admin/en.js +19 -80
- package/dist/locales/admin/en.js.map +1 -1
- package/dist/locales/admin/es.js +5 -66
- package/dist/locales/admin/es.js.map +1 -1
- package/dist/locales/admin/ja.js +5 -66
- package/dist/locales/admin/ja.js.map +1 -1
- package/dist/locales/admin/ko.js +5 -66
- package/dist/locales/admin/ko.js.map +1 -1
- package/dist/locales/admin/zh.js +5 -66
- package/dist/locales/admin/zh.js.map +1 -1
- package/dist/locales/content/de.d.ts +2 -0
- package/dist/locales/content/de.js +98 -0
- package/dist/locales/content/de.js.map +1 -0
- package/dist/locales/content/en.d.ts +93 -0
- package/dist/locales/content/en.js +98 -0
- package/dist/locales/content/en.js.map +1 -0
- package/dist/locales/content/es.d.ts +2 -0
- package/dist/locales/content/es.js +98 -0
- package/dist/locales/content/es.js.map +1 -0
- package/dist/locales/content/ja.d.ts +2 -0
- package/dist/locales/content/ja.js +98 -0
- package/dist/locales/content/ja.js.map +1 -0
- package/dist/locales/content/ko.d.ts +2 -0
- package/dist/locales/content/ko.js +98 -0
- package/dist/locales/content/ko.js.map +1 -0
- package/dist/locales/content/zh.d.ts +2 -0
- package/dist/locales/content/zh.js +98 -0
- package/dist/locales/content/zh.js.map +1 -0
- package/dist/locales/de.js +11 -2
- package/dist/locales/de.js.map +1 -1
- package/dist/locales/discovery/de.d.ts +2 -0
- package/dist/locales/discovery/de.js +68 -0
- package/dist/locales/discovery/de.js.map +1 -0
- package/dist/locales/discovery/en.d.ts +63 -0
- package/dist/locales/discovery/en.js +68 -0
- package/dist/locales/discovery/en.js.map +1 -0
- package/dist/locales/discovery/es.d.ts +2 -0
- package/dist/locales/discovery/es.js +68 -0
- package/dist/locales/discovery/es.js.map +1 -0
- package/dist/locales/discovery/ja.d.ts +2 -0
- package/dist/locales/discovery/ja.js +68 -0
- package/dist/locales/discovery/ja.js.map +1 -0
- package/dist/locales/discovery/ko.d.ts +2 -0
- package/dist/locales/discovery/ko.js +68 -0
- package/dist/locales/discovery/ko.js.map +1 -0
- package/dist/locales/discovery/zh.d.ts +2 -0
- package/dist/locales/discovery/zh.js +68 -0
- package/dist/locales/discovery/zh.js.map +1 -0
- package/dist/locales/en.d.ts +288 -67
- package/dist/locales/en.js +11 -2
- package/dist/locales/en.js.map +1 -1
- package/dist/locales/es.js +11 -2
- package/dist/locales/es.js.map +1 -1
- package/dist/locales/groups/de.d.ts +2 -0
- package/dist/locales/groups/de.js +133 -0
- package/dist/locales/groups/de.js.map +1 -0
- package/dist/locales/groups/en.d.ts +128 -0
- package/dist/locales/groups/en.js +133 -0
- package/dist/locales/groups/en.js.map +1 -0
- package/dist/locales/groups/es.d.ts +2 -0
- package/dist/locales/groups/es.js +133 -0
- package/dist/locales/groups/es.js.map +1 -0
- package/dist/locales/groups/ja.d.ts +2 -0
- package/dist/locales/groups/ja.js +133 -0
- package/dist/locales/groups/ja.js.map +1 -0
- package/dist/locales/groups/ko.d.ts +2 -0
- package/dist/locales/groups/ko.js +133 -0
- package/dist/locales/groups/ko.js.map +1 -0
- package/dist/locales/groups/zh.d.ts +2 -0
- package/dist/locales/groups/zh.js +133 -0
- package/dist/locales/groups/zh.js.map +1 -0
- package/dist/locales/ja.js +11 -2
- package/dist/locales/ja.js.map +1 -1
- package/dist/locales/ko.js +11 -2
- package/dist/locales/ko.js.map +1 -1
- package/dist/locales/social/de.js +2 -1
- package/dist/locales/social/de.js.map +1 -1
- package/dist/locales/social/en.d.ts +2 -1
- package/dist/locales/social/en.js +2 -1
- package/dist/locales/social/en.js.map +1 -1
- package/dist/locales/social/es.js +2 -1
- package/dist/locales/social/es.js.map +1 -1
- package/dist/locales/social/ja.js +2 -1
- package/dist/locales/social/ja.js.map +1 -1
- package/dist/locales/social/ko.js +2 -1
- package/dist/locales/social/ko.js.map +1 -1
- package/dist/locales/social/zh.js +2 -1
- package/dist/locales/social/zh.js.map +1 -1
- package/dist/locales/zh.js +11 -2
- package/dist/locales/zh.js.map +1 -1
- package/dist/react/admin.d.ts +1 -1
- package/dist/react/admin.js +8 -6
- package/dist/react/admin.js.map +1 -1
- package/dist/react/comments.d.ts +9 -7
- package/dist/react/comments.js +42 -27
- package/dist/react/comments.js.map +1 -1
- package/dist/react/contents.d.ts +57 -0
- package/dist/react/contents.js +214 -0
- package/dist/react/contents.js.map +1 -0
- package/dist/react/context.d.ts +1 -1
- package/dist/react/context.js.map +1 -1
- package/dist/react/crop.js +45 -44
- package/dist/react/crop.js.map +1 -1
- package/dist/react/detail.d.ts +30 -0
- package/dist/react/detail.js +42 -0
- package/dist/react/detail.js.map +1 -0
- package/dist/react/discovery.d.ts +138 -0
- package/dist/react/discovery.js +299 -0
- package/dist/react/discovery.js.map +1 -0
- package/dist/react/engagement.d.ts +5 -5
- package/dist/react/engagement.js +55 -41
- package/dist/react/engagement.js.map +1 -1
- package/dist/react/folder.js +54 -53
- package/dist/react/folder.js.map +1 -1
- package/dist/react/groups.d.ts +115 -0
- package/dist/react/groups.js +229 -0
- package/dist/react/groups.js.map +1 -0
- package/dist/react/index.d.ts +5 -1
- package/dist/react/public.d.ts +6 -5
- package/dist/react/public.js +19 -22
- package/dist/react/public.js.map +1 -1
- package/dist/react/read.js +105 -106
- package/dist/react/read.js.map +1 -1
- package/dist/react/resources.d.ts +2 -2
- package/dist/react/resources.js +69 -40
- package/dist/react/resources.js.map +1 -1
- package/dist/react/store.js +41 -39
- package/dist/react/store.js.map +1 -1
- package/dist/react/upload.js +54 -53
- package/dist/react/upload.js.map +1 -1
- package/dist/react/use-resource.d.ts +2 -1
- package/dist/react/use-resource.js +1 -0
- package/dist/react/use-resource.js.map +1 -1
- package/dist/react/versions.d.ts +57 -0
- package/dist/react/versions.js +94 -0
- package/dist/react/versions.js.map +1 -0
- package/dist/react/video.js +87 -86
- package/dist/react/video.js.map +1 -1
- package/dist/react.js +9 -5
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/client/content/posts.d.ts +0 -52
- package/dist/client/content/posts.js +0 -84
- package/dist/client/content/posts.js.map +0 -1
- package/dist/client/taxonomy.d.ts +0 -34
- package/dist/client/taxonomy.js +0 -84
- package/dist/client/taxonomy.js.map +0 -1
- package/dist/components/admin/post-manager.d.ts +0 -45
- package/dist/components/admin/post-manager.js +0 -602
- package/dist/components/admin/post-manager.js.map +0 -1
- package/dist/components/admin/taxonomy-manager.d.ts +0 -54
- package/dist/components/admin/taxonomy-manager.js +0 -976
- package/dist/components/admin/taxonomy-manager.js.map +0 -1
- package/dist/react/posts.d.ts +0 -61
- package/dist/react/posts.js +0 -183
- package/dist/react/posts.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { InlineImage, Post, PostInput } from '../generated/wire.js';
|
|
2
|
-
import { Http } from '../http.js';
|
|
3
|
-
import { MediaClient, NamedOptions } from '../media/client.js';
|
|
4
|
-
import { PageQuery } from '../route.js';
|
|
5
|
-
import { Sort } from './types.js';
|
|
6
|
-
/** The URL scheme of an image reference in a post body. */
|
|
7
|
-
export declare const IMAGE_SCHEME = "contentkit:";
|
|
8
|
-
/**
|
|
9
|
-
* The reference a post body stores for one of its images, by name
|
|
10
|
-
* ("contentkit:i-{uuid}"), where the image's URL would go: reads resolve it to
|
|
11
|
-
* the image's current public file (`Post.images`).
|
|
12
|
-
*/
|
|
13
|
-
export declare const imageRef: (name: string) => string;
|
|
14
|
-
/** Matches every image reference; the name is group 1. */
|
|
15
|
-
export declare const imageRefs: () => RegExp;
|
|
16
|
-
export interface PostQuery extends PageQuery {
|
|
17
|
-
language?: string;
|
|
18
|
-
sort?: Sort;
|
|
19
|
-
}
|
|
20
|
-
export interface PostAdminQuery extends PageQuery {
|
|
21
|
-
language?: string;
|
|
22
|
-
/** true: only drafts; false: only posts that are not drafts. */
|
|
23
|
-
draft?: boolean;
|
|
24
|
-
/** true: only deleted posts (with deleted_at); otherwise only live ones. */
|
|
25
|
-
deleted?: boolean;
|
|
26
|
-
/** Only posts whose title, excerpt or body contains this text, ignoring case. */
|
|
27
|
-
q?: string;
|
|
28
|
-
}
|
|
29
|
-
/** Posts: the published list, staff CRUD, search and restore, reactions, the cover and body images. */
|
|
30
|
-
export declare class PostsClient {
|
|
31
|
-
private readonly http;
|
|
32
|
-
private readonly media;
|
|
33
|
-
constructor(http: Http, media: MediaClient);
|
|
34
|
-
/** Published posts. */
|
|
35
|
-
list(q?: PostQuery, signal?: AbortSignal): Promise<Post[]>;
|
|
36
|
-
/** Every post for staff: drafts, scheduled, held and rejected ones included; deleted ones on their own; q searches (root:posts:write). */
|
|
37
|
-
adminList(q?: PostAdminQuery, signal?: AbortSignal): Promise<Post[]>;
|
|
38
|
-
get(id: string, signal?: AbortSignal): Promise<Post>;
|
|
39
|
-
/** Creates a post (root:posts:write); moderation "held" when the moderator holds it. */
|
|
40
|
-
create(input: PostInput): Promise<Post>;
|
|
41
|
-
/** Updates the given fields (root:posts:write). */
|
|
42
|
-
update(id: string, input: PostInput): Promise<Post>;
|
|
43
|
-
delete(id: string): Promise<void>;
|
|
44
|
-
/** Restores a deleted post as it was (root:posts:write); conflict when a live post took its slug. */
|
|
45
|
-
restore(id: string): Promise<Post>;
|
|
46
|
-
/** Sets the cover to an inline image name ("i-{uuid}") of the post's folder, or clears it; resolves with its public URL (null until it has one). */
|
|
47
|
-
setCover(id: string, image: string | null): Promise<string | null>;
|
|
48
|
-
/** Uploads file to the post's folder and makes it the cover (null clears it); resolves with its public URL (null until it has one). */
|
|
49
|
-
uploadCover(id: string, file: Blob | null, o?: NamedOptions): Promise<string | null>;
|
|
50
|
-
/** An inline image of the post's folder: the reference to store in its body and a URL that shows it to the editor now (null while none exists). */
|
|
51
|
-
inlineImage(id: string, image: string, signal?: AbortSignal): Promise<InlineImage>;
|
|
52
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { call as e } from "../route.js";
|
|
2
|
-
//#region src/client/content/posts.ts
|
|
3
|
-
var t = "contentkit:", n = (e) => t + e, r = () => /contentkit:(i-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/g, i = class {
|
|
4
|
-
http;
|
|
5
|
-
media;
|
|
6
|
-
constructor(e, t) {
|
|
7
|
-
this.http = e, this.media = t;
|
|
8
|
-
}
|
|
9
|
-
list(t = {}, n) {
|
|
10
|
-
return e(this.http, "GET", "/posts", {
|
|
11
|
-
query: t,
|
|
12
|
-
signal: n
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
adminList(t = {}, n) {
|
|
16
|
-
return e(this.http, "GET", "/posts/admin", {
|
|
17
|
-
query: t,
|
|
18
|
-
signal: n
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
get(t, n) {
|
|
22
|
-
return e(this.http, "GET", "/posts/{id}", {
|
|
23
|
-
params: { id: t },
|
|
24
|
-
signal: n
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
async create(t) {
|
|
28
|
-
let n = this.http.captureChanges(), r = await e(this.http, "POST", "/posts", { body: t });
|
|
29
|
-
return n({
|
|
30
|
-
type: "post.created",
|
|
31
|
-
post: r
|
|
32
|
-
}), r;
|
|
33
|
-
}
|
|
34
|
-
async update(t, n) {
|
|
35
|
-
let r = this.http.captureChanges(), i = await e(this.http, "PATCH", "/posts/{id}", {
|
|
36
|
-
params: { id: t },
|
|
37
|
-
body: n
|
|
38
|
-
});
|
|
39
|
-
return r({
|
|
40
|
-
type: "post.updated",
|
|
41
|
-
post: i
|
|
42
|
-
}), i;
|
|
43
|
-
}
|
|
44
|
-
async delete(t) {
|
|
45
|
-
let n = this.http.captureChanges();
|
|
46
|
-
await e(this.http, "DELETE", "/posts/{id}", { params: { id: t } }), n({
|
|
47
|
-
type: "post.deleted",
|
|
48
|
-
id: t
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
async restore(t) {
|
|
52
|
-
let n = this.http.captureChanges(), r = await e(this.http, "POST", "/posts/{id}/restore", { params: { id: t } });
|
|
53
|
-
return n({
|
|
54
|
-
type: "post.restored",
|
|
55
|
-
post: r
|
|
56
|
-
}), r;
|
|
57
|
-
}
|
|
58
|
-
async setCover(t, n) {
|
|
59
|
-
let r = this.http.captureChanges(), i = await e(this.http, "PUT", "/posts/{id}/cover", {
|
|
60
|
-
params: { id: t },
|
|
61
|
-
body: { image: n ?? "" }
|
|
62
|
-
});
|
|
63
|
-
return r({
|
|
64
|
-
type: "post.changed",
|
|
65
|
-
id: t
|
|
66
|
-
}), i.cover_url;
|
|
67
|
-
}
|
|
68
|
-
async uploadCover(e, t, n) {
|
|
69
|
-
if (!t) return this.setCover(e, null);
|
|
70
|
-
let r = await this.media.uploadNamed(this.media.postRef(e), t, n);
|
|
71
|
-
return this.setCover(e, r.name);
|
|
72
|
-
}
|
|
73
|
-
inlineImage(t, n, r) {
|
|
74
|
-
return e(this.http, "POST", "/posts/{id}/images", {
|
|
75
|
-
params: { id: t },
|
|
76
|
-
body: { image: n },
|
|
77
|
-
signal: r
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
//#endregion
|
|
82
|
-
export { t as IMAGE_SCHEME, i as PostsClient, n as imageRef, r as imageRefs };
|
|
83
|
-
|
|
84
|
-
//# sourceMappingURL=posts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"posts.js","names":[],"sources":["../../../src/client/content/posts.ts"],"sourcesContent":["import type { InlineImage, Post, PostCover, PostInput } from \"../generated/wire.js\";\nimport type { Http } from \"../http.js\";\nimport type { MediaClient, NamedOptions } from \"../media/client.js\";\nimport { call, type PageQuery } from \"../route.js\";\nimport type { Sort } from \"./types.js\";\n\n/** The URL scheme of an image reference in a post body. */\nexport const IMAGE_SCHEME = \"contentkit:\";\n\n/**\n * The reference a post body stores for one of its images, by name\n * (\"contentkit:i-{uuid}\"), where the image's URL would go: reads resolve it to\n * the image's current public file (`Post.images`).\n */\nexport const imageRef = (name: string) => IMAGE_SCHEME + name;\n\n/** Matches every image reference; the name is group 1. */\nexport const imageRefs = () => /contentkit:(i-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/g;\n\nexport interface PostQuery extends PageQuery {\n language?: string;\n sort?: Sort;\n}\n\nexport interface PostAdminQuery extends PageQuery {\n language?: string;\n /** true: only drafts; false: only posts that are not drafts. */\n draft?: boolean;\n /** true: only deleted posts (with deleted_at); otherwise only live ones. */\n deleted?: boolean;\n /** Only posts whose title, excerpt or body contains this text, ignoring case. */\n q?: string;\n}\n\n/** Posts: the published list, staff CRUD, search and restore, reactions, the cover and body images. */\nexport class PostsClient {\n constructor(\n private readonly http: Http,\n private readonly media: MediaClient,\n ) {}\n\n /** Published posts. */\n list(q: PostQuery = {}, signal?: AbortSignal): Promise<Post[]> {\n return call(this.http, \"GET\", \"/posts\", { query: q, signal });\n }\n /** Every post for staff: drafts, scheduled, held and rejected ones included; deleted ones on their own; q searches (root:posts:write). */\n adminList(q: PostAdminQuery = {}, signal?: AbortSignal): Promise<Post[]> {\n return call(this.http, \"GET\", \"/posts/admin\", { query: q, signal });\n }\n get(id: string, signal?: AbortSignal): Promise<Post> {\n return call(this.http, \"GET\", \"/posts/{id}\", { params: { id }, signal });\n }\n /** Creates a post (root:posts:write); moderation \"held\" when the moderator holds it. */\n async create(input: PostInput): Promise<Post> {\n const emit = this.http.captureChanges();\n const post: Post = await call(this.http, \"POST\", \"/posts\", { body: input });\n emit({ type: \"post.created\", post });\n return post;\n }\n /** Updates the given fields (root:posts:write). */\n async update(id: string, input: PostInput): Promise<Post> {\n const emit = this.http.captureChanges();\n const post: Post = await call(this.http, \"PATCH\", \"/posts/{id}\", { params: { id }, body: input });\n emit({ type: \"post.updated\", post });\n return post;\n }\n async delete(id: string): Promise<void> {\n const emit = this.http.captureChanges();\n await call(this.http, \"DELETE\", \"/posts/{id}\", { params: { id } });\n emit({ type: \"post.deleted\", id });\n }\n /** Restores a deleted post as it was (root:posts:write); conflict when a live post took its slug. */\n async restore(id: string): Promise<Post> {\n const emit = this.http.captureChanges();\n const post: Post = await call(this.http, \"POST\", \"/posts/{id}/restore\", { params: { id } });\n emit({ type: \"post.restored\", post });\n return post;\n }\n /** Sets the cover to an inline image name (\"i-{uuid}\") of the post's folder, or clears it; resolves with its public URL (null until it has one). */\n async setCover(id: string, image: string | null): Promise<string | null> {\n const emit = this.http.captureChanges();\n const r: PostCover = await call(this.http, \"PUT\", \"/posts/{id}/cover\", { params: { id }, body: { image: image ?? \"\" } });\n emit({ type: \"post.changed\", id });\n return r.cover_url;\n }\n /** Uploads file to the post's folder and makes it the cover (null clears it); resolves with its public URL (null until it has one). */\n async uploadCover(id: string, file: Blob | null, o?: NamedOptions): Promise<string | null> {\n if (!file) return this.setCover(id, null);\n const up = await this.media.uploadNamed(this.media.postRef(id), file, o);\n return this.setCover(id, up.name);\n }\n /** An inline image of the post's folder: the reference to store in its body and a URL that shows it to the editor now (null while none exists). */\n inlineImage(id: string, image: string, signal?: AbortSignal): Promise<InlineImage> {\n return call(this.http, \"POST\", \"/posts/{id}/images\", { params: { id }, body: { image }, signal });\n }\n}\n"],"mappings":";;AAOA,IAAa,IAAe,eAOf,KAAY,MAAiB,IAAe,GAG5C,UAAkB,gFAkBlB,IAAb,MAAyB;CAEJ;CACA;CAFnB,YACE,GACA,GACA;EADiB,AADA,KAAA,OAAA,GACA,KAAA,QAAA;CAChB;CAGH,KAAK,IAAe,CAAC,GAAG,GAAuC;EAC7D,OAAO,EAAK,KAAK,MAAM,OAAO,UAAU;GAAE,OAAO;GAAG;EAAO,CAAC;CAC9D;CAEA,UAAU,IAAoB,CAAC,GAAG,GAAuC;EACvE,OAAO,EAAK,KAAK,MAAM,OAAO,gBAAgB;GAAE,OAAO;GAAG;EAAO,CAAC;CACpE;CACA,IAAI,GAAY,GAAqC;EACnD,OAAO,EAAK,KAAK,MAAM,OAAO,eAAe;GAAE,QAAQ,EAAE,MAAG;GAAG;EAAO,CAAC;CACzE;CAEA,MAAM,OAAO,GAAiC;EAC5C,IAAM,IAAO,KAAK,KAAK,eAAe,GAChC,IAAa,MAAM,EAAK,KAAK,MAAM,QAAQ,UAAU,EAAE,MAAM,EAAM,CAAC;EAE1E,OADA,EAAK;GAAE,MAAM;GAAgB;EAAK,CAAC,GAC5B;CACT;CAEA,MAAM,OAAO,GAAY,GAAiC;EACxD,IAAM,IAAO,KAAK,KAAK,eAAe,GAChC,IAAa,MAAM,EAAK,KAAK,MAAM,SAAS,eAAe;GAAE,QAAQ,EAAE,MAAG;GAAG,MAAM;EAAM,CAAC;EAEhG,OADA,EAAK;GAAE,MAAM;GAAgB;EAAK,CAAC,GAC5B;CACT;CACA,MAAM,OAAO,GAA2B;EACtC,IAAM,IAAO,KAAK,KAAK,eAAe;EAEtC,AADA,MAAM,EAAK,KAAK,MAAM,UAAU,eAAe,EAAE,QAAQ,EAAE,MAAG,EAAE,CAAC,GACjE,EAAK;GAAE,MAAM;GAAgB;EAAG,CAAC;CACnC;CAEA,MAAM,QAAQ,GAA2B;EACvC,IAAM,IAAO,KAAK,KAAK,eAAe,GAChC,IAAa,MAAM,EAAK,KAAK,MAAM,QAAQ,uBAAuB,EAAE,QAAQ,EAAE,MAAG,EAAE,CAAC;EAE1F,OADA,EAAK;GAAE,MAAM;GAAiB;EAAK,CAAC,GAC7B;CACT;CAEA,MAAM,SAAS,GAAY,GAA8C;EACvE,IAAM,IAAO,KAAK,KAAK,eAAe,GAChC,IAAe,MAAM,EAAK,KAAK,MAAM,OAAO,qBAAqB;GAAE,QAAQ,EAAE,MAAG;GAAG,MAAM,EAAE,OAAO,KAAS,GAAG;EAAE,CAAC;EAEvH,OADA,EAAK;GAAE,MAAM;GAAgB;EAAG,CAAC,GAC1B,EAAE;CACX;CAEA,MAAM,YAAY,GAAY,GAAmB,GAA0C;EACzF,IAAI,CAAC,GAAM,OAAO,KAAK,SAAS,GAAI,IAAI;EACxC,IAAM,IAAK,MAAM,KAAK,MAAM,YAAY,KAAK,MAAM,QAAQ,CAAE,GAAG,GAAM,CAAC;EACvE,OAAO,KAAK,SAAS,GAAI,EAAG,IAAI;CAClC;CAEA,YAAY,GAAY,GAAe,GAA4C;EACjF,OAAO,EAAK,KAAK,MAAM,QAAQ,sBAAsB;GAAE,QAAQ,EAAE,MAAG;GAAG,MAAM,EAAE,SAAM;GAAG;EAAO,CAAC;CAClG;AACF"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Assignment, AssignmentPage, AssignmentsWritten, ContentRef, Count, CountsRebuilt, Edge, EdgesWritten, EffectiveTagsOf, MergeReport, Name, Node, NodeDetail, NodeInput, NodePage, NodeUpdate } from './generated/wire.js';
|
|
2
|
-
import { Http } from './http.js';
|
|
3
|
-
import { RouteQuery } from './route.js';
|
|
4
|
-
/** GET /taxonomy/nodes filters, as the route names them. */
|
|
5
|
-
export type NodeQuery = RouteQuery<"GET", "/nodes">;
|
|
6
|
-
/** GET /taxonomy/nodes/{id}/assignments filters. */
|
|
7
|
-
export type NodeAssignmentQuery = RouteQuery<"GET", "/nodes/{id}/assignments">;
|
|
8
|
-
/** The taxonomy admin API (root:taxonomy:write). */
|
|
9
|
-
export declare class TaxonomyClient {
|
|
10
|
-
private readonly http;
|
|
11
|
-
constructor(http: Http);
|
|
12
|
-
nodes(q?: NodeQuery, signal?: AbortSignal): Promise<NodePage>;
|
|
13
|
-
node(id: string, signal?: AbortSignal): Promise<NodeDetail>;
|
|
14
|
-
/** The contents assigned to a node, a cursor page at a time. */
|
|
15
|
-
nodeAssignments(id: string, q?: NodeAssignmentQuery, signal?: AbortSignal): Promise<AssignmentPage>;
|
|
16
|
-
createNodes(nodes: NodeInput[]): Promise<Node[]>;
|
|
17
|
-
updateNode(id: string, patch: NodeUpdate): Promise<Node>;
|
|
18
|
-
/** Marks the node deleted. */
|
|
19
|
-
deleteNode(id: string): Promise<Node>;
|
|
20
|
-
/** Replaces, adds or removes names. */
|
|
21
|
-
names(id: string, op: "set" | "add" | "remove", names: Name[]): Promise<NodeDetail>;
|
|
22
|
-
merge(id: string, into: string): Promise<MergeReport>;
|
|
23
|
-
edges(op: "add" | "remove", edges: Edge[]): Promise<EdgesWritten>;
|
|
24
|
-
/** Assigns or unassigns nodes; suppressCounts skips count upkeep (rebuildCounts afterwards). */
|
|
25
|
-
assignments(op: "add" | "remove", assignments: Assignment[], o?: {
|
|
26
|
-
suppressCounts?: boolean;
|
|
27
|
-
}): Promise<AssignmentsWritten>;
|
|
28
|
-
/** The effective tags (work and version) of each content. */
|
|
29
|
-
effective(refs: ContentRef[], signal?: AbortSignal): Promise<EffectiveTagsOf[]>;
|
|
30
|
-
/** Content counts of nodes, by taxonomy id. */
|
|
31
|
-
counts(ids: readonly string[], signal?: AbortSignal): Promise<Record<string, Count[]>>;
|
|
32
|
-
rebuildCounts(): Promise<CountsRebuilt>;
|
|
33
|
-
private write;
|
|
34
|
-
}
|
package/dist/client/taxonomy.js
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { call as e } from "./route.js";
|
|
2
|
-
//#region src/client/taxonomy.ts
|
|
3
|
-
var t = class {
|
|
4
|
-
http;
|
|
5
|
-
constructor(e) {
|
|
6
|
-
this.http = e;
|
|
7
|
-
}
|
|
8
|
-
nodes(t = {}, n) {
|
|
9
|
-
return e(this.http, "GET", "/nodes", {
|
|
10
|
-
query: t,
|
|
11
|
-
signal: n
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
node(t, n) {
|
|
15
|
-
return e(this.http, "GET", "/nodes/{id}", {
|
|
16
|
-
params: { id: t },
|
|
17
|
-
signal: n
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
nodeAssignments(t, n = {}, r) {
|
|
21
|
-
return e(this.http, "GET", "/nodes/{id}/assignments", {
|
|
22
|
-
params: { id: t },
|
|
23
|
-
query: n,
|
|
24
|
-
signal: r
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
createNodes(t) {
|
|
28
|
-
return this.write(e(this.http, "POST", "/nodes", { body: t }));
|
|
29
|
-
}
|
|
30
|
-
updateNode(t, n) {
|
|
31
|
-
return this.write(e(this.http, "PATCH", "/nodes/{id}", {
|
|
32
|
-
params: { id: t },
|
|
33
|
-
body: n
|
|
34
|
-
}));
|
|
35
|
-
}
|
|
36
|
-
deleteNode(t) {
|
|
37
|
-
return this.write(e(this.http, "DELETE", "/nodes/{id}", { params: { id: t } }));
|
|
38
|
-
}
|
|
39
|
-
names(t, n, r) {
|
|
40
|
-
let i = n === "set" ? "PUT" : n === "add" ? "POST" : "DELETE";
|
|
41
|
-
return this.write(e(this.http, i, "/nodes/{id}/names", {
|
|
42
|
-
params: { id: t },
|
|
43
|
-
body: r
|
|
44
|
-
}));
|
|
45
|
-
}
|
|
46
|
-
merge(t, n) {
|
|
47
|
-
return this.write(e(this.http, "POST", "/nodes/{id}/merge", {
|
|
48
|
-
params: { id: t },
|
|
49
|
-
body: { into_taxonomy_id: n }
|
|
50
|
-
}));
|
|
51
|
-
}
|
|
52
|
-
edges(t, n) {
|
|
53
|
-
return this.write(e(this.http, t === "add" ? "POST" : "DELETE", "/edges", { body: n }));
|
|
54
|
-
}
|
|
55
|
-
assignments(t, n, r = {}) {
|
|
56
|
-
return this.write(e(this.http, t === "add" ? "POST" : "DELETE", "/assignments", {
|
|
57
|
-
body: n,
|
|
58
|
-
query: { suppress_counts: r.suppressCounts }
|
|
59
|
-
}));
|
|
60
|
-
}
|
|
61
|
-
effective(t, n) {
|
|
62
|
-
return e(this.http, "POST", "/effective", {
|
|
63
|
-
body: t,
|
|
64
|
-
signal: n
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
counts(t, n) {
|
|
68
|
-
return e(this.http, "GET", "/counts", {
|
|
69
|
-
query: { taxonomy_id: t },
|
|
70
|
-
signal: n
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
rebuildCounts() {
|
|
74
|
-
return this.write(e(this.http, "POST", "/counts/rebuild"));
|
|
75
|
-
}
|
|
76
|
-
async write(e) {
|
|
77
|
-
let t = this.http.captureChanges(), n = await e;
|
|
78
|
-
return t({ type: "taxonomy.changed" }), n;
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
//#endregion
|
|
82
|
-
export { t as TaxonomyClient };
|
|
83
|
-
|
|
84
|
-
//# sourceMappingURL=taxonomy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"taxonomy.js","names":[],"sources":["../../src/client/taxonomy.ts"],"sourcesContent":["import type {\n Assignment,\n AssignmentPage,\n AssignmentsWritten,\n ContentRef,\n Count,\n CountsRebuilt,\n Edge,\n EdgesWritten,\n EffectiveTagsOf,\n MergeReport,\n Name,\n Node,\n NodeDetail,\n NodeInput,\n NodePage,\n NodeUpdate,\n} from \"./generated/wire.js\";\nimport type { Http } from \"./http.js\";\nimport { call, type RouteQuery } from \"./route.js\";\n\n/** GET /taxonomy/nodes filters, as the route names them. */\nexport type NodeQuery = RouteQuery<\"GET\", \"/nodes\">;\n/** GET /taxonomy/nodes/{id}/assignments filters. */\nexport type NodeAssignmentQuery = RouteQuery<\"GET\", \"/nodes/{id}/assignments\">;\n\n/** The taxonomy admin API (root:taxonomy:write). */\nexport class TaxonomyClient {\n constructor(private readonly http: Http) {}\n\n nodes(q: NodeQuery = {}, signal?: AbortSignal): Promise<NodePage> {\n return call(this.http, \"GET\", \"/nodes\", { query: q, signal });\n }\n node(id: string, signal?: AbortSignal): Promise<NodeDetail> {\n return call(this.http, \"GET\", \"/nodes/{id}\", { params: { id }, signal });\n }\n /** The contents assigned to a node, a cursor page at a time. */\n nodeAssignments(id: string, q: NodeAssignmentQuery = {}, signal?: AbortSignal): Promise<AssignmentPage> {\n return call(this.http, \"GET\", \"/nodes/{id}/assignments\", { params: { id }, query: q, signal });\n }\n createNodes(nodes: NodeInput[]): Promise<Node[]> {\n return this.write(call(this.http, \"POST\", \"/nodes\", { body: nodes }));\n }\n updateNode(id: string, patch: NodeUpdate): Promise<Node> {\n return this.write(call(this.http, \"PATCH\", \"/nodes/{id}\", { params: { id }, body: patch }));\n }\n /** Marks the node deleted. */\n deleteNode(id: string): Promise<Node> {\n return this.write(call(this.http, \"DELETE\", \"/nodes/{id}\", { params: { id } }));\n }\n /** Replaces, adds or removes names. */\n names(id: string, op: \"set\" | \"add\" | \"remove\", names: Name[]): Promise<NodeDetail> {\n const method = op === \"set\" ? \"PUT\" : op === \"add\" ? \"POST\" : \"DELETE\";\n return this.write(call(this.http, method, \"/nodes/{id}/names\", { params: { id }, body: names }));\n }\n merge(id: string, into: string): Promise<MergeReport> {\n return this.write(call(this.http, \"POST\", \"/nodes/{id}/merge\", { params: { id }, body: { into_taxonomy_id: into } }));\n }\n edges(op: \"add\" | \"remove\", edges: Edge[]): Promise<EdgesWritten> {\n return this.write(call(this.http, op === \"add\" ? \"POST\" : \"DELETE\", \"/edges\", { body: edges }));\n }\n /** Assigns or unassigns nodes; suppressCounts skips count upkeep (rebuildCounts afterwards). */\n assignments(op: \"add\" | \"remove\", assignments: Assignment[], o: { suppressCounts?: boolean } = {}): Promise<AssignmentsWritten> {\n return this.write(call(this.http, op === \"add\" ? \"POST\" : \"DELETE\", \"/assignments\", { body: assignments, query: { suppress_counts: o.suppressCounts } }));\n }\n /** The effective tags (work and version) of each content. */\n effective(refs: ContentRef[], signal?: AbortSignal): Promise<EffectiveTagsOf[]> {\n return call(this.http, \"POST\", \"/effective\", { body: refs, signal });\n }\n /** Content counts of nodes, by taxonomy id. */\n counts(ids: readonly string[], signal?: AbortSignal): Promise<Record<string, Count[]>> {\n return call(this.http, \"GET\", \"/counts\", { query: { taxonomy_id: ids }, signal });\n }\n rebuildCounts(): Promise<CountsRebuilt> {\n return this.write(call(this.http, \"POST\", \"/counts/rebuild\"));\n }\n\n private async write<T>(p: Promise<T>): Promise<T> {\n const emit = this.http.captureChanges();\n const out = await p;\n emit({ type: \"taxonomy.changed\" });\n return out;\n }\n}\n"],"mappings":";;AA2BA,IAAa,IAAb,MAA4B;CACG;CAA7B,YAAY,GAA6B;EAAZ,KAAA,OAAA;CAAa;CAE1C,MAAM,IAAe,CAAC,GAAG,GAAyC;EAChE,OAAO,EAAK,KAAK,MAAM,OAAO,UAAU;GAAE,OAAO;GAAG;EAAO,CAAC;CAC9D;CACA,KAAK,GAAY,GAA2C;EAC1D,OAAO,EAAK,KAAK,MAAM,OAAO,eAAe;GAAE,QAAQ,EAAE,MAAG;GAAG;EAAO,CAAC;CACzE;CAEA,gBAAgB,GAAY,IAAyB,CAAC,GAAG,GAA+C;EACtG,OAAO,EAAK,KAAK,MAAM,OAAO,2BAA2B;GAAE,QAAQ,EAAE,MAAG;GAAG,OAAO;GAAG;EAAO,CAAC;CAC/F;CACA,YAAY,GAAqC;EAC/C,OAAO,KAAK,MAAM,EAAK,KAAK,MAAM,QAAQ,UAAU,EAAE,MAAM,EAAM,CAAC,CAAC;CACtE;CACA,WAAW,GAAY,GAAkC;EACvD,OAAO,KAAK,MAAM,EAAK,KAAK,MAAM,SAAS,eAAe;GAAE,QAAQ,EAAE,MAAG;GAAG,MAAM;EAAM,CAAC,CAAC;CAC5F;CAEA,WAAW,GAA2B;EACpC,OAAO,KAAK,MAAM,EAAK,KAAK,MAAM,UAAU,eAAe,EAAE,QAAQ,EAAE,MAAG,EAAE,CAAC,CAAC;CAChF;CAEA,MAAM,GAAY,GAA8B,GAAoC;EAClF,IAAM,IAAS,MAAO,QAAQ,QAAQ,MAAO,QAAQ,SAAS;EAC9D,OAAO,KAAK,MAAM,EAAK,KAAK,MAAM,GAAQ,qBAAqB;GAAE,QAAQ,EAAE,MAAG;GAAG,MAAM;EAAM,CAAC,CAAC;CACjG;CACA,MAAM,GAAY,GAAoC;EACpD,OAAO,KAAK,MAAM,EAAK,KAAK,MAAM,QAAQ,qBAAqB;GAAE,QAAQ,EAAE,MAAG;GAAG,MAAM,EAAE,kBAAkB,EAAK;EAAE,CAAC,CAAC;CACtH;CACA,MAAM,GAAsB,GAAsC;EAChE,OAAO,KAAK,MAAM,EAAK,KAAK,MAAM,MAAO,QAAQ,SAAS,UAAU,UAAU,EAAE,MAAM,EAAM,CAAC,CAAC;CAChG;CAEA,YAAY,GAAsB,GAA2B,IAAkC,CAAC,GAAgC;EAC9H,OAAO,KAAK,MAAM,EAAK,KAAK,MAAM,MAAO,QAAQ,SAAS,UAAU,gBAAgB;GAAE,MAAM;GAAa,OAAO,EAAE,iBAAiB,EAAE,eAAe;EAAE,CAAC,CAAC;CAC1J;CAEA,UAAU,GAAoB,GAAkD;EAC9E,OAAO,EAAK,KAAK,MAAM,QAAQ,cAAc;GAAE,MAAM;GAAM;EAAO,CAAC;CACrE;CAEA,OAAO,GAAwB,GAAwD;EACrF,OAAO,EAAK,KAAK,MAAM,OAAO,WAAW;GAAE,OAAO,EAAE,aAAa,EAAI;GAAG;EAAO,CAAC;CAClF;CACA,gBAAwC;EACtC,OAAO,KAAK,MAAM,EAAK,KAAK,MAAM,QAAQ,iBAAiB,CAAC;CAC9D;CAEA,MAAc,MAAS,GAA2B;EAChD,IAAM,IAAO,KAAK,KAAK,eAAe,GAChC,IAAM,MAAM;EAElB,OADA,EAAK,EAAE,MAAM,mBAAmB,CAAC,GAC1B;CACT;AACF"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { Post } from '../../client/generated/wire.js';
|
|
3
|
-
import { FlowClientOptions, StaffAccess } from '../../react/admin.js';
|
|
4
|
-
import { AdminFlowProps, AdminRouteProps } from './shell.js';
|
|
5
|
-
type Choice = string | {
|
|
6
|
-
value: string;
|
|
7
|
-
label: string;
|
|
8
|
-
};
|
|
9
|
-
/** What PostManager hands its body editor. */
|
|
10
|
-
export interface PostEditorProps {
|
|
11
|
-
/** The body as HTML, its images at URLs that show them now. */
|
|
12
|
-
value: string;
|
|
13
|
-
onChange: (html: string) => void;
|
|
14
|
-
/** Uploads an image to the post and resolves with a URL that shows it; absent until the post exists. */
|
|
15
|
-
uploadImage?: (file: File) => Promise<string>;
|
|
16
|
-
disabled?: boolean;
|
|
17
|
-
placeholder?: string;
|
|
18
|
-
"aria-label"?: string;
|
|
19
|
-
}
|
|
20
|
-
export interface PostManagerProps extends AdminFlowProps, AdminRouteProps {
|
|
21
|
-
/** Languages to filter by and write in: codes, or codes with labels; the first is a new post's. */
|
|
22
|
-
languages?: readonly Choice[];
|
|
23
|
-
/**
|
|
24
|
-
* The body editor: `richTextEditor` from `@openrails/contentkit-ui/editor`,
|
|
25
|
-
* or the host's own. Without it, the body is a plain HTML field.
|
|
26
|
-
*/
|
|
27
|
-
renderEditor?: (props: PostEditorProps) => ReactNode;
|
|
28
|
-
/** A link to a published post's page. */
|
|
29
|
-
postHref?: (post: Post) => string | undefined;
|
|
30
|
-
pageSize?: number;
|
|
31
|
-
}
|
|
32
|
-
/** Whether the caller may manage posts (root:posts:write). */
|
|
33
|
-
export declare function usePostManagerAccess(o?: FlowClientOptions): StaffAccess<"posts">;
|
|
34
|
-
export type PostStatus = "draft" | "scheduled" | "published" | "held" | "rejected";
|
|
35
|
-
/** A post's status as the staff list names it. */
|
|
36
|
-
export declare function postStatus(p: Post, now?: number): PostStatus;
|
|
37
|
-
/**
|
|
38
|
-
* Staff: every post, by language, draft state and text, deleted ones on
|
|
39
|
-
* their own to restore; create and edit title, slug, language, excerpt,
|
|
40
|
-
* schedule, cover and body with inline images, publish or keep a draft, and
|
|
41
|
-
* delete. The list is at basePath, a new post at basePath/new and each post
|
|
42
|
-
* at basePath/{id}, filters in the query.
|
|
43
|
-
*/
|
|
44
|
-
export declare function PostManager({ client: own, baseUrl, auth, guard, appearance, className, language, messages, ...p }: PostManagerProps): import('react').JSX.Element;
|
|
45
|
-
export {};
|