@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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"}
@@ -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":";;;;;AAuGA,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"}
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.26",
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",
26
- "@weavix/sdk-core": "^0.0.28",
27
- "@weavix/sdk-react": "^0.0.28",
28
- "@weavix/tracker-core": "^0.0.26"
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.26"
32
+ "@weavix/tracker-core": "^0.0.27"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@testing-library/jest-dom": "*",