PageSourceSearch

https://regionblekinge.se/webapp-resource/4.233f59f7180028599746d7…/1600693767784/webapp-assets.js

js regionblekinge.se collected 2026-10-03 17:34:31 UTC 22,871 bytes, 555 lines download raw bytes

1AppRegistry.registerBundle({applicationId:'limepark.page-feedback|3.1.0',bundle: {"en":{"gdprFieldLabel":"Data storage","gdprConfirmation":"I agree that information is stored to collect and respond to feedback.","errorGeneralError":"The message could not be sent.","returnToPage":"Click here to return to the page","confirmation":"Thanks for your feedback!","errorNoConfirmation":"Please check to box to agree that we store your personal information.","mandatory":"Mandatory","unknownError":"An unknown error occured.","helpfulInformation":"Was this information helpful?","fieldEmail":"Your e-mail address","errorInvalidEmail":"Please check your e-mail address.","alternativeNo":"No","fieldImprovements":"How can we improve the information on this page?","errorInvalidRecipient":"Unfortunately the message could not be sent.","errorNotConfigured":"The module has not been properly configured.","errorMessageText":"A problem occured","errorWrongCaptcha":"Please fill the captcha to confirm that you're not a robot.","alternativeYes":"Yes","errorNoMessageSpecified":"Please suggest improvements through the feedback form."},"sv":{"gdprFieldLabel":"Godkännande av datalagring","gdprConfirmation":"Jag godkänner att informationen lagras i syfte att kunna ta till sig av och besvara feedback.","errorGeneralError":"Meddelandet kunde tyvärr inte skickas.","returnToPage":"Klicka här för att gå tillbaka till sidan","confirmation":"Tack för din feedback!","errorNoConfirmation":"Du måste godkänna att vi lagrar informationen","mandatory":"Obligatoriskt","unknownError":"Ett okänt fel uppstod","helpfulInformation":"Hjälpte informationen på sidan dig?","fieldEmail":"E-postadress","errorInvalidEmail":"Felaktig e-postadress","alternativeNo":"Nej","fieldImprovements":"Vad kan vi göra bättre på denna sida?","errorInvalidRecipient":"Meddelandet kunde tyvärr inte skickas till mottagaren.","errorNotConfigured":"Modulen har inte konfigurerats korrekt.","errorMessageText":"Ett fel uppstod","errorWrongCaptcha":"Vänligen fyll i captchan för att bekräfta att du inte är en robot.","alternativeYes":"Ja","errorNoMessageSpecified":"Vänligen fyll i ett förbättringsförslag i meddelandefältet."}}});
2AppRegistry.registerModule({applicationId:'limepark.page-feedback|3.1.0',path:'/template/modules/error',module:function(define){define(function(require){var _=require('underscore');return function(obj){
3var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};
4with(obj||{}){
5__p+='<div class="lp-page-feedback">\n  ';
6 if(formErrors) { 
7__p+='\n    ';
8 _(formErrors).each(function(message) { 
9__p+='\n      <div class="lp-form-error">\n        '+
10((__t=( i18n('errorMessageText') ))==null?'':__t)+
11':<br/>\n        <span>'+
12((__t=( i18n(message) ))==null?'':__t)+
13'</span>\n      </div>\n    ';
14 }) 
15__p+='\n  ';
16 } 
17__p+='\n</div>\n';
18}
19return __p;
20};});}});
21AppRegistry.registerModule({applicationId:'limepark.page-feedback|3.1.0',path:'/reducer',module:function(define){'use strict';define(function (require) {
22  'use strict';
23
24  var _ = require('underscore');
25
26  var reducer = function reducer(state, action) {
27    switch (action.type) {
28      case 'TOGGLE_FORM_SHOW':
29        return _.extend({}, state, {
30          showForm: true
31        });
32
33      case 'TOGGLE_FORM_HIDE':
34        return _.extend({}, state, {
35          showForm: false
36        });
37
38      case 'TOGGLE_QUESTION_SHOW':
39        return _.extend({}, state, {
40          showQuestion: true
41        });
42
43      case 'TOGGLE_QUESTION_HIDE':
44        return _.extend({}, state, {
45          showQuestion: false
46        });
47
48      case 'TOGGLE_FORM_DISABLED':
49        return _.extend({}, state, {
50          disableForm: true
51        });
52
53      case 'TOGGLE_FORM_ENABLED':
54        return _.extend({}, state, {
55          disableForm: false
56        });
57
58      case 'TOGGLE_BUTTONS_DISABLED':
59        return _.extend({}, state, {
60          disableButtons: true
61        });
62
63      case 'TOGGLE_BUTTONS_ENABLED':
64        return _.extend({}, state, {
65          disableButtons: false
66        });
67
68      case 'SHOW_CONFIRMATION':
69        return _.extend({}, state, {
70          showConfirmation: true
71        });
72
73      case 'CLEAR_FORM_ERRORS':
74        return _.extend({}, state, {
75          formErrors: []
76        });
77
78      case 'ADD_FORM_ERROR':
79        var errorArray = state.formErrors.reduce(function (acc, value) {
80          var array = acc;
81          array.push(value);
82          return array;
83        }, []);
84        errorArray.push(action.error);
85        return _.extend({}, state, {
86          formErrors: errorArray
87        });
88
89      case 'SET_FORM_VALUES':
90        return _.extend({}, state, {
91          formValues: {
92            email: action.email,
93            message: action.message,
94            confirmation: action.confirmation
95          }
96        });
97
98      default:
99        return state;
100    }
101  };
102
103  return reducer;
104});}});
105AppRegistry.registerModule({applicationId:'limepark.page-feedback|3.1.0',path:'/module/client/helpers',module:function(define){'use strict';define(function () {
106  'use strict';
107
108  var ANIMATION_SPEED = 65;
109  return {
110    // Function to toggle form disabled/enabled
111    toggleDisableForm: function toggleDisableForm(form, disabled) {
112      if (disabled) {
113        form.animate({
114          opacity: 0.5
115        }, ANIMATION_SPEED);
116      } else {
117        form.css({
118          opacity: 1
119        });
120      }
121    }
122  };
123});}});
124AppRegistry.registerModule({applicationId:'limepark.page-feedback|3.1.0',path:'/template/modules/form',module:function(define){define(function(require){var _=require('underscore');return function(obj){
125var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};
126with(obj||{}){
127__p+='';
128 if (showRecaptcha) { 
129__p+='\n  <script src=\'https://www.google.com/recaptcha/api.js\'></script>\n';
130 } 
131__p+='\n\n<div class="env-form env-m-top--medium lp-feedback-form';
132 if (!showForm) { 
133__p+=' env-d--none';
134 } 
135__p+='" id="'+
136((__t=( appContext.getWebAppNamespace('form-component') ))==null?'':__t)+
137'" role="form" aria-hidden="'+
138((__t=( !showForm ))==null?'':__t)+
139'">\n\n  ';
140 if (texts.formTop) { 
141__p+='\n    <div class="lp-form-information-text lp-form-information-text--top">\n      <p class="env-text">'+
142((__t=( texts.formTop ))==null?'':_.escape(__t))+
143'</p>\n    </div>\n  ';
144 } 
145__p+='\n\n  <form action="'+
146((__t=( getUrl('/sendFeedback') ))==null?'':_.escape(__t))+
147'" method="post">\n    ';
148 if(formErrors) { 
149__p+='\n      ';
150 _(formErrors).each(function(message) { 
151__p+='\n        <div class="env-alert env-alert--danger lp-feedback-form-alert lp-feedback-form-error" role="alert">\n          <strong>'+
152((__t=( i18n('errorMessageText') ))==null?'':__t)+
153'!</strong> '+
154((__t=( i18n(message) ))==null?'':__t)+
155'\n        </div>\n      ';
156 }) 
157__p+='\n    ';
158 } 
159__p+='\n\n    <div class="env-form-element lp-feedback-form-element">\n      <label for="'+
160((__t=( appContext.getWebAppNamespace('feedback-text') ))==null?'':__t)+
161'" class="env-form-element__label lp-feedback-form-element__label">'+
162((__t=( texts.feedbackLabel || i18n('fieldImprovements') ))==null?'':_.escape(__t))+
163' <span class="lp-feedback-form-element__required">('+
164((__t=( i18n('mandatory') ))==null?'':_.escape(__t))+
165')</span></label>\n      <div class="env-form-element__control lp-feedback-form-element__control">\n        <textarea id="'+
166((__t=( appContext.getWebAppNamespace('feedback-text') ))==null?'':__t)+
167'" class="env-form-input lp-feedback-form-input" name="feedback-text" rows="3" '+
168((__t=( texts.feedbackDescription ? 'aria-describedby="' + appContext.getWebAppNamespace('feedback-description') + '"' : '' ))==null?'':__t)+
169' required>'+
170((__t=( formValues.message ))==null?'':__t)+
171'</textarea>\n      </div>\n      ';
172 if (texts.feedbackDescription) { 
173__p+='\n      <span id="'+
174((__t=( appContext.getWebAppNamespace('feedback-description') ))==null?'':__t)+
175'" class="env-form-element__help lp-feedback-form-element__help">'+
176((__t=( texts.feedbackDescription ))==null?'':_.escape(__t))+
177'</span>\n      ';
178 } 
179__p+='\n    </div>\n\n    ';
180 if (emailField.show) { 
181__p+='\n    <div class="env-form-element lp-feedback-form-element">\n      <label for="'+
182((__t=( appContext.getWebAppNamespace('feedback-email') ))==null?'':__t)+
183'" class="env-form-element__label lp-feedback-form-element__label">'+
184((__t=( i18n('fieldEmail') ))==null?'':__t)+
185''+
186((__t=( (emailField.required ? ' <span class="lp-feedback-form-element__required">(' + i18n('mandatory') + ')</span>' : '') ))==null?'':__t)+
187'</label>\n      <div class="env-form-element__control lp-feedback-form-element__control">\n        <input id="'+
188((__t=( appContext.getWebAppNamespace('feedback-email') ))==null?'':__t)+
189'" class="env-form-input lp-feedback-form-input" name="feedback-email" type="email" value="'+
190((__t=( formValues.email ))==null?'':__t)+
191'"';
192 if (emailField.required) { 
193__p+=' required';
194  } 
195__p+='>\n      </div>\n    </div>\n    ';
196 } 
197__p+='\n\n    ';
198 if (showConfirmationCheckbox) { 
199__p+='\n      <div class="env-form-element lp-feedback-form-element">\n        <span class="env-form-element__label lp-feedback-form-element__label" id="'+
200((__t=( appContext.getWebAppNamespace('gdpr-checkbox-header') ))==null?'':__t)+
201'">'+
202((__t=( texts.gdprLabel || i18n('gdprFieldLabel') ))==null?'':_.escape(__t))+
203'</span>\n        <div class="env-form-element__control lp-feedback-form-element__control" aria-labelledby="'+
204((__t=( appContext.getWebAppNamespace('gdpr-checkbox-header') ))==null?'':__t)+
205'">\n          <div class="env-checkbox lp-feedback-checkbox">\n            <input type="checkbox" id="'+
206((__t=( appContext.getWebAppNamespace('gdpr-checkbox') ))==null?'':__t)+
207'" name="feedback-gdpr-confirmation" ';
208 if (formValues.confirmation) { 
209__p+='checked="checked"';
210 } 
211__p+=' value="true" required>\n            <label class="env-form-element__label lp-feedback-form-element__label" for="'+
212((__t=( appContext.getWebAppNamespace('gdpr-checkbox') ))==null?'':__t)+
213'">
213\n              <span class="env-checkbox__fake lp-feedback-checkbox__fake"></span>\n              <span class="env-checkbox__label lp-feedback-checkbox__label">'+
214((__t=( texts.gdprCheckbox || i18n('gdprConfirmation') ))==null?'':_.escape(__t))+
215' <span class="lp-feedback-form-element__required">('+
216((__t=( i18n('mandatory') ))==null?'':_.escape(__t))+
217')</span></span>\n            </label>\n          </div>\n        </div>\n      </div>\n    ';
218 } 
219__p+='\n\n    ';
220 if (showRecaptcha) { 
221__p+='\n      <div class="env-form-element lp-feedback-form-element">\n        <div class="lp-feedback-recaptcha g-recaptcha" data-sitekey="'+
222((__t=( recaptchaKey ))==null?'':_.escape(__t))+
223'" id="'+
224((__t=( appContext.getWebAppNamespace('lp-feedback-recaptcha') ))==null?'':__t)+
225'"></div>\n        <noscript>\n          <div>\n            <div style="width: 302px; height: 422px; position: relative;">\n              <div style="width: 302px; height: 422px; position: absolute;">\n                <iframe src="https://www.google.com/recaptcha/api/fallback?k='+
226((__t=( recaptchaKey ))==null?'':_.escape(__t))+
227'" style="width: 302px; height:422px; border-style: none;"></iframe>\n              </div>\n            </div>\n            <div style="width: 300px; height: 60px; border-style: none; bottom: 12px; left: 25px; margin: 0px; padding: 0px; right: 25px; background: #f9f9f9; border: 1px solid #c1c1c1; border-radius: 3px;">\n              <textarea name="captchaResponse" rows="1" class="g-recaptcha-response" style="width: 250px; height: 30px; border: 1px solid #c1c1c1; margin: 10px 25px; padding: 0px; resize: none; padding: 0;"></textarea>\n            </div>\n          </div>\n        </noscript>\n      </div>\n    ';
228 } 
229__p+='\n\n    <div class="env-form-element lp-feedback-form-element">\n      <input type="hidden" name="request-url" value="'+
230((__t=( requestUrl ))==null?'':_.escape(__t))+
231'">\n      <input type="submit" value="Skicka" class="env-button env-button--primary lp-feedback-form-submit">\n    </div>\n  </form>\n\n  ';
232 if (texts.formBottom) { 
233__p+='\n    <div class="lp-form-information-text lp-form-information-text--bottom">\n      <p class="env-text">'+
234((__t=( texts.formBottom ))==null?'':_.escape(__t))+
235'</p>\n    </div>\n  ';
236 } 
237__p+='\n</div>\n';
238}
239return __p;
240};});}});
241AppRegistry.registerModule({applicationId:'limepark.page-feedback|3.1.0',path:'/template/main',module:function(define){define(function(require){var _=require('underscore');return function(obj){
242var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};
243with(obj||{}){
244__p+='<div class="lp-page-feedback lp-page-feedback--theme-'+
245((__t=(theme))==null?'':__t)+
246'">\n  ';
247 if (showQuestion) { 
248__p+='\n  <div class="lp-page-feedback__question">\n    <span class="env-text">'+
249((__t=( texts.question || i18n('helpfulInformation') ))==null?'':_.escape(__t))+
250'</span>\n    <div class="env-d--inline-block lp-feedback-buttons">\n      <button data-option="yes"';
251 if (disableButtons) { 
252__p+=' disabled="disabled"';
253 } 
254__p+=' class="env-m-left--xx-small env-button env-button--small">\n        ';
255 if (icons.yesButton) { 
256__p+='\n          ';
257 if (icons.yesButton.type === 'svg') { 
258__p+='\n            <svg class="lp-icon lp-page-feedback-buttons__icon" aria-hidden="true" role="presentation" xmlns="http://www.w3.org/2000/svg"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/rest-api/svg-sources/'+
259((__t=( icons.yesButton.source ))==null?'':__t)+
260'#'+
261((__t=( icons.yesButton.symbol ))==null?'':__t)+
262'"></use></svg>\n          ';
263 } else { 
264__p+='\n            <img class="lp-img-icon" src="'+
265((__t=( icons.yesButton.URI ))==null?'':__t)+
266'" alt="" />\n          ';
267 } 
268__p+='\n        ';
269 } 
270__p+='\n        <span>'+
271((__t=( i18n('alternativeYes') ))==null?'':__t)+
272'</span>\n      </button>\n      <button data-option="no"';
273 if (disableButtons) { 
274__p+=' disabled="disabled"';
275 } 
276__p+=' class="env-m-left--xx-small env-button env-button--small" aria-controls="'+
277((__t=( appContext.getWebAppNamespace('form-component') ))==null?'':__t)+
278'">\n        ';
279 if (icons.noButton) { 
280__p+='\n          ';
281 if (icons.noButton.type === 'svg') { 
282__p+='\n            <svg class="lp-icon lp-page-feedback-buttons__icon" aria-hidden="true" role="presentation" xmlns="http://www.w3.org/2000/svg">\n              <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/rest-api/svg-sources/'+
283((__t=( icons.noButton.source ))==null?'':__t)+
284'#'+
285((__t=( icons.noButton.symbol ))==null?'':__t)+
286'"></use>\n            </svg>\n          ';
287 } else { 
288__p+='\n            <img class="lp-img-icon lp-page-feedback-buttons__img-icon" src="'+
289((__t=( icons.noButton.URI ))==null?'':__t)+
290'" alt="" />\n          ';
291 } 
292__p+='\n        ';
293 } 
294__p+='\n        <span>'+
295((__t=( i18n('alternativeNo') ))==null?'':__t)+
296'</span>\n      </button>\n    </div>\n  </div>\n  ';
297 } 
298__p+='\n\n  ';
299 if (!showConfirmation) { 
300__p+='\n    '+
301((__t=( renderer.renderComponent('form') ))==null?'':__t)+
302'\n  ';
303 } else { 
304__p+='\n    <div class="lp-feedback-confirmation-text__wrapper">\n      <p class="env-text lp-feedback-confirmation-text">'+
305((__t=( texts.submitConfirmation || i18n('confirmation') ))==null?'':__t)+
306'</p>\n    </div>\n  ';
307 } 
308__p+='\n</div>\n';
309}
310return __p;
311};});}});
312AppRegistry.registerModule({applicationId:'limepark.page-feedback|3.1.0',path:'/component/form',module:function(define){'use strict';define(function (require) {
313  'use strict';
314
315  var _ = require('underscore');
316
317  var Component = require('Component');
318
319  var template = require('/template/modules/form');
320
321  var store = require('store');
322
323  var $ = require('jquery');
324
325  var requester = require('requester');
326
327  var helperModule = require('/module/client/helpers');
328
329  return Component.extend({
330    template: template,
331    events: {
332      dom: {
333        'submit form': 'sendEmail'
334      },
335      self: {
336        'state:changed:disableForm': 'toggleDisableForm',
337        'state:changed:formErrors': 'render',
338        'state:changed:showForm': 'render'
339      },
340      router: {
341        'path:changed': 'render'
342      },
343      store: 'handleStoreChange'
344    },
345    onRendered: function onRendered() {
346      this.formElement = this.$('.lp-feedback-form');
347      this.$('input[name="request-url"]').val(window.location.href);
348
349      if (this.state.showForm) {
350        this.$(!this.state.formErrors.length ? '.env-form-element label' : '.lp-feedback-form-error').first().focus();
351      }
352    },
353    sendEmail: function sendEmail(e) {
354      e.preventDefault();
355      var targetForm = $(e.currentTarget);
356      store.dispatch({
357        type: 'TOGGLE_FORM_DISABLED'
358      });
359      store.dispatch({
360        type: 'SET_FORM_VALUES',
361        email: this.$('input[name=feedback-email]').val() || null,
362        message: this.$('textarea[name=feedback-text]').val(),
363        confirmation: this.$('input[name=feedback-gdpr-confirmation]').is(':checked')
364      });
365      requester.doPost({
366        url: targetForm.attr('action'),
367        data: {
368          'request-url': decodeURI(this.$('input[name="request-url"]').val()),
369          'feedback-email': this.state.formValues.email,
370          'feedback-text': this.state.formValues.message,
371          'feedback-gdpr-confirmation': this.state.formValues.confirmation,
372          captchaResponse: this.state.showRecaptcha ? this.$('textarea[name="g-recaptcha-response"]').val() : null
373        },
374        context: this
375      }).done(function (response) {
376        if (response.success) {
377          store.dispatch({
378            type: 'TOGGLE_QUESTION_HIDE'
379          });
380          store.dispatch({
381            type: 'SHOW_CONFIRMATION'
382          });
383        } else {
384          store.dispatch({
385            type: 'CLEAR_FORM_ERRORS'
386          });
387          store.dispatch({
388            type: 'TOGGLE_FORM_ENABLED'
389          });
390          store.dispatch({
391            type: 'ADD_FORM_ERROR',
392            error: response.error || 'unknownError'
393          });
394        }
395      }).fail(function () {
396        store.dispatch({
397          type: 'CLEAR_FORM_ERRORS'
398        });
399        store.dispatch({
400          type: 'TOGGLE_FORM_ENABLED'
401        });
402        store.dispatch({
403          type: 'ADD_FORM_ERROR',
404          error: 'errorGeneralError'
405        });
406      });
407    },
408    toggleDisableForm: function toggleDisableForm(disable) {
409      this.$el.find('form input[type="submit"]').prop('disabled', disable);
410      helperModule.toggleDisableForm(this.$el.find('form'), disable);
411    },
412    handleStoreChange: function handleStoreChange(newState) {
413      this.setState(newState);
414    },
415    filterState: function filterState(state) {
416      return _.extend({}, {
417        showForm: state.showForm,
418        disableForm: state.disableForm,
419        emailField: state.emailField,
420        showConfirmationCheckbox: state.showConfirmationCheckbox,
421        showRecaptcha: state.showRecaptcha,
422        recaptchaKey: state.recaptchaKey,
423        formErrors: state.formErrors,
424        formValues: state.formValues,
425        currentPage: state.currentPage,
426        requestUrl: state.requestUrl,
427        texts: state.texts
428      });
429    }
430  });
431});}});
432AppRegistry.registerModule({applicationId:'limepark.page-feedback|3.1.0',path:'/main',module:function(define){'use strict';/* global ga, sv, $vizzit */
433define(function (require) {
434  'use strict';
435
436  var _ = require('underscore');
437
438  var Component = require('Component');
439
440  var store = require('store');
441
442  var app = require('app');
443
444  var mainTemplate = require('/template/main');
445
446  return Component.extend({
447    template: mainTemplate,
448    events: {
449      dom: {
450        'click [data-option]': 'handleChoice'
451      },
452      app: {
453        'option:selected': 'saveButtonFeedback'
454      },
455      self: {
456        'state:changed:disableButtons': 'toggleDisableButtons',
457        'state:changed:view': 'render',
458        'state:changed:showConfirmation': 'render'
459      },
460      router: {
461        'path:changed': 'render'
462      },
463      store: 'handleStoreChange'
464    },
465    handleChoice: function handleChoice(e) {
466      var choice = this.$(e.currentTarget).data('option');
467
468      if (choice === 'yes') {
469        store.dispatch({
470          type: 'TOGGLE_FORM_HIDE'
471        });
472      } else {
473        store.dispatch({
474          type: 'TOGGLE_FORM_SHOW'
475        });
476      }
477
478      store.dispatch({
479        type: 'TOGGLE_BUTTONS_DISABLED'
480      });
481      app.trigger('option:selected', choice);
482    },
483    toggleShowForm: function toggleShowForm(show) {
484      var ANIMATION_SPEED = 150;
485
486      if (show) {
487        this.formElement.slideDown(ANIMATION_SPEED);
488      } else {
489        this.formElement.slideUp(ANIMATION_SPEED);
490      }
491    },
492    toggleDisableButtons: function toggleDisableButtons(disable) {
493      this.$el.find('button').prop('disabled', disable);
494    },
495    saveButtonFeedback: function saveButtonFeedback(choice) {
496      switch (this.state.buttonLogging) {
497        case 'ga':
498          if (window.ga && ga.create) {
499            var trackerName = ga.getAll()[0].get('name');
500            ga(trackerName + '.send', {
501              hitType: 'event',
502              eventCategory: 'Page Feedback',
503              eventAction: choice === 'yes' ? 'Helpful' : 'Not helpful',
504              eventLabel: this.state.currentPage
505            });
506          } else {
507            window.console.log('ERROR: Tracking of button event failed. Google Analytics could not be found.');
508          }
509
510          break;
511
512        case 'vizzit':
513          if (typeof $vizzit !== 'undefined') {
514            var vizzitLink = this.$('button[data-option="' + choice + '"]').first();
515            var pageId = sv.PageContext.pageId;
516            vizzitLink.vizzit = {
517              location: '/vizzit_like/' + pageId + '/' + (choice === 'yes' ? 'like' : 'dislike')
518            };
519            $vizzit.event.click(vizzitLink);
520          } else {
521            window.console.log('ERROR: Tracking of button event failed. Vizzit could not be found.');
522          }
523
524          break;
525      }
526
527      if (choice === 'yes') {
528        store.dispatch({
529          type: 'TOGGLE_FORM_HIDE'
530        });
531        store.dispatch({
532          type: 'TOGGLE_QUESTION_HIDE'
533        });
534        store.dispatch({
535          type: 'SHOW_CONFIRMATION'
536        });
537      }
538    },
539    handleStoreChange: function handleStoreChange(newState) {
540      this.setState(newState);
541    },
542    filterState: function filterState(state) {
543      return _.extend({}, {
544        showConfirmation: state.showConfirmation,
545        showQuestion: state.showQuestion,
546        disableButtons: state.disableButtons,
547        buttonLogging: state.buttonLogging,
548        currentPage: state.currentPage,
549        texts: state.texts,
550        icons: state.icons,
551        theme: state.theme
552      });
553    }
554  });
555});}});

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.