1"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[929],{14313:function(n,e,a){a.r(e),a.d(e,{init:function(){return J}});a(50113),a(18111),a(20116),a(26099),a(27495),a(25440);var t=a(48966),o=a(64527),r=a(65216),i=a(39848),s=a(39815),c=(a(28706),a(51786)),d=a.n(c),l=d().observable();function u(n){var e=l();return e?"".concat(t.A.police.getBootstrapPath(e),"/").concat(n):""}function p(){var n=l();if(n){var e=r.A.params.uris.main;return"".concat(e).concat(n.type,"/").concat(n.urlName,"/icon")}}r.A.m.org=l;a(44114),a(34782);var h=a(74692),b=a.n(h),m=(a(68972),a(9774)),v=a(7558),f=a(46770),g=(a(12732),a(51528)),w=a(25583),k=(a(31270),a(59039),a(24681)),A=a(29846);function y(n){return"".concat(A.F.path).concat(function(n){return"/".concat(n.type,"/").concat(n.urlName)}(n))}var C=d().observable();function x(n){var e,a;n&&(e=n,a=C,k.A.get({url:"".concat(y(e),"/core-info"),success:a}))}l.subscribe(x),x(l());var L=a(34683),P='\n {{#if show}}\n <div>\n <div class="body">\n <announce-inline>\n <announce-content>\n <announce-date>10 December 2025</announce-date>\n <announce-h1>Welcome to the New-Look Studybugs!</announce-h1>\n <announce-feature>Weâve updated our brand identity to better reflect our growth. We hope you like our new\n style as much as we do!</announce-feature>\n <announce-feature>Donât worry â weâre still the same underneath and youâll find everything in the same\n place.</announce-feature>\n <announce-feature><a href="{{blogPostUri}}" target="_blank">Read our blog post</a> to find out more about\n why weâve made this change.</announce-feature>\n </announce-content>\n <a href="#" class="dismiss button button-icon" data-bind="click: dismiss, disable: dismissing">'.concat(L,"</a>\n </announce-inline>\n </div>\n </div>\n {{/if}}");d().components.register("police-announce",{viewModel:function(){var n=r.A.params.uris.blog+"posts/a-bold-look-for-a-bold-vision",e=[],a=d().observable(!1),t=function(n){n&&a(n.showProductAnnouncement)};e.push(C.subscribe(t)),t(C());var o=d().observable();return{show:a,dismiss:function(){w.A.dismissAnnouncement(function(){a(!1),setTimeout(function(){return b()(document).trigger("auto-height-recalculate")},1)},o)},dismissing:o,blogPostUri:n,dispose:function(){e.forEach(function(n){return n.dispose()}),b()(document).off("routeChange.announcement")}}},template:P});var T=a(21375);a(2143),a(43461);d().components.register("police-dashboard",{viewModel:function(){return{dashboard:T.ze}},template:'\n <main-content>\n {{#ifnot dashboard}}\n <div class="assist-dashboard-holding">\n <spinner class="dark"></spinner>\n </div>\n {{/ifnot}}\n {{#if dashboard}}\n <assist-dashboard></assist-dashboard>\n {{/if}}\n </main-content>\n '});var H=a(47395),D=(a(87019),a(91212)),S=a(10467),M=a(27051),B=(a(62062),a(61701),a(16034),a(3362),a(7588),a(23500),a(60842)),I=a.n(B),N=a(5322);d().bindingHandlers.map={init:function(n,e){var a=d().unwrap(e()),t=a.options,o=a.markers,r=null!=t?t:{};I().accessToken=N.j,b()(n).addClass("mapHandler");var i=new(I().Map)((0,M.A)((0,M.A)({},r),{},{container:n,style:N.w}));o&&o.forEach(function(n){(new(I().Marker)).setLngLat(n.center).addTo(i)});var s=window.setTimeout(function(){i.resize(),s=null},100);return d().utils.domNodeDisposal.addDisposeCallback(n,function(){i.remove(),s&&window.clearTimeout(s)}),{controlsDescendantBindings:!0}},update:function(){}};var U=navigator.clipboard;d().components.register("childs-school",{viewModel:function(n){var e=n.data.childWithSchoolDetails.schoolDetails,a=e.name,t=e.town,o=e.phone,r=e.location,i=e.postalAddress,s=e.externalRefId,c=n.data.childWithSchoolDetails.schoolContactsForPoliceForce.map(function(n){return(0,M.A)((0,M.A)({},n),{},{name:n.name?n.name:"",phone:n.phone?n.phone:"",emailLink:"mailto:".concat(n.email),nameWithRole:(e=n.name,a=n.role,e&&a?"".concat(n.name,", ").concat(n.role):e?"".concat(n.name):a?"".concat(n.role):"")});var e,a}),l=1===c.length?"Contact":"Contacts",u=o,p="".concat("https://www.get-information-schools.service.gov.uk/Establishments/Establishment/Detail
1s/").concat(s),h=i?Object.values(i):[t],b={};r&&(b.options={center:{lng:r.longitude,lat:r.latitude},zoom:13.5,interactive:!0},b.markers=[{center:{lng:r.longitude,lat:r.latitude},text:a}]);var m="Copy Address",v=d().observable(m);function f(){return(f=(0,S.A)((0,D.A)().m(function n(){var e;return(0,D.A)().w(function(n){for(;;)switch(n.n){case 0:return e=a+"\n"+h.join("\n"),n.n=1,navigator.clipboard.writeText(e).then(function(){v("Copied"),setTimeout(function(){v(m)},2e3)});case 1:return n.a(2)}},n)}))).apply(this,arguments)}return{schoolName:a,phone:o,hasContactDetails:u,schoolContactHeading:l,schoolContacts:c,location:r,externalRefId:s,postalAddressParts:h,clipboardSupported:U,copyLinkText:v,copyAddressToClipboard:function(){return f.apply(this,arguments)},giasLink:p,mapData:b,actionBar:n.data.actionBar}},template:'\n <div class="assist-report">\n <div class="report-section columns">\n {{#if location}}\n <div class="column map">\n <div data-bind="map: mapData"></div>\n </div>\n {{/if}}\n <div class="column info">\n <div class="report-title">{{schoolName}}</div>\n {{#if postalAddressParts.length}}\n <div class="postal-address">\n {{#foreach postalAddressParts}}\n {{$data}}<br/>\n {{/foreach}}\n {{#if clipboardSupported}}\n <a href="#" data-bind="click: copyAddressToClipboard">{{copyLinkText}}</a>\n {{/if}}\n </div>\n {{/if}}\n {{#if hasContactDetails}}\n <div class="contact-details">\n {{#if phone}}\n <div class="phone">{{phone}}</div>\n {{/if}}\n </div>\n {{/if}}\n {{#if externalRefId}}\n <div class="gias-link">\n <a data-bind="attr: { href: giasLink }" target="_blank">View on GOV.UK</a>\n </div>\n {{/if}}\n </div>\n </div>\n <div class="report-section">\n {{#if schoolContacts.length}}\n <div class="school-contacts-title">{{schoolContactHeading}}</div>\n <table>\n <tbody data-bind="foreach: schoolContacts">\n <tr>\n <td>\n {{role}}\n </td>\n <td>\n {{name}}\n </td>\n <td class="email">\n <a data-bind="attr: { href: emailLink }">{{email}}</a>\n </td>\n <td>\n {{phone}}\n </td>\n </tr>\n </tbody>\n </table>\n {{/if}}\n </div>\n <div class="report-appendix">\n <renderer-action-bar params="data: actionBar"></renderer-action-bar>\n </div>\n </div>\n '});a(18107),a(67357);var E=a(67763),F=a(95093),R=a.n(F);d().components.register("schools-previously-looked-up",{viewModel:function(n){var e=d().observableArray(),a=n.data.actionBar,t=d().observable(n.data.pageToken),o=d().observable(!1);function r(n){t(n.pageToken);var a=n.schoolsPreviouslyLookedUp.map(function(n){return(0,M.A)((0,M.A)({},n),{},{hasHomeLaLabel:void 0!==n.schoolHomeLaLabel,formattedAt:R()(n.at).format("HH:mm on ddd D MMM YYYY")})});d().utils.arrayPushAll(e,a)}return r(n.data),{icons:E.A,rows:e,lastPageToken:t,running:o,more:function(){n.invoke({lastPageToken:t()},o,r)},actionBar:a}},template:'\n <div class="assist-report">\n <div class="report-title">Childrenâs Schools Previously Looked Up</div>\n <div class="report-section">\n <table>\n <thead>\n <th>School</th>\n <th>Child Looked Up</th>\n <th>Staff Member<br/>Performing Lookup</th>\n <th class="sorted-by-col"><sorted-by-bars>{{{ icons.sortedByBars }}}</sorted-by-bars></th>\n <th>Time Looked Up</th>\n </thead>\n <tbody data-bind="foreach: rows">\n <tr>\n <td>\n <span data-bind="text: schoolNameWithTown"></span>\n \x3c!-- ko if: hasHomeLaLabel --\x3e\n <br>
1\n <span class="home-la-label" data-bind="text: schoolHomeLaLabel"></span>\n \x3c!-- /ko --\x3e\n </td>\n <td data-bind="text: childName"></td>\n <td data-bind="text: userName"></td>\n <td>\x3c!-- space for sorted by icon--\x3e</td>\n <td data-bind="text: formattedAt"></td>\n </tr>\n </tbody>\n </table>\n <more-link params="hasMore: lastPageToken, running: running, more: more"></more-link>\n </div>\n <div class="report-appendix">\n <renderer-action-bar params="data: actionBar"></renderer-action-bar>\n </div>\n </div>'}),(0,H.Jp)(/Give me a big (.*) button for finding a childâs school/);var W=d().observable(0),z=d().observable(0);var Y,Q,j,q,G,O=[(Y="dashboard",Q=null,j=f.Hy.collection,q="Dashboard",G=d().pureComputed(function(){return u(Y)}),new v.G(G,!0,Q,j,q))];function V(n){n.add({policePortal:{componentName:"police-portal"}});var e=s.A.create("#policeFragment",{dashboard:{componentName:"police-dashboard",title:"Studybugs â Dashboard"}});var a=t.A.police.basePathRegex.source;(0,i.IC)([new i.qh("".concat(a,"/[^/]+/dashboard"),_(function(){var a,t;a="dashboard",n.load("policePortal",function(){return e.load(a,t)})})),new i.qh("".concat(a,"/[^/]+/assistant"),_(function(){(0,o.H)(),(0,i.gQ)(u("dashboard"))})),new i.qh(a,_(function(){(0,i.gQ)(u("dashboard"))}))]),l.subscribe(function(n){if(n){var e=(0,i.Yn)(),a=e.replace(/^\/[^/]+\/[^/]+/,t.A.police.getBootstrapPath(n));e!==a&&(0,i.gQ)(a)}})}function _(n){return function(){var e,a=window.location.pathname.split("/"),t=(null==a?void 0:a.length)>2?null===(e=r.s.m.user())||void 0===e?void 0:e.orgs.find(function(n){return n.type===a[1]&&n.urlName===a[2]}):void 0;t?(t!==l()&&l(t),n()):(0,i.gQ)("/")}}function J(n){r.s.m.portal("police"),V(n)}d().components.register("police-portal",{viewModel:function(){var n=[],e=d().observable(),a=d().pureComputed(p),t=function(){var n,e=null===r.s||void 0===r.s||null===(n=r.s.params)||void 0===n||null===(n=n.uris)||void 0===n?void 0:n.main,a=u("assistant").slice(1);(0,m.c)("".concat(e).concat(a,"/"))};t(),n.push(l.subscribe(t));var o=d().pureComputed(function(){var n=l();if(n)return y(n)}),i=d().observable(!0),s=null;function c(n){var e;void 0!==n&&(null===(e=s)||void 0===e||e.dispose(),(0,T.Hg)(u("dashboard")),(0,T.Ts)(n),s=(0,g.En)(T.FH.getDashboard,null,i,function(n){var e=n;(0,T.ze)(e),(0,T.u9)(e.id)}))}c(o()),n.push(o.subscribe(function(n){(0,T.ze)(null),(0,T.u9)(null),c(n)}));var h=d().pureComputed(function(){return[{label:"Report Your Child Sick",select:function(){return b()(document).trigger("goto",["/report"])},divider:!0}]}),v=d().pureComputed(function(){return!!(0,T.ze)()}),f=d().pureComputed(function(){return l()});return{headerElement:e,headerComplete:function(){var n=e();n&&W(b()(n).height()||0)},headerHeight:W,assistantInputBarHeight:z,baseApiPath:o,mainMenuItems:O,extraUserMenuItems:h,policeForce:l,policeIcon:a,allowAddToDashboard:v,clearSuggestionsStateSubscribable:f,dispose:function(){var e;n.forEach(function(n){return n.dispose()}),null===(e=s)||void 0===e||e.dispose()}}},template:'\n <portal-header data-bind="element: headerElement, descendantsComplete: headerComplete">\n <main-content>\n <org-selection params="selectedOrg: policeForce,\n icon: policeIcon"></org-selection>\n <menu-bar>\n <bar-cell class="left">\n <main-menu params="items: mainMenuItems"></main-menu>\n </bar-cell>\n <bar-cell class="right">\n <aux-menu params="extraUserMenuItems: extraUserMenuItems"></aux-menu>\n </bar-cell>\n </menu-bar>\n </main-content>\n </portal-header>\n <fragment-box>\n <police-announce class="org-announce"></police-announce>\n <div id="policeFragment"></div>\n </fragment-box>\n <sb-assistant params="apiPath: baseApiPath,\n headerHeight: headerHeight,\n inputBarHeight: assistantInputBarHeight,\n dashboardAddEnabled: allowAddToDashboard,\n clearSuggestionsStateSubscribable: clearSuggestionsStateSubscribable"></sb-assistant>\n '})}}]);
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.