@weavix/tracker-plugin-sdk-react 0.0.26 → 0.0.27
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/API_REFERENCE.md
CHANGED
|
@@ -410,6 +410,7 @@ interface BasicTrackerPluginContextValue<TSlot extends keyof SlotContextMap = ke
|
|
|
410
410
|
language: string | undefined;
|
|
411
411
|
service: string;
|
|
412
412
|
userId?: string;
|
|
413
|
+
orgId?: string;
|
|
413
414
|
isYateam?: boolean;
|
|
414
415
|
isOrbita?: boolean;
|
|
415
416
|
origin: string;
|
|
@@ -457,6 +458,7 @@ interface FullTrackerPluginContextValue<TSlot extends keyof SlotContextMap = key
|
|
|
457
458
|
language: string | undefined;
|
|
458
459
|
service: string;
|
|
459
460
|
userId?: string;
|
|
461
|
+
orgId?: string;
|
|
460
462
|
isYateam?: boolean;
|
|
461
463
|
isOrbita?: boolean;
|
|
462
464
|
origin: string;
|
|
@@ -19,6 +19,8 @@ export interface BasicTrackerPluginContextValue<TSlot extends TrackerSlotKey = T
|
|
|
19
19
|
service: string;
|
|
20
20
|
/** Id пользователя. */
|
|
21
21
|
userId?: string;
|
|
22
|
+
/** Id организации. */
|
|
23
|
+
orgId?: string;
|
|
22
24
|
/** Это ятим? */
|
|
23
25
|
isYateam?: boolean;
|
|
24
26
|
/** Включена ли Орбита */
|
|
@@ -51,6 +53,8 @@ export interface FullTrackerPluginContextValue<TSlot extends TrackerSlotKey = Tr
|
|
|
51
53
|
service: string;
|
|
52
54
|
/** Id пользователя. */
|
|
53
55
|
userId?: string;
|
|
56
|
+
/** Id организации. */
|
|
57
|
+
orgId?: string;
|
|
54
58
|
/** Это ятим? */
|
|
55
59
|
isYateam?: boolean;
|
|
56
60
|
/** Включена ли Орбита */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrackerPluginProvider.d.ts","sourceRoot":"","sources":["../../src/components/TrackerPluginProvider.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TrackerPluginProvider.d.ts","sourceRoot":"","sources":["../../src/components/TrackerPluginProvider.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/components/TrackerPluginProvider.tsx"],"sourcesContent":["import {\n type BasicContext,\n type BasicPluginContextValue,\n type ContextLevel,\n type FullPluginContextValue,\n PluginProvider,\n type PluginProviderProps,\n type Theme,\n usePluginContext,\n} from '@weavix/sdk-react';\nimport type {\n GetDataResultMap,\n HandlerFunction,\n Handlers,\n SlotContextMap,\n} from '@weavix/tracker-plugin-sdk';\nimport { type ReactNode, createContext, useContext, useMemo } from 'react';\n\n/** Строковые ключи слота (для индексных типов без `symbol` в keyof). */\ntype TrackerSlotKey = Extract<keyof SlotContextMap, string>;\n\n/**\n * Сигнатура registerHandler: для 'getData' тип handler зависит от слота (GetDataResultMap[TSlot]).\n */\nexport type RegisterHandlerFunction<TSlot extends TrackerSlotKey> = <TKey extends keyof Handlers>(\n methodName: TKey,\n handler: TKey extends 'getData'\n ? TSlot extends keyof GetDataResultMap\n ? () => GetDataResultMap[TSlot]\n : never\n : HandlerFunction<TKey>,\n) => void;\n\n/**\n * Контекст плагина при contextLevel = 'basic'.\n * slotContext содержит только entityId.\n */\nexport interface BasicTrackerPluginContextValue<TSlot extends TrackerSlotKey = TrackerSlotKey> {\n /** Текущая тема хоста. Обновляется реактивно при получении theme.changed. */\n theme: Theme | undefined;\n /** Текущий язык хоста. Обновляется реактивно при получении language.changed. */\n language: string | undefined;\n /** Сервис, в котором открылся плагин. */\n service: string;\n /** Id пользователя. */\n userId?: string;\n /** Это ятим? */\n isYateam?: boolean;\n /** Включена ли Орбита */\n isOrbita?: boolean;\n /** Origin родительского окна (хоста). */\n origin: string;\n /** Слот, в котором открыт плагин. */\n slot: TSlot;\n /** URL внутри плагина. */\n innerUrl: string;\n /** Query-параметры плагина */\n queryParams: Record<string, string>;\n /** Контекст страницы — только entityId при basic уровне. */\n slotContext: BasicContext | undefined;\n /** Регистрация обработчика для ответов на запросы хоста. */\n registerHandler: RegisterHandlerFunction<TSlot>;\n /** Уровень контекста, объявленный в манифесте. */\n contextLevel: 'basic';\n}\n\n/**\n * Контекст плагина при contextLevel = 'full'.\n * slotContext содержит полный объект слота (Issue, TriggerContext и т.д.).\n */\nexport interface FullTrackerPluginContextValue<TSlot extends TrackerSlotKey = TrackerSlotKey> {\n /** Текущая тема хоста. Обновляется реактивно при получении theme.changed. */\n theme: Theme | undefined;\n /** Текущий язык хоста. Обновляется реактивно при получении language.changed. */\n language: string | undefined;\n /** Сервис, в котором открылся плагин. */\n service: string;\n /** Id пользователя. */\n userId?: string;\n /** Это ятим? */\n isYateam?: boolean;\n /** Включена ли Орбита */\n isOrbita?: boolean;\n /** Origin родительского окна (хоста). */\n origin: string;\n /** Слот, в котором открыт плагин. */\n slot: TSlot;\n /** URL внутри плагина. */\n innerUrl: string;\n /** Query-параметры плагина */\n queryParams: Record<string, string>;\n /** Контекст страницы — полный объект слота при full уровне. */\n slotContext: SlotContextMap[TSlot] | undefined;\n /** Регистрация обработчика для ответов на запросы хоста. */\n registerHandler: RegisterHandlerFunction<TSlot>;\n /** Уровень контекста, объявленный в манифесте. */\n contextLevel: 'full';\n}\n\ntype TrackerServiceContextValue = {\n registerHandler: RegisterHandlerFunction<TrackerSlotKey>;\n};\n\nconst TrackerServiceContext = createContext<TrackerServiceContextValue | null>(null);\n\n/**\n * Сервисный слой поверх {@link PluginProvider}: типизированный под Tracker `registerHandler`\n * и обязательная обёртка для {@link useTrackerPluginContext}.\n */\nfunction TrackerPluginServiceLayer({ children }: { children: ReactNode }) {\n const { registerHandler: baseRegisterHandler } = usePluginContext('basic');\n\n const typedRegisterHandler = useMemo<RegisterHandlerFunction<TrackerSlotKey>>(() => {\n return ((methodName, handler) =>\n baseRegisterHandler(\n methodName as string,\n handler as (...args: unknown[]) => unknown,\n )) as RegisterHandlerFunction<TrackerSlotKey>;\n }, [baseRegisterHandler]);\n\n const value = useMemo(\n () => ({ registerHandler: typedRegisterHandler }),\n [typedRegisterHandler],\n );\n\n return (\n <TrackerServiceContext.Provider value={value}>{children}</TrackerServiceContext.Provider>\n );\n}\n\n/**\n * Обёртка над стандартным {@link PluginProvider}: инициализация и общий контракт хоста в SDK,\n * поверх — трекер-специфичный контекст (типизированный `registerHandler` и проверка для\n * {@link useTrackerPluginContext}).\n */\nexport function TrackerPluginProvider(props: PluginProviderProps) {\n return (\n <PluginProvider {...props}>\n <TrackerPluginServiceLayer>{props.children}</TrackerPluginServiceLayer>\n </PluginProvider>\n );\n}\n\nexport type TrackerPluginProviderProps = PluginProviderProps;\n\n/**\n * Хук для получения темы, языка, слота и контекста слота из TrackerPluginProvider.\n */\nexport function useTrackerPluginContext(): {\n [K in TrackerSlotKey]: BasicTrackerPluginContextValue<K>;\n}[TrackerSlotKey];\nexport function useTrackerPluginContext(level: 'basic'): {\n [K in TrackerSlotKey]: BasicTrackerPluginContextValue<K>;\n}[TrackerSlotKey];\nexport function useTrackerPluginContext(level: 'full'): {\n [K in TrackerSlotKey]: FullTrackerPluginContextValue<K>;\n}[TrackerSlotKey];\nexport function useTrackerPluginContext<TSlot extends TrackerSlotKey>(\n level?: 'basic',\n): BasicTrackerPluginContextValue<TSlot>;\nexport function useTrackerPluginContext<TSlot extends TrackerSlotKey>(\n level: 'full',\n): FullTrackerPluginContextValue<TSlot>;\nexport function useTrackerPluginContext(\n level: ContextLevel = 'basic',\n): BasicTrackerPluginContextValue | FullTrackerPluginContextValue {\n const base = usePluginContext(level as 'basic') as\n | BasicPluginContextValue\n | FullPluginContextValue;\n const service = useContext(TrackerServiceContext);\n if (!service) {\n throw new Error(\n 'useTrackerPluginContext must be used within TrackerPluginProvider (Tracker service layer). ' +\n 'Use PluginProvider only with usePluginContext, or wrap the app with TrackerPluginProvider.',\n );\n }\n\n const slot = base.slot as TrackerSlotKey;\n\n if (level === 'full') {\n return {\n ...base,\n slot,\n registerHandler: service.registerHandler as RegisterHandlerFunction<typeof slot>,\n slotContext: base.slotContext as SlotContextMap[typeof slot] | undefined,\n } as FullTrackerPluginContextValue;\n }\n\n return {\n ...base,\n slot,\n registerHandler: service.registerHandler as RegisterHandlerFunction<typeof slot>,\n } as BasicTrackerPluginContextValue;\n}\n\nexport { isInternalUrl } from '@weavix/sdk-react';\n"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/components/TrackerPluginProvider.tsx"],"sourcesContent":["import {\n type BasicContext,\n type BasicPluginContextValue,\n type ContextLevel,\n type FullPluginContextValue,\n PluginProvider,\n type PluginProviderProps,\n type Theme,\n usePluginContext,\n} from '@weavix/sdk-react';\nimport type {\n GetDataResultMap,\n HandlerFunction,\n Handlers,\n SlotContextMap,\n} from '@weavix/tracker-plugin-sdk';\nimport { type ReactNode, createContext, useContext, useMemo } from 'react';\n\n/** Строковые ключи слота (для индексных типов без `symbol` в keyof). */\ntype TrackerSlotKey = Extract<keyof SlotContextMap, string>;\n\n/**\n * Сигнатура registerHandler: для 'getData' тип handler зависит от слота (GetDataResultMap[TSlot]).\n */\nexport type RegisterHandlerFunction<TSlot extends TrackerSlotKey> = <TKey extends keyof Handlers>(\n methodName: TKey,\n handler: TKey extends 'getData'\n ? TSlot extends keyof GetDataResultMap\n ? () => GetDataResultMap[TSlot]\n : never\n : HandlerFunction<TKey>,\n) => void;\n\n/**\n * Контекст плагина при contextLevel = 'basic'.\n * slotContext содержит только entityId.\n */\nexport interface BasicTrackerPluginContextValue<TSlot extends TrackerSlotKey = TrackerSlotKey> {\n /** Текущая тема хоста. Обновляется реактивно при получении theme.changed. */\n theme: Theme | undefined;\n /** Текущий язык хоста. Обновляется реактивно при получении language.changed. */\n language: string | undefined;\n /** Сервис, в котором открылся плагин. */\n service: string;\n /** Id пользователя. */\n userId?: string;\n /** Id организации. */\n orgId?: string;\n /** Это ятим? */\n isYateam?: boolean;\n /** Включена ли Орбита */\n isOrbita?: boolean;\n /** Origin родительского окна (хоста). */\n origin: string;\n /** Слот, в котором открыт плагин. */\n slot: TSlot;\n /** URL внутри плагина. */\n innerUrl: string;\n /** Query-параметры плагина */\n queryParams: Record<string, string>;\n /** Контекст страницы — только entityId при basic уровне. */\n slotContext: BasicContext | undefined;\n /** Регистрация обработчика для ответов на запросы хоста. */\n registerHandler: RegisterHandlerFunction<TSlot>;\n /** Уровень контекста, объявленный в манифесте. */\n contextLevel: 'basic';\n}\n\n/**\n * Контекст плагина при contextLevel = 'full'.\n * slotContext содержит полный объект слота (Issue, TriggerContext и т.д.).\n */\nexport interface FullTrackerPluginContextValue<TSlot extends TrackerSlotKey = TrackerSlotKey> {\n /** Текущая тема хоста. Обновляется реактивно при получении theme.changed. */\n theme: Theme | undefined;\n /** Текущий язык хоста. Обновляется реактивно при получении language.changed. */\n language: string | undefined;\n /** Сервис, в котором открылся плагин. */\n service: string;\n /** Id пользователя. */\n userId?: string;\n /** Id организации. */\n orgId?: string;\n /** Это ятим? */\n isYateam?: boolean;\n /** Включена ли Орбита */\n isOrbita?: boolean;\n /** Origin родительского окна (хоста). */\n origin: string;\n /** Слот, в котором открыт плагин. */\n slot: TSlot;\n /** URL внутри плагина. */\n innerUrl: string;\n /** Query-параметры плагина */\n queryParams: Record<string, string>;\n /** Контекст страницы — полный объект слота при full уровне. */\n slotContext: SlotContextMap[TSlot] | undefined;\n /** Регистрация обработчика для ответов на запросы хоста. */\n registerHandler: RegisterHandlerFunction<TSlot>;\n /** Уровень контекста, объявленный в манифесте. */\n contextLevel: 'full';\n}\n\ntype TrackerServiceContextValue = {\n registerHandler: RegisterHandlerFunction<TrackerSlotKey>;\n};\n\nconst TrackerServiceContext = createContext<TrackerServiceContextValue | null>(null);\n\n/**\n * Сервисный слой поверх {@link PluginProvider}: типизированный под Tracker `registerHandler`\n * и обязательная обёртка для {@link useTrackerPluginContext}.\n */\nfunction TrackerPluginServiceLayer({ children }: { children: ReactNode }) {\n const { registerHandler: baseRegisterHandler } = usePluginContext('basic');\n\n const typedRegisterHandler = useMemo<RegisterHandlerFunction<TrackerSlotKey>>(() => {\n return ((methodName, handler) =>\n baseRegisterHandler(\n methodName as string,\n handler as (...args: unknown[]) => unknown,\n )) as RegisterHandlerFunction<TrackerSlotKey>;\n }, [baseRegisterHandler]);\n\n const value = useMemo(\n () => ({ registerHandler: typedRegisterHandler }),\n [typedRegisterHandler],\n );\n\n return (\n <TrackerServiceContext.Provider value={value}>{children}</TrackerServiceContext.Provider>\n );\n}\n\n/**\n * Обёртка над стандартным {@link PluginProvider}: инициализация и общий контракт хоста в SDK,\n * поверх — трекер-специфичный контекст (типизированный `registerHandler` и проверка для\n * {@link useTrackerPluginContext}).\n */\nexport function TrackerPluginProvider(props: PluginProviderProps) {\n return (\n <PluginProvider {...props}>\n <TrackerPluginServiceLayer>{props.children}</TrackerPluginServiceLayer>\n </PluginProvider>\n );\n}\n\nexport type TrackerPluginProviderProps = PluginProviderProps;\n\n/**\n * Хук для получения темы, языка, слота и контекста слота из TrackerPluginProvider.\n */\nexport function useTrackerPluginContext(): {\n [K in TrackerSlotKey]: BasicTrackerPluginContextValue<K>;\n}[TrackerSlotKey];\nexport function useTrackerPluginContext(level: 'basic'): {\n [K in TrackerSlotKey]: BasicTrackerPluginContextValue<K>;\n}[TrackerSlotKey];\nexport function useTrackerPluginContext(level: 'full'): {\n [K in TrackerSlotKey]: FullTrackerPluginContextValue<K>;\n}[TrackerSlotKey];\nexport function useTrackerPluginContext<TSlot extends TrackerSlotKey>(\n level?: 'basic',\n): BasicTrackerPluginContextValue<TSlot>;\nexport function useTrackerPluginContext<TSlot extends TrackerSlotKey>(\n level: 'full',\n): FullTrackerPluginContextValue<TSlot>;\nexport function useTrackerPluginContext(\n level: ContextLevel = 'basic',\n): BasicTrackerPluginContextValue | FullTrackerPluginContextValue {\n const base = usePluginContext(level as 'basic') as\n | BasicPluginContextValue\n | FullPluginContextValue;\n const service = useContext(TrackerServiceContext);\n if (!service) {\n throw new Error(\n 'useTrackerPluginContext must be used within TrackerPluginProvider (Tracker service layer). ' +\n 'Use PluginProvider only with usePluginContext, or wrap the app with TrackerPluginProvider.',\n );\n }\n\n const slot = base.slot as TrackerSlotKey;\n\n if (level === 'full') {\n return {\n ...base,\n slot,\n registerHandler: service.registerHandler as RegisterHandlerFunction<typeof slot>,\n slotContext: base.slotContext as SlotContextMap[typeof slot] | undefined,\n } as FullTrackerPluginContextValue;\n }\n\n return {\n ...base,\n slot,\n registerHandler: service.registerHandler as RegisterHandlerFunction<typeof slot>,\n } as BasicTrackerPluginContextValue;\n}\n\nexport { isInternalUrl } from '@weavix/sdk-react';\n"],"mappings":";;;;;AA2GA,IAAM,IAAwB,EAAiD,IAAI;AAMnF,SAAS,EAA0B,EAAE,eAAqC;CACtE,IAAM,EAAE,iBAAiB,MAAwB,EAAiB,OAAO,GAEnE,IAAuB,UAChB,GAAY,MACjB,EACI,GACA,CACJ,IACL,CAAC,CAAmB,CAAC,GAElB,IAAQ,SACH,EAAE,iBAAiB,EAAqB,IAC/C,CAAC,CAAoB,CACzB;CAEA,OACI,kBAAC,EAAsB,UAAvB;EAAuC;EAAQ;CAAyC,CAAA;AAEhG;AAOA,SAAgB,EAAsB,GAA4B;CAC9D,OACI,kBAAC,GAAD;EAAgB,GAAI;YAChB,kBAAC,GAAD,EAAA,UAA4B,EAAM,SAAoC,CAAA;CAC1D,CAAA;AAExB;AAsBA,SAAgB,EACZ,IAAsB,SACwC;CAC9D,IAAM,IAAO,EAAiB,CAAgB,GAGxC,IAAU,EAAW,CAAqB;CAChD,IAAI,CAAC,GACD,MAAU,MACN,uLAEJ;CAGJ,IAAM,IAAO,EAAK;CAWlB,OATI,MAAU,SACH;EACH,GAAG;EACH;EACA,iBAAiB,EAAQ;EACzB,aAAa,EAAK;CACtB,IAGG;EACH,GAAG;EACH;EACA,iBAAiB,EAAQ;CAC7B;AACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@weavix/tracker-plugin-sdk-react",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.27",
|
|
4
4
|
"exports": {
|
|
5
5
|
".": {
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -22,14 +22,14 @@
|
|
|
22
22
|
"access": "public"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@weavix/tracker-plugin-sdk": "^0.0.
|
|
26
|
-
"@weavix/sdk-core": "^0.0.
|
|
27
|
-
"@weavix/sdk-react": "^0.0.
|
|
28
|
-
"@weavix/tracker-core": "^0.0.
|
|
25
|
+
"@weavix/tracker-plugin-sdk": "^0.0.27",
|
|
26
|
+
"@weavix/sdk-core": "^0.0.29",
|
|
27
|
+
"@weavix/sdk-react": "^0.0.29",
|
|
28
|
+
"@weavix/tracker-core": "^0.0.27"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"react": "^18.0.0",
|
|
32
|
-
"@weavix/tracker-core": "^0.0.
|
|
32
|
+
"@weavix/tracker-core": "^0.0.27"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@testing-library/jest-dom": "*",
|