PluginProbe
BeyondWords – AI audio for publishers / 6.0.3
BeyondWords – AI audio for publishers v6.0.3
7.1.0 trunk 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.1.0 4.1.1 4.1.2 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.3.0 4.4.0 4.5.0 4.5.1 4.6.0 4.6.1 4.6.2 4.7.0 All 43 releases
speechkit / src / Component / Settings / Fields / Language / index.js

index.js in BeyondWords – AI audio for publishers 6.0.3, at src/Component/Settings/Fields/Language/index.js

138 lines 3.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* global jQuery, TomSelect */
2 'use strict';
3 ( function ( $ ) {
4 $( document ).ready( function () {
5 const originalLanguageCode = $(
6 '#beyondwords_project_language_code'
7 ).value;
8
9 if ( $( '#beyondwords_project_language_code' ).length ) {
10 const select = new TomSelect(
11 '#beyondwords_project_language_code',
12 {
13 maxOptions: null,
14 sortField: {
15 field: 'text',
16 direction: 'asc',
17 },
18 }
19 );
20
21 select.on( 'change', async function ( languageCode ) {
22 const $voicesSelects = $( '.beyondwords_project_voice' );
23 const $titleVoicesSelect = $(
24 '#beyondwords_project_title_voice_id'
25 );
26 const $bodyVoicesSelect = $(
27 '#beyondwords_project_body_voice_id'
28 );
29 const endpoint = `${ beyondwordsData.root }beyondwords/v1/languages/${ languageCode }/voices`;
30
31 $( '.beyondwords-settings__loader-default-language' ).show();
32 $( 'select.beyondwords_project_voice' ).hide();
33 $( 'select.beyondwords_project_voice' )
34 .attr( 'value', '' )
35 .attr( 'disabled', 'disabled' );
36 $(
37 '.beyondwords-setting__title-voice .beyondwords-settings__loader'
38 ).show();
39 $(
40 '.beyondwords-setting__body-voice .beyondwords-settings__loader'
41 ).show();
42 $( '.beyondwords_speaking_rate' ).attr(
43 'disabled',
44 'disabled'
45 );
46
47 jQuery
48 .ajax( {
49 url: endpoint,
50 method: 'GET',
51 beforeSend( xhr ) {
52 xhr.setRequestHeader(
53 'X-WP-Nonce',
54 beyondwordsData.nonce
55 );
56 },
57 } )
58 .done( function ( voices ) {
59 $voicesSelects.each( function ( index ) {
60 $( this )
61 .empty()
62 .append(
63 voices.map( ( voice ) => {
64 return $( '<option></option>' )
65 .val( voice.id )
66 .text( voice.name );
67 } )
68 )
69 .attr( 'disabled', false );
70 } );
71
72 const defaultVoices = $(
73 `#beyondwords_project_language_code option[value="${ languageCode }"]`
74 ).data( 'voices' );
75
76 if ( defaultVoices ) {
77 if (
78 defaultVoices.title &&
79 defaultVoices.title.id
80 ) {
81 $( $titleVoicesSelect )
82 .find(
83 `option[value="${ defaultVoices.title.id }"]`
84 )
85 .prop( 'selected', true );
86 }
87 if ( defaultVoices.body && defaultVoices.body.id ) {
88 $( $bodyVoicesSelect )
89 .find(
90 `option[value="${ defaultVoices.body.id }"]`
91 )
92 .prop( 'selected', true );
93 }
94 if (
95 defaultVoices.title &&
96 defaultVoices.title.speaking_rate
97 ) {
98 $(
99 '#beyondwords_project_title_voice_speaking_rate'
100 ).val( defaultVoices.title.speaking_rate );
101 }
102 if (
103 defaultVoices.body &&
104 defaultVoices.body.speaking_rate
105 ) {
106 $(
107 '#beyondwords_project_body_voice_speaking_rate'
108 ).val( defaultVoices.body.speaking_rate );
109 }
110 }
111 } )
112 .fail( function ( xhr ) {
113 console.log( '🔊 Unable to load voices', xhr );
114 $( '#beyondwords_project_language_code' ).setValue(
115 originalLanguageCode
116 );
117 } )
118 .always( function () {
119 $(
120 '.beyondwords-setting__title-voice .beyondwords-settings__loader'
121 ).hide();
122 $(
123 '.beyondwords-setting__body-voice .beyondwords-settings__loader'
124 ).hide();
125 $( 'select.beyondwords_project_voice' ).show();
126 $( 'select.beyondwords_project_voice' )
127 .attr( 'value', '' )
128 .attr( 'disabled', false );
129 $( '.beyondwords_speaking_rate' ).attr(
130 'disabled',
131 false
132 );
133 } );
134 } );
135 }
136 } );
137 } )( jQuery );
138