Config.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. function Config() {
  2. const name = 'threejs-editor';
  3. const userLanguage = navigator.language.split( '-' )[ 0 ];
  4. const suggestedLanguage = [ 'fr', 'ja', 'zh' ].includes( userLanguage ) ? userLanguage : 'en';
  5. const storage = {
  6. 'language': suggestedLanguage,
  7. 'autosave': true,
  8. 'project/title': '',
  9. 'project/editable': false,
  10. 'project/vr': false,
  11. 'project/renderer/antialias': true,
  12. 'project/renderer/shadows': true,
  13. 'project/renderer/shadowType': 1, // PCF
  14. 'project/renderer/toneMapping': 0, // NoToneMapping
  15. 'project/renderer/toneMappingExposure': 1,
  16. 'settings/history': false,
  17. 'settings/shortcuts/translate': 'w',
  18. 'settings/shortcuts/rotate': 'e',
  19. 'settings/shortcuts/scale': 'r',
  20. 'settings/shortcuts/undo': 'z',
  21. 'settings/shortcuts/focus': 'f'
  22. };
  23. if ( window.localStorage[ name ] === undefined ) {
  24. window.localStorage[ name ] = JSON.stringify( storage );
  25. } else {
  26. const data = JSON.parse( window.localStorage[ name ] );
  27. for ( const key in data ) {
  28. storage[ key ] = data[ key ];
  29. }
  30. }
  31. return {
  32. getKey: function ( key ) {
  33. return storage[ key ];
  34. },
  35. setKey: function () { // key, value, key, value ...
  36. for ( let i = 0, l = arguments.length; i < l; i += 2 ) {
  37. storage[ arguments[ i ] ] = arguments[ i + 1 ];
  38. }
  39. window.localStorage[ name ] = JSON.stringify( storage );
  40. console.log( '[' + /\d\d\:\d\d\:\d\d/.exec( new Date() )[ 0 ] + ']', 'Saved config to LocalStorage.' );
  41. },
  42. clear: function () {
  43. delete window.localStorage[ name ];
  44. }
  45. };
  46. }
  47. export { Config };