PageSourceSearch

https://www.letsroam.com/assets/js/letsroam/source/team_building_test_data.js?v=1

js letsroam.com collected 2026-09-24 09:24:43 UTC 4,929 bytes, 130 lines download raw bytes

1(function () {
2  if (window.teamBuildingTestDataReady) return;
3  window.teamBuildingTestDataReady = true;
4
5  function randomLetters(length) {
6    var letters = 'abcdefghijklmnopqrstuvwxyz';
7    var result = '';
8    for (var index = 0; index < length; index += 1) {
9      result += letters.charAt(Math.floor(Math.random() * letters.length));
10    }
11    return result;
12  }
13
14  function dispatchFieldEvents(field) {
15    field.dispatchEvent(new Event('input', { bubbles: true }));
16    field.dispatchEvent(new Event('change', { bubbles: true }));
17  }
18
19  function findField(form, selectors) {
20    for (var index = 0; index < selectors.length; index += 1) {
21      var field = form.querySelector(selectors[index]);
22      if (field) return field;
23    }
24    return null;
25  }
26
27  function fillField(form, selectors, value) {
28    var field = findField(form, selectors);
29    if (!field || field.readOnly || field.disabled) return;
30    field.value = value;
31    dispatchFieldEvents(field);
32  }
33
34  function chooseSelectValue(form, selectors, preferredValues) {
35    var field = findField(form, selectors);
36    if (!field || field.disabled) return;
37
38    var availableValues = Array.prototype.map.call(field.options || [], function (option) {
39      return option.value;
40    });
41    var selectedValue = preferredValues.find(function (value) {
42      return availableValues.indexOf(value) !== -1;
43    });
44
45    if (!selectedValue) {
46      var firstUsableOption = Array.prototype.find.call(field.options || [], function (option) {
47        return Boolean(option.value) && !option.disabled;
48      });
49      selectedValue = firstUsableOption ? firstUsableOption.value : '';
50    }
51
52    if (selectedValue) {
53      field.value = selectedValue;
54      dispatchFieldEvents(field);
55    }
56  }
57
58  function tomorrowAsString() {
59    var tomorrow = new Date();
60    tomorrow.setDate(tomorrow.getDate() + 1);
61    return tomorrow.toISOString().split('T')[0];
62  }
63
64  function fillTeamBuildingTestData(form, prefix) {
65    if (!form) return;
66
67    var safePrefix = String(prefix || 'team').toLowerCase().replace(/[^a-z]+/g, '') || 'team';
68    fillField(form, ['[name="full_name"]', '#meeting_name', '#glm_full_name'], 'Test User');
69    fillField(form, ['[name="first_name"]'], 'Test');
70    fillField(form, ['[name="last_name"]'], 'User');
71    fillField(form, ['[name="email"]', '#meeting_email', '#glm_email'], 'test+' + safePrefix + '-' + randomLetters(10) + '@letsroam.com');
72    fillField(form, ['[name="phone"]', '#meeting_phone', '#glm_phone'], '4078089625');
73    fillField(form, ['[name="company"]', '#meeting_company', '#glm_company'], "Let's Roam");
74    fillField(form, ['[name="event_date"]', '#glm_event_date'], tomorrowAsString());
75    fillField(form, ['textarea[name="lead_event_notes"]', '[name="lead_event_notes"]', '[name="event_vision"]', '#meeting_vision'], 'We want to build stronger team connections and have fun together!');
76
77    var cityField = findField(form, ['input[name="city"]:not([type="hidden"])', '#tb_City', '#glm_city']);
78    if (cityField && !cityField.readOnly && !cityField.disabled) {
79      cityField.value = 'Denver, Colorado';
80      dispatchFieldEvents(cityField);
81    }
82
83    chooseSelectValue(form, ['select[name="group_size"]', '#meeting_participants', '#glm_group_size'], ['71-80', '51-100', '26-50', '10-25']);
84    chooseSelectValue(form, ['select[name="event_category"]', '#glm_event_category'], ['scavenger_hunt', 'team_building', 'virtual_team_building']);
85
86    var hiddenGroupSize = form.querySelector('input[name="group_size"]');
87    if (hiddenGroupSize) {
88      hiddenGroupSize.value = '26-50';
89      dispatchFieldEvents(hiddenGroupSize);
90    }
91
92    var eventTypeRadio = form.querySelector('input[name="event_category"][value="scavenger_hunt"]');
93    if (eventTypeRadio) {
94      eventTypeRadio.checked = true;
95      dispatchFieldEvents(eventTypeRadio);
96    }
97  }
98
99  function resolveForm(trigger) {
100    var explicitSelector = trigger.getAttribute('data-team-building-test-form');
101    if (explicitSelector) {
102      var explicitForm = document.querySelector(explicitSelector);
103      if (explicitForm) return explicitForm;
104    }
105
106    var closestForm = trigger.closest('form');
107    if (closestForm) return closestForm;
108
109    var ancestor = trigger.parentElement;
110    for (var depth = 0; ancestor && depth < 7; depth += 1) {
111      var nestedForm = ancestor.querySelector('form');
112      if (nestedForm) return nestedForm;
113      ancestor = ancestor.parentElement;
114    }
115    return null;
116  }
117
118  window.generateTeamBuildingTestLetters = randomLetters;
119  window.fillTeamBuildingTestData = fillTeamBuildingTestData;
120
121  document.addEventListener('click', function (event) {
122    var trigger = event.target.closest('[data-team-building-test-fill]');
123    if (!trigger || event.detail !== 3) return;
124
125    fillTeamBuildingTestData(
126      resolveForm(trigger),
127      trigger.getAttribute('data-team-building-test-prefix') || 'team'
128    );
129  });
130})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.