@inappstory/react-sdk 0.0.1
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/LICENSE +22 -0
- package/README.md +19 -0
- package/dist/index.js +197 -0
- package/dist/types/appearance-manager/AppearanceManager.d.ts +38 -0
- package/dist/types/appearance-manager/AppearanceManager.h.d.ts +26 -0
- package/dist/types/appearance-manager/appearanceCommon.d.ts +21 -0
- package/dist/types/appearance-manager/gameReader.ts +33 -0
- package/dist/types/appearance-manager/goodsWidget.ts +39 -0
- package/dist/types/appearance-manager/index.d.ts +8 -0
- package/dist/types/appearance-manager/storiesList.d.ts +129 -0
- package/dist/types/appearance-manager/storyFavoriteReader.ts +20 -0
- package/dist/types/appearance-manager/storyReader.ts +84 -0
- package/dist/types/appearance-manager/utils.d.ts +7 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/story-list/StoryList.d.ts +16 -0
- package/dist/types/story-list/UGCStoryList.d.ts +16 -0
- package/dist/types/story-list/storyListLoadStatus.ts +12 -0
- package/dist/types/story-list/storyListViewModel.d.ts +27 -0
- package/dist/types/story-list/viewModel.d.ts +5 -0
- package/dist/types/story-manager/StoryManager.d.ts +45 -0
- package/dist/types/story-manager/StoryManager.h.d.ts +21 -0
- package/package.json +76 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from "events";
|
|
3
|
+
import { AppearanceCommonOptions } from "./appearanceCommon";
|
|
4
|
+
import { StoriesListOptions } from "./storiesList";
|
|
5
|
+
import { StoryReaderOptions } from "./storyReader";
|
|
6
|
+
import { StoryFavoriteReaderOptions } from "./storyFavoriteReader";
|
|
7
|
+
import { GoodsWidgetOptions } from "./goodsWidget";
|
|
8
|
+
import { GameReaderOptions } from "./gameReader";
|
|
9
|
+
import { OverrideByMediaQuery } from "./AppearanceManager.h";
|
|
10
|
+
|
|
11
|
+
export declare class AppearanceManager extends EventEmitter {
|
|
12
|
+
constructor();
|
|
13
|
+
private _commonOptions;
|
|
14
|
+
setCommonOptions(options: AppearanceCommonOptions, withUpdateEvent?: boolean): AppearanceManager;
|
|
15
|
+
get commonOptions(): AppearanceCommonOptions;
|
|
16
|
+
private _storiesListOptions;
|
|
17
|
+
setStoriesListOptions(options: Partial<StoriesListOptions>, withUpdateEvent?: boolean): AppearanceManager;
|
|
18
|
+
get storiesListOptions(): StoriesListOptions;
|
|
19
|
+
private _storyReaderOptions;
|
|
20
|
+
setStoryReaderOptions(options: Partial<StoryReaderOptions>, withUpdateEvent?: boolean): AppearanceManager;
|
|
21
|
+
get storyReaderOptions(): StoryReaderOptions;
|
|
22
|
+
private _storyFavoriteReaderOptions;
|
|
23
|
+
setStoryFavoriteReaderOptions(options: Partial<StoryFavoriteReaderOptions>, withUpdateEvent?: boolean): AppearanceManager;
|
|
24
|
+
get storyFavoriteReaderOptions(): StoryFavoriteReaderOptions;
|
|
25
|
+
private _goodsWidgetOptions;
|
|
26
|
+
setGoodsWidgetOptions(options: Partial<GoodsWidgetOptions>, withUpdateEvent?: boolean): AppearanceManager;
|
|
27
|
+
get goodsWidgetOptions(): GoodsWidgetOptions;
|
|
28
|
+
private _gameReaderOptions;
|
|
29
|
+
setGameReaderOptions(options: GameReaderOptions, withUpdateEvent?: boolean): AppearanceManager;
|
|
30
|
+
get gameReaderOptions(): GameReaderOptions;
|
|
31
|
+
setOptionsOverrideByMediaQuery(overrideByMediaQueries: OverrideByMediaQuery[]): AppearanceManager;
|
|
32
|
+
private _mqls;
|
|
33
|
+
initMediaQueries(overrideByMediaQueries: OverrideByMediaQuery[]): void;
|
|
34
|
+
private _composeMqlCondition;
|
|
35
|
+
private _composeOptionsOverrideByMediaQuery;
|
|
36
|
+
private removeMediaQueryEventListeners;
|
|
37
|
+
destroy(): void;
|
|
38
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { StoryReaderOptions } from "./storyReader";
|
|
2
|
+
import { GameReaderOptions } from "./gameReader";
|
|
3
|
+
import { AppearanceCommonOptions } from "./appearanceCommon";
|
|
4
|
+
import { StoriesListOptions } from "./storiesList";
|
|
5
|
+
import { StoryFavoriteReaderOptions } from "./storyFavoriteReader";
|
|
6
|
+
import { GoodsWidgetOptions } from "./goodsWidget";
|
|
7
|
+
|
|
8
|
+
export type AppearanceManagerEvents = "updatedCommonOptions" | "updatedStoriesListOptions" | "updatedStoryReaderOptions" | "updatedFavoriteReaderOptions" | "updatedGameReaderOptions" | "updatedGoodsWidgetOptions";
|
|
9
|
+
|
|
10
|
+
export type StoryReaderUpdateComposedOptions = {
|
|
11
|
+
storyReaderOptions: StoryReaderOptions;
|
|
12
|
+
gameReaderOptions: GameReaderOptions;
|
|
13
|
+
appearanceCommon: AppearanceCommonOptions;
|
|
14
|
+
};
|
|
15
|
+
export type AppearanceManagerOptionGroups = {
|
|
16
|
+
commonOptions: AppearanceCommonOptions;
|
|
17
|
+
storiesListOptions: StoriesListOptions;
|
|
18
|
+
storyReaderOptions: StoryReaderOptions;
|
|
19
|
+
storyFavoriteReaderOptions: StoryFavoriteReaderOptions;
|
|
20
|
+
goodsWidgetOptions: GoodsWidgetOptions;
|
|
21
|
+
gameReaderOptions: GameReaderOptions;
|
|
22
|
+
};
|
|
23
|
+
export type OverrideByMediaQuery = Partial<{
|
|
24
|
+
viewportMinSize: number | "sm" | "md" | "lg" | "xl";
|
|
25
|
+
mediaQuery: null | string;
|
|
26
|
+
}> & Partial<AppearanceManagerOptionGroups>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type CloseButtonPosition = "left" | "right"
|
|
2
|
+
|
|
3
|
+
export type AppearanceCommonOptions = {
|
|
4
|
+
hasFavorite?: boolean;
|
|
5
|
+
hasLike?: boolean;
|
|
6
|
+
hasShare?: boolean;
|
|
7
|
+
closeButtonPosition?: CloseButtonPosition;
|
|
8
|
+
loader?: {
|
|
9
|
+
default: {
|
|
10
|
+
color: Optional<string>;
|
|
11
|
+
accentColor: Optional<string>;
|
|
12
|
+
};
|
|
13
|
+
custom: Optional<string>;
|
|
14
|
+
};
|
|
15
|
+
closeButton?: {
|
|
16
|
+
svgSrc: {
|
|
17
|
+
baseState: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
forceDesktopMode?: boolean;
|
|
21
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AppearanceCommonOptions,
|
|
3
|
+
CloseButtonPosition
|
|
4
|
+
} from "./appearanceCommon";
|
|
5
|
+
|
|
6
|
+
export type GameReaderOptions = {
|
|
7
|
+
loader?: {
|
|
8
|
+
default: {
|
|
9
|
+
color: string | null,
|
|
10
|
+
accentColor: string | null,
|
|
11
|
+
},
|
|
12
|
+
custom: string | null
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
closeButtonPosition?: CloseButtonPosition;
|
|
16
|
+
|
|
17
|
+
closeButton?: {
|
|
18
|
+
svgSrc: {
|
|
19
|
+
baseState: string
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
backdropColor?: string
|
|
24
|
+
game?: {
|
|
25
|
+
backdropColor: string
|
|
26
|
+
},
|
|
27
|
+
forceDesktopMode?: AppearanceCommonOptions["forceDesktopMode"]
|
|
28
|
+
forceCheckOrientation?: boolean
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export type OpenGameOptions = Partial<{
|
|
32
|
+
demoMode: boolean;
|
|
33
|
+
}>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export type Goods = {}
|
|
2
|
+
|
|
3
|
+
export type GoodsWidgetRenderingType = "default" | "customCard"
|
|
4
|
+
|
|
5
|
+
export type GoodsWidgetOptions = {
|
|
6
|
+
goodsWidgetRenderingType: GoodsWidgetRenderingType; // DEPRECATED?
|
|
7
|
+
goodsList: GoodsListOptions,
|
|
8
|
+
goodsCard: GoodsCardOptions
|
|
9
|
+
loader: {
|
|
10
|
+
default: {
|
|
11
|
+
color: string,
|
|
12
|
+
accentColor: string,
|
|
13
|
+
},
|
|
14
|
+
custom?: string
|
|
15
|
+
},
|
|
16
|
+
openGoodsWidgetHandler: (goodsList: Goods[]) => Promise<Goods[]>;
|
|
17
|
+
getCardHtml?: (goods: Goods, index: number) => string;
|
|
18
|
+
itemClickHandler?: (goods: Goods) => void;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export type GoodsCardOptions = {
|
|
22
|
+
mainTextColor: string;
|
|
23
|
+
oldPriceTextColor: string;
|
|
24
|
+
imageBackgroundColor: string;
|
|
25
|
+
imageCornerRadius: number;
|
|
26
|
+
titleFont?: string;
|
|
27
|
+
subtitleFont?: string;
|
|
28
|
+
priceFont?: string;
|
|
29
|
+
oldPriceFont?: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export type GoodsListOptions = {
|
|
33
|
+
renderingType: GoodsWidgetRenderingType;
|
|
34
|
+
closeBackgroundColor: string;
|
|
35
|
+
closeImage?: string;
|
|
36
|
+
substrateHeight: number;
|
|
37
|
+
substrateColor: string;
|
|
38
|
+
dimColor: string;
|
|
39
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./appearanceCommon"
|
|
2
|
+
export * from "./AppearanceManager"
|
|
3
|
+
export * from "./AppearanceManager.h"
|
|
4
|
+
export * from "./gameReader"
|
|
5
|
+
export * from "./goodsWidget"
|
|
6
|
+
export * from "./storiesList"
|
|
7
|
+
export * from "./storyFavoriteReader"
|
|
8
|
+
export * from "./storyReader"
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/// <reference path="./utils.d.ts" />
|
|
2
|
+
|
|
3
|
+
export type StoriesListSliderAlign = "center" | "left" | "right"
|
|
4
|
+
|
|
5
|
+
export type StoriesListOptions = {
|
|
6
|
+
direction: "horizontal" | "vertical";
|
|
7
|
+
card: StoriesListCardOptions;
|
|
8
|
+
favoriteCard: StoriesListFavoriteCardOptions;
|
|
9
|
+
layout: {
|
|
10
|
+
height?: number;
|
|
11
|
+
storiesListInnerHeight?: number | null;
|
|
12
|
+
backgroundColor?: string;
|
|
13
|
+
sliderAlign?: StoriesListSliderAlign;
|
|
14
|
+
};
|
|
15
|
+
sidePadding: number;
|
|
16
|
+
topPadding: number;
|
|
17
|
+
bottomPadding: number;
|
|
18
|
+
bottomMargin: number;
|
|
19
|
+
navigation: {
|
|
20
|
+
showControls: boolean;
|
|
21
|
+
controlsSize: number;
|
|
22
|
+
controlsBackgroundColor: string;
|
|
23
|
+
controlsColor: string;
|
|
24
|
+
};
|
|
25
|
+
extraCss?: string;
|
|
26
|
+
handleStoryLinkClick?: (payload: StoriesListClickEvent) => void;
|
|
27
|
+
handleStartLoad?: (loaderContainer: HTMLElement) => void;
|
|
28
|
+
handleStopLoad?: (loaderContainer: HTMLElement) => void;
|
|
29
|
+
ugcCard: StoriesListUgcCardOptions;
|
|
30
|
+
};
|
|
31
|
+
export type StoriesListCardViewVariant = "circle" | "quad" | "rectangle"
|
|
32
|
+
|
|
33
|
+
export type StoriesListCardTitleTextAlign = "left" | "center" | "right"
|
|
34
|
+
|
|
35
|
+
export type StoriesListCardTitlePosition = "cardInsideBottom" | "cardOutsideTop" | "cardOutsideBottom"
|
|
36
|
+
|
|
37
|
+
export type StoriesListCardCoverQuality = "medium" | "high"
|
|
38
|
+
|
|
39
|
+
export type StoriesListCardOptions = Partial<{
|
|
40
|
+
title: Partial<{
|
|
41
|
+
color: string;
|
|
42
|
+
padding: string | number;
|
|
43
|
+
font: string;
|
|
44
|
+
display: boolean;
|
|
45
|
+
textAlign: StoriesListCardTitleTextAlign;
|
|
46
|
+
position: StoriesListCardTitlePosition;
|
|
47
|
+
lineClamp: number;
|
|
48
|
+
}>;
|
|
49
|
+
gap: number;
|
|
50
|
+
height: number;
|
|
51
|
+
aspectRatio: Optional<number>;
|
|
52
|
+
coverQuality: StoriesListCardCoverQuality;
|
|
53
|
+
coverLazyLoading: boolean;
|
|
54
|
+
variant: StoriesListCardViewVariant;
|
|
55
|
+
border: Partial<{
|
|
56
|
+
radius: number;
|
|
57
|
+
color: string;
|
|
58
|
+
width: number;
|
|
59
|
+
gap: number;
|
|
60
|
+
gradient: Optional<string>;
|
|
61
|
+
}>;
|
|
62
|
+
boxShadow: Optional<string>;
|
|
63
|
+
dropShadow: Optional<string>;
|
|
64
|
+
opacity: Optional<number>;
|
|
65
|
+
mask: Partial<{
|
|
66
|
+
color: Optional<string>;
|
|
67
|
+
linearGradient?: Optional<{
|
|
68
|
+
direction: string;
|
|
69
|
+
points: Array<string>;
|
|
70
|
+
}>;
|
|
71
|
+
}>;
|
|
72
|
+
svgMask: Partial<Optional<{
|
|
73
|
+
cardMask: Optional<string>;
|
|
74
|
+
overlayMask: Array<{
|
|
75
|
+
mask: Optional<string>;
|
|
76
|
+
background: Optional<string>;
|
|
77
|
+
}>;
|
|
78
|
+
}>>;
|
|
79
|
+
opened: Partial<{
|
|
80
|
+
border: Partial<{
|
|
81
|
+
radius: Optional<number>;
|
|
82
|
+
color: Optional<string>;
|
|
83
|
+
width: Optional<number>;
|
|
84
|
+
gap: Optional<number>;
|
|
85
|
+
gradient: Optional<string>;
|
|
86
|
+
}>;
|
|
87
|
+
boxShadow: Optional<string>;
|
|
88
|
+
dropShadow: Optional<string>;
|
|
89
|
+
opacity: Optional<number>;
|
|
90
|
+
mask: {
|
|
91
|
+
color: Optional<string>;
|
|
92
|
+
linearGradient: Optional<{
|
|
93
|
+
direction: string;
|
|
94
|
+
points: Array<string>;
|
|
95
|
+
}>;
|
|
96
|
+
};
|
|
97
|
+
svgMask: Optional<{
|
|
98
|
+
cardMask: Optional<string>;
|
|
99
|
+
overlayMask: Optional<Array<{
|
|
100
|
+
mask: Optional<string>;
|
|
101
|
+
background: Optional<string>;
|
|
102
|
+
}>>;
|
|
103
|
+
}>;
|
|
104
|
+
}>;
|
|
105
|
+
}>;
|
|
106
|
+
export type StoriesListFavoriteCardOptions = Partial<StoriesListCardOptions & {
|
|
107
|
+
title: StoriesListCardOptions["title"] & {
|
|
108
|
+
content: string;
|
|
109
|
+
};
|
|
110
|
+
}>;
|
|
111
|
+
|
|
112
|
+
export type StoriesListUgcCardOptions = Partial<Omit<StoriesListCardOptions, "opened"> & {
|
|
113
|
+
title: Partial<StoriesListCardOptions["title"]> & {
|
|
114
|
+
content?: Option<string>;
|
|
115
|
+
};
|
|
116
|
+
image: {
|
|
117
|
+
svgSrc: {
|
|
118
|
+
baseState: string;
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
backgroundColor: string;
|
|
122
|
+
}>;
|
|
123
|
+
export type StoriesListClickEvent = {
|
|
124
|
+
id: number;
|
|
125
|
+
index: number;
|
|
126
|
+
isDeeplink: boolean;
|
|
127
|
+
url: string | undefined;
|
|
128
|
+
};
|
|
129
|
+
export type StoriesListEvents = "startLoad" | "endLoad"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CloseButtonPosition } from "./appearanceCommon";
|
|
2
|
+
|
|
3
|
+
export type StoryFavoriteReaderOptions = Partial<{
|
|
4
|
+
title: Partial<{
|
|
5
|
+
content: string;
|
|
6
|
+
font: string;
|
|
7
|
+
color: string;
|
|
8
|
+
backgroundColor: string;
|
|
9
|
+
}>,
|
|
10
|
+
extraCss: string;
|
|
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,84 @@
|
|
|
1
|
+
import { CloseButtonPosition } from "./appearanceCommon";
|
|
2
|
+
import { GameReaderOptions } from "./gameReader";
|
|
3
|
+
/// <reference path="../global.d.ts" />
|
|
4
|
+
|
|
5
|
+
export type StoryReaderSwipeStyle = "flat" | "cover" | "cube"
|
|
6
|
+
|
|
7
|
+
export type SharePanelTargets = "vk" | "ok" | "facebook" | "twitter" | "linkedin" | "telegram"
|
|
8
|
+
|
|
9
|
+
export type StoryReaderOptions = {
|
|
10
|
+
gameReaderOptions: GameReaderOptions,
|
|
11
|
+
closeButtonPosition?: CloseButtonPosition,
|
|
12
|
+
scrollStyle: StoryReaderSwipeStyle,
|
|
13
|
+
timelineBlockTopOffset: Nullable<number>,
|
|
14
|
+
actionPanelBottomOffset: Nullable<number>,
|
|
15
|
+
borderRadius: Optional<number>
|
|
16
|
+
loader?: {
|
|
17
|
+
default: {
|
|
18
|
+
color: Optional<string>,
|
|
19
|
+
accentColor: Optional<string>,
|
|
20
|
+
},
|
|
21
|
+
custom: Optional<string>
|
|
22
|
+
},
|
|
23
|
+
recycleStoriesList?: boolean,
|
|
24
|
+
closeOnLastSlideByTimer?: boolean,
|
|
25
|
+
sharePanel: {
|
|
26
|
+
targets: Array<SharePanelTargets>
|
|
27
|
+
copyButton?: {
|
|
28
|
+
svgSrc: {
|
|
29
|
+
baseState: string,
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
downloadButton?: {
|
|
33
|
+
svgSrc: {
|
|
34
|
+
baseState: string,
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
commonBackdrop?: {
|
|
39
|
+
color: Option<string>, // colorValue
|
|
40
|
+
backdropFilter: Option<string> // null or blur(3px)
|
|
41
|
+
},
|
|
42
|
+
slideBackdrop?: {
|
|
43
|
+
opacity: number, // .56
|
|
44
|
+
blur: number, // 30
|
|
45
|
+
linearGradientOverlay: Array<string> // ["rgba(0, 0, 0, 0.1) 0%", "rgba(0, 0, 0, 0.9) 100%"]
|
|
46
|
+
},
|
|
47
|
+
faviconApiUrl: string,
|
|
48
|
+
closeButton?: {
|
|
49
|
+
svgSrc: {
|
|
50
|
+
baseState: string
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
likeButton: {
|
|
54
|
+
svgSrc: {
|
|
55
|
+
baseState: string,
|
|
56
|
+
activeState: string,
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
dislikeButton: {
|
|
60
|
+
svgSrc: {
|
|
61
|
+
baseState: string,
|
|
62
|
+
activeState: string,
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
favoriteButton: {
|
|
66
|
+
svgSrc: {
|
|
67
|
+
baseState: string,
|
|
68
|
+
activeState: string,
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
muteButton: {
|
|
72
|
+
svgSrc: {
|
|
73
|
+
baseState: string,
|
|
74
|
+
activeState: string,
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
shareButton: {
|
|
78
|
+
svgSrc: {
|
|
79
|
+
baseState: string,
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "./appearance-manager";
|
|
2
|
+
export { StoryManager } from "./story-manager/StoryManager";
|
|
3
|
+
export { StoryListMain as StoryList } from "./story-list/StoryList";
|
|
4
|
+
export { UGCStoryListMain as UGCStoryList } from "./story-list/UGCStoryList";
|
|
5
|
+
export { StoryListViewModel } from "./story-list/storyListViewModel";
|
|
6
|
+
export { StoryListLoadStatus } from "./story-list/storyListLoadStatus";
|
|
7
|
+
export { StoryManagerConfig } from "./story-manager/StoryManager.h";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AppearanceManager, StoryManager } from "..";
|
|
2
|
+
import { StoryListLoadStatus } from "./storyListLoadStatus";
|
|
3
|
+
import { StoryListViewModel } from "./storyListViewModel.d";
|
|
4
|
+
|
|
5
|
+
interface StoryListProps {
|
|
6
|
+
storyManager: StoryManager;
|
|
7
|
+
appearanceManager: AppearanceManager;
|
|
8
|
+
feedSlug: string;
|
|
9
|
+
testKey?: string;
|
|
10
|
+
ugcCardClickHandler?: () => void;
|
|
11
|
+
useUgcCard?: boolean;
|
|
12
|
+
onLoadStart?: () => void;
|
|
13
|
+
onLoadEnd?: (storyListLoadStatus: StoryListLoadStatus) => void;
|
|
14
|
+
viewModelExporter?: (storyListViewModel: StoryListViewModel) => void;
|
|
15
|
+
}
|
|
16
|
+
export declare const StoryListMain: ({ storyManager, appearanceManager, feedSlug, useUgcCard, ugcCardClickHandler, viewModelExporter, onLoadStart, onLoadEnd }: StoryListProps) => JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AppearanceManager, StoryManager } from "..";
|
|
2
|
+
import { StoryListLoadStatus } from "./storyListLoadStatus";
|
|
3
|
+
import { StoryListViewModel } from "./storyListViewModel.d";
|
|
4
|
+
|
|
5
|
+
interface UGCStoryListProps {
|
|
6
|
+
storyManager: StoryManager;
|
|
7
|
+
appearanceManager: AppearanceManager;
|
|
8
|
+
testKey?: string;
|
|
9
|
+
ugcCardClickHandler?: () => void;
|
|
10
|
+
useUgcCard?: boolean;
|
|
11
|
+
filter?: Record<string, any>;
|
|
12
|
+
onLoadStart?: () => void;
|
|
13
|
+
onLoadEnd?: (storyListLoadStatus: StoryListLoadStatus) => void;
|
|
14
|
+
viewModelExporter?: (storyListViewModel: StoryListViewModel) => void;
|
|
15
|
+
}
|
|
16
|
+
export declare const UGCStoryListMain: ({ storyManager, appearanceManager, useUgcCard, filter, ugcCardClickHandler, viewModelExporter, onLoadStart, onLoadEnd }: UGCStoryListProps) => JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface StoryListLoadStatus {
|
|
2
|
+
feed: string | number,
|
|
3
|
+
filter: Record<string, any> | null,
|
|
4
|
+
defaultListLength: number,
|
|
5
|
+
favoriteListLength: number,
|
|
6
|
+
success: boolean,
|
|
7
|
+
error: {
|
|
8
|
+
name: string,
|
|
9
|
+
networkStatus: number,
|
|
10
|
+
networkMessage: string
|
|
11
|
+
} | null
|
|
12
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { StoriesListOptions } from "../appearance-manager/storiesList";
|
|
2
|
+
import { ViewModel } from "./viewModel";
|
|
3
|
+
|
|
4
|
+
export declare class StoryListViewModel extends ViewModel {
|
|
5
|
+
stories: any[];
|
|
6
|
+
get isLoading(): boolean;
|
|
7
|
+
set modeDesktop(value: boolean);
|
|
8
|
+
get modeDesktop(): boolean;
|
|
9
|
+
set session(session: any | null);
|
|
10
|
+
get session(): any | null;
|
|
11
|
+
favoriteStoryImages: {
|
|
12
|
+
src: string | undefined;
|
|
13
|
+
color: string;
|
|
14
|
+
}[];
|
|
15
|
+
constructor();
|
|
16
|
+
get cardOptions(): any;
|
|
17
|
+
get options(): StoriesListOptions;
|
|
18
|
+
get isTitleCardInner(): boolean;
|
|
19
|
+
get isTitleCardOutsideTop(): boolean;
|
|
20
|
+
get isTitleCardOutsideBottom(): boolean;
|
|
21
|
+
get cardAspectRatio(): number;
|
|
22
|
+
onStoryClick(story: any, index: number): void;
|
|
23
|
+
destroy(): void;
|
|
24
|
+
getImageSrcByStory(story: any): string | undefined;
|
|
25
|
+
setOptions(options: StoriesListOptions): void;
|
|
26
|
+
reload(): void;
|
|
27
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from "events";
|
|
3
|
+
import { AppearanceManager, StoryListViewModel, StoryManagerConfig } from "..";
|
|
4
|
+
|
|
5
|
+
export type IdentityFields = {
|
|
6
|
+
feedSlug: string;
|
|
7
|
+
filter?: Record<string, any>;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export declare class StoryManager extends EventEmitter {
|
|
11
|
+
static instance: StoryManager;
|
|
12
|
+
constructor(storyManagerConfig: StoryManagerConfig);
|
|
13
|
+
destroy(): void;
|
|
14
|
+
set storyLinkClickHandler(callback: Function);
|
|
15
|
+
set openGoodsWidgetHandler(callback: (skuList: Array<Dict>) => Promise<Array<Dict>>);
|
|
16
|
+
get openGoodsWidgetHandler(): (skuList: Array<Dict>) => Promise<Array<Dict>>;
|
|
17
|
+
static getInstance(): StoryManager | null;
|
|
18
|
+
createStoryListViewModel({ appearanceManager, ...params }: {
|
|
19
|
+
identityFields: IdentityFields;
|
|
20
|
+
appearanceManager: AppearanceManager;
|
|
21
|
+
useUgcCard: boolean;
|
|
22
|
+
ugcCardClickHandler?: () => void;
|
|
23
|
+
}): StoryListViewModel;
|
|
24
|
+
setTags(tags: Array<string>): void;
|
|
25
|
+
setUserId(userId: string | number): void;
|
|
26
|
+
setLang(lang: "ru" | "en"): void;
|
|
27
|
+
setPlaceholders(placeholders: Dict<string, string>): void;
|
|
28
|
+
setImagePlaceholders(imagePlaceholders: Dict<string, string>): void;
|
|
29
|
+
showOnboardingStories(appearanceManager: AppearanceManager, options?: {
|
|
30
|
+
feed?: Option<string>;
|
|
31
|
+
customTags?: Array<string>;
|
|
32
|
+
limit?: Option<number>;
|
|
33
|
+
}): Promise<boolean>;
|
|
34
|
+
showStory(id: number | string, appearanceManager: AppearanceManager, ref?: string): Promise<boolean>;
|
|
35
|
+
openGame(gameInstanceId: string, appearanceManager: AppearanceManager, gameOptions?: { demoMode?: boolean }): Promise<void>;
|
|
36
|
+
closeGame(): Promise<boolean>;
|
|
37
|
+
closeStoryReader(): Promise<false | undefined>;
|
|
38
|
+
closeGoodsWidget(): void;
|
|
39
|
+
onBeforeStoryReaderOpen: Option<() => void>;
|
|
40
|
+
onBeforeFavoriteReaderOpen: Option<() => void>;
|
|
41
|
+
onStoryReaderClosed: Option<() => void>;
|
|
42
|
+
onFavoriteReaderClosed: Option<() => void>;
|
|
43
|
+
get sdkVersionName(): string;
|
|
44
|
+
get sdkVersionCode(): number;
|
|
45
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type StoryManagerConfig = {
|
|
2
|
+
appPackageId?: string;
|
|
3
|
+
apiKey: string;
|
|
4
|
+
userId?: Optional<string | number>;
|
|
5
|
+
tags?: Optional<Array<string>>;
|
|
6
|
+
placeholders?: Optional<Dict<string, string>>;
|
|
7
|
+
imagePlaceholders?: Optional<Dict<string, string>>;
|
|
8
|
+
lang?: Optional<"ru" | "en">;
|
|
9
|
+
nonce?: string;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export type UgcEditorConfig = {
|
|
13
|
+
sessionId: string;
|
|
14
|
+
apiKey: string;
|
|
15
|
+
editor: Record<any, any>;
|
|
16
|
+
sdkVersion: string;
|
|
17
|
+
appPackageId?: string;
|
|
18
|
+
deviceId: string;
|
|
19
|
+
userId?: string;
|
|
20
|
+
lang: string;
|
|
21
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@inappstory/react-sdk",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "React SDK",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/types/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"stories",
|
|
13
|
+
"stories SDK",
|
|
14
|
+
"InAppStory"
|
|
15
|
+
],
|
|
16
|
+
"author": "Inappstory",
|
|
17
|
+
"maintainers": [
|
|
18
|
+
{
|
|
19
|
+
"name": "Inappstory",
|
|
20
|
+
"email": "dev@inappstory.com"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"homepage": "https://inappstory.com",
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "git",
|
|
26
|
+
"url": "git+https://github.com/inappstory/react-web-sdk.git"
|
|
27
|
+
},
|
|
28
|
+
"bugs": "https://github.com/inappstory/react-web-sdk/issues",
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@emotion/cache": "^11.11.0",
|
|
31
|
+
"@emotion/react": "^11.11.1",
|
|
32
|
+
"@emotion/styled": "^11.11.0",
|
|
33
|
+
"array.prototype.find": "^2.1.1",
|
|
34
|
+
"bowser": "^2.4.0",
|
|
35
|
+
"build-url": "^1.3.3",
|
|
36
|
+
"classlist-polyfill": "^1.2.0",
|
|
37
|
+
"classnames": "^2.5.1",
|
|
38
|
+
"config": "^2.0.2",
|
|
39
|
+
"core-js": "^3.25.5",
|
|
40
|
+
"css-font-parser": "^2.0.0",
|
|
41
|
+
"effector": "^22.1.2",
|
|
42
|
+
"effector-react": "^22.0.4",
|
|
43
|
+
"element-closest-polyfill": "^1.0.2",
|
|
44
|
+
"es6-object-assign": "^1.1.0",
|
|
45
|
+
"es6-promise": "^4.2.8",
|
|
46
|
+
"lodash": "^4.17.21",
|
|
47
|
+
"lodash-es": "^4.17.14",
|
|
48
|
+
"normalize.css": "^8.0.1",
|
|
49
|
+
"parse-css-sides": "^3.0.1",
|
|
50
|
+
"regenerator-runtime": "^0.13.7",
|
|
51
|
+
"ts-node": "^10.9.2",
|
|
52
|
+
"uuid": "^8.1.0"
|
|
53
|
+
},
|
|
54
|
+
"peerDependencies": {
|
|
55
|
+
"react": ">=17.0.2",
|
|
56
|
+
"react-dom": ">=17.0.2"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {},
|
|
59
|
+
"scripts": {
|
|
60
|
+
"build": "set NODE_OPTIONS=--openssl-legacy-provider && webpack -c config/webpack/prod.js",
|
|
61
|
+
"build:types": "tsc --project ./tsconfig.build.json && tsc-alias --debug -p ./tsconfig.build.json",
|
|
62
|
+
"analyze": "webpack --analyze -c config/webpack/analyze.js",
|
|
63
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
64
|
+
"prettier": "prettier src --write",
|
|
65
|
+
"prettier:check": "prettier src --check",
|
|
66
|
+
"postbuild": "cp -r ./src/types-new ./dist/types"
|
|
67
|
+
},
|
|
68
|
+
"browserslist": [
|
|
69
|
+
"Android >= 5",
|
|
70
|
+
"IOS >= 11",
|
|
71
|
+
"Safari >= 11",
|
|
72
|
+
"Chrome >= 49",
|
|
73
|
+
"Firefox >= 31",
|
|
74
|
+
"Samsung >= 5"
|
|
75
|
+
]
|
|
76
|
+
}
|