0
0
mirror of https://github.com/go-gitea/gitea.git synced 2026-04-04 07:55:31 +02:00
gitea/web_src/js/index.ts
☙◦ The Tablet ❀ GamerGirlandCo ◦❧ e1ba6bcad8
refactor:
re-add htmx things to `index.ts`
2026-04-02 22:26:46 -04:00

205 lines
7.7 KiB
TypeScript

import '../fomantic/build/fomantic.js';
import '../css/index.css';
import type { HtmxResponseInfo } from 'htmx.org';
import { showErrorToast } from './modules/toast.ts';
import { initDashboardRepoList } from './features/dashboard.ts';
import { initGlobalCopyToClipboardListener } from './features/clipboard.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 } from './features/notification.ts';
import { initRepoIssueContentHistory } from './features/repo-issue-content.ts';
import { initStopwatch } from './features/stopwatch.ts';
import { initRepoFileSearch } from './features/repo-findfile.ts';
import { initMarkupContent } from './markup/content.ts';
import { initRepoFileView } from './features/file-view.ts';
import { initUserCheckAppUrl, initUserExternalLogins } from './features/user-auth.ts';
import { initRepoIssueFilterItemLabel, initRepoPullRequestReview } from './features/repo-issue.ts';
import { initCommitStatuses, initRepoEllipsisButton } 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 { 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 { initCompSearchTeamBox } from './features/comp/SearchTeamBox.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 { initBranchSelectorTabs, initRepository } 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 } 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 {
initCommmPageComponents,
initGlobalComponent,
initGlobalDropdown,
initGlobalInput
} 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';
import { initActionsPermissionsForm } from './features/common-actions-permissions.ts';
import { initGlobalShortcut } from './modules/shortcut.ts';
import { initCommonGroup, initGroup } from "./features/group.ts";
const initStartTime = performance.now();
const initPerformanceTracer = callInitFunctions([
initSubmitEventPolyfill,
initGiteaFomantic,
initGlobalComponent,
initGlobalDropdown,
initGlobalFetchAction,
initGlobalTooltips,
initGlobalButtonClickOnEnter,
initGlobalButtons,
initGlobalCopyToClipboardListener,
initGlobalEnterQuickSubmit,
initGlobalFormDirtyLeaveConfirm,
initGlobalComboMarkdownEditor,
initGlobalDeleteButton,
initGlobalInput,
initGlobalShortcut,
initCommonOrganization,
initCommonIssueListQuickGoto,
initCompSearchUserBox,
initCompWebHookEditor,
initCompSearchTeamBox,
initInstall,
initCommmPageComponents,
initHeatmap,
initImageDiff,
initMarkupAnchors,
initMarkupContent,
initSshKeyFormParser,
initStopwatch,
initTableSort,
initRepoFileSearch,
initCopyContent,
initAdminCommon,
initAdminUserListSearchForm,
initAdminConfigs,
initAdminSelfCheck,
initDashboardRepoList,
initNotificationCount,
initOrgTeam,
initRepoActivityTopAuthorsChart,
initRepoArchiveLinks,
initRepoBranchButton,
initRepoCodeView,
initBranchSelectorTabs,
initRepoEllipsisButton,
initRepoDiffCommitBranchesAndTags,
initRepoEditor,
initRepoGraphGit,
initRepoIssueContentHistory,
initRepoIssueList,
initRepoIssueFilterItemLabel,
initRepoMigration,
initRepoMigrationStatusChecker,
initRepoProject,
initRepoPullRequestReview,
initRepoReleaseNew,
initRepoTopicBar,
initRepoViewFileTree,
initRepoWikiForm,
initRepository,
initRepositoryActionView,
initRepositorySearch,
initRepoContributors,
initRepoCodeFrequency,
initRepoRecentCommits,
initCommitStatuses,
initCaptcha,
initUserCheckAppUrl,
initUserExternalLogins,
initUserAuthWebAuthn,
initUserAuthWebAuthnRegister,
initUserSettings,
initRepoDiffView,
initColorPickers,
initOAuth2SettingsDisableCheckbox,
initRepoFileView,
initCommonGroup,
initGroup,
initActionsPermissionsForm,
]);
// 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`);
}
// https://htmx.org/events/#htmx:sendError
type HtmxEvent = Event & { detail: HtmxResponseInfo };
document.body.addEventListener('htmx:sendError',
(event) => {
// TODO: add translations
showErrorToast(`Network error when calling ${(event as HtmxEvent).detail.requestConfig.path}`);
});
// https://htmx.org/events/#htmx:responseError
document.body.addEventListener('htmx:responseError',
(event) => {
// TODO: add translations
showErrorToast(`Error ${(event as HtmxEvent).detail.xhr.status} when calling ${(event as HtmxEvent).detail.requestConfig.path}`);
});
document.dispatchEvent(new CustomEvent('gitea:index-ready'));