@elementor/editor-current-user 0.5.0 → 0.6.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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @elementor/editor-current-user@0.5.0 build
2
+ > @elementor/editor-current-user@0.6.0 build
3
3
  > tsup --config=../../tsup.build.ts
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -10,13 +10,13 @@
10
10
  CLI Cleaning output folder
11
11
  ESM Build start
12
12
  CJS Build start
13
- CJS dist/index.js 3.97 KB
14
- CJS dist/index.js.map 5.80 KB
15
- CJS ⚡️ Build success in 87ms
16
- ESM dist/index.mjs 2.71 KB
17
- ESM dist/index.mjs.map 5.48 KB
18
- ESM ⚡️ Build success in 95ms
13
+ CJS dist/index.js 4.08 KB
14
+ CJS dist/index.js.map 6.06 KB
15
+ CJS ⚡️ Build success in 68ms
16
+ ESM dist/index.mjs 2.78 KB
17
+ ESM dist/index.mjs.map 5.73 KB
18
+ ESM ⚡️ Build success in 71ms
19
19
  DTS Build start
20
- DTS ⚡️ Build success in 11276ms
21
- DTS dist/index.d.mts 504.00 B
22
- DTS dist/index.d.ts 504.00 B
20
+ DTS ⚡️ Build success in 8486ms
21
+ DTS dist/index.d.mts 608.00 B
22
+ DTS dist/index.d.ts 608.00 B
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @elementor/editor-current-user
2
2
 
3
+ ## 0.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 68ce0d9: Ensure current user exist in the editor.
8
+
3
9
  ## 0.5.0
4
10
 
5
11
  ### Minor Changes
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- declare function PrefetchUserData(): null;
1
+ import { QueryClient } from '@elementor/query';
2
2
 
3
3
  declare const useSuppressedMessage: (messageKey: string) => readonly [boolean, () => void];
4
4
 
@@ -14,4 +14,8 @@ type User = {
14
14
 
15
15
  declare const getCurrentUser: () => Promise<User>;
16
16
 
17
- export { PrefetchUserData, getCurrentUser, useCurrentUserCapabilities, useSuppressedMessage };
17
+ declare function ensureCurrentUser({ queryClient }: {
18
+ queryClient: QueryClient;
19
+ }): unknown;
20
+
21
+ export { ensureCurrentUser, getCurrentUser, useCurrentUserCapabilities, useSuppressedMessage };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- declare function PrefetchUserData(): null;
1
+ import { QueryClient } from '@elementor/query';
2
2
 
3
3
  declare const useSuppressedMessage: (messageKey: string) => readonly [boolean, () => void];
4
4
 
@@ -14,4 +14,8 @@ type User = {
14
14
 
15
15
  declare const getCurrentUser: () => Promise<User>;
16
16
 
17
- export { PrefetchUserData, getCurrentUser, useCurrentUserCapabilities, useSuppressedMessage };
17
+ declare function ensureCurrentUser({ queryClient }: {
18
+ queryClient: QueryClient;
19
+ }): unknown;
20
+
21
+ export { ensureCurrentUser, getCurrentUser, useCurrentUserCapabilities, useSuppressedMessage };
package/dist/index.js CHANGED
@@ -20,15 +20,15 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
- PrefetchUserData: () => PrefetchUserData,
23
+ ensureCurrentUser: () => ensureCurrentUser,
24
24
  getCurrentUser: () => getCurrentUser,
25
25
  useCurrentUserCapabilities: () => useCurrentUserCapabilities,
26
26
  useSuppressedMessage: () => useSuppressedMessage
27
27
  });
28
28
  module.exports = __toCommonJS(index_exports);
29
29
 
30
- // src/components/prefetch-user-data.tsx
31
- var import_query2 = require("@elementor/query");
30
+ // src/use-current-user.ts
31
+ var import_query = require("@elementor/query");
32
32
 
33
33
  // src/api.ts
34
34
  var import_http_client = require("@elementor/http-client");
@@ -58,9 +58,6 @@ var userToRequest = (user) => {
58
58
  };
59
59
  };
60
60
 
61
- // src/use-current-user.ts
62
- var import_query = require("@elementor/query");
63
-
64
61
  // src/get-current-user.ts
