aboutsummaryrefslogtreecommitdiffstats
path: root/web_src/js/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'web_src/js/index.ts')
-rw-r--r--web_src/js/index.ts191
1 files changed, 19 insertions, 172 deletions
diff --git a/web_src/js/index.ts b/web_src/js/index.ts
index 7e84773bc1..af53cc488c 100644
--- a/web_src/js/index.ts
+++ b/web_src/js/index.ts
@@ -1,176 +1,23 @@
// bootstrap module must be the first one to be imported, it handles webpack lazy-loading and global errors
import './bootstrap.ts';
-import './htmx.ts';
-
-import {initDashboardRepoList} from './features/dashboard.ts';
-import {initGlobalCopyToClipboardListener} from './features/clipboard.ts';
-import {initContextPopups} from './features/contextpopup.ts';
-import {initRepoGraphGit} from './features/repo-graph.ts';
-import {initHeatmap} from './features/heatmap.ts';
-import {initImageDiff} from './features/imagediff.ts';
-import {initRepoMigration} from './features/repo-migration.ts';
-import {initRepoProject} from './features/repo-projects.ts';
-import {initTableSort} from './features/tablesort.ts';
-import {initAdminUserListSearchForm} from './features/admin/users.ts';
-import {initAdminConfigs} from './features/admin/config.ts';
-import {initMarkupAnchors} from './markup/anchors.ts';
-import {initNotificationCount, initNotificationsTable} from './features/notification.ts';
-import {initRepoIssueContentHistory} from './features/repo-issue-content.ts';
-import {initStopwatch} from './features/stopwatch.ts';
-import {initFindFileInRepo} from './features/repo-findfile.ts';
-import {initMarkupContent} from './markup/content.ts';
-import {initPdfViewer} from './render/pdf.ts';
-import {initUserAuthOauth2, initUserCheckAppUrl} from './features/user-auth.ts';
-import {initRepoPullRequestAllowMaintainerEdit, initRepoPullRequestReview, initRepoIssueSidebarDependency, initRepoIssueFilterItemLabel} from './features/repo-issue.ts';
-import {initRepoEllipsisButton, initCommitStatuses} from './features/repo-commit.ts';
-import {initRepoTopicBar} from './features/repo-home.ts';
-import {initAdminCommon} from './features/admin/common.ts';
-import {initRepoCodeView} from './features/repo-code.ts';
-import {initSshKeyFormParser} from './features/sshkey-helper.ts';
-import {initUserSettings} from './features/user-settings.ts';
-import {initRepoActivityTopAuthorsChart, initRepoArchiveLinks} from './features/repo-common.ts';
-import {initRepoMigrationStatusChecker} from './features/repo-migrate.ts';
-import {initRepoDiffView} from './features/repo-diff.ts';
-import {initOrgTeam} from './features/org-team.ts';
-import {initUserAuthWebAuthn, initUserAuthWebAuthnRegister} from './features/user-auth-webauthn.ts';
-import {initRepoRelease, initRepoReleaseNew} from './features/repo-release.ts';
-import {initRepoEditor} from './features/repo-editor.ts';
-import {initCompSearchUserBox} from './features/comp/SearchUserBox.ts';
-import {initInstall} from './features/install.ts';
-import {initCompWebHookEditor} from './features/comp/WebHookEditor.ts';
-import {initRepoBranchButton} from './features/repo-branch.ts';
-import {initCommonOrganization} from './features/common-organization.ts';
-import {initRepoWikiForm} from './features/repo-wiki.ts';
-import {initRepository, initBranchSelectorTabs} from './features/repo-legacy.ts';
-import {initCopyContent} from './features/copycontent.ts';
-import {initCaptcha} from './features/captcha.ts';
-import {initRepositoryActionView} from './features/repo-actions.ts';
-import {initGlobalTooltips} from './modules/tippy.ts';
-import {initGiteaFomantic} from './modules/fomantic.ts';
-import {initSubmitEventPolyfill, onDomReady} from './utils/dom.ts';
-import {initRepoIssueList} from './features/repo-issue-list.ts';
-import {initCommonIssueListQuickGoto} from './features/common-issue-list.ts';
-import {initRepoContributors} from './features/contributors.ts';
-import {initRepoCodeFrequency} from './features/code-frequency.ts';
-import {initRepoRecentCommits} from './features/recent-commits.ts';
-import {initRepoDiffCommitBranchesAndTags} from './features/repo-diff-commit.ts';
-import {initGlobalSelectorObserver} from './modules/observer.ts';
-import {initRepositorySearch} from './features/repo-search.ts';
-import {initColorPickers} from './features/colorpicker.ts';
-import {initAdminSelfCheck} from './features/admin/selfcheck.ts';
-import {initOAuth2SettingsDisableCheckbox} from './features/oauth2-settings.ts';
-import {initGlobalFetchAction} from './features/common-fetch-action.ts';
-import {initFootLanguageMenu, initGlobalAvatarUploader, initGlobalDropdown, initGlobalInput, initGlobalTabularMenu, initHeadNavbarContentToggle} from './features/common-page.ts';
-import {initGlobalButtonClickOnEnter, initGlobalButtons, initGlobalDeleteButton} from './features/common-button.ts';
-import {initGlobalComboMarkdownEditor, initGlobalEnterQuickSubmit, initGlobalFormDirtyLeaveConfirm} from './features/common-form.ts';
-import {callInitFunctions} from './modules/init.ts';
-import {initRepoViewFileTree} from './features/repo-view-file-tree.ts';
-
-initGiteaFomantic();
-initSubmitEventPolyfill();
-
-onDomReady(() => {
- const initStartTime = performance.now();
- const initPerformanceTracer = callInitFunctions([
- initGlobalAvatarUploader,
- initGlobalDropdown,
- initGlobalTabularMenu,
- initGlobalFetchAction,
- initGlobalTooltips,
- initGlobalButtonClickOnEnter,
- initGlobalButtons,
- initGlobalCopyToClipboardListener,
- initGlobalEnterQuickSubmit,
- initGlobalFormDirtyLeaveConfirm,
- initGlobalComboMarkdownEditor,
- initGlobalDeleteButton,
- initGlobalInput,
-
- initCommonOrganization,
- initCommonIssueListQuickGoto,
-
- initCompSearchUserBox,
- initCompWebHookEditor,
-
- initInstall,
-
- initHeadNavbarContentToggle,
- initFootLanguageMenu,
-
- initContextPopups,
- initHeatmap,
- initImageDiff,
- initMarkupAnchors,
- initMarkupContent,
- initSshKeyFormParser,
- initStopwatch,
- initTableSort,
- initFindFileInRepo,
- initCopyContent,
-
- initAdminCommon,
- initAdminUserListSearchForm,
- initAdminConfigs,
- initAdminSelfCheck,
-
- initDashboardRepoList,
-
- initNotificationCount,
- initNotificationsTable,
-
- initOrgTeam,
-
- initRepoActivityTopAuthorsChart,
- initRepoArchiveLinks,
- initRepoBranchButton,
- initRepoCodeView,
- initBranchSelectorTabs,
- initRepoEllipsisButton,
- initRepoDiffCommitBranchesAndTags,
- initRepoEditor,
- initRepoGraphGit,
- initRepoIssueContentHistory,
- initRepoIssueList,
- initRepoIssueFilterItemLabel,
- initRepoIssueSidebarDependency,
- initRepoMigration,
- initRepoMigrationStatusChecker,
- initRepoProject,
- initRepoPullRequestAllowMaintainerEdit,
- initRepoPullRequestReview,
- initRepoRelease,
- initRepoReleaseNew,
- initRepoTopicBar,
- initRepoViewFileTree,
- initRepoWikiForm,
- initRepository,
- initRepositoryActionView,
- initRepositorySearch,
- initRepoContributors,
- initRepoCodeFrequency,
- initRepoRecentCommits,
-
- initCommitStatuses,
- initCaptcha,
-
- initUserCheckAppUrl,
- initUserAuthOauth2,
- initUserAuthWebAuthn,
- initUserAuthWebAuthnRegister,
- initUserSettings,
- initRepoDiffView,
- initPdfViewer,
- initColorPickers,
-
- initOAuth2SettingsDisableCheckbox,
- ]);
-
- // it must be the last one, then the "querySelectorAll" only needs to be executed once for global init functions.
- initGlobalSelectorObserver(initPerformanceTracer);
- if (initPerformanceTracer) initPerformanceTracer.printResults();
-
- const initDur = performance.now() - initStartTime;
- if (initDur > 500) {
- console.error(`slow init functions took ${initDur.toFixed(3)}ms`);
+import './webcomponents/index.ts';
+import {onDomReady} from './utils/dom.ts';
+
+// TODO: There is a bug in htmx, it incorrectly checks "readyState === 'complete'" when the DOM tree is ready and won't trigger DOMContentLoaded
+// Then importing the htmx in our onDomReady will make htmx skip its initialization.
+// If the bug would be fixed (https://github.com/bigskysoftware/htmx/pull/3365), then we can only import htmx in "onDomReady"
+import 'htmx.org';
+
+onDomReady(async () => {
+ // when navigate before the import complete, there will be an error from webpack chunk loader:
+ // JavaScript promise rejection: Loading chunk index-domready failed.
+ try {
+ await import(/* webpackChunkName: "index-domready" */'./index-domready.ts');
+ } catch (e) {
+ if (e.name === 'ChunkLoadError') {
+ console.error('Error loading index-domready:', e);
+ } else {
+ throw e;
+ }
}
});