@@ -11,7 +11,6 @@ import {initImageDiff} from './features/imagediff.ts';
1111import { initRepoMigration } from './features/repo-migration.ts' ;
1212import { initRepoProject } from './features/repo-projects.ts' ;
1313import { initTableSort } from './features/tablesort.ts' ;
14- import { initAutoFocusEnd } from './features/autofocus-end.ts' ;
1514import { initAdminUserListSearchForm } from './features/admin/users.ts' ;
1615import { initAdminConfigs } from './features/admin/config.ts' ;
1716import { initMarkupAnchors } from './markup/anchors.ts' ;
@@ -62,62 +61,23 @@ import {initRepoContributors} from './features/contributors.ts';
6261import { initRepoCodeFrequency } from './features/code-frequency.ts' ;
6362import { initRepoRecentCommits } from './features/recent-commits.ts' ;
6463import { initRepoDiffCommitBranchesAndTags } from './features/repo-diff-commit.ts' ;
65- import { initAddedElementObserver } from './modules/observer.ts' ;
64+ import { initGlobalSelectorObserver } from './modules/observer.ts' ;
6665import { initRepositorySearch } from './features/repo-search.ts' ;
6766import { initColorPickers } from './features/colorpicker.ts' ;
6867import { initAdminSelfCheck } from './features/admin/selfcheck.ts' ;
6968import { initOAuth2SettingsDisableCheckbox } from './features/oauth2-settings.ts' ;
7069import { initGlobalFetchAction } from './features/common-fetch-action.ts' ;
71- import {
72- initFootLanguageMenu ,
73- initGlobalDropdown ,
74- initGlobalTabularMenu ,
75- initHeadNavbarContentToggle ,
76- } from './features/common-page.ts' ;
77- import {
78- initGlobalButtonClickOnEnter ,
79- initGlobalButtons ,
80- initGlobalDeleteButton ,
81- } from './features/common-button.ts' ;
82- import {
83- initGlobalComboMarkdownEditor ,
84- initGlobalEnterQuickSubmit ,
85- initGlobalFormDirtyLeaveConfirm ,
86- } from './features/common-form.ts' ;
70+ import { initFootLanguageMenu , initGlobalDropdown , initGlobalInput , initGlobalTabularMenu , initHeadNavbarContentToggle } from './features/common-page.ts' ;
71+ import { initGlobalButtonClickOnEnter , initGlobalButtons , initGlobalDeleteButton } from './features/common-button.ts' ;
72+ import { initGlobalComboMarkdownEditor , initGlobalEnterQuickSubmit , initGlobalFormDirtyLeaveConfirm } from './features/common-form.ts' ;
73+ import { callInitFunctions } from './modules/init.ts' ;
8774
8875initGiteaFomantic ( ) ;
89- initAddedElementObserver ( ) ;
9076initSubmitEventPolyfill ( ) ;
9177
92- function callInitFunctions ( functions : ( ( ) => any ) [ ] ) {
93- // Start performance trace by accessing a URL by "https://localhost/?_ui_performance_trace=1" or "https://localhost/?key=value&_ui_performance_trace=1"
94- // It is a quick check, no side effect so no need to do slow URL parsing.
95- const initStart = performance . now ( ) ;
96- if ( window . location . search . includes ( '_ui_performance_trace=1' ) ) {
97- let results : { name : string , dur : number } [ ] = [ ] ;
98- for ( const func of functions ) {
99- const start = performance . now ( ) ;
100- func ( ) ;
101- results . push ( { name : func . name , dur : performance . now ( ) - start } ) ;
102- }
103- results = results . sort ( ( a , b ) => b . dur - a . dur ) ;
104- for ( let i = 0 ; i < 20 && i < results . length ; i ++ ) {
105- // eslint-disable-next-line no-console
106- console . log ( `performance trace: ${ results [ i ] . name } ${ results [ i ] . dur . toFixed ( 3 ) } ` ) ;
107- }
108- } else {
109- for ( const func of functions ) {
110- func ( ) ;
111- }
112- }
113- const initDur = performance . now ( ) - initStart ;
114- if ( initDur > 500 ) {
115- console . error ( `slow init functions took ${ initDur . toFixed ( 3 ) } ms` ) ;
116- }
117- }
118-
11978onDomReady ( ( ) => {
120- callInitFunctions ( [
79+ const initStartTime = performance . now ( ) ;
80+ const initPerformanceTracer = callInitFunctions ( [
12181 initGlobalDropdown ,
12282 initGlobalTabularMenu ,
12383 initGlobalFetchAction ,
@@ -129,6 +89,7 @@ onDomReady(() => {
12989 initGlobalFormDirtyLeaveConfirm ,
13090 initGlobalComboMarkdownEditor ,
13191 initGlobalDeleteButton ,
92+ initGlobalInput ,
13293
13394 initCommonOrganization ,
13495 initCommonIssueListQuickGoto ,
@@ -150,7 +111,6 @@ onDomReady(() => {
150111 initSshKeyFormParser ,
151112 initStopwatch ,
152113 initTableSort ,
153- initAutoFocusEnd ,
154114 initFindFileInRepo ,
155115 initCopyContent ,
156116
@@ -212,4 +172,13 @@ onDomReady(() => {
212172
213173 initOAuth2SettingsDisableCheckbox ,
214174 ] ) ;
175+
176+ // it must be the last one, then the "querySelectorAll" only needs to be executed once for global init functions.
177+ initGlobalSelectorObserver ( initPerformanceTracer ) ;
178+ if ( initPerformanceTracer ) initPerformanceTracer . printResults ( ) ;
179+
180+ const initDur = performance . now ( ) - initStartTime ;
181+ if ( initDur > 500 ) {
182+ console . error ( `slow init functions took ${ initDur . toFixed ( 3 ) } ms` ) ;
183+ }
215184} ) ;
0 commit comments