// bootstrap module must be the first one to be imported, it handles webpack lazy-loading and global errors import './bootstrap.js'; import './htmx.js'; import {initRepoActivityTopAuthorsChart} from './components/RepoActivityTopAuthors.vue'; import {initScopedAccessTokenCategories} from './components/ScopedAccessTokenSelector.vue'; import {initDashboardRepoList} from './components/DashboardRepoList.vue'; import {initGlobalCopyToClipboardListener} from './features/clipboard.js'; import {initContextPopups} from './features/contextpopup.js'; import {initRepoGraphGit} from './features/repo-graph.js'; import {initHeatmap} from './features/heatmap.js'; import {initImageDiff} from './features/imagediff.js'; import {initRepoMigration} from './features/repo-migration.js'; import {initRepoProject} from './features/repo-projects.js'; import {initTableSort} from './features/tablesort.js'; import {initAutoFocusEnd} from './features/autofocus-end.js'; import {initAdminUserListSearchForm} from './features/admin/users.js'; import {initAdminConfigs} from './features/admin/config.js'; import {initMarkupAnchors} from './markup/anchors.js'; import {initNotificationCount, initNotificationsTable} from './features/notification.js'; import {initRepoIssueContentHistory} from './features/repo-issue-content.js'; import {initStopwatch} from './features/stopwatch.js'; import {initFindFileInRepo} from './features/repo-findfile.js'; import {initCommentContent, initMarkupContent} from './markup/content.js'; import {initPdfViewer} from './render/pdf.js'; import {initUserAuthOauth2} from './features/user-auth.js'; import { initRepoIssueDue, initRepoIssueReferenceRepositorySearch, initRepoIssueTimeTracking, initRepoIssueWipTitle, initRepoPullRequestMergeInstruction, initRepoPullRequestAllowMaintainerEdit, initRepoPullRequestReview, initRepoIssueSidebarList, initArchivedLabelHandler, } from './features/repo-issue.js'; import {initRepoEllipsisButton, initCommitStatuses} from './features/repo-commit.js'; import {initRepoTopicBar} from './features/repo-home.js'; import {initAdminEmails} from './features/admin/emails.js'; import {initAdminCommon} from './features/admin/common.js'; import {initRepoTemplateSearch} from './features/repo-template.js'; import {initRepoCodeView} from './features/repo-code.js'; import {initSshKeyFormParser} from './features/sshkey-helper.js'; import {initUserSettings} from './features/user-settings.js'; import {initRepoArchiveLinks} from './features/repo-common.js'; import {initRepoMigrationStatusChecker} from './features/repo-migrate.js'; import { initRepoSettingGitHook, initRepoSettingsCollaboration, initRepoSettingSearchTeamBox, } from './features/repo-settings.js'; import {initRepoDiffView} from './features/repo-diff.js'; import {initOrgTeamSearchRepoBox, initOrgTeamSettings} from './features/org-team.js'; import {initUserAuthWebAuthn, initUserAuthWebAuthnRegister} from './features/user-auth-webauthn.js'; import {initRepoRelease, initRepoReleaseNew} from './features/repo-release.js'; import {initRepoEditor} from './features/repo-editor.js'; import {initCompSearchUserBox} from './features/comp/SearchUserBox.js'; import {initInstall} from './features/install.js'; import {initCompWebHookEditor} from './features/comp/WebHookEditor.js'; import {initRepoBranchButton} from './features/repo-branch.js'; import {initCommonOrganization} from './features/common-organization.js'; import {initRepoWikiForm} from './features/repo-wiki.js'; import {initRepoCommentForm, initRepository} from './features/repo-legacy.js'; import {initCopyContent} from './features/copycontent.js'; import {initCaptcha} from './features/captcha.js'; import {initRepositoryActionView} from './components/RepoActionView.vue'; import {initGlobalTooltips} from './modules/tippy.js'; import {initGiteaFomantic} from './modules/fomantic.js'; import {initSubmitEventPolyfill, onDomReady} from './utils/dom.js'; import {initRepoIssueList} from './features/repo-issue-list.js'; import {initCommonIssueListQuickGoto} from './features/common-issue-list.js'; import {initRepoContributors} from './features/contributors.js'; import {initRepoCodeFrequency} from './features/code-frequency.js'; import {initRepoRecentCommits} from './features/recent-commits.js'; import {initRepoDiffCommitBranchesAndTags} from './features/repo-diff-commit.js'; import {initDirAuto} from './modules/dirauto.js'; import {initRepositorySearch} from './features/repo-search.js'; import {initColorPickers} from './features/colorpicker.js'; import {initAdminSelfCheck} from './features/admin/selfcheck.js'; import {initGlobalFetchAction} from './features/common-fetch-action.js'; import { initFootLanguageMenu, initGlobalDropdown, initGlobalTabularMenu, initHeadNavbarContentToggle, } from './features/common-page.js'; import { initGlobalButtonClickOnEnter, initGlobalButtons, initGlobalDeleteButton, initGlobalShowModal, } from './features/common-button.js'; import {initGlobalEnterQuickSubmit, initGlobalFormDirtyLeaveConfirm} from './features/common-form.js'; initGiteaFomantic(); initDirAuto(); initSubmitEventPolyfill(); function callInitFunctions(functions) { // Start performance trace by accessing a URL by "https://localhost/?_ui_performance_trace=1" or "https://localhost/?key=value&_ui_performance_trace=1" // It is a quick check, no side effect so no need to do slow URL parsing. const initStart = performance.now(); if (window.location.search.includes('_ui_performance_trace=1')) { let results = []; for (const func of functions) { const start = performance.now(); func(); results.push({name: func.name, dur: performance.now() - start}); } results = results.sort((a, b) => b.dur - a.dur); for (let i = 0; i < 20 && i < results.length; i++) { // eslint-disable-next-line no-console console.log(`performance trace: ${results[i].name} ${results[i].dur.toFixed(3)}`); } } else { for (const func of functions) { func(); } } const initDur = performance.now() - initStart; if (initDur > 500) { console.error(`slow init functions took ${initDur.toFixed(3)}ms`); } } onDomReady(() => { callInitFunctions([ initGlobalDropdown, initGlobalTabularMenu, initGlobalShowModal, initGlobalFetchAction, initGlobalTooltips, initGlobalButtonClickOnEnter, initGlobalButtons, initGlobalCopyToClipboardListener, initGlobalEnterQuickSubmit, initGlobalFormDirtyLeaveConfirm, initGlobalDeleteButton, initCommonOrganization, initCommonIssueListQuickGoto, initCompSearchUserBox, initCompWebHookEditor, initInstall, initHeadNavbarContentToggle, initFootLanguageMenu, initCommentContent, initContextPopups, initHeatmap, initImageDiff, initMarkupAnchors, initMarkupContent, initSshKeyFormParser, initStopwatch, initTableSort, initAutoFocusEnd, initFindFileInRepo, initCopyContent, initAdminCommon, initAdminEmails, initAdminUserListSearchForm, initAdminConfigs, initAdminSelfCheck, initDashboardRepoList, initNotificationCount, initNotificationsTable, initOrgTeamSearchRepoBox, initOrgTeamSettings, initRepoActivityTopAuthorsChart, initRepoArchiveLinks, initRepoBranchButton, initRepoCodeView, initRepoCommentForm, initRepoEllipsisButton, initRepoDiffCommitBranchesAndTags, initRepoEditor, initRepoGraphGit, initRepoIssueContentHistory, initRepoIssueDue, initRepoIssueList, initRepoIssueSidebarList, initArchivedLabelHandler, initRepoIssueReferenceRepositorySearch, initRepoIssueTimeTracking, initRepoIssueWipTitle, initRepoMigration, initRepoMigrationStatusChecker, initRepoProject, initRepoPullRequestMergeInstruction, initRepoPullRequestAllowMaintainerEdit, initRepoPullRequestReview, initRepoRelease, initRepoReleaseNew, initRepoSettingGitHook, initRepoSettingSearchTeamBox, initRepoSettingsCollaboration, initRepoTemplateSearch, initRepoTopicBar, initRepoWikiForm, initRepository, initRepositoryActionView, initRepositorySearch, initRepoContributors, initRepoCodeFrequency, initRepoRecentCommits, initCommitStatuses, initCaptcha, initUserAuthOauth2, initUserAuthWebAuthn, initUserAuthWebAuthnRegister, initUserSettings, initRepoDiffView, initPdfViewer, initScopedAccessTokenCategories, initColorPickers, ]); });