├── src ├── appv2 │ ├── .watchmanconfig │ ├── .gitattributes │ ├── app.json │ ├── .npmrc │ ├── android │ │ ├── app │ │ │ ├── debug.keystore │ │ │ ├── src │ │ │ │ ├── main │ │ │ │ │ ├── res │ │ │ │ │ │ ├── values │ │ │ │ │ │ │ ├── strings.xml │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ │ │ └── mipmap-xxxhdpi │ │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ │ └── java │ │ │ │ │ │ └── com │ │ │ │ │ │ └── trpg │ │ │ │ │ │ └── MainActivity.java │ │ │ │ └── debug │ │ │ │ │ └── AndroidManifest.xml │ │ │ └── proguard-rules.pro │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ └── settings.gradle │ ├── ios │ │ └── trpg │ │ │ ├── Images.xcassets │ │ │ └── Contents.json │ │ │ ├── AppDelegate.h │ │ │ └── main.m │ ├── .buckconfig │ ├── .eslintrc.js │ ├── babel.config.js │ ├── index.js │ ├── src │ │ ├── screens │ │ │ ├── HomeScreen.tsx │ │ │ ├── NavbarScreen.tsx │ │ │ └── RightPanelScreen.tsx │ │ └── __tests__ │ │ │ └── App-test.tsx │ ├── build │ │ └── metro │ │ │ └── spec-modules.js │ ├── tsconfig.json │ └── metro.config.js ├── web │ ├── assets │ │ ├── lib │ │ │ ├── .gitkeep │ │ │ └── manifest.json │ │ ├── img │ │ │ ├── bg.jpg │ │ │ ├── dice.png │ │ │ ├── actor.jpeg │ │ │ ├── favicon.ico │ │ │ ├── gugugu1.png │ │ │ ├── checkbox.png │ │ │ ├── file │ │ │ │ ├── pdf.png │ │ │ │ ├── pic.png │ │ │ │ ├── ppt.png │ │ │ │ ├── txt.png │ │ │ │ ├── word.png │ │ │ │ ├── default.png │ │ │ │ └── excel.png │ │ │ ├── img_fail.png │ │ │ ├── logo@1024.png │ │ │ ├── logo@192.png │ │ │ ├── logo@512.png │ │ │ └── system_notice.png │ │ └── fonts │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.ttf │ │ │ ├── iconfont.woff │ │ │ └── iconfont.woff2 │ ├── components │ │ ├── chatBox │ │ │ ├── README.md │ │ │ ├── ChatSendBox │ │ │ │ ├── index.less │ │ │ │ └── ChatSendBoxContext.tsx │ │ │ └── style.ts │ │ ├── editor │ │ │ ├── render │ │ │ │ └── types.ts │ │ │ ├── README.md │ │ │ ├── utils │ │ │ │ ├── serialize │ │ │ │ │ ├── plaintext.ts │ │ │ │ │ └── __tests__ │ │ │ │ │ │ └── plaintext.spec.ts │ │ │ │ └── __tests__ │ │ │ │ │ └── checkMention.spec.ts │ │ │ ├── context │ │ │ │ └── EditorMentionListContext.tsx │ │ │ ├── plugins │ │ │ │ ├── withImages.ts │ │ │ │ └── withMentions.ts │ │ │ ├── changes │ │ │ │ ├── insertImage.ts │ │ │ │ └── insertMention.ts │ │ │ ├── __tests__ │ │ │ │ └── utils.tsx │ │ │ ├── instance.ts │ │ │ └── hooks │ │ │ │ └── useEditorRender.tsx │ │ ├── messageTypes │ │ │ ├── card │ │ │ │ ├── media │ │ │ │ │ └── AudioPlayer.less │ │ │ │ ├── style.less │ │ │ │ └── DefaultCard.tsx │ │ │ ├── addons │ │ │ │ ├── MsgOperations.less │ │ │ │ ├── MsgRevoke.tsx │ │ │ │ └── MsgLoading.tsx │ │ │ ├── Tip.tsx │ │ │ ├── bbcode │ │ │ │ ├── PlainText.tsx │ │ │ │ ├── __all__.ts │ │ │ │ └── UrlTag.tsx │ │ │ ├── Loading.tsx │ │ │ └── __all__.ts │ │ ├── NoteEditor.scss │ │ ├── portal │ │ │ ├── context.ts │ │ │ └── PortalRender.tsx │ │ ├── WebFastForm │ │ │ ├── utils.ts │ │ │ └── __tests__ │ │ │ │ └── utils.spec.ts │ │ ├── ImageViewer.scss │ │ ├── IsDeveloping.scss │ │ ├── Spin.tsx │ │ ├── IsDeveloping.tsx │ │ ├── __tests__ │ │ │ ├── DeprecatedComponent.spec.tsx │ │ │ ├── HTML.spec.tsx │ │ │ └── __snapshots__ │ │ │ │ ├── HTML.spec.tsx.snap │ │ │ │ └── DeprecatedComponent.spec.tsx.snap │ │ ├── UserName.tsx │ │ ├── DevContainer.tsx │ │ ├── ShowInMobile.tsx │ │ ├── HiddenInMobile.tsx │ │ ├── DisplayForAlphaUser.tsx │ │ ├── DeprecatedComponent.tsx │ │ ├── electron │ │ │ └── TitleToolbar.scss │ │ ├── LoadingScreen.scss │ │ ├── ColorTag.tsx │ │ ├── Iconfont.tsx │ │ ├── modals │ │ │ └── ChangePassword.scss │ │ ├── Spinner.tsx │ │ ├── HTML.tsx │ │ ├── Logo.tsx │ │ ├── TLoadable.tsx │ │ └── Spinner.less │ ├── routes │ │ ├── README.md │ │ ├── Entry │ │ │ └── style.tsx │ │ ├── Main │ │ │ ├── Content │ │ │ │ ├── style.tsx │ │ │ │ ├── Group │ │ │ │ │ └── __tests__ │ │ │ │ │ │ ├── utils.spec.ts │ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ └── utils.spec.ts.snap │ │ │ │ └── SidebarHeader.tsx │ │ │ └── GroupSelectedContext.tsx │ │ ├── DarkMode.tsx │ │ └── Launch.tsx │ ├── typings.d.ts │ ├── yarn.lock │ ├── reg │ │ ├── regMessageCard.ts │ │ ├── regGroupInfoMenu.ts │ │ ├── regSettingViewMenu.ts │ │ ├── regPersonalPanel.ts │ │ ├── regMsgSenderPopover.ts │ │ ├── regSettingAccount.ts │ │ └── regGroupPanelAction.ts │ ├── grey.less │ ├── hooks │ │ ├── useIsMobile.ts │ │ ├── useUpdateRef.ts │ │ └── useGlobalKeyDown.ts │ ├── utils │ │ ├── url-helper.ts │ │ ├── rtc-helper.ts │ │ ├── request.ts │ │ ├── msg-helper.ts │ │ ├── portal.tsx │ │ ├── hot-key.ts │ │ └── error.ts │ ├── containers │ │ └── ErrorBoundary.scss │ ├── debug.ts │ └── package.json ├── mini-program │ ├── src │ │ ├── app.less │ │ ├── pages │ │ │ ├── index │ │ │ │ ├── index.less │ │ │ │ └── index.config.ts │ │ │ ├── login │ │ │ │ ├── index.less │ │ │ │ └── index.config.ts │ │ │ ├── me │ │ │ │ ├── index.config.ts │ │ │ │ └── index.less │ │ │ ├── recruitCreate │ │ │ │ ├── index.config.ts │ │ │ │ └── index.less │ │ │ └── recruitDetail │ │ │ │ ├── index.config.ts │ │ │ │ └── index.less │ │ ├── resource │ │ │ ├── me.png │ │ │ └── home.png │ │ ├── slices │ │ │ └── index.ts │ │ ├── components │ │ │ ├── Loading.tsx │ │ │ └── PageView.tsx │ │ └── hooks │ │ │ ├── useTaroAuthCheck.ts │ │ │ └── useTaroToken.ts │ ├── .npmrc │ ├── .gitignore │ ├── config │ │ ├── dev.js │ │ └── prod.js │ ├── .eslintrc.js │ ├── .editorconfig │ ├── babel.config.js │ └── project.qq.json ├── plugins │ ├── netease-music │ │ ├── src │ │ │ ├── index.ts │ │ │ ├── typings.d.ts │ │ │ ├── config.ts │ │ │ └── context │ │ │ │ └── NeteaseUserinfoContext.ts │ │ ├── package.json │ │ ├── tsconfig.json │ │ └── i18n │ │ │ └── zh-CN │ │ │ └── translation.json │ ├── trpg │ │ ├── src │ │ │ ├── index.ts │ │ │ ├── redux │ │ │ │ └── inject.ts │ │ │ └── model │ │ │ │ └── actor.ts │ │ ├── package.json │ │ └── tsconfig.json │ ├── README.md │ └── tsconfig.json ├── app │ ├── app.json │ ├── android │ │ ├── app │ │ │ ├── version.properties │ │ │ ├── debug.keystore │ │ │ └── src │ │ │ │ ├── main │ │ │ │ ├── assets │ │ │ │ │ └── fonts │ │ │ │ │ │ ├── antfill.ttf │ │ │ │ │ │ ├── iconfont.ttf │ │ │ │ │ │ └── antoutline.ttf │ │ │ │ └── res │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ │ └── values │ │ │ │ │ ├── styles.xml │ │ │ │ │ └── strings.xml │ │ │ │ └── debug │ │ │ │ └── AndroidManifest.xml │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ └── keystores │ │ │ ├── debug.keystore.properties │ │ │ └── BUCK │ ├── .npmrc │ ├── src │ │ ├── assets │ │ │ └── img │ │ │ │ ├── close.png │ │ │ │ ├── link.png │ │ │ │ ├── file │ │ │ │ ├── pdf.png │ │ │ │ ├── pic.png │ │ │ │ ├── ppt.png │ │ │ │ ├── txt.png │ │ │ │ ├── excel.png │ │ │ │ ├── word.png │ │ │ │ └── default.png │ │ │ │ ├── gugugu1.png │ │ │ │ ├── trpg_logo.png │ │ │ │ ├── minus-cycle-o.png │ │ │ │ ├── system_notice.png │ │ │ │ └── oauth │ │ │ │ └── qqconnect.png │ │ ├── components │ │ │ ├── TApi │ │ │ │ └── index.ts │ │ │ ├── SpaceFull.tsx │ │ │ ├── messageTypes │ │ │ │ ├── bbcode │ │ │ │ │ ├── PlainText.tsx │ │ │ │ │ ├── UrlTag.tsx │ │ │ │ │ ├── __all__.ts │ │ │ │ │ └── AtTag.tsx │ │ │ │ ├── Tip.tsx │ │ │ │ ├── card │ │ │ │ │ └── DefaultCard.tsx │ │ │ │ └── __all__.ts │ │ │ ├── UserAvatar.tsx │ │ │ ├── TComponent │ │ │ │ ├── TRefreshControl.tsx │ │ │ │ ├── TInput.tsx │ │ │ │ ├── index.ts │ │ │ │ └── TIcon.tsx │ │ │ ├── UserName.tsx │ │ │ ├── popover │ │ │ │ └── __shared__.tsx │ │ │ ├── DevContainer.tsx │ │ │ └── HTML.tsx │ │ ├── navigate │ │ │ ├── actions.ts │ │ │ └── global.ts │ │ ├── hooks │ │ │ └── useTRPGNavigation.ts │ │ ├── screens │ │ │ ├── ChatScreen │ │ │ │ └── Provider.tsx │ │ │ └── GroupRule.tsx │ │ ├── native │ │ │ └── trpg.ts │ │ ├── types │ │ │ └── navigation.ts │ │ └── utils │ │ │ └── apputils.js │ ├── ios │ │ └── trpg │ │ │ ├── Images.xcassets │ │ │ ├── Contents.json │ │ │ ├── logo@1024.png │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── logo29.png │ │ │ │ ├── logo40.png │ │ │ │ ├── logo57.png │ │ │ │ ├── logo60.png │ │ │ │ ├── logo29@2x.png │ │ │ │ ├── logo29@3x.png │ │ │ │ ├── logo40@2x.png │ │ │ │ ├── logo40@3x.png │ │ │ │ ├── logo57@2x.png │ │ │ │ ├── logo60@2x.png │ │ │ │ └── logo60@3x.png │ │ │ └── iconfont.dataset │ │ │ │ ├── iconfont.ttf │ │ │ │ └── Contents.json │ │ │ ├── AppDelegate.h │ │ │ └── main.m │ ├── .gitignore │ ├── sentry.md │ ├── test │ │ ├── components │ │ │ ├── Test.tsx │ │ │ └── app.spec.tsx │ │ └── setup.ts │ ├── build │ │ ├── bundle.sh │ │ ├── copy-iconfont.sh │ │ ├── metro │ │ │ ├── spec-modules.js │ │ │ └── build-version.js │ │ └── utils │ │ │ └── get-local-ip.js │ └── babel.config.js ├── playground │ ├── helper.ts │ ├── .npmrc │ ├── editor │ │ ├── advanced-editor │ │ │ ├── data │ │ │ │ ├── README.md │ │ │ │ ├── hack-layout.xml │ │ │ │ ├── dnd5e │ │ │ │ │ ├── README.md │ │ │ │ │ └── level.js │ │ │ │ └── .prettierrc.json │ │ │ └── example │ │ │ │ └── xml │ │ │ │ ├── tabs.xml │ │ │ │ ├── simple.xml │ │ │ │ ├── var.xml │ │ │ │ └── __tests__ │ │ │ │ ├── dnd5e.spec.tsx │ │ │ │ ├── simple.spec.tsx │ │ │ │ ├── ace-evolution.spec.tsx │ │ │ │ └── wuxian-simple.spec.tsx │ │ └── layout-editor │ │ │ ├── index.tsx │ │ │ ├── Previewer.tsx │ │ │ └── cups │ │ │ └── components │ │ │ ├── BaseAttr.tsx │ │ │ ├── Divider.tsx │ │ │ └── Row.tsx │ ├── index.tsx │ ├── index.less │ └── package.json ├── shared │ ├── types │ │ ├── chat.ts │ │ ├── portal.ts │ │ ├── query.ts │ │ ├── group.ts │ │ ├── panel.ts │ │ └── player.ts │ ├── utils │ │ ├── error.ts │ │ ├── animated-scroll-to.ts │ │ ├── ui.ts │ │ ├── __tests__ │ │ │ ├── theme.spec.ts │ │ │ ├── array-helper.spec.ts │ │ │ ├── url-helper.spec.ts │ │ │ └── json-helper.spec.ts │ │ ├── common.ts │ │ ├── url-helper.ts │ │ ├── api-helper.ts │ │ ├── color-helper.ts │ │ ├── image-uploader.ts │ │ ├── array-helper.ts │ │ └── uuid.ts │ ├── model │ │ ├── chat.ts │ │ ├── note.ts │ │ └── chat-emotion.ts │ ├── editor │ │ └── README.md │ ├── i18n │ │ ├── __internal__ │ │ │ └── __scan__.ts │ │ └── __mocks__ │ │ │ └── index.ts │ ├── components │ │ ├── web │ │ │ └── SplitPane │ │ │ │ └── index.tsx │ │ ├── panel │ │ │ ├── type.ts │ │ │ └── reg.ts │ │ ├── layout │ │ │ ├── tags │ │ │ │ ├── type.ts │ │ │ │ ├── Checkbox │ │ │ │ │ ├── shared.ts │ │ │ │ │ └── detail.tsx │ │ │ │ ├── RollBtn │ │ │ │ │ └── detail.tsx │ │ │ │ ├── BaseInfo │ │ │ │ │ └── shared.tsx │ │ │ │ ├── Template │ │ │ │ │ └── shared.tsx │ │ │ │ ├── BaseAttr │ │ │ │ │ └── shared.tsx │ │ │ │ └── Select │ │ │ │ │ └── WarningFlag.tsx │ │ │ ├── types.ts │ │ │ ├── __tests__ │ │ │ │ └── utils.tsx │ │ │ ├── parser │ │ │ │ ├── xml-parser.ts │ │ │ │ └── key.ts │ │ │ └── context │ │ │ │ └── LayoutWidthContext.tsx │ │ ├── portal │ │ │ ├── index.ts │ │ │ ├── README.md │ │ │ └── context.ts │ │ ├── bbcode │ │ │ ├── utils.ts │ │ │ ├── type.ts │ │ │ └── __tests__ │ │ │ │ └── serialize.spec.ts │ │ ├── tiledmap │ │ │ └── tools │ │ │ │ └── __all__.ts │ │ └── FastForm │ │ │ ├── schema.ts │ │ │ ├── context.tsx │ │ │ └── CustomField.tsx │ ├── redux │ │ ├── actions │ │ │ ├── __shared__.ts │ │ │ └── index.ts │ │ ├── __tests__ │ │ │ ├── main.spec.ts │ │ │ └── example │ │ │ │ ├── chat.ts │ │ │ │ └── user.ts │ │ ├── constants │ │ │ ├── cache.ts │ │ │ ├── settings.ts │ │ │ ├── index.ts │ │ │ └── note.ts │ │ ├── types │ │ │ ├── cache.ts │ │ │ └── note.ts │ │ ├── hooks │ │ │ ├── note.ts │ │ │ ├── useTRPGSelector.ts │ │ │ ├── settings.ts │ │ │ └── useWebToken.ts │ │ └── reducers │ │ │ └── index.ts │ ├── manager │ │ ├── buildRegList.ts │ │ ├── request.ts │ │ ├── buildRegMap.ts │ │ ├── analytics.ts │ │ └── storage.ts │ ├── __tests__ │ │ ├── assets.spec.ts │ │ └── __snapshots__ │ │ │ └── assets.spec.ts.snap │ ├── hooks │ │ ├── useValueRef.ts │ │ ├── useToArray.ts │ │ ├── useAlphaUser.ts │ │ ├── useToBoolean.ts │ │ ├── useToNumber.ts │ │ ├── __tests__ │ │ │ ├── useToArray.spec.ts │ │ │ ├── useToNumber.spec.ts │ │ │ └── useToBoolean.spec.ts │ │ ├── useToFunction.ts │ │ ├── useDeepCompareMemo.ts │ │ └── useUserInfo.ts │ ├── api │ │ ├── __mocks__ │ │ │ └── socket-api.ts │ │ ├── player │ │ │ └── event.ts │ │ ├── trpg.api.ts │ │ └── trpg │ │ │ ├── hooks.ts │ │ │ └── event.ts │ ├── helper │ │ └── player.ts │ └── context │ │ └── GroupInfoContext.tsx ├── portal │ ├── README.md │ ├── types │ │ └── global.d.ts │ ├── model │ │ ├── types.ts │ │ ├── deploy.ts │ │ └── user.ts │ ├── index.css │ ├── routes │ │ ├── trpg │ │ │ └── news │ │ │ │ ├── __tests__ │ │ │ │ ├── config.spec.ts │ │ │ │ ├── __snapshots__ │ │ │ │ │ └── config.spec.ts.snap │ │ │ │ └── utils.spec.ts │ │ │ │ └── utils.ts │ │ ├── note │ │ │ └── create.tsx │ │ ├── about │ │ │ ├── health.tsx │ │ │ └── disclaimer.tsx │ │ ├── 404.tsx │ │ ├── demo │ │ │ └── editor.tsx │ │ ├── map │ │ │ ├── demo.tsx │ │ │ └── preview.tsx │ │ └── result │ │ │ ├── error.tsx │ │ │ └── success.tsx │ ├── components │ │ ├── ListItem.tsx │ │ ├── PortraitContainer.tsx │ │ ├── Loading.tsx │ │ ├── ActionButton.tsx │ │ └── PortalReduxProvider.tsx │ ├── history.ts │ ├── utils │ │ └── request.ts │ └── hooks │ │ └── useResultParams.tsx ├── types │ └── global.d.ts └── rtc │ ├── README.md │ ├── redux │ ├── types │ │ ├── notifications.ts │ │ ├── dataConsumers.ts │ │ ├── dataProducers.ts │ │ ├── room.ts │ │ ├── peers.ts │ │ ├── producers.ts │ │ ├── me.ts │ │ └── consumers.ts │ ├── middleware.ts │ └── reducers │ │ └── index.ts │ ├── hooks │ ├── useRTCGlobalAudioMuted.ts │ └── useRTCPeers.ts │ └── urlFactory.ts ├── .prettierignore ├── .gitattributes ├── .eslintignore ├── cypress ├── cypress.json ├── fixtures │ └── example.json ├── utils │ └── login.ts ├── integration │ └── web │ │ └── main_page_spec.ts └── package.json ├── docs ├── m1.jpg ├── m2.jpg ├── m3.jpg ├── m4.jpg ├── m5.jpg ├── actor.png ├── group.png ├── login.png ├── note.png ├── converse.png └── old-version.md ├── .vscode └── settings.json ├── .ministarrc.json ├── .yarnrc ├── test ├── fileTransformer.js └── lorem.ts ├── relativeci.config.js ├── .editorconfig ├── .github └── dependabot.yml ├── commitlint.config.js └── .circleci └── prepare_env.sh /src/appv2/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /src/web/assets/lib/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/mini-program/src/app.less: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | android 2 | ios/ 3 | docs/ 4 | -------------------------------------------------------------------------------- /src/appv2/.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -text 2 | -------------------------------------------------------------------------------- /src/web/components/chatBox/README.md: -------------------------------------------------------------------------------- 1 | 这里是新版UI的消息盒 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -text 2 | *.bat text eol=crlf 3 | -------------------------------------------------------------------------------- /src/plugins/netease-music/src/index.ts: -------------------------------------------------------------------------------- 1 | import './reg'; 2 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | src/app/ 3 | src/plugins/ 4 | -------------------------------------------------------------------------------- /src/web/routes/README.md: -------------------------------------------------------------------------------- 1 | 此处放置的是新版的web端 2 | 3 | 界面设计参考自discord 4 | -------------------------------------------------------------------------------- /cypress/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "baseUrl": "http://localhost:8089" 3 | } 4 | -------------------------------------------------------------------------------- /docs/m1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/docs/m1.jpg -------------------------------------------------------------------------------- /docs/m2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/docs/m2.jpg -------------------------------------------------------------------------------- /docs/m3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/docs/m3.jpg -------------------------------------------------------------------------------- /docs/m4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/docs/m4.jpg -------------------------------------------------------------------------------- /docs/m5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/docs/m5.jpg -------------------------------------------------------------------------------- /src/app/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "trpg", 3 | "displayName": "TRPG" 4 | } 5 | -------------------------------------------------------------------------------- /src/appv2/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "trpg", 3 | "displayName": "trpg" 4 | } -------------------------------------------------------------------------------- /src/playground/helper.ts: -------------------------------------------------------------------------------- 1 | export const CODE_STORE_KEY = 'playground:code'; 2 | -------------------------------------------------------------------------------- /src/plugins/trpg/src/index.ts: -------------------------------------------------------------------------------- 1 | import './redux/inject'; 2 | import './reg'; 3 | -------------------------------------------------------------------------------- /src/shared/types/chat.ts: -------------------------------------------------------------------------------- 1 | export type MsgStyleType = 'bubble' | 'compact'; 2 | -------------------------------------------------------------------------------- /src/web/typings.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.png'; 2 | declare module '*.svg'; 3 | -------------------------------------------------------------------------------- /docs/actor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/docs/actor.png -------------------------------------------------------------------------------- /docs/group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/docs/group.png -------------------------------------------------------------------------------- /docs/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/docs/login.png -------------------------------------------------------------------------------- /docs/note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/docs/note.png -------------------------------------------------------------------------------- /docs/converse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/docs/converse.png -------------------------------------------------------------------------------- /src/mini-program/src/pages/index/index.less: -------------------------------------------------------------------------------- 1 | .root { 2 | padding: 0 20px; 3 | } 4 | -------------------------------------------------------------------------------- /src/app/android/app/version.properties: -------------------------------------------------------------------------------- 1 | #Fri Aug 07 10:38:39 CST 2020 2 | VERSION_CODE=32 3 | -------------------------------------------------------------------------------- /src/shared/utils/error.ts: -------------------------------------------------------------------------------- 1 | export const errorCode = { 2 | LIMITED: 10001, // 请求受限 3 | }; 4 | -------------------------------------------------------------------------------- /src/web/components/editor/render/types.ts: -------------------------------------------------------------------------------- 1 | export type EditorType = 'richtext' | 'inline'; 2 | -------------------------------------------------------------------------------- /src/app/.npmrc: -------------------------------------------------------------------------------- 1 | # https://npmmirror.com/mirrors/ 2 | registry = https://registry.npmmirror.com 3 | -------------------------------------------------------------------------------- /src/plugins/netease-music/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.png'; 2 | declare module '*.svg'; 3 | -------------------------------------------------------------------------------- /src/portal/README.md: -------------------------------------------------------------------------------- 1 | ## Portal 2 | 3 | 本项目用于展示内容与在网页中插入各个前端页面 4 | 用于嵌入在app、web iframe、其他网站 5 | -------------------------------------------------------------------------------- /src/appv2/.npmrc: -------------------------------------------------------------------------------- 1 | # https://npm.taobao.org/mirrors/ 2 | registry = https://registry.npm.taobao.org 3 | -------------------------------------------------------------------------------- /src/web/assets/img/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/bg.jpg -------------------------------------------------------------------------------- /src/web/components/editor/README.md: -------------------------------------------------------------------------------- 1 | 基于[`slate`](https://github.com/ianstormtaylor/slate)的富文本编辑器 2 | -------------------------------------------------------------------------------- /src/mini-program/.npmrc: -------------------------------------------------------------------------------- 1 | # https://npm.taobao.org/mirrors/ 2 | registry = https://registry.npm.taobao.org 3 | -------------------------------------------------------------------------------- /src/playground/.npmrc: -------------------------------------------------------------------------------- 1 | # https://npm.taobao.org/mirrors/ 2 | registry = https://registry.npm.taobao.org 3 | -------------------------------------------------------------------------------- /src/shared/types/portal.ts: -------------------------------------------------------------------------------- 1 | export type PortalEventTypes = 'actor::actordata' | 'common::updatePath'; 2 | -------------------------------------------------------------------------------- /src/web/assets/img/dice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/dice.png -------------------------------------------------------------------------------- /src/web/components/messageTypes/card/media/AudioPlayer.less: -------------------------------------------------------------------------------- 1 | .rhap_time { 2 | font-size: 12px; 3 | } 4 | -------------------------------------------------------------------------------- /src/web/assets/img/actor.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/actor.jpeg -------------------------------------------------------------------------------- /src/web/assets/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/favicon.ico -------------------------------------------------------------------------------- /src/web/assets/img/gugugu1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/gugugu1.png -------------------------------------------------------------------------------- /src/app/src/assets/img/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/src/assets/img/close.png -------------------------------------------------------------------------------- /src/app/src/assets/img/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/src/assets/img/link.png -------------------------------------------------------------------------------- /src/portal/types/global.d.ts: -------------------------------------------------------------------------------- 1 | interface Window { 2 | emit: (eventName: string, ...args: any[]) => void; 3 | } 4 | -------------------------------------------------------------------------------- /src/web/assets/img/checkbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/checkbox.png -------------------------------------------------------------------------------- /src/web/assets/img/file/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/file/pdf.png -------------------------------------------------------------------------------- /src/web/assets/img/file/pic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/file/pic.png -------------------------------------------------------------------------------- /src/web/assets/img/file/ppt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/file/ppt.png -------------------------------------------------------------------------------- /src/web/assets/img/file/txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/file/txt.png -------------------------------------------------------------------------------- /src/web/assets/img/file/word.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/file/word.png -------------------------------------------------------------------------------- /src/web/assets/img/img_fail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/img_fail.png -------------------------------------------------------------------------------- /src/web/assets/img/logo@1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/logo@1024.png -------------------------------------------------------------------------------- /src/web/assets/img/logo@192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/logo@192.png -------------------------------------------------------------------------------- /src/web/assets/img/logo@512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/logo@512.png -------------------------------------------------------------------------------- /src/app/android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/android/app/debug.keystore -------------------------------------------------------------------------------- /src/app/src/assets/img/file/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/src/assets/img/file/pdf.png -------------------------------------------------------------------------------- /src/app/src/assets/img/file/pic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/src/assets/img/file/pic.png -------------------------------------------------------------------------------- /src/app/src/assets/img/file/ppt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/src/assets/img/file/ppt.png -------------------------------------------------------------------------------- /src/app/src/assets/img/file/txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/src/assets/img/file/txt.png -------------------------------------------------------------------------------- /src/app/src/assets/img/gugugu1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/src/assets/img/gugugu1.png -------------------------------------------------------------------------------- /src/plugins/README.md: -------------------------------------------------------------------------------- 1 | 这个文件夹是为基于 [ministar](https://github.com/moonrailgun/mini-star) 的插件系统实现的 2 | 3 | 插件系统仅支持web服务 4 | -------------------------------------------------------------------------------- /src/portal/model/types.ts: -------------------------------------------------------------------------------- 1 | export interface ModelAccess { 2 | editable?: boolean; 3 | removeable?: boolean; 4 | } 5 | -------------------------------------------------------------------------------- /src/web/assets/fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/fonts/iconfont.eot -------------------------------------------------------------------------------- /src/web/assets/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/fonts/iconfont.ttf -------------------------------------------------------------------------------- /src/web/assets/fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/fonts/iconfont.woff -------------------------------------------------------------------------------- /src/web/assets/fonts/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/fonts/iconfont.woff2 -------------------------------------------------------------------------------- /src/web/assets/img/file/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/file/default.png -------------------------------------------------------------------------------- /src/web/assets/img/file/excel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/file/excel.png -------------------------------------------------------------------------------- /src/web/components/messageTypes/card/style.less: -------------------------------------------------------------------------------- 1 | .bubble { 2 | &.bubble-media { 3 | width: 100%; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/web/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/app/src/assets/img/file/excel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/src/assets/img/file/excel.png -------------------------------------------------------------------------------- /src/app/src/assets/img/file/word.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/src/assets/img/file/word.png -------------------------------------------------------------------------------- /src/app/src/assets/img/trpg_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/src/assets/img/trpg_logo.png -------------------------------------------------------------------------------- /src/appv2/android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/appv2/android/app/debug.keystore -------------------------------------------------------------------------------- /src/mini-program/src/resource/me.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/mini-program/src/resource/me.png -------------------------------------------------------------------------------- /src/shared/model/chat.ts: -------------------------------------------------------------------------------- 1 | import type { MsgPayload } from '@redux/types/chat'; 2 | 3 | export type ChatLogItem = MsgPayload; 4 | -------------------------------------------------------------------------------- /src/web/assets/img/system_notice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/web/assets/img/system_notice.png -------------------------------------------------------------------------------- /src/app/ios/trpg/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/app/src/assets/img/file/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/src/assets/img/file/default.png -------------------------------------------------------------------------------- /src/app/src/assets/img/minus-cycle-o.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/src/assets/img/minus-cycle-o.png -------------------------------------------------------------------------------- /src/app/src/assets/img/system_notice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/src/assets/img/system_notice.png -------------------------------------------------------------------------------- /src/appv2/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | trpg 3 | 4 | -------------------------------------------------------------------------------- /src/mini-program/src/resource/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/mini-program/src/resource/home.png -------------------------------------------------------------------------------- /src/app/src/assets/img/oauth/qqconnect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/src/assets/img/oauth/qqconnect.png -------------------------------------------------------------------------------- /src/app/src/components/TApi/index.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | TPopup: require('./TPopup'), 3 | TModal: require('./TModal'), 4 | }; 5 | -------------------------------------------------------------------------------- /src/appv2/ios/trpg/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/portal/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | /* background-color: white; */ 3 | background-color: #F5F7F9; 4 | background-image: none; 5 | } 6 | -------------------------------------------------------------------------------- /src/shared/types/query.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 分页类型 3 | */ 4 | export interface PaginationType { 5 | count: number; 6 | list: T[]; 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "editor.rulers": [80] 4 | } 5 | -------------------------------------------------------------------------------- /src/plugins/netease-music/src/config.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 网易云音乐接口地址 3 | */ 4 | export const neteaseMusicAPI = 'https://musicapi.moonrailgun.com'; 5 | -------------------------------------------------------------------------------- /src/shared/editor/README.md: -------------------------------------------------------------------------------- 1 | 基于 [React-Quill](https://github.com/zenoamaro/react-quill) 的二次开发的编辑器 2 | 3 | 这个编辑器输出的是HTML的文本,用在部分slate不好支持的场合 4 | -------------------------------------------------------------------------------- /src/app/ios/trpg/Images.xcassets/logo@1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/ios/trpg/Images.xcassets/logo@1024.png -------------------------------------------------------------------------------- /src/mini-program/src/pages/login/index.less: -------------------------------------------------------------------------------- 1 | .root { 2 | padding: 20px; 3 | 4 | 5 | .login-btn { 6 | margin-top: 20px; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/playground/editor/advanced-editor/data/README.md: -------------------------------------------------------------------------------- 1 | 该文件夹仅用于方便计算布局 2 | 3 | 实际并不会被任何文件引用 4 | 5 | [js压缩在线工具](https://c.runoob.com/front-end/51) 6 | -------------------------------------------------------------------------------- /src/shared/i18n/__internal__/__scan__.ts: -------------------------------------------------------------------------------- 1 | import { t } from '../'; 2 | 3 | /** 4 | * 这个文件主要存储一些因为字段动态生成导致无法扫描到的翻译字段 5 | */ 6 | 7 | t('未选择'); 8 | -------------------------------------------------------------------------------- /src/app/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /src/mini-program/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | deploy_versions/ 3 | .temp/ 4 | .rn_temp/ 5 | node_modules/ 6 | .DS_Store 7 | .gitignore 8 | package-lock.json 9 | -------------------------------------------------------------------------------- /src/shared/components/web/SplitPane/index.tsx: -------------------------------------------------------------------------------- 1 | import SplitPane from 'react-split-pane'; 2 | import './index.css'; 3 | 4 | export default SplitPane; 5 | -------------------------------------------------------------------------------- /src/types/global.d.ts: -------------------------------------------------------------------------------- 1 | type PickFunctionComponentProps

