PageSourceSearch

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

js bizybear.app collected 2026-10-02 01:13:30 UTC 8,275 bytes, 63 lines download raw bytes

1import{a as b}from"./app-BMB7SW2A.js";import{E as v,R as y,F as w}from"./src-pages-app-index-_ZjinjR4.js";import{r as S,b as C}from"./index-BgLoebrB.js";import{s as f,c as k}from"./info-DKN5wgY5.js";import{push as q}from"./index-DWnXxI_3.js";import{d as m}from"./index-B79LEOz5.js";import"./router-B4-bvdrn.js";import"./index-DccQzYGv.js";import"./state-BNFBaZXw.js";import"./index-DDlvirwQ.js";import"./MorphSVGPlugin-B-vk8YRp.js";import"./urls-CmoUUsuo.js";import"./index-HYjaO52u.js";import"./haptics-0J6I5ZKw.js";import"./index-7_ZwoNWQ.js";import"./init-CuVSQ5H_.js";import"./index-CU5uiC6B.js";import"./_commonjsHelpers-CE1G-McA.js";import"./index-D9_lbuvr.js";import"./index-B9fViuMG.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";import"./index-BkO2fBqK.js";import"./base-Cxvbrg-u.js";import"./utils-Dn5Bb-wo.js";import"./index-SCMTw1Ks.js";import"./index-Cf6pUz87.js";import"./purify.es-Cz4mVeUR.js";import"./chip-BXzMHW7J.js";import"./nfc-C5cHjzbh.js";import"./ble-protocol-Bz9lw6YH.js";import"./review-C7Jx8ElM.js";import"./index-BY3AO5xA.js";import"./index-CTukHSY2.js";import"./select-C-JI7xr-.js";let c=null,l=null;function g(t){const e=Array.isArray(t?.questions)?t.questions[0]:null;if(!e)return null;if(e.value&&typeof e.value=="object")return e.value;if(typeof e.txt!="string")return null;try{const o=JSON.parse(e.txt);return o&&typeof o=="object"&&!Array.isArray(o)?o:null}catch{return null}}function d(t,e=""){const o=Number(t);return Number.isFinite(o)?String(o):e}function p(t="",e={}){return`
2<div class="calculator-editor-section" data-calculator-section="1">
3    <div class="calculator-editor-section-grid">
4        <div class="calculator-editor-field">
5            <label class="calculator-editor-label">Section</label>
6            <input class="text-input" type="text" maxlength="120" data-field="name" value="${String(t).attr()}" placeholder="Section name">
7        </div>
8        <div class="calculator-editor-field">
9            <label class="calculator-editor-label">Max points</label>
10            <input class="text-input" type="number" min="0" step="0.01" data-field="points" value="${d(e?.points).attr()}" placeholder="0">
11        </div>
12        <div class="calculator-editor-field">
13            <label class="calculator-editor-label">Weight (0-1)</label>
14            <input class="text-input" type="number" min="0" step="0.01" data-field="weight" value="${d(e?.weight).attr()}" placeholder="0.00">
15        </div>
16        <button class="button button-small button-round" type="button" data-click="removeCalculatorSection" aria-label="Remove section"><i class="fa-solid fa-trash-can"></i></button>
17    </div>
18</div>`}function E(t={}){const e=t?.weights&&typeof t.weights=="object"&&!Array.isArray(t.weights)?t.weights:{},o=t?.distribution&&typeof t.distribution=="object"?t.distribution:{},a=Object.entries(e),r=a.length?a.map(([n,s])=>p(n,s)).join(""):p(),i=["score_5","score_4","score_3","score_2","score_1","mean_score"].map(n=>`
19            <div class="calculator-editor-field">
20                <label class="calculator-editor-label">${n.replace("_"," ").html()}</label>
21                <input class="text-input" type="number" min="0" step="0.01" data-distribution="${n.attr()}" value="${d(o[n]).attr()}" placeholder="0">
22            </div>`).join("");return`
23<div class="calculator-editor" data-calculator-editor="1">
24    <div class="calculator-editor-block">
25        <div class="calculator-editor-heading">
26            <div>
27                <p class="calculator-editor-kicker no-margin">Calculator data</p>
28                <h3 class="no-margin">Score sections</h3>
29            </div>
30            <button class="button button-small button-round" type="button" data-click="addCalculatorSection"><i class="fa-solid fa-plus"></i> Add section</button>
31        </div>
32        <div class="calculator-editor-sections" data-calculator-sections>${r}</div>
33    </div>
34    <div class="calculator-editor-block">
35        <div class="calculator-editor-heading">
36            <div>
37                <p class="calculator-editor-kicker no-margin">Distribution</p>
38                <h3 class="no-margin">Score curve</h3>
39            </div>
40        </div>
41        <div class="calculator-editor-distribution">${i}</div>
42    </div>
43    <div class="calculator-editor-actions">
44        <button class="button button-outline button-round button-raised" type="button" data-click="saveCalculator">Save calculator</button>
45        <button class="button button-round" type="button" data-click="cancelCalculator">Cancel</button>
46    </div>
47</div>`}function u(t){if(String(t??"").trim()==="")return null;const e=Number(t);return Number.isFinite(e)?e:null}function $(){const t=c?.get()?.querySelector("[data-calculator-editor]");
47if(!t)return{error:"Calculator editor is unavailable."};const e={};for(const r of t.querySelectorAll("[data-calculator-section]")){const i=String(r.querySelector('[data-field="name"]')?.value||"").trim(),n=u(r.querySelector('[data-field="points"]')?.value),s=u(r.querySelector('[data-field="weight"]')?.value);if(!i||n==null||n<=0||s==null||s<=0)return{error:"Each section needs a name, max points, and weight."};if(Object.hasOwn(e,i))return{error:"Section names must be unique."};e[i]={points:n,weight:s}}const o={};for(const r of t.querySelectorAll("[data-distribution]")){const i=u(r.value);if(i==null||i<0)return{error:"Enter all distribution values."};o[r.dataset.distribution]=i}const a=["score_1","score_2","score_3","score_4","score_5"].reduce((r,i)=>r+Number(o[i]||0),0);return Math.abs(a-100)>1?{error:"Score percentages must add up to 100."}:{data:{weights:e,distribution:o}}}async function x(){const t=$();if(!t.data){q("warning",t.error);return}const e={action:"content:saveCalculator",setId:Number(l?.id||0),data:t.data},o=k(l);o&&(e.orgId=o);const a=await b.fetch(e,{error:!0,success:"Calculator saved."});if(!a?.success||!a.question)return;l.questions=[a.question],l.content=l.questions,l.loaded.content=!0;const r=l;await c.close(),await w.render(r)}function A(){return c||(c=y.new({id:"calculatorEditorPopup",fullscreen:!0,bar:{center:"Edit Score Calculator"},content:"",onClose(){l=null}}),c)}function h(t){l=t;const e=A();e.setContent(E(g(t)||{})),e.open()}function _(t){if(!t)return`
48<div class="calculator-view-empty">
49    <h3 class="no-margin">Calculator setup is empty.</h3>
50    <p class="no-margin dashboard-muted">Add the scoring sections and distribution curve to publish this calculator.</p>
51    <button class="button button-outline button-round button-raised" type="button" data-click="editCalculator">Set up calculator</button>
52</div>`;const e=t.weights&&typeof t.weights=="object"?t.weights:{};return`
53<div class="calculator-view-summary">
54    <div class="calculator-view-heading">
55        <div>
56            <p class="calculator-editor-kicker no-margin">Ready to publish</p>
57            <h3 class="no-margin">Score Calculator</h3>
58        </div>
59        <button class="button button-outline button-round" type="button" data-click="editCalculator">Edit</button>
60    </div>
61    <ul class="calculator-view-sections">${Object.entries(e).map(([a,r])=>`
62        <li><span>${String(a).html()}</span><span>${`${Number(r?.points||0)} points · ${Math.round(Number(r?.weight||0)*100)}%`.html()}</span></li>`).join("")}</ul>
63</div>`}async function ft(t){const e=v(),o=await f.fetchContent(t.id)||t,a=g(o);return e.setSet(o),e.setActions(S(o)),e.getViewElement().innerHTML=_(a),e.setEmpty(""),e.setLoading(!1),o}C({id:`edit:${m.type}`,type:m.type,name:"Edit calculator",label:"Edit calculator",icon:"fa-solid fa-pen",tooltip:"Edit calculator",order:10,contexts:["popup-main"],execute:h});b.click.register({editCalculator(){const t=f.get(v().get()?.dataset?.setId)||l;t&&h(t)},addCalculatorSection(){c?.get()?.querySelector("[data-calculator-sections]")?.insertAdjacentHTML("beforeend",p())},removeCalculatorSection(t){const e=t?.closest("[data-calculator-sections]"),o=t?.closest("[data-calculator-section]");!e||!o||e.children.length<=1||o.remove()},async saveCalculator(){await x()},cancelCalculator(){c?.close?.()}});export{h as open,ft as render};

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.