11import { useState , useEffect } from 'react' ;
22
3- import _ from 'lodash' ;
3+ import {
4+ includes , isEmpty , isFinite , isNaN , isNil ,
5+ } from 'lodash' ;
46// This 'module' self-import hack enables mocking during tests.
57// See src/editors/decisions/0005-internal-editor-testability-decisions.md. The whole approach to how hooks are tested
68// should be re-thought and cleaned up to avoid this pattern.
@@ -65,7 +67,7 @@ export const hintsCardHooks = (hints, updateSettings) => {
6567
6668 const handleAdd = ( ) => {
6769 let newId = 0 ;
68- if ( ! _ . isEmpty ( hints ) ) {
70+ if ( ! isEmpty ( hints ) ) {
6971 newId = Math . max ( ...hints . map ( hint => hint . id ) ) + 1 ;
7072 }
7173 const hint = { id : newId , value : '' } ;
@@ -114,9 +116,9 @@ export const resetCardHooks = (updateSettings) => {
114116
115117export const scoringCardHooks = ( scoring , updateSettings , defaultValue ) => {
116118 let loadedAttemptsNumber = scoring . attempts . number ;
117- if ( ( loadedAttemptsNumber === defaultValue || ! _ . isFinite ( loadedAttemptsNumber ) ) && _ . isFinite ( defaultValue ) ) {
119+ if ( ( loadedAttemptsNumber === defaultValue || ! isFinite ( loadedAttemptsNumber ) ) && isFinite ( defaultValue ) ) {
118120 loadedAttemptsNumber = `${ defaultValue } (Default)` ;
119- } else if ( loadedAttemptsNumber === defaultValue && _ . isNil ( defaultValue ) ) {
121+ } else if ( loadedAttemptsNumber === defaultValue && isNil ( defaultValue ) ) {
120122 loadedAttemptsNumber = '' ;
121123 }
122124 const [ attemptDisplayValue , setAttemptDisplayValue ] = module . state . attemptDisplayValue ( loadedAttemptsNumber ) ;
@@ -135,9 +137,9 @@ export const scoringCardHooks = (scoring, updateSettings, defaultValue) => {
135137 let unlimitedAttempts = false ;
136138 let attemptNumber = parseInt ( event . target . value , 10 ) ;
137139
138- if ( ! _ . isFinite ( attemptNumber ) || attemptNumber === defaultValue ) {
140+ if ( ! isFinite ( attemptNumber ) || attemptNumber === defaultValue ) {
139141 attemptNumber = null ;
140- if ( _ . isFinite ( defaultValue ) ) {
142+ if ( isFinite ( defaultValue ) ) {
141143 setAttemptDisplayValue ( `${ defaultValue } (Default)` ) ;
142144 } else {
143145 setAttemptDisplayValue ( '' ) ;
@@ -154,7 +156,7 @@ export const scoringCardHooks = (scoring, updateSettings, defaultValue) => {
154156 let newMaxAttempt = parseInt ( event . target . value , 10 ) ;
155157 if ( newMaxAttempt === defaultValue ) {
156158 newMaxAttempt = `${ defaultValue } (Default)` ;
157- } else if ( _ . isNaN ( newMaxAttempt ) ) {
159+ } else if ( isNaN ( newMaxAttempt ) ) {
158160 newMaxAttempt = '' ;
159161 } else if ( newMaxAttempt < 0 ) {
160162 newMaxAttempt = 0 ;
@@ -164,7 +166,7 @@ export const scoringCardHooks = (scoring, updateSettings, defaultValue) => {
164166
165167 const handleWeightChange = ( event ) => {
166168 let weight = parseFloat ( event . target . value ) ;
167- if ( _ . isNaN ( weight ) || weight < 0 ) {
169+ if ( isNaN ( weight ) || weight < 0 ) {
168170 weight = 0 ;
169171 }
170172 updateSettings ( { scoring : { ...scoring , weight } } ) ;
@@ -187,18 +189,18 @@ export const useAnswerSettings = (showAnswer, updateSettings) => {
187189 ] ;
188190
189191 useEffect ( ( ) => {
190- setShowAttempts ( _ . includes ( numberOfAttemptsChoice , showAnswer . on ) ) ;
192+ setShowAttempts ( includes ( numberOfAttemptsChoice , showAnswer . on ) ) ;
191193 } , [ showAttempts ] ) ;
192194
193195 const handleShowAnswerChange = ( event ) => {
194196 const { value } = event . target ;
195- setShowAttempts ( _ . includes ( numberOfAttemptsChoice , value ) ) ;
197+ setShowAttempts ( includes ( numberOfAttemptsChoice , value ) ) ;
196198 updateSettings ( { showAnswer : { ...showAnswer , on : value } } ) ;
197199 } ;
198200
199201 const handleAttemptsChange = ( event ) => {
200202 let attempts = parseInt ( event . target . value , 10 ) ;
201- if ( _ . isNaN ( attempts ) || attempts < 0 ) {
203+ if ( isNaN ( attempts ) || attempts < 0 ) {
202204 attempts = 0 ;
203205 }
204206 updateSettings ( { showAnswer : { ...showAnswer , afterAttempts : attempts } } ) ;
@@ -214,7 +216,7 @@ export const useAnswerSettings = (showAnswer, updateSettings) => {
214216export const timerCardHooks = ( updateSettings ) => ( {
215217 handleChange : ( event ) => {
216218 let time = parseInt ( event . target . value , 10 ) ;
217- if ( _ . isNaN ( time ) || time < 0 ) {
219+ if ( isNaN ( time ) || time < 0 ) {
218220 time = 0 ;
219221 }
220222 updateSettings ( { timeBetween : time } ) ;
0 commit comments