@things-factory/gallery 10.1.256 → 10.1.258

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.
@@ -65,10 +65,6 @@ export declare const galleryApi: {
65
65
  total: number;
66
66
  }>;
67
67
  post: (id: string) => Promise<Post | null>;
68
- likers: (id: string) => Promise<{
69
- id: string;
70
- name?: string;
71
- }[]>;
72
68
  tags: (text?: string) => Promise<{
73
69
  tag: string;
74
70
  count: number;
@@ -26,7 +26,6 @@ export const galleryChanged = () => window.dispatchEvent(new CustomEvent('galler
26
26
  export const galleryApi = {
27
27
  posts: (filter, skip = 0, take = 30) => ask(`query ($filter: GalleryFilter, $skip: Int, $take: Int) { galleryPosts(filter: $filter, skip: $skip, take: $take) { items { ${POST_FIELDS} } total } }`, { filter, skip, take }, 'galleryPosts'),
28
28
  post: (id) => ask(`query ($id: String!) { galleryPost(id: $id) { ${POST_FIELDS} } }`, { id }, 'galleryPost'),
29
- likers: (id) => ask(`query ($id: String!) { galleryLikers(id: $id) { id name } }`, { id }, 'galleryLikers'),
30
29
  tags: (text = '') => ask(`query ($text: String) { galleryTags(text: $text) { tag count } }`, { text }, 'galleryTags'),
31
30
  events: () => ask(`query { galleryEvents { ${EVENT_FIELDS} postCount cover { id thumbnail fullpath } } }`, {}, 'galleryEvents'),
32
31
  eventChoices: (takenAt) => ask(`query ($takenAt: DateTimeISO) { galleryEventChoices(takenAt: $takenAt) { ${EVENT_FIELDS} near } }`, { takenAt }, 'galleryEventChoices'),
@@ -1 +1 @@
1
- {"version":3,"file":"gallery-api.js","sourceRoot":"","sources":["../../client/utils/gallery-api.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * The gallery doors as the screens call them (ADR-0165). Every call throws the server's words when it is refused.\n */\nimport gql from 'graphql-tag'\n\nimport { client, uploadContext } from '@operato/graphql'\n\nexport type Space = 'COMPANY' | 'PERSONAL'\nexport type Photo = { id: string; name?: string; thumbnail?: string | null; fullpath: string; mimetype?: string }\nexport type EventFacts = { id: string; name: string; startAt: string; endAt: string; location?: string | null }\nexport type EventCard = EventFacts & { postCount: number; cover?: Photo | null }\nexport type EventChoice = EventFacts & { near: boolean }\n\nexport interface Post {\n id: string\n space: Space\n shared: boolean\n caption?: string | null\n takenAt: string\n tags?: string[] | null\n likeCount: number\n liked: boolean\n editable: boolean\n moderatable: boolean\n hiddenAt?: string | null\n hiddenReason?: string | null\n createdAt: string\n creator?: { id: string; name?: string } | null\n event?: EventFacts | null\n photos: Photo[]\n}\n\nexport interface PostInput {\n space?: Space\n shared?: boolean\n caption?: string\n takenAt?: string\n tags?: string[]\n eventId?: string | null\n}\n\nexport type Filter = { space?: Space; eventId?: string; tag?: string; authorId?: string; mine?: boolean; everyone?: boolean }\n\nconst POST_FIELDS = `id space shared caption takenAt tags likeCount liked editable moderatable hiddenAt hiddenReason createdAt\n creator { id name } event { id name startAt endAt location } photos { id name thumbnail fullpath mimetype }`\nconst EVENT_FIELDS = 'id name startAt endAt location'\n\nfunction answer<T>(response: any, field: string): T {\n if (response.errors?.length) throw new Error(response.errors.map((one: any) => one.message).join(' · '))\n return response.data?.[field] as T\n}\n\nasync function ask<T>(query: string, variables: Record<string, unknown>, field: string): Promise<T> {\n return answer<T>(await client.query({ query: gql(query), variables, fetchPolicy: 'network-only' }), field)\n}\n\nasync function change<T>(\n mutation: string,\n variables: Record<string, unknown>,\n field: string,\n uploading?: (fraction: number) => void\n): Promise<T> {\n return answer<T>(\n await client.mutate({\n mutation: gql(mutation),\n variables,\n ...(uploading ? { context: uploadContext(uploading) } : {})\n }),\n field\n )\n}\n\n/** Tells the open gallery and the menu's count that a post came, changed or went. */\nexport const galleryChanged = () => window.dispatchEvent(new CustomEvent('gallery-changed'))\n\nexport const galleryApi = {\n posts: (filter: Filter, skip = 0, take = 30) =>\n ask<{ items: Post[]; total: number }>(\n `query ($filter: GalleryFilter, $skip: Int, $take: Int) { galleryPosts(filter: $filter, skip: $skip, take: $take) { items { ${POST_FIELDS} } total } }`,\n { filter, skip, take },\n 'galleryPosts'\n ),\n post: (id: string) =>\n ask<Post | null>(`query ($id: String!) { galleryPost(id: $id) { ${POST_FIELDS} } }`, { id }, 'galleryPost'),\n likers: (id: string) =>\n ask<{ id: string; name?: string }[]>(\n `query ($id: String!) { galleryLikers(id: $id) { id name } }`,\n { id },\n 'galleryLikers'\n ),\n tags: (text = '') =>\n ask<{ tag: string; count: number }[]>(\n `query ($text: String) { galleryTags(text: $text) { tag count } }`,\n { text },\n 'galleryTags'\n ),\n events: () =>\n ask<EventCard[]>(\n `query { galleryEvents { ${EVENT_FIELDS} postCount cover { id thumbnail fullpath } } }`,\n {},\n 'galleryEvents'\n ),\n eventChoices: (takenAt?: string) =>\n ask<EventChoice[]>(\n `query ($takenAt: DateTimeISO) { galleryEventChoices(takenAt: $takenAt) { ${EVENT_FIELDS} near } }`,\n { takenAt },\n 'galleryEventChoices'\n ),\n summary: () => ask<{ fresh: number }>(`query { gallerySummary { fresh } }`, {}, 'gallerySummary'),\n create: (input: PostInput, photos: File[], uploading?: (fraction: number) => void) =>\n change<Post>(\n `mutation ($input: GalleryPostInput!, $photos: [Upload!]!) { createGalleryPost(input: $input, photos: $photos) { ${POST_FIELDS} } }`,\n { input, photos },\n 'createGalleryPost',\n uploading ?? (() => {})\n ),\n update: (id: string, input: PostInput, attach: File[], remove: string[], uploading?: (fraction: number) => void) =>\n change<Post>(\n `mutation ($id: String!, $input: GalleryPostInput!, $attach: [Upload!], $remove: [String!]) {\n updateGalleryPost(id: $id, input: $input, attach: $attach, remove: $remove) { ${POST_FIELDS} }\n }`,\n { id, input, attach, remove },\n 'updateGalleryPost',\n attach.length ? (uploading ?? (() => {})) : undefined\n ),\n remove: (id: string) =>\n change<boolean>(`mutation ($id: String!) { deleteGalleryPost(id: $id) }`, { id }, 'deleteGalleryPost'),\n like: (id: string, like: boolean) =>\n change<{ id: string; likeCount: number; liked: boolean }>(\n `mutation ($id: String!, $like: Boolean!) { likeGalleryPost(id: $id, like: $like) { id likeCount liked } }`,\n { id, like },\n 'likeGalleryPost'\n ),\n visit: () => change<boolean>(`mutation { visitGallery }`, {}, 'visitGallery'),\n hide: (id: string, reason: string) =>\n change<Post>(\n `mutation ($id: String!, $reason: String!) { hideGalleryPost(id: $id, reason: $reason) { ${POST_FIELDS} } }`,\n { id, reason },\n 'hideGalleryPost'\n ),\n unhide: (id: string) =>\n change<Post>(\n `mutation ($id: String!) { unhideGalleryPost(id: $id) { ${POST_FIELDS} } }`,\n { id },\n 'unhideGalleryPost'\n ),\n renameTag: (from: string, to: string) =>\n change<number>(\n `mutation ($from: String!, $to: String!) { renameGalleryTag(from: $from, to: $to) }`,\n { from, to },\n 'renameGalleryTag'\n ),\n createEvent: (input: { name: string; startAt: string; endAt: string; location?: string }) =>\n change<EventCard>(\n `mutation ($input: GalleryEventInput!) { createGalleryEvent(input: $input) { ${EVENT_FIELDS} postCount } }`,\n { input },\n 'createGalleryEvent'\n )\n}\n"]}
1
+ {"version":3,"file":"gallery-api.js","sourceRoot":"","sources":["../../client/utils/gallery-api.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * The gallery doors as the screens call them (ADR-0165). Every call throws the server's words when it is refused.\n */\nimport gql from 'graphql-tag'\n\nimport { client, uploadContext } from '@operato/graphql'\n\nexport type Space = 'COMPANY' | 'PERSONAL'\nexport type Photo = { id: string; name?: string; thumbnail?: string | null; fullpath: string; mimetype?: string }\nexport type EventFacts = { id: string; name: string; startAt: string; endAt: string; location?: string | null }\nexport type EventCard = EventFacts & { postCount: number; cover?: Photo | null }\nexport type EventChoice = EventFacts & { near: boolean }\n\nexport interface Post {\n id: string\n space: Space\n shared: boolean\n caption?: string | null\n takenAt: string\n tags?: string[] | null\n likeCount: number\n liked: boolean\n editable: boolean\n moderatable: boolean\n hiddenAt?: string | null\n hiddenReason?: string | null\n createdAt: string\n creator?: { id: string; name?: string } | null\n event?: EventFacts | null\n photos: Photo[]\n}\n\nexport interface PostInput {\n space?: Space\n shared?: boolean\n caption?: string\n takenAt?: string\n tags?: string[]\n eventId?: string | null\n}\n\nexport type Filter = { space?: Space; eventId?: string; tag?: string; authorId?: string; mine?: boolean; everyone?: boolean }\n\nconst POST_FIELDS = `id space shared caption takenAt tags likeCount liked editable moderatable hiddenAt hiddenReason createdAt\n creator { id name } event { id name startAt endAt location } photos { id name thumbnail fullpath mimetype }`\nconst EVENT_FIELDS = 'id name startAt endAt location'\n\nfunction answer<T>(response: any, field: string): T {\n if (response.errors?.length) throw new Error(response.errors.map((one: any) => one.message).join(' · '))\n return response.data?.[field] as T\n}\n\nasync function ask<T>(query: string, variables: Record<string, unknown>, field: string): Promise<T> {\n return answer<T>(await client.query({ query: gql(query), variables, fetchPolicy: 'network-only' }), field)\n}\n\nasync function change<T>(\n mutation: string,\n variables: Record<string, unknown>,\n field: string,\n uploading?: (fraction: number) => void\n): Promise<T> {\n return answer<T>(\n await client.mutate({\n mutation: gql(mutation),\n variables,\n ...(uploading ? { context: uploadContext(uploading) } : {})\n }),\n field\n )\n}\n\n/** Tells the open gallery and the menu's count that a post came, changed or went. */\nexport const galleryChanged = () => window.dispatchEvent(new CustomEvent('gallery-changed'))\n\nexport const galleryApi = {\n posts: (filter: Filter, skip = 0, take = 30) =>\n ask<{ items: Post[]; total: number }>(\n `query ($filter: GalleryFilter, $skip: Int, $take: Int) { galleryPosts(filter: $filter, skip: $skip, take: $take) { items { ${POST_FIELDS} } total } }`,\n { filter, skip, take },\n 'galleryPosts'\n ),\n post: (id: string) =>\n ask<Post | null>(`query ($id: String!) { galleryPost(id: $id) { ${POST_FIELDS} } }`, { id }, 'galleryPost'),\n tags: (text = '') =>\n ask<{ tag: string; count: number }[]>(\n `query ($text: String) { galleryTags(text: $text) { tag count } }`,\n { text },\n 'galleryTags'\n ),\n events: () =>\n ask<EventCard[]>(\n `query { galleryEvents { ${EVENT_FIELDS} postCount cover { id thumbnail fullpath } } }`,\n {},\n 'galleryEvents'\n ),\n eventChoices: (takenAt?: string) =>\n ask<EventChoice[]>(\n `query ($takenAt: DateTimeISO) { galleryEventChoices(takenAt: $takenAt) { ${EVENT_FIELDS} near } }`,\n { takenAt },\n 'galleryEventChoices'\n ),\n summary: () => ask<{ fresh: number }>(`query { gallerySummary { fresh } }`, {}, 'gallerySummary'),\n create: (input: PostInput, photos: File[], uploading?: (fraction: number) => void) =>\n change<Post>(\n `mutation ($input: GalleryPostInput!, $photos: [Upload!]!) { createGalleryPost(input: $input, photos: $photos) { ${POST_FIELDS} } }`,\n { input, photos },\n 'createGalleryPost',\n uploading ?? (() => {})\n ),\n update: (id: string, input: PostInput, attach: File[], remove: string[], uploading?: (fraction: number) => void) =>\n change<Post>(\n `mutation ($id: String!, $input: GalleryPostInput!, $attach: [Upload!], $remove: [String!]) {\n updateGalleryPost(id: $id, input: $input, attach: $attach, remove: $remove) { ${POST_FIELDS} }\n }`,\n { id, input, attach, remove },\n 'updateGalleryPost',\n attach.length ? (uploading ?? (() => {})) : undefined\n ),\n remove: (id: string) =>\n change<boolean>(`mutation ($id: String!) { deleteGalleryPost(id: $id) }`, { id }, 'deleteGalleryPost'),\n like: (id: string, like: boolean) =>\n change<{ id: string; likeCount: number; liked: boolean }>(\n `mutation ($id: String!, $like: Boolean!) { likeGalleryPost(id: $id, like: $like) { id likeCount liked } }`,\n { id, like },\n 'likeGalleryPost'\n ),\n visit: () => change<boolean>(`mutation { visitGallery }`, {}, 'visitGallery'),\n hide: (id: string, reason: string) =>\n change<Post>(\n `mutation ($id: String!, $reason: String!) { hideGalleryPost(id: $id, reason: $reason) { ${POST_FIELDS} } }`,\n { id, reason },\n 'hideGalleryPost'\n ),\n unhide: (id: string) =>\n change<Post>(\n `mutation ($id: String!) { unhideGalleryPost(id: $id) { ${POST_FIELDS} } }`,\n { id },\n 'unhideGalleryPost'\n ),\n renameTag: (from: string, to: string) =>\n change<number>(\n `mutation ($from: String!, $to: String!) { renameGalleryTag(from: $from, to: $to) }`,\n { from, to },\n 'renameGalleryTag'\n ),\n createEvent: (input: { name: string; startAt: string; endAt: string; location?: string }) =>\n change<EventCard>(\n `mutation ($input: GalleryEventInput!) { createGalleryEvent(input: $input) { ${EVENT_FIELDS} postCount } }`,\n { input },\n 'createGalleryEvent'\n )\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/gallery",
3
- "version": "10.1.256",
3
+ "version": "10.1.258",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "dist-client/index.js",
6
6
  "things-factory": true,
@@ -27,25 +27,25 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@material/web": "^2.0.0",
30
- "@operato/graphql": "^10.29.39",
30
+ "@operato/graphql": "^10.29.69",
31
31
  "@operato/i18n": "^10.0.0",
32
32
  "@operato/input": "^10.29.52",
33
33
  "@operato/layout": "^10.29.49",
34
34
  "@operato/popup": "^10.29.39",
35
- "@operato/shell": "^10.29.39",
35
+ "@operato/shell": "^10.29.69",
36
36
  "@operato/styles": "^10.29.1",
37
37
  "@operato/utils": "^10.0.0",
38
- "@things-factory/apptool-base": "^10.1.254",
39
- "@things-factory/attachment-base": "^10.1.256",
40
- "@things-factory/auth-base": "^10.1.256",
41
- "@things-factory/calendar": "^10.1.256",
42
- "@things-factory/i18n-base": "^10.1.256",
43
- "@things-factory/notification": "^10.1.256",
44
- "@things-factory/setting-base": "^10.1.256",
45
- "@things-factory/shell": "^10.1.254",
38
+ "@things-factory/apptool-base": "^10.1.258",
39
+ "@things-factory/attachment-base": "^10.1.258",
40
+ "@things-factory/auth-base": "^10.1.258",
41
+ "@things-factory/calendar": "^10.1.258",
42
+ "@things-factory/i18n-base": "^10.1.258",
43
+ "@things-factory/notification": "^10.1.258",
44
+ "@things-factory/setting-base": "^10.1.258",
45
+ "@things-factory/shell": "^10.1.258",
46
46
  "graphql-tag": "^2.12.6",
47
47
  "graphql-upload": "^15.0.2",
48
48
  "lit": "^3.1.2"
49
49
  },
50
- "gitHead": "2fd641697190ce6e87bcf454a60b2321553e8110"
50
+ "gitHead": "c7b7e3b4e9aa1b36a246ccee312a4124a50924dd"
51
51
  }