> = P extends React.FC< 2 | infer P 3 | > 4 | ? P 5 | : never; 6 | -------------------------------------------------------------------------------- /src/web/components/chatBox/ChatSendBox/index.less: -------------------------------------------------------------------------------- 1 | .chat-sendbox-addon-popover { 2 | .ant-popover-inner-content { 3 | padding: 0; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/web/components/messageTypes/addons/MsgOperations.less: -------------------------------------------------------------------------------- 1 | .operation-popover { 2 | .ant-popover-inner-content { 3 | padding: 0; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/appv2/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/appv2/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /src/app/android/app/src/main/assets/fonts/antfill.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/android/app/src/main/assets/fonts/antfill.ttf -------------------------------------------------------------------------------- /src/app/android/app/src/main/assets/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/android/app/src/main/assets/fonts/iconfont.ttf -------------------------------------------------------------------------------- /src/appv2/.buckconfig: -------------------------------------------------------------------------------- 1 | 2 | [android] 3 | target = Google Inc.:Google APIs:23 4 | 5 | [maven_repositories] 6 | central = https://repo1.maven.org/maven2 7 | -------------------------------------------------------------------------------- /src/app/android/app/src/main/assets/fonts/antoutline.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/android/app/src/main/assets/fonts/antoutline.ttf -------------------------------------------------------------------------------- /src/rtc/README.md: -------------------------------------------------------------------------------- 1 | ## RTC 2 | 3 | WIP 4 | 5 | 多人会议的前端功能 6 | 7 | 参考 [https://github.com/versatica/mediasoup-demo/](https://github.com/versatica/mediasoup-demo/) 实现 8 | -------------------------------------------------------------------------------- /src/web/reg/regMessageCard.ts: -------------------------------------------------------------------------------- 1 | import { buildRegMap } from '@shared/manager/buildRegMap'; 2 | 3 | export const [messageCardList, regMessageCard] = buildRegMap(); 4 | -------------------------------------------------------------------------------- /src/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/app/android/keystores/debug.keystore.properties: -------------------------------------------------------------------------------- 1 | key.store=debug.keystore 2 | key.alias=androiddebugkey 3 | key.store.password=android 4 | key.alias.password=android 5 | -------------------------------------------------------------------------------- /src/shared/components/panel/type.ts: -------------------------------------------------------------------------------- 1 | import type { GroupPanel } from '@shared/types/panel'; 2 | 3 | export interface CommonPanelProps { 4 | panel: GroupPanel; 5 | } 6 | -------------------------------------------------------------------------------- /.ministarrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "scope": "trpgengine-plugins", 3 | "pluginRoot": "./src", 4 | "outDir": "./dist", 5 | "author": "moonrailgun", 6 | "license": "GPL-3.0" 7 | } 8 | -------------------------------------------------------------------------------- /src/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo29.png -------------------------------------------------------------------------------- /src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo40.png -------------------------------------------------------------------------------- /src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo57.png -------------------------------------------------------------------------------- /src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo60.png -------------------------------------------------------------------------------- /src/app/ios/trpg/Images.xcassets/iconfont.dataset/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/ios/trpg/Images.xcassets/iconfont.dataset/iconfont.ttf -------------------------------------------------------------------------------- /src/appv2/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/appv2/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/appv2/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/appv2/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/mini-program/config/dev.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | NODE_ENV: '"development"', 4 | }, 5 | defineConstants: {}, 6 | mini: {}, 7 | h5: {}, 8 | }; 9 | -------------------------------------------------------------------------------- /src/shared/i18n/__mocks__/index.ts: -------------------------------------------------------------------------------- 1 | import type { TFunction } from 'i18next'; 2 | 3 | export const t: TFunction = (key, defaultValue?, options?) => { 4 | return key; 5 | }; 6 | -------------------------------------------------------------------------------- /src/app/.gitignore: -------------------------------------------------------------------------------- 1 | android/build/ 2 | android/app/build/ 3 | *.keystore 4 | !android/app/debug.keystore 5 | .jest/ 6 | version.json 7 | build/script/.deps 8 | sentry.properties 9 | -------------------------------------------------------------------------------- /src/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo29@2x.png -------------------------------------------------------------------------------- /src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo29@3x.png -------------------------------------------------------------------------------- /src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo40@2x.png -------------------------------------------------------------------------------- /src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo40@3x.png -------------------------------------------------------------------------------- /src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo57@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo57@2x.png -------------------------------------------------------------------------------- /src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo60@2x.png -------------------------------------------------------------------------------- /src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/ios/trpg/Images.xcassets/AppIcon.appiconset/logo60@3x.png -------------------------------------------------------------------------------- /src/appv2/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/appv2/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/appv2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/appv2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/appv2/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/appv2/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/mini-program/src/pages/login/index.config.ts: -------------------------------------------------------------------------------- 1 | import type { PageConfig } from '@tarojs/taro'; 2 | 3 | export default { 4 | navigationBarTitleText: '登录', 5 | } as PageConfig; 6 | -------------------------------------------------------------------------------- /src/mini-program/src/pages/me/index.config.ts: -------------------------------------------------------------------------------- 1 | import type { PageConfig } from '@tarojs/taro'; 2 | 3 | export default { 4 | navigationBarTitleText: '我', 5 | } as PageConfig; 6 | -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | registry "https://registry.npmmirror.com" 2 | canvas_binary_host_mirror "https://npmmirror.com/mirrors/canvas" 3 | sentrycli_cdnurl "https://npmmirror.com/mirrors/sentry-cli/" 4 | -------------------------------------------------------------------------------- /src/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/appv2/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/appv2/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/appv2/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/appv2/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/appv2/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/appv2/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/appv2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/appv2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/mini-program/src/pages/recruitCreate/index.config.ts: -------------------------------------------------------------------------------- 1 | import type { PageConfig } from '@tarojs/taro'; 2 | 3 | export default { 4 | navigationBarTitleText: '创建招募', 5 | } as PageConfig; 6 | -------------------------------------------------------------------------------- /src/playground/editor/advanced-editor/data/hack-layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /src/appv2/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: '@react-native-community', 4 | parser: '@typescript-eslint/parser', 5 | plugins: ['@typescript-eslint'], 6 | }; 7 | -------------------------------------------------------------------------------- /src/appv2/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TRPGEngine/Client/HEAD/src/appv2/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/mini-program/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['taro/react'], 3 | rules: { 4 | 'react/jsx-uses-react': 'off', 5 | 'react/react-in-jsx-scope': 'off', 6 | }, 7 | }; 8 | -------------------------------------------------------------------------------- /src/portal/routes/trpg/news/__tests__/config.spec.ts: -------------------------------------------------------------------------------- 1 | import config from '@shared/project.config'; 2 | 3 | test('newsRSSUrl', () => { 4 | expect(config.url.rssNews).toMatchSnapshot(); 5 | }); 6 | -------------------------------------------------------------------------------- /cypress/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io", 4 | "body": "Fixtures are a great way to mock data for responses to routes" 5 | } -------------------------------------------------------------------------------- /src/shared/components/layout/tags/type.ts: -------------------------------------------------------------------------------- 1 | import type React from 'react'; 2 | import type { LayoutProps } from '../processor'; 3 | 4 | export type TagComponent = React.FC; 5 | -------------------------------------------------------------------------------- /src/plugins/trpg/src/redux/inject.ts: -------------------------------------------------------------------------------- 1 | import { injectReducer } from '@capital/shared/redux/configureStore/helper'; 2 | 3 | import actor from './reducers/actor'; 4 | 5 | injectReducer('actor', actor); 6 | -------------------------------------------------------------------------------- /src/shared/components/portal/index.ts: -------------------------------------------------------------------------------- 1 | import { buildPortal } from './buildPortal'; 2 | import { DefaultEventEmitter } from './defaultEventEmitter'; 3 | 4 | export { buildPortal, DefaultEventEmitter }; 5 | -------------------------------------------------------------------------------- /src/app/sentry.md: -------------------------------------------------------------------------------- 1 | ## Linking 2 | 3 | ``` 4 | npx sentry-wizard -i reactNative -p ios android 5 | # or 6 | yarn sentry-wizard -i reactNative -p ios android 7 | 8 | cd ios 9 | pod install 10 | ``` 11 | -------------------------------------------------------------------------------- /src/playground/editor/advanced-editor/data/dnd5e/README.md: -------------------------------------------------------------------------------- 1 | 基于 [5eDnD_玩家手册PHB_中译v1.72版.pdf](http://static.moonrailgun.com/doc/5eDnD_%E7%8E%A9%E5%AE%B6%E6%89%8B%E5%86%8CPHB_%E4%B8%AD%E8%AF%91v1.72%E7%89%88.pdf) 2 | -------------------------------------------------------------------------------- /src/rtc/redux/types/notifications.ts: -------------------------------------------------------------------------------- 1 | interface NotificationType { 2 | id: string; 3 | type: 'info' | 'error'; 4 | text: string; 5 | } 6 | 7 | export type NotificationsStateType = NotificationType[]; 8 | -------------------------------------------------------------------------------- /src/app/android/keystores/BUCK: -------------------------------------------------------------------------------- 1 | keystore( 2 | name = "debug", 3 | properties = "debug.keystore.properties", 4 | store = "debug.keystore", 5 | visibility = [ 6 | "PUBLIC", 7 | ], 8 | ) 9 | -------------------------------------------------------------------------------- /src/mini-program/src/pages/index/index.config.ts: -------------------------------------------------------------------------------- 1 | import type { PageConfig } from '@tarojs/taro'; 2 | 3 | export default { 4 | navigationBarTitleText: '首页', 5 | enablePullDownRefresh: true, 6 | } as PageConfig; 7 | -------------------------------------------------------------------------------- /src/appv2/babel.config.js: -------------------------------------------------------------------------------- 1 | const paths = require('./build/metro/babel-paths'); 2 | 3 | module.exports = { 4 | presets: ['module:metro-react-native-babel-preset'], 5 | plugins: [['module-resolver', paths]], 6 | }; 7 | -------------------------------------------------------------------------------- /src/shared/redux/actions/__shared__.ts: -------------------------------------------------------------------------------- 1 | import { createAction } from '@reduxjs/toolkit'; 2 | import constants from '../constants'; 3 | const { RESET } = constants; 4 | 5 | export const resetCreator = createAction(RESET); 6 | -------------------------------------------------------------------------------- /src/appv2/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'trpg' 2 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) 3 | include ':app' 4 | -------------------------------------------------------------------------------- /test/fileTransformer.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | module.exports = { 4 | process(src, filename, config, options) { 5 | return 'module.exports = ' + JSON.stringify(path.basename(filename)) + ';'; 6 | }, 7 | }; 8 | -------------------------------------------------------------------------------- /src/rtc/redux/types/dataConsumers.ts: -------------------------------------------------------------------------------- 1 | export interface DataConsumersStateType { 2 | [dataConsumerId: string]: { 3 | id: string; 4 | sctpStreamParameters: {}; 5 | label: string; 6 | protocol?: string; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /src/rtc/redux/types/dataProducers.ts: -------------------------------------------------------------------------------- 1 | export interface DataProducersStateType { 2 | [dataProducerId: string]: { 3 | id: string; 4 | sctpStreamParameters: {}; 5 | label: string; 6 | protocol: string; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /src/app/src/components/SpaceFull.tsx: -------------------------------------------------------------------------------- 1 | import styled from 'styled-components/native'; 2 | 3 | /** 4 | * 用于自动撑满空间的组件 5 | */ 6 | export const SpaceFull = styled.View` 7 | flex: 1; 8 | `; 9 | SpaceFull.displayName = 'SpaceFull'; 10 | -------------------------------------------------------------------------------- /src/web/components/NoteEditor.scss: -------------------------------------------------------------------------------- 1 | .note-editor { 2 | flex: 1; 3 | overflow: hidden; 4 | display: flex; 5 | flex-direction: column; 6 | 7 | .editor-content { 8 | flex: 1; 9 | overflow: auto; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/web/grey.less: -------------------------------------------------------------------------------- 1 | // 用于一些重大哀悼场合下使网站变成黑白 2 | // Usage: 直接引入即可 3 | 4 | html, 5 | body { 6 | filter: grayscale(1); /* 20200404 */ 7 | filter: gray; 8 | background-color: grey !important; 9 | background-image: none; 10 | } 11 | -------------------------------------------------------------------------------- /src/app/src/components/messageTypes/bbcode/PlainText.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Text } from 'react-native'; 3 | 4 | const PlainText = React.memo((props) => {props.children}); 5 | 6 | export default PlainText; 7 | -------------------------------------------------------------------------------- /src/mini-program/src/pages/me/index.less: -------------------------------------------------------------------------------- 1 | .root { 2 | padding: 20px; 3 | 4 | .profile-header { 5 | display: flex; 6 | align-items: center; 7 | 8 | .at-avatar { 9 | margin-right: 20px; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/web/components/portal/context.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | export const PortalContext = createContext<{ 4 | ref: React.RefObject; 5 | } | null>(null); 6 | PortalContext.displayName = 'PortalContext'; 7 | -------------------------------------------------------------------------------- /src/web/hooks/useIsMobile.ts: -------------------------------------------------------------------------------- 1 | import { useWindowSize } from 'react-use'; 2 | 3 | /** 4 | * 判定是否为移动版网页 5 | */ 6 | export function useIsMobile(): boolean { 7 | const { width } = useWindowSize(); 8 | 9 | return width < 768; 10 | } 11 | -------------------------------------------------------------------------------- /src/appv2/index.js: -------------------------------------------------------------------------------- 1 | import 'react-native-gesture-handler'; 2 | import { AppRegistry } from 'react-native'; 3 | import App from './src/App'; 4 | import { name as appName } from './app.json'; 5 | 6 | AppRegistry.registerComponent(appName, () => App); 7 | -------------------------------------------------------------------------------- /src/web/hooks/useUpdateRef.ts: -------------------------------------------------------------------------------- 1 | import { useRef, MutableRefObject } from 'react'; 2 | 3 | export function useUpdateRef(state: T): MutableRefObject { 4 | const ref = useRef(state); 5 | ref.current = state; 6 | 7 | return ref; 8 | } 9 | -------------------------------------------------------------------------------- /src/plugins/trpg/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@trpgengine-plugins/trpg", 3 | "main": "src/index.ts", 4 | "version": "0.0.0", 5 | "private": true, 6 | "dependencies": {}, 7 | "author": "moonrailgun", 8 | "license": "GPL-3.0" 9 | } 10 | -------------------------------------------------------------------------------- /src/web/routes/Entry/style.tsx: -------------------------------------------------------------------------------- 1 | import { Space } from 'antd'; 2 | import styled from 'styled-components'; 3 | 4 | export const ViewContainer = styled(Space).attrs({ 5 | size: 12, 6 | direction: 'vertical', 7 | })` 8 | width: 100%; 9 | `; 10 | -------------------------------------------------------------------------------- /src/appv2/ios/trpg/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : UIResponder 5 | 6 | @property (nonatomic, strong) UIWindow *window; 7 | 8 | @end 9 | -------------------------------------------------------------------------------- /src/mini-program/src/pages/recruitDetail/index.config.ts: -------------------------------------------------------------------------------- 1 | import type { PageConfig } from '@tarojs/taro'; 2 | 3 | export default { 4 | navigationBarTitleText: '招募详情', 5 | enableShareAppMessage: true, 6 | enableShareTimeline: true, 7 | } as PageConfig; 8 | -------------------------------------------------------------------------------- /src/plugins/netease-music/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@trpgengine-plugins/netease-music", 3 | "main": "src/index.ts", 4 | "version": "0.0.0", 5 | "private": true, 6 | "dependencies": {}, 7 | "author": "moonrailgun", 8 | "license": "GPL-3.0" 9 | } -------------------------------------------------------------------------------- /src/playground/editor/advanced-editor/example/xml/tabs.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /src/appv2/ios/trpg/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char * argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/shared/components/layout/tags/Checkbox/shared.ts: -------------------------------------------------------------------------------- 1 | import type { LayoutFormContainerProps } from '../../hooks/useLayoutFormContainer'; 2 | 3 | export interface TagCheckboxProps extends LayoutFormContainerProps { 4 | name: string; 5 | disabled?: boolean; 6 | } 7 | -------------------------------------------------------------------------------- /cypress/utils/login.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Cypress: 快速账号登录 3 | */ 4 | export function accountLogin() { 5 | cy.window().then(async (win) => { 6 | win.trpg.quicklogin('admin8', 'admin'); 7 | }); 8 | 9 | cy.getByTestId('main-page-root').should('exist'); 10 | } 11 | -------------------------------------------------------------------------------- /src/app/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/app/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /src/app/ios/trpg/Images.xcassets/iconfont.dataset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "data" : [ 7 | { 8 | "idiom" : "universal", 9 | "filename" : "iconfont.ttf" 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /src/appv2/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /src/mini-program/src/pages/recruitCreate/index.less: -------------------------------------------------------------------------------- 1 | .form-group-text { 2 | font-size: 32px; 3 | margin-top: 20px; 4 | padding-left: 10px; 5 | margin-bottom: 10px; 6 | margin-left: 10px; 7 | border-left: 6px solid #6190e8; 8 | border-radius: 6px; 9 | } 10 | -------------------------------------------------------------------------------- /src/web/components/WebFastForm/utils.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 获取校验状态 3 | */ 4 | export function getValidateStatus(error: string | undefined): 'error' | '' { 5 | if (error === undefined || error === '') { 6 | return ''; 7 | } else { 8 | return 'error'; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /relativeci.config.js: -------------------------------------------------------------------------------- 1 | // relativeci.config.js 2 | module.exports = { 3 | // Allow the agent to pick up the current commit message 4 | includeCommitMessage: true, 5 | webpack: { 6 | // Path to Webpack stats JSON file 7 | stats: './stats.json', 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /src/mini-program/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /src/mini-program/src/slices/index.ts: -------------------------------------------------------------------------------- 1 | import { combineReducers } from '@reduxjs/toolkit'; 2 | import { userReducer } from './user'; 3 | 4 | export const rootReducer = combineReducers({ 5 | user: userReducer, 6 | }); 7 | 8 | export type RootState = ReturnType; 9 | -------------------------------------------------------------------------------- /src/portal/components/ListItem.tsx: -------------------------------------------------------------------------------- 1 | import styled from 'styled-components'; 2 | 3 | export const ListItem = styled.div` 4 | padding: 10px; 5 | display: flex; 6 | border-bottom: ${(props) => props.theme.border.thin}; 7 | 8 | div { 9 | flex: 1; 10 | } 11 | `; 12 | -------------------------------------------------------------------------------- /src/shared/components/portal/README.md: -------------------------------------------------------------------------------- 1 | ## Portal 2 | 3 | **暂时没有使用** 4 | 5 | 这是一组用于使用命令式方法将一个React DOM映射到相关的位置的方法 6 | 可以指定不同的portal位置 7 | 8 | 用于处理对于每个节点都需要创建一个相关的Modal的情况 9 | 10 | > 参考 https://github.com/ant-design/ant-design-mobile-rn/blob/master/components/portal/ 的实现 11 | -------------------------------------------------------------------------------- /src/web/reg/regGroupInfoMenu.ts: -------------------------------------------------------------------------------- 1 | import { buildRegList } from '@shared/manager/buildRegList'; 2 | import type { SidebarViewMenuItemType } from '@web/components/SidebarView'; 3 | 4 | export const [groupInfoMenuList, regGroupInfoMenu] = 5 | buildRegList(); 6 | -------------------------------------------------------------------------------- /src/web/reg/regSettingViewMenu.ts: -------------------------------------------------------------------------------- 1 | import { buildRegList } from '@shared/manager/buildRegList'; 2 | import type { SidebarViewMenuItem } from '@web/components/SidebarView'; 3 | 4 | export const [extraSettingViewMenu, regSettingViewMenu] = 5 | buildRegList(); 6 | -------------------------------------------------------------------------------- /src/shared/redux/__tests__/main.spec.ts: -------------------------------------------------------------------------------- 1 | import configureStore from '@src/shared/redux/configureStore'; 2 | 3 | describe('redux basic', () => { 4 | it('configureStore should be ok', () => { 5 | const store = configureStore(); 6 | expect(store).not.toBeNull(); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /src/web/components/ImageViewer.scss: -------------------------------------------------------------------------------- 1 | .image-viewer { 2 | cursor: pointer; 3 | 4 | img { 5 | display: block; 6 | } 7 | } 8 | 9 | // react-image-lightbox 10 | .ReactModalPortal .ReactModal__Overlay .ril-toolbar .ril-toolbar__item > button { 11 | outline: 0; 12 | } 13 | -------------------------------------------------------------------------------- /src/shared/components/bbcode/utils.ts: -------------------------------------------------------------------------------- 1 | import type { AstNodeObj } from './type'; 2 | 3 | /** 4 | * 获取 url 节点的url地址 5 | * @param urlTag url节点 6 | */ 7 | export function getUrlTagRealUrl(urlTag: AstNodeObj): string { 8 | return urlTag.attrs.url ?? urlTag.content.join(''); 9 | } 10 | -------------------------------------------------------------------------------- /src/shared/redux/constants/cache.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | GET_USER_INFO: 'GET_USER_INFO', 3 | GET_TEMPLATE_INFO: 'GET_TEMPLATE_INFO', 4 | GET_ACTOR_INFO: 'GET_ACTOR_INFO', 5 | GET_FRIEND_INVITE_INFO: 'GET_FRIEND_INVITE_INFO', 6 | GET_GROUP_INVITE_INFO: 'GET_GROUP_INVITE_INFO', 7 | }; 8 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [.gitconfig] 12 | indent_style = tab 13 | 14 | [Makefile] 15 | indent_style = tab 16 | -------------------------------------------------------------------------------- /src/portal/routes/note/create.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import TRPGEditor from '@shared/editor'; 3 | 4 | /** 5 | * @deprecated 6 | */ 7 | class NoteCreate extends React.Component { 8 | render() { 9 | return ; 10 | } 11 | } 12 | 13 | export default NoteCreate; 14 | -------------------------------------------------------------------------------- /src/rtc/hooks/useRTCGlobalAudioMuted.ts: -------------------------------------------------------------------------------- 1 | import { useRTCRoomStateSelector } from '@rtc/redux'; 2 | 3 | export function useRTCGlobalAudioMuted() { 4 | const globalAudioMuted = useRTCRoomStateSelector( 5 | (state) => state.me.audioMuted 6 | ); 7 | 8 | return globalAudioMuted; 9 | } 10 | -------------------------------------------------------------------------------- /src/shared/manager/buildRegList.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 构建一组注册列表的方式 3 | * 用于从其他地方统一获取数据 4 | */ 5 | export function buildRegList(): [T[], (item: T) => void] { 6 | const list: T[] = []; 7 | 8 | const reg = (item: T) => { 9 | list.push(item); 10 | }; 11 | 12 | return [list, reg]; 13 | } 14 | -------------------------------------------------------------------------------- /src/web/utils/url-helper.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 获取url的query数据 3 | * @param key 字符串 4 | */ 5 | export function getUrlQuerySearch(key: string): string | null { 6 | const searchQuery = location.search; 7 | const params = new URLSearchParams(searchQuery); 8 | 9 | return params.get(key); 10 | } 11 | -------------------------------------------------------------------------------- /test/lorem.ts: -------------------------------------------------------------------------------- 1 | import { LoremIpsum } from 'lorem-ipsum'; 2 | 3 | /** 4 | * 生成占位符的方法 5 | */ 6 | 7 | export const lorem = new LoremIpsum({ 8 | sentencesPerParagraph: { 9 | max: 4, 10 | min: 2, 11 | }, 12 | wordsPerSentence: { 13 | max: 16, 14 | min: 4, 15 | }, 16 | }); 17 | -------------------------------------------------------------------------------- /src/shared/utils/animated-scroll-to.ts: -------------------------------------------------------------------------------- 1 | import { scrollTo, scrollToBottom } from './scrollbar-helper'; 2 | 3 | /** 4 | * @deprecated 应使用 scrollbar-helper.ts 5 | */ 6 | 7 | export { scrollTo, scrollToBottom }; 8 | 9 | export default { 10 | to: scrollTo, 11 | bottom: scrollToBottom, 12 | }; 13 | -------------------------------------------------------------------------------- /src/app/test/components/Test.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { View, Text } from 'react-native'; 3 | 4 | export default class Test extends React.Component { 5 | render() { 6 | return ( 7 | 8 | Test Component 9 | 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/shared/__tests__/assets.spec.ts: -------------------------------------------------------------------------------- 1 | import { getDefaultImage } from '@shared/assets'; 2 | 3 | describe('getDefaultImage', () => { 4 | const defaultImage = getDefaultImage({ fileUrl: '[fileUrl]' }); 5 | 6 | test('snapshot', () => { 7 | expect(defaultImage).toMatchSnapshot(); 8 | }); 9 | }); 10 | -------------------------------------------------------------------------------- /src/app/build/bundle.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 打包app项目的js代码 4 | # 在src/app目录调用 5 | 6 | export REACT_NATIVE_APP_ROOT=../../ 7 | export PLATFORM=app 8 | export NODE_ENV=production 9 | 10 | mkdir ./dist 11 | ./node_modules/.bin/react-native bundle --entry-file index.js --bundle-output ./dist/index.bundle.js 12 | -------------------------------------------------------------------------------- /src/portal/components/PortraitContainer.tsx: -------------------------------------------------------------------------------- 1 | import styled from 'styled-components'; 2 | 3 | /** 4 | * 使容器在一个竖屏内展示 5 | * 移动优先 6 | */ 7 | export const PortraitContainer = styled.div` 8 | max-width: 414px; /* iphone8 */ 9 | margin: auto; 10 | `; 11 | PortraitContainer.displayName = 'PortraitContainer'; 12 | -------------------------------------------------------------------------------- /src/web/components/editor/utils/serialize/plaintext.ts: -------------------------------------------------------------------------------- 1 | import { Node } from 'slate'; 2 | import type { TRPGEditorNode } from '../../types'; 3 | 4 | /** 5 | * 序列化为普通文本 6 | */ 7 | export function serializeToPlaintext(nodes: TRPGEditorNode[]) { 8 | return nodes.map((n) => Node.string(n)).join('\n'); 9 | } 10 | -------------------------------------------------------------------------------- /src/web/reg/regPersonalPanel.ts: -------------------------------------------------------------------------------- 1 | import { buildRegList } from '@shared/manager/buildRegList'; 2 | 3 | export const [personalPanelItemList, regPersonalPanelItem] = 4 | buildRegList(); 5 | export const [personalPanelContentList, regPersonalPanelContent] = 6 | buildRegList(); 7 | -------------------------------------------------------------------------------- /src/web/utils/rtc-helper.ts: -------------------------------------------------------------------------------- 1 | import { browser } from './browser-helper'; 2 | 3 | /** 4 | * 构建rtc设备信息 5 | */ 6 | export function buildDeviceInfo() { 7 | return { 8 | flag: browser.getBrowserFlag(), 9 | name: browser.getBrowserName(), 10 | version: browser.getBrowserVersion(), 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /src/app/test/setup.ts: -------------------------------------------------------------------------------- 1 | import _noop from 'lodash/noop'; 2 | 3 | // 用于处理原生模块的mock 4 | jest.mock('react-native-fs', () => 'react-native-fs'); 5 | jest.mock('react-native-image-zoom-viewer', () => 'ImageViewer'); 6 | jest.mock('react-native-progress/Circle', () => null); 7 | jest.mock('../src/components/Link', () => 'Link'); 8 | -------------------------------------------------------------------------------- /src/plugins/trpg/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "rootDir": "./src", 5 | "baseUrl": "./src", 6 | "paths": { 7 | "@plugins/*": ["../../../plugins/*"], 8 | "@capital/*": ["../../../*"], 9 | } 10 | }, 11 | "include": ["./src"] 12 | } 13 | -------------------------------------------------------------------------------- /src/app/build/copy-iconfont.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "正在拷贝iconfont图标字体...." 4 | echo "当前目录: $(pwd)"; 5 | 6 | cp ../web/assets/fonts/iconfont.ttf ./android/app/src/main/assets/fonts/iconfont.ttf 7 | cp ../web/assets/fonts/iconfont.ttf ./ios/trpg/Images.xcassets/iconfont.dataset/iconfont.ttf 8 | 9 | echo "拷贝完毕" 10 | -------------------------------------------------------------------------------- /src/app/src/components/UserAvatar.tsx: -------------------------------------------------------------------------------- 1 | import TAvatar from './TComponent/TAvatar'; 2 | import styled from 'styled-components/native'; 3 | 4 | export const UserAvatar = styled(TAvatar).attrs((props) => ({ 5 | width: 40, 6 | height: 40, 7 | }))` 8 | margin: 0 4px; 9 | `; 10 | UserAvatar.displayName = 'UserAvatar'; 11 | -------------------------------------------------------------------------------- /src/appv2/src/screens/HomeScreen.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { View, Text } from 'react-native'; 3 | 4 | export function HomeScreen() { 5 | return ( 6 | 7 | Home Screen 8 | 9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /src/playground/editor/advanced-editor/example/xml/simple.xml: -------------------------------------------------------------------------------- 1 | 2 |