@inappstory/js-sdk 3.0.0-rc.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.
@@ -0,0 +1,29 @@
1
+ import { RecursivePartial } from "../global"
2
+
3
+ export declare enum CloseButtonPosition {
4
+ /** @deprecated */
5
+ LEFT = "left",
6
+ /** @deprecated */
7
+ RIGHT = "right",
8
+ START = "start",
9
+ END = "end"
10
+ }
11
+
12
+ export type AppearanceCommonOptions = RecursivePartial<{
13
+ hasFavorite: boolean;
14
+ hasLike: boolean;
15
+ hasShare: boolean;
16
+ closeButtonPosition: CloseButtonPosition | "left" | "right" | "start" | "end";
17
+ loader: {
18
+ default: {
19
+ color: string;
20
+ accentColor: string;
21
+ };
22
+ custom: string;
23
+ };
24
+ closeButton: {
25
+ svgSrc: {
26
+ baseState: string;
27
+ };
28
+ };
29
+ }>;
@@ -0,0 +1,34 @@
1
+ import { AppearanceCommonOptions } from "./appearanceCommon";
2
+ import { StoryReaderOptions } from "./storyReader";
3
+ import { GameReaderOptions } from "./gameReader";
4
+ import { GoodsWidgetOptions } from "./goodsWidget";
5
+ import { StoriesListOptions } from "./storiesList";
6
+ import { StoryFavoriteReaderOptions } from "./storyFavoriteReader";
7
+
8
+ export type AppearanceManagerOptionGroups = {
9
+ commonOptions: AppearanceCommonOptions;
10
+ storiesListOptions: StoriesListOptions;
11
+ storyReaderOptions: StoryReaderOptions;
12
+ storyFavoriteReaderOptions: StoryFavoriteReaderOptions;
13
+ goodsWidgetOptions: GoodsWidgetOptions;
14
+ gameReaderOptions: GameReaderOptions;
15
+ };
16
+
17
+ export declare class AppearanceManager {
18
+ commonOptions: AppearanceCommonOptions;
19
+ storyReaderOptions: StoryReaderOptions;
20
+ storyFavoriteReaderOptions: StoryFavoriteReaderOptions;
21
+ gameReaderOptions: GameReaderOptions;
22
+ goodsWidgetOptions: GoodsWidgetOptions;
23
+ storiesListOptions: StoriesListOptions;
24
+
25
+ setCommonOptions(options: AppearanceCommonOptions, withUpdateEvent?: boolean): AppearanceManager;
26
+ setStoriesListOptions(options: Partial<StoriesListOptions>, withUpdateEvent?: boolean): AppearanceManager;
27
+ setStoryReaderOptions(options: Partial<StoryReaderOptions>, withUpdateEvent?: boolean): AppearanceManager;
28
+ setStoryFavoriteReaderOptions(
29
+ options: Partial<StoryFavoriteReaderOptions>,
30
+ withUpdateEvent?: boolean
31
+ ): AppearanceManager;
32
+ setGoodsWidgetOptions(options: Partial<GoodsWidgetOptions>, withUpdateEvent?: boolean): AppearanceManager;
33
+ setGameReaderOptions(options: GameReaderOptions, withUpdateEvent?: boolean): AppearanceManager;
34
+ }
@@ -0,0 +1,34 @@
1
+ import { CloseButtonPosition } from "./appearanceCommon";
2
+ import { RecursivePartial } from "../global";
3
+
4
+ export type GameReaderOptions = RecursivePartial<{
5
+ borderRadius?: number;
6
+ loader?: {
7
+ default: {
8
+ color: Optional<string>;
9
+ accentColor: Optional<string>;
10
+ };
11
+ custom: Optional<string>;
12
+ };
13
+ closeButtonPosition?: CloseButtonPosition | "left" | "right" | "start" | "end";
14
+ closeButton?: {
15
+ svgSrc: {
16
+ baseState: string;
17
+ };
18
+ };
19
+
20
+ /** @deprecated Use the `backdrop` instead. */
21
+ backdropColor?: string;
22
+ backdrop?: {
23
+ opacity?: number; // .56
24
+ blur?: number; // 30
25
+ background?: string;
26
+ };
27
+ game?: {
28
+ backdropColor: string;
29
+ };
30
+ }>;
31
+
32
+ export type OpenGameOptions = Partial<{
33
+ demoMode: boolean;
34
+ }>;
@@ -0,0 +1,45 @@
1
+ import { RecursivePartial } from "../global"
2
+
3
+ export type Goods = Partial<{
4
+ imgSrc: string;
5
+ title: string;
6
+ subTitle: string;
7
+ price: string;
8
+ oldPrice: string;
9
+ sku: string;
10
+ rawData: any;
11
+ }>;
12
+
13
+ export type GoodsWidgetOptions = RecursivePartial<{
14
+ goodsList: GoodsListOptions;
15
+ goodsCard: GoodsCardOptions;
16
+ loader: {
17
+ default: {
18
+ color: string;
19
+ accentColor: string;
20
+ };
21
+ custom: string;
22
+ };
23
+ openGoodsWidgetHandler: (goodsList: Goods[]) => Promise<Goods[]>;
24
+ getCardHtml?: (goods: Goods, index: number) => string;
25
+ itemClickHandler?: (goods: Goods) => void;
26
+ }>;
27
+
28
+ export type GoodsCardOptions = Partial<{
29
+ mainTextColor: string;
30
+ oldPriceTextColor: string;
31
+ imageBackgroundColor: string;
32
+ imageCornerRadius: number;
33
+ titleFont: string;
34
+ subtitleFont: string;
35
+ priceFont: string;
36
+ oldPriceFont: string;
37
+ }>;
38
+
39
+ export type GoodsListOptions = Partial<{
40
+ closeBackgroundColor: string;
41
+ closeImage: string;
42
+ substrateHeight: number;
43
+ substrateColor: string;
44
+ dimColor: string;
45
+ }>;
@@ -0,0 +1,7 @@
1
+ export * from "./appearanceCommon"
2
+ export * from "./gameReader"
3
+ export * from "./goodsWidget"
4
+ export * from "./storiesList"
5
+ export * from "./storyReader"
6
+ export * from "./sharePanel"
7
+ export * from "./appearanceManager"
@@ -0,0 +1,44 @@
1
+ type BaseShareTarget = "vk" | "ok" | "facebook" | "x" | "linkedin" | "telegram" | "twitter";
2
+ export type ShareTarget<CustomTargets extends string = never> = BaseShareTarget | CustomTargets;
3
+
4
+ export type ShareTargetParams = {
5
+ label?: string;
6
+ icon?: {
7
+ svgSrc: {
8
+ baseState: string;
9
+ };
10
+ };
11
+ getUrl?: (config: { url: string; text: string }) => string;
12
+ };
13
+
14
+ export type SharePanel<CustomTargets extends string = never> = Partial<{
15
+ background: string;
16
+ borderRadius: number;
17
+ divider: {
18
+ background: string;
19
+ };
20
+ text: {
21
+ color: string;
22
+ font: string;
23
+ };
24
+ targets: ShareTarget<CustomTargets>[];
25
+ targetParams: Partial<Record<ShareTarget<CustomTargets>, ShareTargetParams>>;
26
+ copyButton: {
27
+ label: string;
28
+ svgSrc: {
29
+ baseState: string;
30
+ };
31
+ };
32
+ downloadButton: {
33
+ svgSrc: {
34
+ baseState: string;
35
+ };
36
+ };
37
+ title: {
38
+ favicon: {
39
+ background: string;
40
+ display: boolean;
41
+ };
42
+ getValue: (config: { url: string; text: string }) => string;
43
+ };
44
+ }>;
@@ -0,0 +1,155 @@
1
+ import { Option, RecursivePartial } from "../global";
2
+
3
+ export declare enum StoriesListSliderAlign {
4
+ CENTER = "center",
5
+ /** @deprecated */
6
+ LEFT = "left",
7
+ /** @deprecated */
8
+ RIGHT = "right",
9
+ START = "start",
10
+ END = "end"
11
+ }
12
+
13
+ export declare enum StoriesListCardViewVariant {
14
+ CIRCLE = "circle",
15
+ QUAD = "quad",
16
+ RECTANGLE = "rectangle"
17
+ }
18
+
19
+ export declare enum StoriesListCardTitleTextAlign {
20
+ /** @deprecated */
21
+ LEFT = "left",
22
+ /** @deprecated */
23
+ RIGHT = "right",
24
+ CENTER = "center",
25
+ START = "start",
26
+ END = "end"
27
+ }
28
+
29
+ export declare enum StoriesListCardTitlePosition {
30
+ CARD_INSIDE_BOTTOM = "cardInsideBottom",
31
+ CARD_OUTSIDE_TOP = "cardOutsideTop",
32
+ CARD_OUTSIDE_BOTTOM = "cardOutsideBottom"
33
+ }
34
+
35
+ export declare enum StoriesListCardCoverQuality {
36
+ Medium = "medium",
37
+ High = "high"
38
+ }
39
+
40
+ export declare enum StoriesListDirection {
41
+ COLUMN = "vertical",
42
+ ROW = "horizontal"
43
+ }
44
+
45
+ export type StoriesListOptions = RecursivePartial<{
46
+ direction: StoriesListDirection | "vertical" | "horizontal";
47
+ card: StoriesListCardOptions;
48
+ favoriteCard: StoriesListFavoriteCardOptions;
49
+ layout: {
50
+ height: number | string;
51
+ backgroundColor: string;
52
+ sliderAlign: StoriesListSliderAlign | "left" | "center" | "right" | "start" | "end";
53
+ };
54
+ sidePadding: number;
55
+ topPadding: number;
56
+ bottomPadding: number;
57
+ bottomMargin: number;
58
+ navigation: {
59
+ speed: number;
60
+ showControls: boolean;
61
+ controlsSize: number;
62
+ controlsBackgroundColor: string;
63
+ controlsColor: string;
64
+ };
65
+ ugcCard: StoriesListUgcCardOptions;
66
+ }>;
67
+
68
+ export type StoriesListCardOptions = RecursivePartial<{
69
+ title: {
70
+ padding: string | number;
71
+ font: string;
72
+ display: boolean;
73
+ textAlign: StoriesListCardTitleTextAlign | "left" | "center" | "right" | "start" | "end";
74
+ position: StoriesListCardTitlePosition | "cardInsideBottom" | "cardOutsideTop" | "cardOutsideBottom";
75
+ lineClamp: number;
76
+ };
77
+ gap: number;
78
+ height: number;
79
+ aspectRatio: number;
80
+ coverQuality: StoriesListCardCoverQuality | "medium" | "high";
81
+ coverLazyLoading: boolean;
82
+ variant: StoriesListCardViewVariant | "circle" | "quad" | "rectangle";
83
+ border: {
84
+ radius: number;
85
+ color: string;
86
+ width: number;
87
+ gap: number;
88
+ gradient: string;
89
+ };
90
+ boxShadow: string;
91
+ dropShadow: string;
92
+ opacity: number;
93
+ mask: {
94
+ color: string;
95
+ linearGradient: {
96
+ direction: string;
97
+ points: Array<string>;
98
+ };
99
+ };
100
+ svgMask: {
101
+ cardMask: string;
102
+ overlayMask: Array<{
103
+ mask: string;
104
+ background: string;
105
+ }>;
106
+ };
107
+ opened: {
108
+ border: {
109
+ radius: number;
110
+ color: string;
111
+ width: number;
112
+ gap: number;
113
+ gradient: string;
114
+ };
115
+ boxShadow: string;
116
+ dropShadow: string;
117
+ opacity: number;
118
+ mask: {
119
+ color: string;
120
+ linearGradient: {
121
+ direction: string;
122
+ points: Array<string>;
123
+ };
124
+ };
125
+ svgMask: {
126
+ cardMask: string;
127
+ overlayMask: Array<{
128
+ mask: string;
129
+ background: string;
130
+ }>;
131
+ };
132
+ };
133
+ }>;
134
+
135
+ export type StoriesListFavoriteCardOptions = RecursivePartial<
136
+ StoriesListCardOptions & {
137
+ title: StoriesListCardOptions["title"] & {
138
+ content: string;
139
+ };
140
+ }
141
+ >;
142
+
143
+ export type StoriesListUgcCardOptions = RecursivePartial<
144
+ Omit<StoriesListCardOptions, "opened"> & {
145
+ title: StoriesListCardOptions["title"] & {
146
+ content: Option<string>;
147
+ };
148
+ image: {
149
+ svgSrc: {
150
+ baseState: string;
151
+ };
152
+ };
153
+ backgroundColor: string;
154
+ }
155
+ >;
@@ -0,0 +1,20 @@
1
+ import { RecursivePartial } from "../global";
2
+ import { CloseButtonPosition } from "./appearanceCommon";
3
+
4
+ export type StoryFavoriteReaderOptions = RecursivePartial<{
5
+ title: {
6
+ content: string;
7
+ font: string;
8
+ color: string;
9
+ backgroundColor: string;
10
+ };
11
+ closeButtonPosition: CloseButtonPosition;
12
+ closeButton: {
13
+ svgSrc: {
14
+ baseState: string;
15
+ };
16
+ };
17
+ headerTopOffset: number;
18
+ bottomOffset: number;
19
+ backgroundColor: string;
20
+ }>;
@@ -0,0 +1,73 @@
1
+ import { CloseButtonPosition } from "./appearanceCommon";
2
+ import { GameReaderOptions } from "./gameReader";
3
+ import { SharePanel } from "./sharePanel"
4
+ import { Nullable, RecursivePartial } from "../global"
5
+
6
+ export declare enum StoryReaderSwipeStyle {
7
+ FLAT = "flat",
8
+ COVER = "cover",
9
+ CUBE = "cube"
10
+ }
11
+
12
+ export type StoryReaderOptions = RecursivePartial<{
13
+ gameReaderOptions: GameReaderOptions;
14
+ closeButtonPosition: CloseButtonPosition | "left" | "right";
15
+ scrollStyle: StoryReaderSwipeStyle | "flat" | "cover" | "cube";
16
+ timelineBlockTopOffset: Nullable<number>;
17
+ actionPanelBottomOffset: Nullable<number>;
18
+ borderRadius: number;
19
+ loader: {
20
+ default: {
21
+ color: string;
22
+ accentColor: string;
23
+ };
24
+ custom: string;
25
+ };
26
+ recycleStoriesList: boolean;
27
+ closeOnLastSlideByTimer: boolean;
28
+ sharePanel: SharePanel<string>;
29
+ commonBackdrop: {
30
+ color: string;
31
+ backdropFilter: string;
32
+ };
33
+ slideBackdrop: {
34
+ opacity: number;
35
+ blur: number;
36
+ linearGradientOverlay: string[];
37
+ };
38
+ faviconApiUrl: string;
39
+ closeButton: {
40
+ svgSrc: {
41
+ baseState: string;
42
+ };
43
+ };
44
+ likeButton: {
45
+ svgSrc: {
46
+ baseState: string;
47
+ activeState: string;
48
+ };
49
+ };
50
+ dislikeButton: {
51
+ svgSrc: {
52
+ baseState: string;
53
+ activeState: string;
54
+ };
55
+ };
56
+ favoriteButton: {
57
+ svgSrc: {
58
+ baseState: string;
59
+ activeState: string;
60
+ };
61
+ };
62
+ muteButton: {
63
+ svgSrc: {
64
+ baseState: string;
65
+ activeState: string;
66
+ };
67
+ };
68
+ shareButton: {
69
+ svgSrc: {
70
+ baseState: string;
71
+ };
72
+ };
73
+ }>;
@@ -0,0 +1,23 @@
1
+ import { AppearanceManager } from "./appearance-manager";
2
+ import { StoryManager, StoryManagerConfig } from "./storyManager";
3
+
4
+ export type RecursivePartial<T> = {
5
+ [P in keyof T]?: T[P] extends object ? RecursivePartial<T[P]> | null : T[P] | null;
6
+ };
7
+
8
+ export type Nullable<T> = T | null;
9
+ export type Optional<T> = T | null;
10
+ export type Option<T> = T | null;
11
+
12
+ export type Dict<K extends string | number | symbol = string, T = any> = Record<K, T>;
13
+
14
+ export type Brand<T, B extends string> = T & { readonly __brand: B };
15
+
16
+ declare global {
17
+ interface Window {
18
+ IAS: {
19
+ StoryManager: { new (config: StoryManagerConfig): StoryManager };
20
+ AppearanceManager: { new (): AppearanceManager };
21
+ };
22
+ }
23
+ }
@@ -0,0 +1,5 @@
1
+ export * from "./appearance-manager";
2
+ export * from "./story-list";
3
+ export * from "./share-page";
4
+ export * from "./storyManager";
5
+ export * from "./publicEvents"
@@ -0,0 +1,104 @@
1
+ export type PublicEvents = {
2
+ сlickOnStory: ClickOnStoryEvent;
3
+ showStory: ShowStoryEvent;
4
+ closeStory: CloseStoryEvent;
5
+ showSlide: ShowSlideEvent;
6
+ clickOnButton: ClickOnButtonEvent;
7
+ likeStory: LikeStoryEvent;
8
+ dislikeStory: DislikeStoryEvent;
9
+ favoriteStory: FavoriteStoryEvent;
10
+ shareStory: ShareStoryEvent;
11
+ shareStoryWithPath: ShareStoryWithPathEvent;
12
+ feedImpression: FeedImpressionEvent;
13
+ visibleAreaUpdated: VisibleAreaUpdatedEvent
14
+ widgetEvent: WidgetEvent
15
+ };
16
+
17
+ export type PublicEventHandler<Event extends keyof PublicEvents> = (event: PublicEvents[Event]) => void;
18
+
19
+ export interface BaseEvent {
20
+ id: number;
21
+ title?: string;
22
+ tags: Array<string>;
23
+ slidesCount?: number;
24
+ feed?: string;
25
+ source?: string;
26
+ filter: Record<string, unknown>;
27
+ ugcPayload: Record<string, unknown>;
28
+ defaultListLength: number;
29
+ favoriteListLength: number;
30
+ }
31
+
32
+ export enum CloseAction {
33
+ closeReaderByCloseBtn = "closeReaderByCloseBtn",
34
+ closeReaderByEscBtn = "closeReaderByEscBtn",
35
+ swipeDown = "swipeDown",
36
+ swipe = "swipe",
37
+ lastSlideClick = "lastSlideClick",
38
+ auto = "auto",
39
+ externalCloseReader = "externalCloseReader"
40
+ }
41
+
42
+ export interface ClickOnStoryEvent extends BaseEvent {
43
+ index: number;
44
+ isDeeplink: boolean;
45
+ url?: string;
46
+ }
47
+
48
+ export interface ShowStoryEvent extends BaseEvent {}
49
+
50
+ export interface CloseStoryEvent extends BaseEvent {
51
+ action: CloseAction;
52
+ }
53
+
54
+ export interface ShowSlideEvent extends BaseEvent {
55
+ index: number;
56
+ payload: string;
57
+ }
58
+
59
+ export interface ClickOnButtonEvent extends BaseEvent {
60
+ index: number;
61
+ url: string;
62
+ }
63
+
64
+ export interface LikeStoryEvent extends BaseEvent {
65
+ value: boolean;
66
+ }
67
+
68
+ export interface DislikeStoryEvent extends BaseEvent {
69
+ value: boolean;
70
+ }
71
+
72
+ export interface FavoriteStoryEvent extends BaseEvent {
73
+ value: boolean;
74
+ }
75
+
76
+ export interface ShareStoryEvent extends BaseEvent {}
77
+
78
+ export interface ShareStoryWithPathEvent extends BaseEvent {
79
+ url: string;
80
+ }
81
+
82
+ export interface ClickOnFavoriteCellEvent {
83
+ feed: string;
84
+ }
85
+
86
+ export interface FeedLoadEvent {
87
+ feed: string;
88
+ stories: Array<{ id: number; title: string; tags: Array<string>; slidesCount: number }>;
89
+ }
90
+
91
+ export interface FeedImpressionEvent {
92
+ feed: string;
93
+ stories: Array<{ id: number; title: string; tags: Array<string>; slidesCount: number }>;
94
+ }
95
+
96
+ export interface VisibleAreaUpdatedEvent {
97
+ feed: string;
98
+ stories: Array<{ id: number; title: string; tags: Array<string>; slidesCount: number }>;
99
+ }
100
+
101
+ export interface WidgetEvent {
102
+ name: string;
103
+ data: any;
104
+ }
@@ -0,0 +1 @@
1
+ export { SharePage, SharePageOptions } from "./sharePage"
@@ -0,0 +1,14 @@
1
+ import { EventEmitter } from "events";
2
+ import { AppearanceManager } from "../appearance-manager";
3
+
4
+ export type SharePageOptions = {
5
+ handleStartLoad?: () => void;
6
+ handleStopLoad?: (result: boolean) => void;
7
+ handleStoryReaderClose?: () => void;
8
+ };
9
+
10
+ export declare class SharePage extends EventEmitter {
11
+ constructor(storyId: number | string, appearanceManager: AppearanceManager, options?: SharePageOptions);
12
+
13
+ closeStoryReader(): void;
14
+ }
@@ -0,0 +1,19 @@
1
+ import { EventEmitter } from "events";
2
+ import { AppearanceManager } from "../appearance-manager";
3
+ import { StoriesListType } from "./storiesListType";
4
+
5
+ export declare class StoriesList extends EventEmitter {
6
+ get type(): StoriesListType;
7
+ get feedSlug(): string;
8
+ get testKey(): string;
9
+ get useUgcCard(): boolean;
10
+
11
+ constructor(
12
+ mountSelector: string,
13
+ appearanceManager: AppearanceManager,
14
+ options: { feed?: string; testKey?: string; useUgcCard?: boolean }
15
+ );
16
+
17
+ reload(options?: { needLoader: boolean }): Promise<void>;
18
+ destroy(): void;
19
+ }
@@ -0,0 +1,19 @@
1
+ import { EventEmitter } from "events";
2
+ import { AppearanceManager } from "../appearance-manager";
3
+ import { StoriesListType } from "./storiesListType";
4
+
5
+ export declare class UGCStoriesList extends EventEmitter {
6
+ get type(): StoriesListType;
7
+ get feedSlug(): string;
8
+ get testKey(): string;
9
+ get useUgcCard(): boolean;
10
+
11
+ constructor(
12
+ mountSelector: string,
13
+ appearanceManager: AppearanceManager,
14
+ options: { filter?: Record<string, any>; testKey?: string; useUgcCard?: boolean }
15
+ );
16
+
17
+ reload(options?: { needLoader: boolean }): Promise<void>;
18
+ destroy(): void;
19
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./StoryList";
2
+ export * from "./storyListLoadStatus";
3
+ export * from "./UGCStoryList";
4
+ export * from "./storiesListType";
@@ -0,0 +1,35 @@
1
+ import { EventEmitter } from "events";
2
+ import { AppearanceManager } from "../appearance-manager";
3
+
4
+ export interface StackedStoryListOptions {
5
+ feed: string;
6
+ }
7
+
8
+ export interface StoryCover {
9
+ feedCoverSrc?: string;
10
+ imageSrc?: string;
11
+ videoSrc?: string;
12
+ backgroundColor?: string;
13
+ }
14
+
15
+ export class StackFeedStory {
16
+ id: number;
17
+ title: string;
18
+ titleColor: string;
19
+ hasAudio: boolean;
20
+ hasSwipeUp: boolean;
21
+ isOpened: boolean;
22
+ cover: StoryCover;
23
+ deeplink?: string;
24
+ gameInstanceId?: string;
25
+ hideInReader: boolean;
26
+ hide_timeline: boolean;
27
+ }
28
+
29
+ export declare class StoriesList extends EventEmitter {
30
+ constructor(appearanceManager: AppearanceManager, options: StackedStoryListOptions);
31
+
32
+ destroy(): void;
33
+ reload(): void;
34
+ showStory(story: StackFeedStory): void;
35
+ }
@@ -0,0 +1,4 @@
1
+ export declare enum StoriesListType {
2
+ DEFAULT,
3
+ UGC
4
+ }