personal_options.js revision 72a454cd3513ac24fbdd0e0cb9ad70b86a99b801
172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
53345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickcr.define('options', function() {
63345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  var OptionsPage = options.OptionsPage;
83345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
9731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // State variables.
10731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  var syncEnabled = false;
11731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  var syncSetupCompleted = false;
12731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
1321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  /**
1421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen   * Encapsulated handling of personal options page.
1521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen   * @constructor
1621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen   */
173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  function PersonalOptions() {
1872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    OptionsPage.call(this, 'personal',
1972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                     templateData.personalPageTabTitle,
20201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                     'personal-page');
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
223345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  cr.addSingletonGetter(PersonalOptions);
243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  PersonalOptions.prototype = {
263345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    // Inherit PersonalOptions from OptionsPage.
273345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    __proto__: options.OptionsPage.prototype,
283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
293345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    // Initialize PersonalOptions page.
303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    initializePage: function() {
3121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      // Call base class implementation to start preference initialization.
323345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      OptionsPage.prototype.initializePage.call(this);
333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
34731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      var self = this;
354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch      $('sync-action-link').onclick = function(event) {
3672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        chrome.send('showSyncActionDialog');
374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch      };
38731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      $('start-stop-sync').onclick = function(event) {
39731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick        if (self.syncSetupCompleted)
40731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick          self.showStopSyncingOverlay_();
41731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick        else
424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch          chrome.send('showSyncLoginDialog');
43731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      };
4472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      $('customize-sync').onclick = function(event) {
4572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        chrome.send('showCustomizeSyncDialog');
4672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      };
47731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      $('privacy-dashboard-link').onclick = function(event) {
48731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick        chrome.send('openPrivacyDashboardTabAndActivate');
493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      };
50201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch      $('manage-passwords').onclick = function(event) {
5172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        OptionsPage.navigateToPage('passwordManager');
523345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick        OptionsPage.showTab($('passwords-nav-tab'));
533345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick        chrome.send('coreOptionsUserMetricsAction',
5421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen            ['Options_ShowPasswordManager']);
553345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      };
5621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      $('autofill-settings').onclick = function(event) {
5772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        OptionsPage.navigateToPage('autoFillOptions');
583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick        chrome.send('coreOptionsUserMetricsAction',
593345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick            ['Options_ShowAutoFillSettings']);
603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      };
61201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch      $('themes-reset').onclick = function(event) {
62201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch        chrome.send('themesReset');
63201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch      };
643345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
653345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      if (!cr.isChromeOS) {
66201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch        $('import-data').onclick = function(event) {
6772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen          OptionsPage.navigateToPage('importDataOverlay');
683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick          chrome.send('coreOptionsUserMetricsAction', ['Import_ShowDlg']);
693345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick        };
703345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
71201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch        if (navigator.platform.match(/linux|BSD/i)) {
72201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch          $('themes-GTK-button').onclick = function(event) {
73201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch            chrome.send('themesSetGTK');
74201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch          };
75201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch        }
76201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch      } else {
77731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick        chrome.send('loadAccountPicture');
78731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      }
7921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
8072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      if (cr.commandLine.options['--bwsi']) {
8172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        // Disable the screen lock checkbox for the guest mode.
8221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen        $('enable-screen-lock').disabled = true;
8372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      }
8421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
8572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      if (PersonalOptions.disablePasswordManagement()) {
8672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        $('passwords-offersave').disabled = true;
8772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        $('passwords-neversave').disabled = true;
8872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        $('passwords-offersave').value = false;
8972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        $('passwords-neversave').value = true;
9072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        $('manage-passwords').disabled = true;
91201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch      }
923345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    },
933345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
94731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    showStopSyncingOverlay_: function(event) {
9521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      AlertOverlay.show(localStrings.getString('stop_syncing_title'),
9621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                        localStrings.getString('stop_syncing_explanation'),
9721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                        localStrings.getString('stop_syncing_confirm'),
9821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                        localStrings.getString('cancel'),
9921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                        function() { chrome.send('stopSyncing'); });
100731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    },
101731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
102731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    setElementVisible_: function(element, visible) {
1034a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch      if (visible)
1044a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        element.classList.remove('hidden');
1054a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch      else
1064a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        element.classList.add('hidden');
107731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    },
108731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
109731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    setSyncEnabled_: function(enabled) {
110731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      this.syncEnabled = enabled;
111731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    },
112731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
113731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    setSyncSetupCompleted_: function(completed) {
114731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      this.syncSetupCompleted = completed;
11572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      this.setElementVisible_($('customize-sync'), completed);
116731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    },
117731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
118731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    setAccountPicture_: function(image) {
119731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      $('account-picture').src = image;
120731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    },
121731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
122731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    setSyncStatus_: function(status) {
12372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      $('sync-status-text').textContent = status;
124731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    },
125731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
126731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    setSyncStatusErrorVisible_: function(visible) {
12772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      visible ? $('sync-status').classList.add('sync-error') :
12872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                $('sync-status').classList.remove('sync-error');
129731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    },
130731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
131731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    setSyncActionLinkEnabled_: function(enabled) {
132731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      $('sync-action-link').disabled = !enabled;
133731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    },
134731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
135731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    setSyncActionLinkLabel_: function(status) {
136731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      $('sync-action-link').textContent = status;
137731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
138731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      // link-button does is not zero-area when the contents of the button are
139731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      // empty, so explicitly hide the element.
140731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      this.setElementVisible_($('sync-action-link'), status.length != 0);
141731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    },
142731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
143731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    setStartStopButtonVisible_: function(visible) {
144731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      this.setElementVisible_($('start-stop-sync'), visible);
145731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    },
146731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
147731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    setStartStopButtonEnabled_: function(enabled) {
148731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      $('start-stop-sync').disabled = !enabled;
149731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    },
150731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
151731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    setStartStopButtonLabel_: function(label) {
152731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      $('start-stop-sync').textContent = label;
153731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    },
154731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
1553345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    setGtkThemeButtonEnabled_: function(enabled) {
1563345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      if (!cr.isChromeOS && navigator.platform.match(/linux|BSD/i)) {
157201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch        $('themes-GTK-button').disabled = !enabled;
1583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      }
1593345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    },
1603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
161201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch    setThemesResetButtonEnabled_: function(enabled) {
162201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch      $('themes-reset').disabled = !enabled;
1633345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    },
1644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
1654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    hideSyncSection_: function() {
1664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch      this.setElementVisible_($('sync-section'), false);
1674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    },
16821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
16921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    /**
17021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen     * Toggles the visibility of the data type checkboxes based on whether they
17121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen     * are enabled on not.
17221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen     * @param {Object} dict A mapping from data type to a boolean indicating
17321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen     *     whether it is enabled.
17421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen     * @private
17521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen     */
17621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    setRegisteredDataTypes_: function(dict) {
17721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      for (var type in dict) {
17821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen        if (type.match(/Registered$/) && !dict[type]) {
17921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen          node = $(type.replace(/([a-z]+)Registered$/i, '$1').toLowerCase()
18021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                   + '-check');
18121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen          if (node)
18221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen            node.parentNode.style.display = 'none';
18321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen        }
18421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      }
18521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    },
1863345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  };
1873345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
18872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  /**
18972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen   * Returns whether the user should be able to manage (view and edit) their
19072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen   * stored passwords. Password management is disabled in guest mode.
19172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen   * @return {boolean} True if password management should be disabled.
19272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen   */
19372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  PersonalOptions.disablePasswordManagement = function() {
19472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    return cr.commandLine.options['--bwsi'];
19572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  };
19672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
197731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // Forward public APIs to private implementations.
198731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  [
199731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    'setSyncEnabled',
200731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    'setSyncSetupCompleted',
201731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    'setAccountPicture',
202731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    'setSyncStatus',
203731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    'setSyncStatusErrorVisible',
204731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    'setSyncActionLinkEnabled',
205731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    'setSyncActionLinkLabel',
206731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    'setStartStopButtonVisible',
207731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    'setStartStopButtonEnabled',
208731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    'setStartStopButtonLabel',
209731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    'setGtkThemeButtonEnabled',
210201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch    'setThemesResetButtonEnabled',
2114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    'hideSyncSection',
21221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    'setRegisteredDataTypes',
213731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ].forEach(function(name) {
214731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    PersonalOptions[name] = function(value) {
215731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      PersonalOptions.getInstance()[name + '_'](value);
216731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    };
217731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  });
2183345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
2193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  // Export
2203345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  return {
2213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    PersonalOptions: PersonalOptions
2223345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  };
2233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
2243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick});
225