1
+ "use strict" ;
2
+ Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
3
+ exports . Extension = void 0 ;
4
+ const node_assert_1 = require ( "node:assert" ) ;
5
+ const node_path_1 = require ( "node:path" ) ;
6
+ const program_1 = require ( "@diplodoc/cli/lib/program" ) ;
7
+ const cli_1 = require ( "@diplodoc/cli" ) ;
8
+ class Extension {
9
+ apply ( program ) {
10
+ ( 0 , program_1 . getHooks ) ( program ) . Config . tap ( 'FeedbackControl' , ( config ) => {
11
+ if ( ! config . feedbackControl || "boolean" === typeof config . feedbackControl ) {
12
+ return config ;
13
+ }
14
+ ( 0 , node_assert_1 . ok ) ( config . feedbackControl . endpoint !== '' , 'feedbackControl.endpoint must be not empty' ) ;
15
+ return config ;
16
+ } ) ;
17
+ ( 0 , cli_1 . getBuildHooks ) ( program ) . BeforeRun . for ( 'html' ) . tap ( 'FeedbackControl' , ( run ) => {
18
+ if ( ! program . config . feedbackControl ) {
19
+ return ;
20
+ }
21
+ ( 0 , cli_1 . getEntryHooks ) ( run . entry ) . Page . tap ( 'FeedbackControl' , ( template ) => {
22
+ const controlConfig = program . config . feedbackControl === true ? { } : program . config . feedbackControl ;
23
+ template . addScript ( '_extensions/feedback-control-extension.js' , {
24
+ position : 'leading' ,
25
+ attrs : {
26
+ defer : void 0
27
+ }
28
+ } ) ;
29
+ template . addScript ( `window.feedbackControlExtensionInit(${ JSON . stringify ( controlConfig ) } )` , {
30
+ position : 'state' ,
31
+ inline : true ,
32
+ } ) ;
33
+ } ) ;
34
+ } ) ;
35
+ ( 0 , cli_1 . getBuildHooks ) ( program ) . AfterRun . for ( 'html' ) . tapPromise ( 'FeedbackControl' , async ( run ) => {
36
+ if ( ! program . config . feedbackControl ) {
37
+ return ;
38
+ }
39
+ const extensionFilePath = ( 0 , node_path_1 . join ) ( __dirname , 'resources' , 'feedback-control-extension.js' ) ;
40
+ try {
41
+ await run . copy ( extensionFilePath , ( 0 , node_path_1 . join ) ( run . output , '_extensions' , 'feedback-control-extension.js' ) ) ;
42
+ }
43
+ catch ( error ) {
44
+ run . logger . warn ( `Unable copy the feedback-control extension script ${ extensionFilePath } .` , error ) ;
45
+ }
46
+ } ) ;
47
+ }
48
+ }
49
+ exports . Extension = Extension ;
0 commit comments