PageSourceSearch

https://bizybear.app/assets/index-B6QKxuCf.js

js bizybear.app collected 2026-10-02 01:15:45 UTC 23,866 bytes, 214 lines download raw bytes

1import{a as p,$ as r}from"./app-BMB7SW2A.js";import{g,o as D}from"./router-B4-bvdrn.js";import{e as V}from"./styles-OiTMiKUM.js";import{i as q}from"./index-HYjaO52u.js";import{a6 as Y}from"./src-pages-app-index-_ZjinjR4.js";import{o as f}from"./state-BNFBaZXw.js";import{r as F}from"./chip-BXzMHW7J.js";import"./index-DccQzYGv.js";import"./index-DDlvirwQ.js";import"./MorphSVGPlugin-B-vk8YRp.js";import"./index-B79LEOz5.js";import"./index-B9fViuMG.js";import"./urls-CmoUUsuo.js";import"./haptics-0J6I5ZKw.js";import"./index-7_ZwoNWQ.js";import"./index-DWnXxI_3.js";import"./info-DKN5wgY5.js";import"./init-CuVSQ5H_.js";import"./index-CU5uiC6B.js";import"./_commonjsHelpers-CE1G-McA.js";import"./index-D9_lbuvr.js";import"./route-resolver-B7oJAapS.js";import"./datetime-DuZlTmL3.js";import"./deep-links-BvYBh5T9.js";/* empty css            *//* empty css              */import"./index-DEtACHfK.js";import"./index.esm-DVXwz09-.js";const s={screen:"#calendarScheduleScreen",inlineCalendar:"#calendarScheduleInlineView",monthTitle:"#calendarScheduleMonthTitle",sidePage:"#calendarScheduleSidePage"},H=`
2<section id="calendarScheduleScreen" class="calendar-screen" style="display:none">
3    <div class="calendar-interface">
4        <section class="calendar-month-page page">
5            <div class="navbar">
6                <div class="navbar-bg"></div>
7                <div class="navbar-inner">
8                    <div class="left">
9                        <a class="link icon-only tooltip-init" data-click="calendarSchedulePrevPeriod" data-tooltip="Previous period" aria-label="Previous period">
10                            <i class="fa-solid fa-chevron-left"></i>
11                        </a>
12                        <a class="link icon-only tooltip-init" data-click="calendarScheduleNextPeriod" data-tooltip="Next period" aria-label="Next period">
13                            <i class="fa-solid fa-chevron-right"></i>
14                        </a>
15                    </div>
16                    <div class="title" id="calendarScheduleMonthTitle">Schedule</div>
17                    <div class="right">
18                        <a class="link icon-only tooltip-init" data-click="calendarScheduleToday" data-tooltip="Go to today" aria-label="Go to today">
19                            <i class="fa-solid fa-calendar-day"></i>
20                        </a>
21                    </div>
22                </div>
23            </div>
24            <div class="page-content">
25                <div id="calendarScheduleInlineView"></div>
26            </div>
27        </section>
28        <section class="calendar-side-page page" id="calendarScheduleSidePage"></section>
29    </div>
30</section>`,E=r(".center");E&&!r(s.screen)&&E.insertAdjacentHTML("beforeend",H);const m=r(s.screen),k=r(V.screen),_="router-transition-f7-parallax-forward",R="router-transition-f7-parallax-backward",j=460,e={active:!1,schedulerId:0,orgId:0,timezone:typeof Intl<"u"&&Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC",month:"",view:null,selectedDate:"",selectedSlotStartUtc:"",inlineEl:null,sidePageEl:null,monthTitleEl:null,calendar:null,sideViewEl:null,timesPageEl:null,confirmPageEl:null,timesContentEl:null,confirmContentEl:null,bookingActionState:null,transitionQueue:Promise.resolve(),onBooked:null};function K(){return typeof Intl<"u"&&Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"}function I(t){return[t.getFullYear(),String(t.getMonth()+1).padStart(2,"0"),String(t.getDate()).padStart(2,"0")].join("-")}function S(t=""){const i=String(t||"").trim();if(!/^\d{4}-\d{2}$/.test(i))return null;const[n,a]=i.split("-").map(Number);return!n||!a?null:{year:n,month:a}}function $(t="",i=0){const n=S(t),a=n?new Date(n.year,n.month-1,1):new Date;return a.setMonth(a.getMonth()+Number(i||0)),`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}`}function Q(t=""){const i=S(t);return i?new Date(i.year,i.month-1,1).toLocaleDateString(void 0,{month:"long",year:"numeric"}):"Schedule"}function Z(t=""){const i=new Date(`${t}T00:00:00`);return Number.isNaN(i.getTime())?t:i.toLocaleDateString(void 0,{weekday:"long",month:"long",day:"numeric"})}function y(t,i){const n=new Date(String(t||"").replace(" ","T")+"Z");return Number.isNaN(n.getTime())?"":new Intl.DateTimeFormat(void 0,{timeZone:i||e.timezone||"UTC",hour:"numeric",minute:"2-digit",weekday:"short",month:"short",day:"numeric"}).format(n)}function G(t){if(t==null)return"Unknown error";if(typeof t=="string")return t;
30if(typeof t?.reason=="string"&&t.reason.trim())return t.reason;if(typeof t?.message=="string"&&t.message.trim())return t.message;try{return JSON.stringify(t)}catch{return String(t)}}function W(){const t=f.raw||{},i=String(t?.email||"").trim();if(i)return i;const n=String(t?.username||"").trim();return n.includes("@")?n:""}function J(){const t=[e.timezone,"America/Los_Angeles","America/Denver","America/Chicago","America/New_York","UTC"],i=new Set;return t.filter(n=>{const a=String(n||"").trim();return!a||i.has(a)?!1:(i.add(a),!0)}).map(n=>{const a=n===e.timezone?" selected":"";return`<option value="${n.attr()}"${a}>${n.html()}</option>`}).join("")}function h(t=""){const i=Array.isArray(e.view?.days)?e.view.days.find(n=>String(n?.date||"")===String(t||"")):null;return Array.isArray(i?.slots)?i.slots:[]}function A(){return h(e.selectedDate).find(t=>String(t?.startUtc||"")===e.selectedSlotStartUtc)||null}function L(){if(Array.isArray(e.view?.bookings))return e.view.bookings;const t=e.view?.booking||null;return t?[t]:[]}function x(){return Math.max(1,Number(e.view?.scheduler?.personBookingLimit||1))}function b(){return L().length<x()}function X(){if(!e.active)return"Appointment scheduling is not ready.";if(!b())return"You have reached the booking limit for this scheduler.";const t=A(),i=e.confirmContentEl?.querySelector(".calendar-schedule-email-input");return t?i&&!i.checkValidity()?i.validationMessage||"Enter a valid email.":{verified:!0,data:{slot:t,email:String(i?.value||"").trim(),note:String(e.confirmContentEl?.querySelector(".calendar-schedule-note-input")?.value||"").trim()}}:"Select an available time."}async function ee({slot:t,email:i,note:n}){const a=await p.fetch({action:"calendar:bookScheduler",id:e.schedulerId,targetOrgId:e.orgId,startUtc:t.startUtc,timezone:e.timezone,note:n,email:i},{error:!0,success:"Appointment booked"});if(!a?.booking)throw new Error("Scheduler booking response missing booking payload.");e.onBooked?.(a.booking),await g({route:"/app/calendar",replace:!0})}function te(){e.calendar&&(e.calendar.destroy?.(),e.calendar=null),e.inlineEl&&(e.inlineEl.innerHTML="")}function T(){return new Promise(t=>{if(typeof window.requestAnimationFrame=="function"){window.requestAnimationFrame(()=>t());return}setTimeout(t,0)})}function ie(t){return new Promise(i=>setTimeout(i,t))}function N(t){return e.transitionQueue=e.transitionQueue.then(t).catch(i=>{console.error("calendar schedule: side transition failed",i)}),e.transitionQueue}function o(t){t&&t.classList.remove("page-next","page-previous","page-current")}async function U(t,i,n){const a=e.sideViewEl;if(!a||!i||!n||i===n)return;const l=t==="forward"?_:R;n.style.display="block",t==="forward"?(o(i),o(n),i.classList.add("page-current"),n.classList.add("page-next")):(o(i),o(n),i.classList.add("page-current"),n.classList.add("page-previous")),a.classList.add("router-transition",l),await T(),await T(),await ie(j),a.classList.remove("router-transition",l),t==="forward"?(i.classList.remove("page-current"),i.classList.add("page-previous"),n.classList.remove("page-next"),n.classList.add("page-current")):(n.classList.remove("page-previous"),n.classList.add("page-current"),i.classList.remove("page-current","page-next","page-previous"))}function ne(){e.sidePageEl&&(e.sidePageEl.innerHTML=`
31        <div class="view calendar-schedule-side-view">
32            <div class="page page-current" id="calendarScheduleTimesPage">
33                <div class="navbar">
34                    <div class="navbar-bg"></div>
35                    <div class="navbar-inner">
36                        <div class="left">
37                            <a class="link back tooltip-init" data-click="exitCalendarSchedule" data-tooltip="Exit scheduling" aria-label="Exit scheduling">
38                                <i class="icon icon-back"></i>
39                            </a>
40                        </div>
41                        <div class="title">Schedule</div>
42                    </div>
43                </div>
44                <div class="page-content" id="calendarScheduleTimesContent"></div>
45            </div>
46            <div class="page" id="calendarScheduleConfirmPage" style="display:none;">
47                <div class="navbar">
48                    <div class="navbar-bg"></div>
49                    <div class="navbar-inner">
50                        <div class="left">
51                            <a class="link back" data-click="backSchedulerSlotConfirm" aria-label="Back to available times">
52                                <i class="icon icon-back"></i>
53                            </a>
54                        </div>
55                        <div class="title">Confirm Appointment</div>
56                        <div class="right">
57                            <a class="link icon-only" data-calendar-schedule-confirm aria-label="Confirm appointment">
58                                <i class="icon fa-solid fa-check fa-lg"></i>
59                            </a>
60                        </div>
61                    </div>
62                </div>
63                <div class="page-content" id="calendarScheduleConfirmContent"></div>
64            </div>
65        </div>
66    `,e.sideViewEl=e.sidePageEl.querySelector(".calendar-schedule-side-view"),e.timesPageEl=e.sidePageEl.querySelector("#calendarScheduleTimesPage"),e.confirmPageEl=e.sidePageEl.querySelector("#calendarScheduleConfirmPage"),e.timesContentEl=e.sidePageEl.querySelector("#calendarScheduleTimesContent"),e.confirmContentEl=e.sidePageEl.querySelector("#calendarScheduleConfirmContent"),e.bookingActionState=Y(e.confirmPageEl.querySelector("[data-calendar-schedule-confirm]"),{before:{className:"link icon-only color-gray",style:{}},after:{className:"link icon-only color-blue",style:{}},scope:e.confirmPageEl,verification:X,success:ee}))}function M(){!e.timesPageEl||!e.confirmPageEl||(o(e.timesPageEl),o(e.confirmPageEl),e.timesPageEl.style.display="block",e.confirmPageEl.style.display="none",e.timesPageEl.classList.add("page-current"))}function C(){const t=e.view?.scheduler||{},i=String(t?.orgName||"").trim(),n=String(t?.orgImg||"/assets/images/app/logo96.png").trim(),a=t?.orgId?F({id:t.orgId,name:i||"Organization",avatar:n}):"",l=[t?.hostValue?`
67            <span class="chip color-orange">
68                <span class="chip-media"><i class="fa-regular fa-user"></i></span>
69                <span class="chip-label">${`${String(t.hostLabel||"Invited by")}: ${String(t.hostValue)}`.html()}</span>
70            </span>
71        `:"",t?.contactValue?`
72            <span class="chip color-blue">
73                <span class="chip-media"><i class="fa-regular fa-envelope"></i></span>
74                <span class="chip-label">${`${String(t.contactLabel||"Contact")}: ${String(t.contactValue)}`.html()}</span>
75            </span>
76        `:"",t?.duration?`
77            <span class="chip color-green">
78                <span class="chip-media"><i class="fa-regular fa-clock"></i></span>
79                <span class="chip-label">${`${String(t.duration)} minutes`.html()}</span>
80            </span>
81        `:"",t?.location?`
82            <span class="chip color-purple">
83                <span class="chip-media"><i class="fa-solid fa-location-dot"></i></span>
84                <span class="chip-label">${String(t.location).html()}</span>
85            </span>
86        `:""].filter(Boolean);return`
87        <div class="block margin-top">
88            <h2 class="no-margin">${String(t?.title||"Scheduler").html()}</h2>
89            ${a?`<div class="margin-top-half margin-bottom-half">${a}</div>`:""}
90            ${t?.desc?`<p class="calendar-schedule-description">${String(t.desc).html().replace(/\n/g,"<br>")}</p>`:""}
91        </div>
92        ${l.length?`
93            <div class="block no-margin-top">
94                <div class="flex flex-wrap flex-gap">
95                    ${l.join("")}
96                </div>
97            </div>
98        `:""}
99    `}function ae(t,i){if(!t.length)return"";const n=Math.max(0,i-t.length),a=n>0?`You can book ${n} more ${n===1?"appointment":"appointments"}.`:"You have reached the booking limit for this scheduler.";return`
100        <div class="block">
101            <p class="no-margin"><strong>Appointments Scheduled</strong></p>
102            <p class="dashboard-muted no-margin">${`${t.length} of ${i} appointments booked.`.html()} ${a.html()}</p>
103        </div>
104        <div class="list list-strong list-dividers inset">
105            <ul>
106                ${t.map(l=>{const O=String(l?.title||e.view?.scheduler?.title||"Appointment");return`
107                        <li>
108                            <div class="item-content">
109                                <div class="item-media"><i class="fa-regular fa-calendar-check"></i></div>
110                                <div class="item-inner">
111                                    <div class="item-title">${y(l?.startUtc,l?.timezone||e.timezone).html()}</div>
112                                    <div class="item-text">${O.html()}</div>
113                                    ${l?.note?`<div class="item-text">${String(l.note).html()}</div>`:""}
114                                    ${l?.email?`<div class="item-text">${String(l.email).html()}</div>`:""}
115                                </div>
116                            </div>
117                        </li>
118                    `}).join("")}
119            </ul>
120        </div>
121    `}function w(){if(!e.timesContentEl)return;const t=L(),i=x(),n=ae(t,i),a=h(e.selectedDate);if(!b()){e.timesContentEl.innerHTML=`
122            ${C()}
123            ${n}
124        `;return}e.timesContentEl.innerHTML=`
125        ${C()}
126        ${n}
127        <div class="list list-strong list-dividers inset">
128            <ul>
129                <li class="item-content item-input">
130                    <div class="item-inner">
131                        <div class="item-title item-label">Time Zone</div>
132                        <div class="item-input-wrap">
133                            <select data-change="changeSchedulerTimezone">${J()}</select>
134                        </div>
135                    </div>
136                </li>
137            </ul>
138        </div>
139        <div class="block">
140            <p class="no-margin"><strong>${e.selectedDate?Z(e.selectedDate).html():"Choose a date"}</strong></p>
141            <p class="dashboard-muted no-margin">Select a time to continue.</p>
142        </div>
143        ${e.selectedDate?"":'<div class="block-footer">Choose a date on the calendar to see available times.</div>'}
144        ${e.selectedDate&&!a.length?'<div class="block-footer">No available times for this date.</div>':""}
145        ${e.selectedDate&&a.length?`
146            <div class="list list-strong list-dividers inset">
147                <ul>
148                    ${a.map(l=>`
149                        <li>
150                            <a href="" class="item-link item-content" data-click="openSchedulerSlotConfirm" data-start-utc="${String(l?.startUtc||"").attr()}">
151                                <div class="item-inner">
152                                    <div class="item-title">${y(l?.startUtc,e.timezone).html()}</div>
153                                    <div class="item-after">Select</div>
154                                </div>
155                            </a>
156                        </li>
157                    `).join("")}
158                </ul>
159            </div>
160        `:""}
161    `}function u(){if(!e.confirmContentEl)return;const t=A();if(!t){e.confirmContentEl.innerHTML='<div class="block">Choose a time first.</div>',e.bookingActionState?.refresh();return}const i=f.raw||{},n=String(i?.name||i?.username||"Your account").trim(),a=W(),l=String(e.view?.scheduler?.notePrompt||"").trim();e.confirmContentEl.innerHTML=`
162        <div class="block">
163            <p class="no-margin"><strong>${String(e.view?.scheduler?.title||"Appointment").html()}</strong></p>
164            <p class="dashboard-muted no-margin">${y(t?.startUtc,e.timezone).html()}</p>
165        </div>
166        <div class="list list-strong list-dividers inset">
167            <ul>
168                <li>
169                    <div class="item-content">
170                        <div class="item-inner">
171                            <div class="item-title">Booking As</div>
172                            <div class="item-after">${n.html()}</div>
173                        </div>
174                    </div>
175                </li>
176                <li class="item-content item-input">
177                    <div class="item-inner">
178                        <div class="item-title item-label">Email</div>
179                        <div class="item-input-wrap">
180                            <input type="email" class="calendar-schedule-email-input" placeholder="[email protected]" value="${a.attr()}">
181                            <span class="input-clear-button"></span>
182                        </div>
183                    </div>
184                </li>
185                <li class="item-content item-input">
186                    <div class="item-inner">
187                        <div class="item-title item-label">Note</div>
188                        <div class="item-input-wrap">
189                            <textarea class="resizable calendar-schedule-note-input" placeholder="${(l||"Optional note").attr()}"></textarea>
190                        </div>
191                    </div>
192                </li>
193            </ul>
194        </div>
195    `,e.bookingActionState?.refresh()}function le(){e.monthTitleEl&&(e.monthTitleEl.textContent=Q(e.month))}function P(){return(e.view?.days||[]).map(t=>({date:new Date(`${t.date}T00:00:00`),color:"#ff9f5a"}))}function z(){const t=e.inlineEl;if(!t)return;e.calendar||(t.innerHTML="",e.calendar=q().calendar.create({containerEl:t,value:e.selectedDate?[new Date(`${e.selectedDate}T00:00:00`)]:[],events:P(),header:!1,toolbar:!1,weekHeader:!0,firstDay:7,monthSelector:!1,monthPicker:!1,yearSelector:!1,yearPicker:!1,closeOnSelect:!1,direction:"horizontal",on:{change(n,a){const l=a?.[0];l&&(e.selectedDate=I(l),e.selectedSlotStartUtc="",w(),u(),v())},monthYearChangeStart(n){const a=`${n.currentYear}-${String(n.currentMonth+1).padStart(2,"0")}`;a!==e.month&&c(a)}}}),!e.calendar?.opened&&typeof e.calendar?.open=="function"&&e.calendar.open()),e.calendar.params.events=P();const i=S(e.month);i&&(e.calendar.currentYear!==i.year||e.calendar.currentMonth!==i.month-1)&&e.calendar.setYearMonth(i.year,i.month-1,0),e.calendar.setValue(e.selectedDate?[new Date(`${e.selectedDate}T00:00:00`)]:[]),e.calendar.update()}async function v(){if(!(!e.timesPageEl||!e.confirmPageEl)){if(e.timesPageEl.classList.contains("page-current")){M();return}await N(async()=>{await U("backward",e.confirmPageEl,e.timesPageEl),e.confirmPageEl.style.display="none"})}}async function re(){!e.timesPageEl||!e.confirmPageEl||e.confirmPageEl.classList.contains("page-current")||(e.confirmPageEl.style.display="block",await N(async()=>{await U("forward",e.timesPageEl,e.confirmPageEl)}))}async function c(t=""){if(!e.active||e.schedulerId<=0||e.orgId<=0)return;const i=t||e.month||"",n=await p.fetch({action:"calendar:viewScheduler",id:e.schedulerId,targetOrgId:e.orgId,month:i,timezone:e.timezone},{error:!0});if(!n?.scheduler)throw new Error("Scheduler response missing scheduler payload.");e.view={scheduler:n.scheduler,days:Array.isArray(n?.days)?n.days:[],booking:n?.booking||null,bookings:Array.isArray(n?.bookings)?n.bookings:n?.booking?[n.booking]:[]},e.month=String(n?.month||i||"").trim(),e.selectedDate||(e.selectedDate=e.view.days?.[0]?.date||""),e.selectedDate&&!h(e.selectedDate).length&&(e.selectedDate=e.view.days?.[0]?.date||"",e.selectedSlotStartUtc=""),le(),w(),u(),z(),await v()}function B(){te(),e.bookingActionState?.destroy(),e.active=!1,e.schedulerId=0,e.orgId=0,e.timezone=K(),e.month="",e.view=null,e.selectedDate="",e.selectedSlotStartUtc="",e.inline
195El=null,e.sidePageEl=null,e.monthTitleEl=null,e.sideViewEl=null,e.timesPageEl=null,e.confirmPageEl=null,e.timesContentEl=null,e.confirmContentEl=null,e.bookingActionState=null,e.transitionQueue=Promise.resolve(),e.onBooked=null}async function se(t={}){if(B(),e.active=!0,e.schedulerId=Number(t.schedulerId||0),e.orgId=Number(t.orgId||0),e.inlineEl=t.inlineEl||null,e.sidePageEl=t.sidePageEl||null,e.monthTitleEl=t.monthTitleEl||null,e.onBooked=typeof t.onBooked=="function"?t.onBooked:null,!e.inlineEl||!e.sidePageEl||!e.monthTitleEl)throw new Error("Schedule page requires inline calendar, side page, and month title elements.");if(ne(),M(),e.schedulerId<=0||e.orgId<=0)throw new Error("Scheduler route is missing scheduler or organization identifiers.");await Promise.all([f.loadUser().catch(()=>null),c()]),u()}p.click.register({async exitCalendarSchedule(t,i){i?.preventDefault?.(),await g({route:"/app/calendar",replace:!0})},async openSchedulerSlotConfirm(t,i){i?.preventDefault?.(),!(!e.active||!b())&&(e.selectedSlotStartUtc=String(t.dataset.startUtc||""),u(),await re())},async backSchedulerSlotConfirm(t,i){i?.preventDefault?.(),await v()},calendarSchedulePrevPeriod(){d.prevPeriod()},calendarScheduleNextPeriod(){d.nextPeriod()},calendarScheduleToday(){d.today()}});p.change.register({changeSchedulerTimezone(t){e.active&&(e.timezone=String(t.value||"").trim()||"UTC",c(e.month))}});const d={isActive(){return e.active},async openInScreen(t={}){await se(t)},close(){B()},async prevPeriod(){e.active&&await c($(e.month,-1))},async nextPeriod(){e.active&&await c($(e.month,1))},async today(){if(!e.active)return;const t=new Date,i=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`;await c(i);const n=I(t);h(n).length&&(e.selectedDate=n,e.selectedSlotStartUtc="",w(),u(),z(),await v())}};D({route:"/app/calendar/schedule/:orgId/:id",exact:!0},{async open(t){const i=Number(t?.params?.id||0),n=Number(t?.params?.orgId||0);if(i<=0||n<=0){g({route:"/app/calendar",replace:!0});return}k&&(k.style.display="none"),m&&(m.style.display="block"),document.title="Schedule | bizybear";try{await d.openInScreen({schedulerId:i,orgId:n,inlineEl:r(s.inlineCalendar),sidePageEl:r(s.sidePage),monthTitleEl:r(s.monthTitle)})}catch(a){console.error("calendar schedule: route failed",a);const l=r(s.sidePage);l&&(l.innerHTML=`
196                    <div class="page">
197                        <div class="navbar">
198                            <div class="navbar-bg"></div>
199                            <div class="navbar-inner">
200                                <div class="left">
201                                    <a class="link back" data-click="exitCalendarSchedule" aria-label="Exit scheduling">
202                                        <i class="icon icon-back"></i>
203                                    </a>
204                                </div>
205                                <div class="title">Schedule</div>
206                            </div>
207                        </div>
208                        <div class="page-content">
209                            <div class="block">
210                                <p class="no-margin"><strong>Scheduler failed to load.</strong></p>
211                                <p class="dashboard-muted no-margin">${G(a).html()}</p>
212                            </div>
213                        </div>
214                    </div>`)}},close(){d.close(),m&&(m.style.display="none")}});D({route:"/app/calendar/organizations/:orgId/schedule/:id",exact:!0},{open(t){g({route:`/app/calendar/schedule/${encodeURIComponent(t.params.orgId)}/${encodeURIComponent(t.params.id)}`,replace:!0})}});export{d as default,G as formatScheduleLoadError};

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.