65
62
  var getCurrentUser = () => {
66
63
  return apiClient.get();
@@ -73,21 +70,11 @@ var useCurrentUser = () => (0, import_query.useQuery)({
73
70
  queryFn: getCurrentUser
74
71
  });
75
72
 
76
- // src/components/prefetch-user-data.tsx
77
- function PrefetchUserData() {
78
- const queryClient = (0, import_query2.useQueryClient)();
79
- queryClient.prefetchQuery({
80
- queryKey: [EDITOR_CURRENT_USER_QUERY_KEY],
81
- queryFn: apiClient.get
82
- });
83
- return null;
84
- }
85
-
86
73
  // src/use-update-current-user.ts
87
- var import_query3 = require("@elementor/query");
74
+ var import_query2 = require("@elementor/query");
88
75
  var useUpdateCurrentUser = () => {
89
- const queryClient = (0, import_query3.useQueryClient)();
90
- return (0, import_query3.useMutation)({
76
+ const queryClient = (0, import_query2.useQueryClient)();
77
+ return (0, import_query2.useMutation)({
91
78
  mutationFn: apiClient.update,
92
79
  onSuccess: () => queryClient.invalidateQueries({ queryKey: [EDITOR_CURRENT_USER_QUERY_KEY] })
93
80
  });
@@ -116,9 +103,21 @@ var useCurrentUserCapabilities = () => {
116
103
  };
117
104
  return { canUser, capabilities: data?.capabilities };
118
105
  };
106
+
107
+ // src/ensure-current-user.ts
108
+ var import_editor_v1_adapters = require("@elementor/editor-v1-adapters");
109
+ function ensureCurrentUser({ queryClient }) {
110
+ (0, import_editor_v1_adapters.registerDataHook)("after", "editor/documents/attach-preview", async () => {
111
+ await queryClient.ensureQueryData({
112
+ queryKey: [EDITOR_CURRENT_USER_QUERY_KEY],
113
+ queryFn: apiClient.get
114
+ });
115
+ });
116
+ return queryClient.getQueryData([EDITOR_CURRENT_USER_QUERY_KEY]);
117
+ }
119
118
  // Annotate the CommonJS export names for ESM import in node:
120
119
  0 && (module.exports = {
121
- PrefetchUserData,
120
+ ensureCurrentUser,
122
121
  getCurrentUser,
123
122
  useCurrentUserCapabilities,
124
123
  useSuppressedMessage
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/prefetch-user-data.tsx","../src/api.ts","../src/use-current-user.ts","../src/get-current-user.ts","../src/use-update-current-user.ts","../src/use-suppressed-message.ts","../src/use-current-user-capabilities.ts"],"sourcesContent":["export { PrefetchUserData } from './components/prefetch-user-data';\nexport { useSuppressedMessage } from './use-suppressed-message';\nexport { useCurrentUserCapabilities } from './use-current-user-capabilities';\nexport { getCurrentUser } from './get-current-user';\n","import { useQueryClient } from '@elementor/query';\n\nimport { apiClient } from '../api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from '../use-current-user';\n\nexport function PrefetchUserData() {\n\tconst queryClient = useQueryClient();\n\n\tqueryClient.prefetchQuery( {\n\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\tqueryFn: apiClient.get,\n\t} );\n\n\treturn null;\n}\n","import { httpService } from '@elementor/http-client';\n\nimport { type User } from './types';\n\nconst RESOURCE_URL = '/users/me';\n\ntype GetUserPayload = {\n\tparams: { context?: 'edit' };\n};\n\ntype UserModel = {\n\telementor_introduction: Record< string, boolean >;\n\tcapabilities: Partial< Record< string, true > >;\n};\n\nconst getUserPayload: GetUserPayload = { params: { context: 'edit' } };\n\nexport const apiClient = {\n\tget: () =>\n\t\thttpService()\n\t\t\t.get< UserModel >( 'wp/v2' + RESOURCE_URL, getUserPayload )\n\t\t\t.then( ( res ) => {\n\t\t\t\treturn responseToUser( res.data );\n\t\t\t} ),\n\tupdate: ( data: Partial< User > ) =>\n\t\thttpService().patch< Partial< UserModel > >( 'wp/v2' + RESOURCE_URL, userToRequest( data ) ),\n};\n\nconst responseToUser = ( response: UserModel ): User => {\n\treturn {\n\t\tsuppressedMessages: Object.entries( response.elementor_introduction )\n\t\t\t.filter( ( [ , value ] ) => value )\n\t\t\t.map( ( [ message ] ) => message ),\n\t\tcapabilities: Object.keys( response.capabilities ),\n\t};\n};\n\nconst userToRequest = ( user: Partial< User > ): Partial< UserModel > => {\n\treturn {\n\t\telementor_introduction: user.suppressedMessages?.reduce(\n\t\t\t( acc, message ) => {\n\t\t\t\tacc[ message ] = true;\n\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{} as Record< string, boolean >\n\t\t),\n\t};\n};\n","import { useQuery } from '@elementor/query';\n\nimport { getCurrentUser } from './get-current-user';\n\nexport const EDITOR_CURRENT_USER_QUERY_KEY = 'editor-current-user';\n\nexport const useCurrentUser = () =>\n\tuseQuery( {\n\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\tqueryFn: getCurrentUser,\n\t} );\n","import { apiClient } from './api';\n\nexport const getCurrentUser = () => {\n\treturn apiClient.get();\n};\n","import { useMutation, useQueryClient } from '@elementor/query';\n\nimport { apiClient } from './api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from './use-current-user';\n\nexport const useUpdateCurrentUser = () => {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation( {\n\t\tmutationFn: apiClient.update,\n\t\tonSuccess: () => queryClient.invalidateQueries( { queryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ] } ),\n\t} );\n};\n","import { useCurrentUser } from './use-current-user';\nimport { useUpdateCurrentUser } from './use-update-current-user';\n\nexport const useSuppressedMessage = ( messageKey: string ) => {\n\tconst { data } = useCurrentUser();\n\tconst { mutate } = useUpdateCurrentUser();\n\n\tconst isMessageSuppressed = !! data?.suppressedMessages.includes( messageKey );\n\n\tconst suppressMessage = () => {\n\t\tif ( ! isMessageSuppressed ) {\n\t\t\tmutate( {\n\t\t\t\tsuppressedMessages: [ ...( data?.suppressedMessages ?? [] ), messageKey ],\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn [ isMessageSuppressed, suppressMessage ] as const;\n};\n","import { useCurrentUser } from './use-current-user';\n\nexport const useCurrentUserCapabilities = () => {\n\tconst { data } = useCurrentUser();\n\n\tconst canUser = ( capability: string ) => {\n\t\treturn Boolean( data?.capabilities.includes( capability ) );\n\t};\n\n\treturn { canUser, capabilities: data?.capabilities };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,gBAA+B;;;ACA/B,yBAA4B;AAI5B,IAAM,eAAe;AAWrB,IAAM,iBAAiC,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE;AAE9D,IAAM,YAAY;AAAA,EACxB,KAAK,UACJ,gCAAY,EACV,IAAkB,UAAU,cAAc,cAAe,EACzD,KAAM,CAAE,QAAS;AACjB,WAAO,eAAgB,IAAI,IAAK;AAAA,EACjC,CAAE;AAAA,EACJ,QAAQ,CAAE,aACT,gCAAY,EAAE,MAA+B,UAAU,cAAc,cAAe,IAAK,CAAE;AAC7F;AAEA,IAAM,iBAAiB,CAAE,aAA+B;AACvD,SAAO;AAAA,IACN,oBAAoB,OAAO,QAAS,SAAS,sBAAuB,EAClE,OAAQ,CAAE,CAAE,EAAE,KAAM,MAAO,KAAM,EACjC,IAAK,CAAE,CAAE,OAAQ,MAAO,OAAQ;AAAA,IAClC,cAAc,OAAO,KAAM,SAAS,YAAa;AAAA,EAClD;AACD;AAEA,IAAM,gBAAgB,CAAE,SAAiD;AACxE,SAAO;AAAA,IACN,wBAAwB,KAAK,oBAAoB;AAAA,MAChD,CAAE,KAAK,YAAa;AACnB,YAAK,OAAQ,IAAI;AAEjB,eAAO;AAAA,MACR;AAAA,MACA,CAAC;AAAA,IACF;AAAA,EACD;AACD;;;AChDA,mBAAyB;;;ACElB,IAAM,iBAAiB,MAAM;AACnC,SAAO,UAAU,IAAI;AACtB;;;ADAO,IAAM,gCAAgC;AAEtC,IAAM,iBAAiB,UAC7B,uBAAU;AAAA,EACT,UAAU,CAAE,6BAA8B;AAAA,EAC1C,SAAS;AACV,CAAE;;;AFLI,SAAS,mBAAmB;AAClC,QAAM,kBAAc,8BAAe;AAEnC,cAAY,cAAe;AAAA,IAC1B,UAAU,CAAE,6BAA8B;AAAA,IAC1C,SAAS,UAAU;AAAA,EACpB,CAAE;AAEF,SAAO;AACR;;;AIdA,IAAAC,gBAA4C;AAKrC,IAAM,uBAAuB,MAAM;AACzC,QAAM,kBAAc,8BAAe;AAEnC,aAAO,2BAAa;AAAA,IACnB,YAAY,UAAU;AAAA,IACtB,WAAW,MAAM,YAAY,kBAAmB,EAAE,UAAU,CAAE,6BAA8B,EAAE,CAAE;AAAA,EACjG,CAAE;AACH;;;ACTO,IAAM,uBAAuB,CAAE,eAAwB;AAC7D,QAAM,EAAE,KAAK,IAAI,eAAe;AAChC,QAAM,EAAE,OAAO,IAAI,qBAAqB;AAExC,QAAM,sBAAsB,CAAC,CAAE,MAAM,mBAAmB,SAAU,UAAW;AAE7E,QAAM,kBAAkB,MAAM;AAC7B,QAAK,CAAE,qBAAsB;AAC5B,aAAQ;AAAA,QACP,oBAAoB,CAAE,GAAK,MAAM,sBAAsB,CAAC,GAAK,UAAW;AAAA,MACzE,CAAE;AAAA,IACH;AAAA,EACD;AAEA,SAAO,CAAE,qBAAqB,eAAgB;AAC/C;;;AChBO,IAAM,6BAA6B,MAAM;AAC/C,QAAM,EAAE,KAAK,IAAI,eAAe;AAEhC,QAAM,UAAU,CAAE,eAAwB;AACzC,WAAO,QAAS,MAAM,aAAa,SAAU,UAAW,CAAE;AAAA,EAC3D;AAEA,SAAO,EAAE,SAAS,cAAc,MAAM,aAAa;AACpD;","names":["import_query","import_query"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/use-current-user.ts","../src/api.ts","../src/get-current-user.ts","../src/use-update-current-user.ts","../src/use-suppressed-message.ts","../src/use-current-user-capabilities.ts","../src/ensure-current-user.ts"],"sourcesContent":["export { useSuppressedMessage } from './use-suppressed-message';\nexport { useCurrentUserCapabilities } from './use-current-user-capabilities';\nexport { getCurrentUser } from './get-current-user';\nexport { ensureCurrentUser } from './ensure-current-user';\n","import { useQuery } from '@elementor/query';\n\nimport { getCurrentUser } from './get-current-user';\n\nexport const EDITOR_CURRENT_USER_QUERY_KEY = 'editor-current-user';\n\nexport const useCurrentUser = () =>\n\tuseQuery( {\n\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\tqueryFn: getCurrentUser,\n\t} );\n","import { httpService } from '@elementor/http-client';\n\nimport { type User } from './types';\n\nconst RESOURCE_URL = '/users/me';\n\ntype GetUserPayload = {\n\tparams: { context?: 'edit' };\n};\n\ntype UserModel = {\n\telementor_introduction: Record< string, boolean >;\n\tcapabilities: Partial< Record< string, true > >;\n};\n\nconst getUserPayload: GetUserPayload = { params: { context: 'edit' } };\n\nexport const apiClient = {\n\tget: () =>\n\t\thttpService()\n\t\t\t.get< UserModel >( 'wp/v2' + RESOURCE_URL, getUserPayload )\n\t\t\t.then( ( res ) => {\n\t\t\t\treturn responseToUser( res.data );\n\t\t\t} ),\n\tupdate: ( data: Partial< User > ) =>\n\t\thttpService().patch< Partial< UserModel > >( 'wp/v2' + RESOURCE_URL, userToRequest( data ) ),\n};\n\nconst responseToUser = ( response: UserModel ): User => {\n\treturn {\n\t\tsuppressedMessages: Object.entries( response.elementor_introduction )\n\t\t\t.filter( ( [ , value ] ) => value )\n\t\t\t.map( ( [ message ] ) => message ),\n\t\tcapabilities: Object.keys( response.capabilities ),\n\t};\n};\n\nconst userToRequest = ( user: Partial< User > ): Partial< UserModel > => {\n\treturn {\n\t\telementor_introduction: user.suppressedMessages?.reduce(\n\t\t\t( acc, message ) => {\n\t\t\t\tacc[ message ] = true;\n\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{} as Record< string, boolean >\n\t\t),\n\t};\n};\n","import { apiClient } from './api';\n\nexport const getCurrentUser = () => {\n\treturn apiClient.get();\n};\n","import { useMutation, useQueryClient } from '@elementor/query';\n\nimport { apiClient } from './api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from './use-current-user';\n\nexport const useUpdateCurrentUser = () => {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation( {\n\t\tmutationFn: apiClient.update,\n\t\tonSuccess: () => queryClient.invalidateQueries( { queryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ] } ),\n\t} );\n};\n","import { useCurrentUser } from './use-current-user';\nimport { useUpdateCurrentUser } from './use-update-current-user';\n\nexport const useSuppressedMessage = ( messageKey: string ) => {\n\tconst { data } = useCurrentUser();\n\tconst { mutate } = useUpdateCurrentUser();\n\n\tconst isMessageSuppressed = !! data?.suppressedMessages.includes( messageKey );\n\n\tconst suppressMessage = () => {\n\t\tif ( ! isMessageSuppressed ) {\n\t\t\tmutate( {\n\t\t\t\tsuppressedMessages: [ ...( data?.suppressedMessages ?? [] ), messageKey ],\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn [ isMessageSuppressed, suppressMessage ] as const;\n};\n","import { useCurrentUser } from './use-current-user';\n\nexport const useCurrentUserCapabilities = () => {\n\tconst { data } = useCurrentUser();\n\n\tconst canUser = ( capability: string ) => {\n\t\treturn Boolean( data?.capabilities.includes( capability ) );\n\t};\n\n\treturn { canUser, capabilities: data?.capabilities };\n};\n","import { registerDataHook } from '@elementor/editor-v1-adapters';\nimport { type QueryClient } from '@elementor/query';\n\nimport { apiClient } from './api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from './use-current-user';\n\nexport function ensureCurrentUser( { queryClient }: { queryClient: QueryClient } ) {\n\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\tawait queryClient.ensureQueryData( {\n\t\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\t\tqueryFn: apiClient.get,\n\t\t} );\n\t} );\n\n\treturn queryClient.getQueryData( [ EDITOR_CURRENT_USER_QUERY_KEY ] );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAyB;;;ACAzB,yBAA4B;AAI5B,IAAM,eAAe;AAWrB,IAAM,iBAAiC,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE;AAE9D,IAAM,YAAY;AAAA,EACxB,KAAK,UACJ,gCAAY,EACV,IAAkB,UAAU,cAAc,cAAe,EACzD,KAAM,CAAE,QAAS;AACjB,WAAO,eAAgB,IAAI,IAAK;AAAA,EACjC,CAAE;AAAA,EACJ,QAAQ,CAAE,aACT,gCAAY,EAAE,MAA+B,UAAU,cAAc,cAAe,IAAK,CAAE;AAC7F;AAEA,IAAM,iBAAiB,CAAE,aAA+B;AACvD,SAAO;AAAA,IACN,oBAAoB,OAAO,QAAS,SAAS,sBAAuB,EAClE,OAAQ,CAAE,CAAE,EAAE,KAAM,MAAO,KAAM,EACjC,IAAK,CAAE,CAAE,OAAQ,MAAO,OAAQ;AAAA,IAClC,cAAc,OAAO,KAAM,SAAS,YAAa;AAAA,EAClD;AACD;AAEA,IAAM,gBAAgB,CAAE,SAAiD;AACxE,SAAO;AAAA,IACN,wBAAwB,KAAK,oBAAoB;AAAA,MAChD,CAAE,KAAK,YAAa;AACnB,YAAK,OAAQ,IAAI;AAEjB,eAAO;AAAA,MACR;AAAA,MACA,CAAC;AAAA,IACF;AAAA,EACD;AACD;;;AC9CO,IAAM,iBAAiB,MAAM;AACnC,SAAO,UAAU,IAAI;AACtB;;;AFAO,IAAM,gCAAgC;AAEtC,IAAM,iBAAiB,UAC7B,uBAAU;AAAA,EACT,UAAU,CAAE,6BAA8B;AAAA,EAC1C,SAAS;AACV,CAAE;;;AGVH,IAAAA,gBAA4C;AAKrC,IAAM,uBAAuB,MAAM;AACzC,QAAM,kBAAc,8BAAe;AAEnC,aAAO,2BAAa;AAAA,IACnB,YAAY,UAAU;AAAA,IACtB,WAAW,MAAM,YAAY,kBAAmB,EAAE,UAAU,CAAE,6BAA8B,EAAE,CAAE;AAAA,EACjG,CAAE;AACH;;;ACTO,IAAM,uBAAuB,CAAE,eAAwB;AAC7D,QAAM,EAAE,KAAK,IAAI,eAAe;AAChC,QAAM,EAAE,OAAO,IAAI,qBAAqB;AAExC,QAAM,sBAAsB,CAAC,CAAE,MAAM,mBAAmB,SAAU,UAAW;AAE7E,QAAM,kBAAkB,MAAM;AAC7B,QAAK,CAAE,qBAAsB;AAC5B,aAAQ;AAAA,QACP,oBAAoB,CAAE,GAAK,MAAM,sBAAsB,CAAC,GAAK,UAAW;AAAA,MACzE,CAAE;AAAA,IACH;AAAA,EACD;AAEA,SAAO,CAAE,qBAAqB,eAAgB;AAC/C;;;AChBO,IAAM,6BAA6B,MAAM;AAC/C,QAAM,EAAE,KAAK,IAAI,eAAe;AAEhC,QAAM,UAAU,CAAE,eAAwB;AACzC,WAAO,QAAS,MAAM,aAAa,SAAU,UAAW,CAAE;AAAA,EAC3D;AAEA,SAAO,EAAE,SAAS,cAAc,MAAM,aAAa;AACpD;;;ACVA,gCAAiC;AAM1B,SAAS,kBAAmB,EAAE,YAAY,GAAkC;AAClF,kDAAkB,SAAS,mCAAmC,YAAY;AACzE,UAAM,YAAY,gBAAiB;AAAA,MAClC,UAAU,CAAE,6BAA8B;AAAA,MAC1C,SAAS,UAAU;AAAA,IACpB,CAAE;AAAA,EACH,CAAE;AAEF,SAAO,YAAY,aAAc,CAAE,6BAA8B,CAAE;AACpE;","names":["import_query"]}
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- // src/components/prefetch-user-data.tsx
2
- import { useQueryClient } from "@elementor/query";
1
+ // src/use-current-user.ts
2
+ import { useQuery } from "@elementor/query";
3
3
 
4
4
  // src/api.ts
5
5
  import { httpService } from "@elementor/http-client";
@@ -29,9 +29,6 @@ var userToRequest = (user) => {
29
29
  };
30
30
  };
31
31
 
32
- // src/use-current-user.ts
33
- import { useQuery } from "@elementor/query";
34
-
35
32
  // src/get-current-user.ts
36
33
  var getCurrentUser = () => {
37
34
  return apiClient.get();
@@ -44,20 +41,10 @@ var useCurrentUser = () => useQuery({
44
41
  queryFn: getCurrentUser
45
42
  });
46
43
 
47
- // src/components/prefetch-user-data.tsx
48
- function PrefetchUserData() {
49
- const queryClient = useQueryClient();
50
- queryClient.prefetchQuery({
51
- queryKey: [EDITOR_CURRENT_USER_QUERY_KEY],
52
- queryFn: apiClient.get
53
- });
54
- return null;
55
- }
56
-
57
44
  // src/use-update-current-user.ts
58
- import { useMutation, useQueryClient as useQueryClient2 } from "@elementor/query";
45
+ import { useMutation, useQueryClient } from "@elementor/query";
59
46
  var useUpdateCurrentUser = () => {
60
- const queryClient = useQueryClient2();
47
+ const queryClient = useQueryClient();
61
48
  return useMutation({
62
49
  mutationFn: apiClient.update,
63
50
  onSuccess: () => queryClient.invalidateQueries({ queryKey: [EDITOR_CURRENT_USER_QUERY_KEY] })
@@ -87,8 +74,20 @@ var useCurrentUserCapabilities = () => {
87
74
  };
88
75
  return { canUser, capabilities: data?.capabilities };
89
76
  };
77
+
78
+ // src/ensure-current-user.ts
79
+ import { registerDataHook } from "@elementor/editor-v1-adapters";
80
+ function ensureCurrentUser({ queryClient }) {
81
+ registerDataHook("after", "editor/documents/attach-preview", async () => {
82
+ await queryClient.ensureQueryData({
83
+ queryKey: [EDITOR_CURRENT_USER_QUERY_KEY],
84
+ queryFn: apiClient.get
85
+ });
86
+ });
87
+ return queryClient.getQueryData([EDITOR_CURRENT_USER_QUERY_KEY]);
88
+ }
90
89
  export {
91
- PrefetchUserData,
90
+ ensureCurrentUser,
92
91
  getCurrentUser,
93
92
  useCurrentUserCapabilities,
94
93
  useSuppressedMessage
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/prefetch-user-data.tsx","../src/api.ts","../src/use-current-user.ts","../src/get-current-user.ts","../src/use-update-current-user.ts","../src/use-suppressed-message.ts","../src/use-current-user-capabilities.ts"],"sourcesContent":["import { useQueryClient } from '@elementor/query';\n\nimport { apiClient } from '../api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from '../use-current-user';\n\nexport function PrefetchUserData() {\n\tconst queryClient = useQueryClient();\n\n\tqueryClient.prefetchQuery( {\n\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\tqueryFn: apiClient.get,\n\t} );\n\n\treturn null;\n}\n","import { httpService } from '@elementor/http-client';\n\nimport { type User } from './types';\n\nconst RESOURCE_URL = '/users/me';\n\ntype GetUserPayload = {\n\tparams: { context?: 'edit' };\n};\n\ntype UserModel = {\n\telementor_introduction: Record< string, boolean >;\n\tcapabilities: Partial< Record< string, true > >;\n};\n\nconst getUserPayload: GetUserPayload = { params: { context: 'edit' } };\n\nexport const apiClient = {\n\tget: () =>\n\t\thttpService()\n\t\t\t.get< UserModel >( 'wp/v2' + RESOURCE_URL, getUserPayload )\n\t\t\t.then( ( res ) => {\n\t\t\t\treturn responseToUser( res.data );\n\t\t\t} ),\n\tupdate: ( data: Partial< User > ) =>\n\t\thttpService().patch< Partial< UserModel > >( 'wp/v2' + RESOURCE_URL, userToRequest( data ) ),\n};\n\nconst responseToUser = ( response: UserModel ): User => {\n\treturn {\n\t\tsuppressedMessages: Object.entries( response.elementor_introduction )\n\t\t\t.filter( ( [ , value ] ) => value )\n\t\t\t.map( ( [ message ] ) => message ),\n\t\tcapabilities: Object.keys( response.capabilities ),\n\t};\n};\n\nconst userToRequest = ( user: Partial< User > ): Partial< UserModel > => {\n\treturn {\n\t\telementor_introduction: user.suppressedMessages?.reduce(\n\t\t\t( acc, message ) => {\n\t\t\t\tacc[ message ] = true;\n\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{} as Record< string, boolean >\n\t\t),\n\t};\n};\n","import { useQuery } from '@elementor/query';\n\nimport { getCurrentUser } from './get-current-user';\n\nexport const EDITOR_CURRENT_USER_QUERY_KEY = 'editor-current-user';\n\nexport const useCurrentUser = () =>\n\tuseQuery( {\n\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\tqueryFn: getCurrentUser,\n\t} );\n","import { apiClient } from './api';\n\nexport const getCurrentUser = () => {\n\treturn apiClient.get();\n};\n","import { useMutation, useQueryClient } from '@elementor/query';\n\nimport { apiClient } from './api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from './use-current-user';\n\nexport const useUpdateCurrentUser = () => {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation( {\n\t\tmutationFn: apiClient.update,\n\t\tonSuccess: () => queryClient.invalidateQueries( { queryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ] } ),\n\t} );\n};\n","import { useCurrentUser } from './use-current-user';\nimport { useUpdateCurrentUser } from './use-update-current-user';\n\nexport const useSuppressedMessage = ( messageKey: string ) => {\n\tconst { data } = useCurrentUser();\n\tconst { mutate } = useUpdateCurrentUser();\n\n\tconst isMessageSuppressed = !! data?.suppressedMessages.includes( messageKey );\n\n\tconst suppressMessage = () => {\n\t\tif ( ! isMessageSuppressed ) {\n\t\t\tmutate( {\n\t\t\t\tsuppressedMessages: [ ...( data?.suppressedMessages ?? [] ), messageKey ],\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn [ isMessageSuppressed, suppressMessage ] as const;\n};\n","import { useCurrentUser } from './use-current-user';\n\nexport const useCurrentUserCapabilities = () => {\n\tconst { data } = useCurrentUser();\n\n\tconst canUser = ( capability: string ) => {\n\t\treturn Boolean( data?.capabilities.includes( capability ) );\n\t};\n\n\treturn { canUser, capabilities: data?.capabilities };\n};\n"],"mappings":";AAAA,SAAS,sBAAsB;;;ACA/B,SAAS,mBAAmB;AAI5B,IAAM,eAAe;AAWrB,IAAM,iBAAiC,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE;AAE9D,IAAM,YAAY;AAAA,EACxB,KAAK,MACJ,YAAY,EACV,IAAkB,UAAU,cAAc,cAAe,EACzD,KAAM,CAAE,QAAS;AACjB,WAAO,eAAgB,IAAI,IAAK;AAAA,EACjC,CAAE;AAAA,EACJ,QAAQ,CAAE,SACT,YAAY,EAAE,MAA+B,UAAU,cAAc,cAAe,IAAK,CAAE;AAC7F;AAEA,IAAM,iBAAiB,CAAE,aAA+B;AACvD,SAAO;AAAA,IACN,oBAAoB,OAAO,QAAS,SAAS,sBAAuB,EAClE,OAAQ,CAAE,CAAE,EAAE,KAAM,MAAO,KAAM,EACjC,IAAK,CAAE,CAAE,OAAQ,MAAO,OAAQ;AAAA,IAClC,cAAc,OAAO,KAAM,SAAS,YAAa;AAAA,EAClD;AACD;AAEA,IAAM,gBAAgB,CAAE,SAAiD;AACxE,SAAO;AAAA,IACN,wBAAwB,KAAK,oBAAoB;AAAA,MAChD,CAAE,KAAK,YAAa;AACnB,YAAK,OAAQ,IAAI;AAEjB,eAAO;AAAA,MACR;AAAA,MACA,CAAC;AAAA,IACF;AAAA,EACD;AACD;;;AChDA,SAAS,gBAAgB;;;ACElB,IAAM,iBAAiB,MAAM;AACnC,SAAO,UAAU,IAAI;AACtB;;;ADAO,IAAM,gCAAgC;AAEtC,IAAM,iBAAiB,MAC7B,SAAU;AAAA,EACT,UAAU,CAAE,6BAA8B;AAAA,EAC1C,SAAS;AACV,CAAE;;;AFLI,SAAS,mBAAmB;AAClC,QAAM,cAAc,eAAe;AAEnC,cAAY,cAAe;AAAA,IAC1B,UAAU,CAAE,6BAA8B;AAAA,IAC1C,SAAS,UAAU;AAAA,EACpB,CAAE;AAEF,SAAO;AACR;;;AIdA,SAAS,aAAa,kBAAAA,uBAAsB;AAKrC,IAAM,uBAAuB,MAAM;AACzC,QAAM,cAAcC,gBAAe;AAEnC,SAAO,YAAa;AAAA,IACnB,YAAY,UAAU;AAAA,IACtB,WAAW,MAAM,YAAY,kBAAmB,EAAE,UAAU,CAAE,6BAA8B,EAAE,CAAE;AAAA,EACjG,CAAE;AACH;;;ACTO,IAAM,uBAAuB,CAAE,eAAwB;AAC7D,QAAM,EAAE,KAAK,IAAI,eAAe;AAChC,QAAM,EAAE,OAAO,IAAI,qBAAqB;AAExC,QAAM,sBAAsB,CAAC,CAAE,MAAM,mBAAmB,SAAU,UAAW;AAE7E,QAAM,kBAAkB,MAAM;AAC7B,QAAK,CAAE,qBAAsB;AAC5B,aAAQ;AAAA,QACP,oBAAoB,CAAE,GAAK,MAAM,sBAAsB,CAAC,GAAK,UAAW;AAAA,MACzE,CAAE;AAAA,IACH;AAAA,EACD;AAEA,SAAO,CAAE,qBAAqB,eAAgB;AAC/C;;;AChBO,IAAM,6BAA6B,MAAM;AAC/C,QAAM,EAAE,KAAK,IAAI,eAAe;AAEhC,QAAM,UAAU,CAAE,eAAwB;AACzC,WAAO,QAAS,MAAM,aAAa,SAAU,UAAW,CAAE;AAAA,EAC3D;AAEA,SAAO,EAAE,SAAS,cAAc,MAAM,aAAa;AACpD;","names":["useQueryClient","useQueryClient"]}
1
+ {"version":3,"sources":["../src/use-current-user.ts","../src/api.ts","../src/get-current-user.ts","../src/use-update-current-user.ts","../src/use-suppressed-message.ts","../src/use-current-user-capabilities.ts","../src/ensure-current-user.ts"],"sourcesContent":["import { useQuery } from '@elementor/query';\n\nimport { getCurrentUser } from './get-current-user';\n\nexport const EDITOR_CURRENT_USER_QUERY_KEY = 'editor-current-user';\n\nexport const useCurrentUser = () =>\n\tuseQuery( {\n\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\tqueryFn: getCurrentUser,\n\t} );\n","import { httpService } from '@elementor/http-client';\n\nimport { type User } from './types';\n\nconst RESOURCE_URL = '/users/me';\n\ntype GetUserPayload = {\n\tparams: { context?: 'edit' };\n};\n\ntype UserModel = {\n\telementor_introduction: Record< string, boolean >;\n\tcapabilities: Partial< Record< string, true > >;\n};\n\nconst getUserPayload: GetUserPayload = { params: { context: 'edit' } };\n\nexport const apiClient = {\n\tget: () =>\n\t\thttpService()\n\t\t\t.get< UserModel >( 'wp/v2' + RESOURCE_URL, getUserPayload )\n\t\t\t.then( ( res ) => {\n\t\t\t\treturn responseToUser( res.data );\n\t\t\t} ),\n\tupdate: ( data: Partial< User > ) =>\n\t\thttpService().patch< Partial< UserModel > >( 'wp/v2' + RESOURCE_URL, userToRequest( data ) ),\n};\n\nconst responseToUser = ( response: UserModel ): User => {\n\treturn {\n\t\tsuppressedMessages: Object.entries( response.elementor_introduction )\n\t\t\t.filter( ( [ , value ] ) => value )\n\t\t\t.map( ( [ message ] ) => message ),\n\t\tcapabilities: Object.keys( response.capabilities ),\n\t};\n};\n\nconst userToRequest = ( user: Partial< User > ): Partial< UserModel > => {\n\treturn {\n\t\telementor_introduction: user.suppressedMessages?.reduce(\n\t\t\t( acc, message ) => {\n\t\t\t\tacc[ message ] = true;\n\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{} as Record< string, boolean >\n\t\t),\n\t};\n};\n","import { apiClient } from './api';\n\nexport const getCurrentUser = () => {\n\treturn apiClient.get();\n};\n","import { useMutation, useQueryClient } from '@elementor/query';\n\nimport { apiClient } from './api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from './use-current-user';\n\nexport const useUpdateCurrentUser = () => {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation( {\n\t\tmutationFn: apiClient.update,\n\t\tonSuccess: () => queryClient.invalidateQueries( { queryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ] } ),\n\t} );\n};\n","import { useCurrentUser } from './use-current-user';\nimport { useUpdateCurrentUser } from './use-update-current-user';\n\nexport const useSuppressedMessage = ( messageKey: string ) => {\n\tconst { data } = useCurrentUser();\n\tconst { mutate } = useUpdateCurrentUser();\n\n\tconst isMessageSuppressed = !! data?.suppressedMessages.includes( messageKey );\n\n\tconst suppressMessage = () => {\n\t\tif ( ! isMessageSuppressed ) {\n\t\t\tmutate( {\n\t\t\t\tsuppressedMessages: [ ...( data?.suppressedMessages ?? [] ), messageKey ],\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn [ isMessageSuppressed, suppressMessage ] as const;\n};\n","import { useCurrentUser } from './use-current-user';\n\nexport const useCurrentUserCapabilities = () => {\n\tconst { data } = useCurrentUser();\n\n\tconst canUser = ( capability: string ) => {\n\t\treturn Boolean( data?.capabilities.includes( capability ) );\n\t};\n\n\treturn { canUser, capabilities: data?.capabilities };\n};\n","import { registerDataHook } from '@elementor/editor-v1-adapters';\nimport { type QueryClient } from '@elementor/query';\n\nimport { apiClient } from './api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from './use-current-user';\n\nexport function ensureCurrentUser( { queryClient }: { queryClient: QueryClient } ) {\n\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\tawait queryClient.ensureQueryData( {\n\t\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\t\tqueryFn: apiClient.get,\n\t\t} );\n\t} );\n\n\treturn queryClient.getQueryData( [ EDITOR_CURRENT_USER_QUERY_KEY ] );\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;;;ACAzB,SAAS,mBAAmB;AAI5B,IAAM,eAAe;AAWrB,IAAM,iBAAiC,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE;AAE9D,IAAM,YAAY;AAAA,EACxB,KAAK,MACJ,YAAY,EACV,IAAkB,UAAU,cAAc,cAAe,EACzD,KAAM,CAAE,QAAS;AACjB,WAAO,eAAgB,IAAI,IAAK;AAAA,EACjC,CAAE;AAAA,EACJ,QAAQ,CAAE,SACT,YAAY,EAAE,MAA+B,UAAU,cAAc,cAAe,IAAK,CAAE;AAC7F;AAEA,IAAM,iBAAiB,CAAE,aAA+B;AACvD,SAAO;AAAA,IACN,oBAAoB,OAAO,QAAS,SAAS,sBAAuB,EAClE,OAAQ,CAAE,CAAE,EAAE,KAAM,MAAO,KAAM,EACjC,IAAK,CAAE,CAAE,OAAQ,MAAO,OAAQ;AAAA,IAClC,cAAc,OAAO,KAAM,SAAS,YAAa;AAAA,EAClD;AACD;AAEA,IAAM,gBAAgB,CAAE,SAAiD;AACxE,SAAO;AAAA,IACN,wBAAwB,KAAK,oBAAoB;AAAA,MAChD,CAAE,KAAK,YAAa;AACnB,YAAK,OAAQ,IAAI;AAEjB,eAAO;AAAA,MACR;AAAA,MACA,CAAC;AAAA,IACF;AAAA,EACD;AACD;;;AC9CO,IAAM,iBAAiB,MAAM;AACnC,SAAO,UAAU,IAAI;AACtB;;;AFAO,IAAM,gCAAgC;AAEtC,IAAM,iBAAiB,MAC7B,SAAU;AAAA,EACT,UAAU,CAAE,6BAA8B;AAAA,EAC1C,SAAS;AACV,CAAE;;;AGVH,SAAS,aAAa,sBAAsB;AAKrC,IAAM,uBAAuB,MAAM;AACzC,QAAM,cAAc,eAAe;AAEnC,SAAO,YAAa;AAAA,IACnB,YAAY,UAAU;AAAA,IACtB,WAAW,MAAM,YAAY,kBAAmB,EAAE,UAAU,CAAE,6BAA8B,EAAE,CAAE;AAAA,EACjG,CAAE;AACH;;;ACTO,IAAM,uBAAuB,CAAE,eAAwB;AAC7D,QAAM,EAAE,KAAK,IAAI,eAAe;AAChC,QAAM,EAAE,OAAO,IAAI,qBAAqB;AAExC,QAAM,sBAAsB,CAAC,CAAE,MAAM,mBAAmB,SAAU,UAAW;AAE7E,QAAM,kBAAkB,MAAM;AAC7B,QAAK,CAAE,qBAAsB;AAC5B,aAAQ;AAAA,QACP,oBAAoB,CAAE,GAAK,MAAM,sBAAsB,CAAC,GAAK,UAAW;AAAA,MACzE,CAAE;AAAA,IACH;AAAA,EACD;AAEA,SAAO,CAAE,qBAAqB,eAAgB;AAC/C;;;AChBO,IAAM,6BAA6B,MAAM;AAC/C,QAAM,EAAE,KAAK,IAAI,eAAe;AAEhC,QAAM,UAAU,CAAE,eAAwB;AACzC,WAAO,QAAS,MAAM,aAAa,SAAU,UAAW,CAAE;AAAA,EAC3D;AAEA,SAAO,EAAE,SAAS,cAAc,MAAM,aAAa;AACpD;;;ACVA,SAAS,wBAAwB;AAM1B,SAAS,kBAAmB,EAAE,YAAY,GAAkC;AAClF,mBAAkB,SAAS,mCAAmC,YAAY;AACzE,UAAM,YAAY,gBAAiB;AAAA,MAClC,UAAU,CAAE,6BAA8B;AAAA,MAC1C,SAAS,UAAU;AAAA,IACpB,CAAE;AAAA,EACH,CAAE;AAEF,SAAO,YAAY,aAAc,CAAE,6BAA8B,CAAE;AACpE;","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elementor/editor-current-user",
3
3
  "description": "Elementor Editor Current User",
4
- "version": "0.5.0",
4
+ "version": "0.6.0",
5
5
  "private": false,
6
6
  "author": "Elementor Team",
7
7
  "homepage": "https://elementor.com/",
@@ -36,6 +36,7 @@
36
36
  "react": "^18.3.1"
37
37
  },
38
38
  "dependencies": {
39
+ "@elementor/editor-v1-adapters": "0.12.1",
39
40
  "@elementor/http-client": "0.3.0",
40
41
  "@elementor/query": "0.2.4"
41
42
  },
@@ -0,0 +1,16 @@
1
+ import { registerDataHook } from '@elementor/editor-v1-adapters';
2
+ import { type QueryClient } from '@elementor/query';
3
+
4
+ import { apiClient } from './api';
5
+ import { EDITOR_CURRENT_USER_QUERY_KEY } from './use-current-user';
6
+
7
+ export function ensureCurrentUser( { queryClient }: { queryClient: QueryClient } ) {
8
+ registerDataHook( 'after', 'editor/documents/attach-preview', async () => {
9
+ await queryClient.ensureQueryData( {
10
+ queryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],
11
+ queryFn: apiClient.get,
12
+ } );
13
+ } );
14
+
15
+ return queryClient.getQueryData( [ EDITOR_CURRENT_USER_QUERY_KEY ] );
16
+ }
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { PrefetchUserData } from './components/prefetch-user-data';
2
1
  export { useSuppressedMessage } from './use-suppressed-message';
3
2
  export { useCurrentUserCapabilities } from './use-current-user-capabilities';
4
3
  export { getCurrentUser } from './get-current-user';
4
+ export { ensureCurrentUser } from './ensure-current-user';
@@ -1,15 +0,0 @@
1
- import { useQueryClient } from '@elementor/query';
2
-
3
- import { apiClient } from '../api';
4
- import { EDITOR_CURRENT_USER_QUERY_KEY } from '../use-current-user';
5
-
6
- export function PrefetchUserData() {
7
- const queryClient = useQueryClient();
8
-
9
- queryClient.prefetchQuery( {
10
- queryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],
11
- queryFn: apiClient.get,
12
- } );
13
-
14
- return null;
15
- }