flowfig 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/diff.js CHANGED
@@ -1,49 +1,94 @@
1
- import { edgeId, isGroup, laneColumns, nodes, str, toBeat } from './model.js';
1
+ import { edgeId, isGroup, laneColumns, nodes, scenes, str, toBeat, } from './model.js';
2
2
  const show = (v) => (v == null ? '(none)' : `"${str(v)}"`);
3
3
  const fields = (a, b, names) => names.filter((k) => str(a[k]) !== str(b[k])).map((k) => `${String(k)} ${show(a[k])} -> ${show(b[k])}`);
4
4
  function compare(kind, before, after, fieldsOf) {
5
+ const at = (key, v) => ({ kind, op: 'added', id: v.id ?? key, ...(v.path && { path: v.path }) });
5
6
  const out = [];
6
- for (const [id, a] of before) {
7
- const b = after.get(id);
7
+ for (const [key, a] of before) {
8
+ const b = after.get(key);
8
9
  if (!b)
9
10
  continue;
10
11
  const d = fieldsOf(a, b);
11
12
  if (d.length)
12
- out.push({ kind, op: 'changed', id, detail: d.join('; ') });
13
+ out.push({ ...at(key, b), op: 'changed', detail: d.join('; ') });
13
14
  }
14
- for (const id of before.keys())
15
- if (!after.has(id))
16
- out.push({ kind, op: 'removed', id });
17
- for (const id of after.keys())
18
- if (!before.has(id))
19
- out.push({ kind, op: 'added', id });
15
+ for (const [key, a] of before)
16
+ if (!after.has(key))
17
+ out.push({ ...at(key, a), op: 'removed' });
18
+ for (const [key, b] of after)
19
+ if (!before.has(key))
20
+ out.push(at(key, b));
20
21
  return out;
21
22
  }
22
23
  const messages = (fig) => {
23
24
  const seen = new Map();
24
- const ids = (fig.steps ?? []).flatMap((s) => s.flow.flatMap((b) => toBeat(b).hops.map((h) => {
25
+ return new Map(scenes(fig).flatMap((sc) => (sc.props.steps ?? []).flatMap((s) => s.flow.flatMap((b) => toBeat(b).hops.map((h) => {
25
26
  const key = `${str(s.label)}: ${h.edge}${h.back ? ' back' : ''}${h.data != null ? ` "${str(h.data)}"` : ''}${h.tone ? ` [${h.tone}]` : ''}${h.source ? ` <${h.source}>` : ''}${h.via ? ` via ${h.via}` : ''}`;
26
- const n = (seen.get(key) ?? 0) + 1;
27
- seen.set(key, n);
28
- return n > 1 ? `${key} #${n}` : key;
29
- })));
30
- return new Map(ids.map((id) => [id, id]));
27
+ const full = `${sc.path.join('>')}\n${key}`;
28
+ const n = (seen.get(full) ?? 0) + 1;
29
+ seen.set(full, n);
30
+ const id = n > 1 ? `${key} #${n}` : key;
31
+ return [`${sc.path.join('>')}\n${id}`, { id, path: sc.line }];
32
+ })))));
31
33
  };
32
34
  const boxes = (f) => {
33
35
  const m = new Map();
34
- const walk = (g, parent) => g.children.forEach((c) => (isGroup(c) ? walk(c, c.label != null ? str(c.label) : c.id) : m.set(c.id, { ...c, group: parent })));
35
- walk(f.layout);
36
+ for (const sc of scenes(f)) {
37
+ const ports = new Set(sc.ports.map((p) => p.id));
38
+ const walk = (g, parent) => g.children.forEach((c) => isGroup(c)
39
+ ? walk(c, c.label != null ? str(c.label) : c.id)
40
+ : ports.has(c.id) || m.set(c.id, { ...c, group: parent, path: sc.line, owner: sc.path.at(-1), top: sc.path[0] }));
41
+ walk(sc.props.layout);
42
+ }
36
43
  return m;
37
44
  };
45
+ const BOX_FIELDS = ['label', 'sub', 'shape', 'tone', 'mark', 'from', 'to', 'source', 'group'];
46
+ const touched = (a, b) => !a || !b || a.owner !== b.owner || fields(a, b, BOX_FIELDS).length > 0;
38
47
  export function diff(before, after) {
39
- const edges = (f) => new Map(f.edges.map((e) => [edgeId(e), e]));
40
- const steps = (f) => new Map((f.steps ?? []).map((s) => [str(s.label), s]));
48
+ const edges = (f) => new Map(scenes(f).flatMap((sc) => sc.props.edges.map((e) => [edgeId(e), { ...e, path: sc.line }])));
49
+ const steps = (f) => new Map(scenes(f).flatMap((sc) => (sc.props.steps ?? []).map((s) => [`${sc.path.join('>')}\n${str(s.label)}`, { ...s, id: str(s.label), path: sc.line }])));
50
+ const was = boxes(before);
51
+ const now = boxes(after);
41
52
  const out = [
42
- ...compare('box', boxes(before), boxes(after), (a, b) => fields(a, b, ['label', 'sub', 'shape', 'tone', 'mark', 'from', 'to', 'source', 'group'])),
53
+ ...compare('box', was, now, (a, b) => [
54
+ ...(a.owner !== b.owner ? [`moved from ${a.path || 'the root'} to ${b.path || 'the root'}`] : []),
55
+ ...fields(a, b, BOX_FIELDS),
56
+ ]),
43
57
  ...compare('edge', edges(before), edges(after), (a, b) => fields(a, b, ['from', 'to', 'label', 'source', 'via'])),
44
58
  ...compare('step', steps(before), steps(after), (a, b) => fields(a, b, ['caption'])),
45
59
  ...compare('message', messages(before), messages(after), () => []),
46
60
  ];
61
+ const parts = new Map();
62
+ const tally = (owner, k) => {
63
+ if (owner)
64
+ parts.set(owner, { added: 0, removed: 0, changed: 0, ...parts.get(owner), [k]: (parts.get(owner)?.[k] ?? 0) + 1 });
65
+ };
66
+ for (const id of new Set([...was.keys(), ...now.keys()])) {
67
+ const a = was.get(id);
68
+ const b = now.get(id);
69
+ if (!touched(a, b))
70
+ continue;
71
+ if (!a)
72
+ tally(b.owner, 'added');
73
+ else if (!b)
74
+ tally(a.owner, 'removed');
75
+ else {
76
+ tally(b.owner, 'changed');
77
+ if (a.owner !== b.owner)
78
+ tally(a.owner, 'removed');
79
+ }
80
+ }
81
+ for (const [owner, c] of parts) {
82
+ if (!was.has(owner) || !now.has(owner))
83
+ continue;
84
+ const text = `parts: ${c.added} added, ${c.removed} removed, ${c.changed} changed`;
85
+ const hit = out.find((x) => x.kind === 'box' && x.id === owner);
86
+ const path = now.get(owner).path;
87
+ if (hit)
88
+ hit.detail = hit.detail ? `${hit.detail}; ${text}` : text;
89
+ else
90
+ out.push({ kind: 'box', op: 'changed', id: owner, detail: text, ...(path && { path }) });
91
+ }
47
92
  // The rail is a boolean or 'only', so str() would hide it.
48
93
  if ((before.rail ?? false) !== (after.rail ?? false))
49
94
  out.push({ kind: 'rail', op: 'changed', id: 'rail', detail: `${before.rail ?? '(none)'} -> ${after.rail ?? '(none)'}` });
@@ -55,7 +100,7 @@ export function formatDiff(changes, as) {
55
100
  return changes
56
101
  .map((c) => {
57
102
  const id = as === 'md' ? `\`${c.id}\`` : c.id;
58
- const line = `${c.kind} ${c.op}: ${id}${c.detail ? ` (${c.detail})` : ''}`;
103
+ const line = `${c.path ? `[${c.path}] ` : ''}${c.kind} ${c.op}: ${id}${c.detail ? ` (${c.detail})` : ''}`;
59
104
  return as === 'md' ? `- ${line}` : line;
60
105
  })
61
106
  .join('\n');
@@ -73,8 +118,11 @@ function find(root, hit) {
73
118
  }
74
119
  }
75
120
  export function mergeFigures(before, after) {
76
- const was = boxes(before);
77
- const now = boxes(after);
121
+ const rootBoxes = (f) => new Map([...boxes(f)].filter(([, n]) => !n.path));
122
+ const was = rootBoxes(before);
123
+ const now = rootBoxes(after);
124
+ const innerBefore = boxes(before);
125
+ const innerAfter = boxes(after);
78
126
  const gone = (c) => ids(c).every((id) => !now.has(id));
79
127
  const layout = cloneGroup(after.layout);
80
128
  const placed = new Set();
@@ -119,6 +167,13 @@ export function mergeFigures(before, after) {
119
167
  for (const id of was.keys())
120
168
  if (!now.has(id))
121
169
  marks.boxes[id] = 'removed';
170
+ for (const id of new Set([...innerBefore.keys(), ...innerAfter.keys()])) {
171
+ const [a, b] = [innerBefore.get(id), innerAfter.get(id)];
172
+ if (touched(a, b))
173
+ for (const top of [a?.top, b?.top])
174
+ if (top && now.has(top) && !marks.boxes[top])
175
+ marks.boxes[top] = 'changed';
176
+ }
122
177
  const colAt = new Map();
123
178
  if (after.lanes) {
124
179
  const colsAfter = laneColumns(after);
@@ -0,0 +1,4 @@
1
+ var e=/[ᄀ-ᅟ⺀-꓏가-힣豈-﫿︰-﹏＀-⦆¢-₩]|\p{Extended_Pictographic}/u,t=/[ilj.,:;'|!()[\]ftrI ]/,n=/[WMmw@%]/,r=/[A-Z0-9#&?]/;function i(i,a,o=!1){let s=0;for(let a of i)s+=e.test(a)?1:o?.6:n.test(a)?.85:t.test(a)?.3:r.test(a)?.64:.53;return s*a}function a(e,t,n,r=!1){let a=[];for(let o of e.split(`
2
+ `)){let e=``;for(let s of o.split(` `))e?i(e+` `+s,n,r)<=t?e+=` `+s:(a.push(e),e=s):e=s;a.push(e)}return a}var o=e=>{let{edges:t,...n}=typeof e==`object`&&!Array.isArray(e)&&!(`edge`in e)?e:{edges:e},r=t==null?[]:Array.isArray(t)?t:[t];return{...n,hops:r.map(e=>typeof e==`string`?{edge:e,back:!1}:{back:!1,...e})}},s=(e,t,n)=>{let r=new Set(t?[t]:[]);for(let t of n)for(let n of t.hops)n.edge===e&&n.source&&r.add(n.source);return r.size?[...r].join(`
3
+ `):void 0},c=e=>Array.isArray(e)&&e.every(e=>typeof e==`object`&&!!e&&`text`in e),l=e=>e.id??`${e.from}->${e.to}`,u=e=>`children`in e,d=1.25,f={blue:`#3b82f6`,purple:`#8b5cf6`,green:`#10b981`,orange:`#f59e0b`,red:`#ef4444`,gray:`#8b949e`},p=e=>`color-mix(in srgb, ${e} 64%, #000)`,m=(e,t,n=8)=>`color-mix(in srgb, ${e} ${n}%, ${t})`,h=e=>i(e,11,!0)+14,g=i(`ASYNC`,9)+8,_=1.25,v={accent:`#0074d9`,fg:`#1c1e21`,muted:`#606770`,bg:`#ffffff`,surface:`#f5f7fa`,border:`#d0d7de`},y={accent:`#1f78c8`,fg:`#e3e3e3`,muted:`#9aa0a6`,bg:`#1b1b1d`,surface:`#242526`,border:`#3a3b3c`},b=`#ffffff`,x=e=>typeof e==`string`||typeof e==`number`?String(e):``,S=e=>{let t=x(e).split(/\s+/).filter(Boolean).length;return t?400+240*t:0},C=(e,t)=>e.ms??t+S(e.say),w=(e,t,n)=>{for(let r=Math.min(n,t.length-1);r>=0;r--){let n=(t[r].focus??[]).find(t=>e.some(e=>e.id===t));if(n!=null)return e.find(e=>e.id===n)}},T=(e,t)=>w(e,(t[0]?.flow??[]).slice(0,1).map(o),0),ee=(e,t)=>({x:e.x+e.w+6,y:e.y,w:i(t,13),h:e.h}),E=(e,t,n)=>[Math.min(e+n,t),t],D=(e,t,n,r)=>t!=null&&e+3<t-3&&e+3+n>t-3-r,O=2e3,k=e=>Math.round(e*10)/10,A=(e,t)=>{let n=t/1e3/d,r=O/1e3/d,i=[],a=0;return{beats:e.map(e=>{let o=e.map((i,o)=>{let s=a,c=C(i,t)/1e3/d;return a+=c+(o===e.length-1?r:0),{t0:s,t1:s+n,tEnd:s+c}});return i.push(a),o}),ends:i}},j=e=>e.children.flatMap(e=>u(e)?j(e):[e]),M=e=>e.way===`in`?`in: from ${e.name}`:e.way===`out`?`out: to ${e.name}`:`in and out: ${e.name}`;function N(e){let t={path:[],name:``,line:``,props:e,ports:[],parts:0};if(e.lanes||e.timeline||e.rail===`only`)return[t];let n=/* @__PURE__ */ new Map,r=(e,t)=>j(e).forEach(e=>{n.set(e.id,e),e.inside&&t<3&&r(e.inside.layout,t+1)});r(e.layout,1);let i=e=>x(n.get(e)?.label)||e,{theme:a,speed:o,rail:s}=e,c=[t],l=e=>{for(let t of j(e.props.layout)){let r=t.inside?j(t.inside.layout):[];if(!t.inside||!r.length)continue;let u=new Set(r.map(e=>e.id)),d=t.inside.edges??[],f=[],p=[];for(let e of d)u.has(e.from)!==u.has(e.to)&&(!u.has(e.from)&&!f.includes(e.from)&&f.push(e.from),!u.has(e.to)&&!p.includes(e.to)&&p.push(e.to));let m=[...f,...p.filter(e=>!f.includes(e))].map(e=>({id:e,way:f.includes(e)?p.includes(e)?`in and out`:`in`:`out`,name:i(e)})),h=e=>{let t=n.get(e.id)?.source;return{id:e.id,label:M(e),...t!=null&&{source:t}}},g=m.filter(e=>e.way!==`out`).map(h),_=m.filter(e=>e.way===`out`).map(h),v=t.inside.layout,y=v.auto?{...v,children:[...g,...v.children,..._]}:{direction:v.direction===`column`?`column`:`row`,gap:28,children:[...g,v,..._]},b=[...e.path,t.id],x={path:b,name:i(t.id),line:b.map(i).join(` > `),props:{layout:y,edges:d,steps:t.inside.steps,theme:a,speed:o,rail:s},ports:m,parts:u.size};c.push(x),b.length+1<3&&l(x)}};return l(t),c}var P={fade:120,grow:360,stagger:50,hide:120,shrink:300},F=(e,t)=>t?[e.to,e.from]:[e.from,e.to];function te(e,t){let n=new Map(e.props.edges.map(e=>[l(e),e])),r=(e.props.steps??[]).findIndex(e=>{let r=e.flow.length?o(e.flow[0]).hops[0]:void 0,i=r&&n.get(r.edge);return i!=null&&F(i,r.back)[0]===t});return Math.max(r,0)}function ne(e){let t=ae(e.props),n=j(e.props.layout).map(e=>e.id).sort((e,n)=>t.get(e)-t.get(n)),r=new Set(e.ports.map(e=>e.id));return[...n.filter(e=>r.has(e)),...n.filter(e=>!r.has(e))]}function re(e,t=e.speed??900){let n=N(e),r=new Map(n.map(e=>[e.path.join(`>`),e])),i=[],a=/* @__PURE__ */ new Set,s=(e,t,n)=>{let r=[],i=e;for(let[e,t]of n)e>i&&r.push([i,e]),i=t;return t>i&&r.push([i,t]),r},c=(e,n,i)=>{let s=n.map(e=>e.flow.map(o)),c=A(s,t),d=new Map(e.props.edges.map(e=>[l(e),e])),f=[],p=0,m=(t,n,i)=>{let o=[...e.path,t].join(`>`),s=r.get(o);if(!s||a.has(o))return;let c=u(s,n,i);f.push([i,i+c]),p+=c},h={beats:[],ends:[]};s.forEach((e,t)=>{h.beats.push(e.map((e,n)=>{let r=c.beats[t][n],a=i+r.t0*1e3+p,o=i+r.t1*1e3+p;for(let t of e.hops){let e=d.get(t.edge);e&&m(F(e,t.back)[1],F(e,t.back)[0],i+r.tEnd*1e3+p)}return{t0:a/1e3,t1:o/1e3,tEnd:(i+r.tEnd*1e3+p)/1e3}})),h.ends.push((i+c.ends[t]*1e3+p)/1e3)});let g=i+(c.ends.at(-1)??0)*1e3;for(let t of j(e.props.layout))m(t.id,void 0,g+p);return h.ends.length&&(h.ends[h.ends.length-1]=(g+p)/1e3),{times:h,end:g+p,spans:f}},u=(e,t,n)=>{a.add(e.path.join(`>`));let o=n+S(e.name)+P.fade+P.grow,l=j(e.props.layout).length,u=o+P.stagger*(l-1)+S([e.line,...e.ports.map(M)].join(` `)),d=e.props.steps??[],f=d.length?te(e,t):-1,p={path:e.path,step:f,open:[n,u],grown:o,loop:[],back:[0,0],times:{beats:[],ends:[]}};i.push(p);let m=c(e,f===-1?[]:[d[f]],u),h=e.path.length>1?`back to ${r.get(e.path.slice(0,-1).join(`>`)).name}`:`Back`,g=m.end+S(h)+P.hide+P.shrink+P.fade;return p.loop=s(u,m.end,m.spans),p.back=[m.end,g],p.times=m.times,g-n},d=c(n[0],e.steps??[],0);return{ms:d.end,loop:s(0,d.end,d.spans),times:d.times,opens:i}}var I=e=>e.direction===`column`&&e.children.every(e=>u(e)&&e.label!=null&&e.children.every(e=>!u(e))),ie=e=>typeof e==`number`&&Number.isInteger(e)&&e>=0;function ae(e){let t=new Map(e.edges.map(e=>[l(e),e])),n=/* @__PURE__ */ new Map,r=e=>{n.has(e)||n.set(e,n.size)};for(let n of e.steps??[])for(let e of n.flow.map(o))for(let n of e.hops){let e=t.get(n.edge);if(e)for(let t of n.back?[e.to,e.from]:[e.from,e.to])r(t)}for(let t of j(e.layout))r(t.id);for(let t of j(e.layout))ie(t.at)&&n.set(t.id,t.at);return n}function L(e,t,n=190){if(e.width!=null)return e.width;if(t)return 166;let r=i(x(e.label),14)+32,a=i(x(e.sub),12)+32;return Math.min(e.shape===`decision`?170:n,Math.max(100,r,a))}function R(e,t){let n=x(e.label);if(e.shape===`decision`)return a(n,t-102+.5,14);if(i(n,14)<=t-32+.5)return[n];let r=a(n,t-32,14);return r.every(e=>i(e,14)<=t-32)?r:[n]}function z(e,t,n,r=190){if(!u(e))return L(e,t.has(e.id),r)+(e.shape===`decision`?70:0);let i=e.children.map(e=>z(e,t,n,r));return(e.direction===`column`?Math.max(...i):i.reduce((e,t)=>e+t,0)+_e(e,n)*(i.length-1))+(e.label==null?0:36)}function oe(e,t,n=24){if((e.lanes||e.timeline)&&I(e.layout))return 190;let r=new Set((e.steps??[]).flatMap(e=>e.flow.flatMap(e=>Object.keys(o(e).show??{})))),a=(e,t)=>{let n=L(e,r.has(e.id),t);return Math.max(i(x(e.sub),12),...R(e,n).map(e=>i(e,14)))+32<=n+.5},s=j(e.layout).filter(e=>a(e,190)),c=190;for(;c>110&&z(e.layout,r,e.edges,c)+n*2>t&&s.every(e=>a(e,c-20));)c-=20;return c}var B=(e,t,n)=>e*Math.max(0,1-n/(t/2))-8;function se(e,t){let n=e.sub?x(e.sub):``,r=R(e,t),o=r.length-1,s=(e,t)=>Math.max(Math.abs(e-.75*t),e+.25*t);for(let e=+!!n,c=0;;){c=Math.max(c,62+15*e+18*o);let l=(e?5.5:5)-7.5*e-9*o,u=e?s(l+18*o+15*e,12):0,d=e?a(n,B(t,c,u),12):[],f=r.map((e,t)=>({text:e,dy:l+18*t,far:s(l+18*t,14)})),p=d.map((e,t)=>({text:e,dy:l+18*o+15*(t+1),far:s(l+18*o+15*(t+1),12)}));if(d.length>e&&e<6)e++;else if(c<t&&f.some(e=>i(e.text,14)>B(t,c,e.far)))c+=4;else return{h:c,label:f,subs:p}}}function ce(e,t,n,r){let i=t=>e.findIndex(e=>e.id===t||e.children.some(e=>e.id===t)),a=/* @__PURE__ */ new Set;for(let e of r){let r=n.find(t=>l(t)===e.id),[o,s]=t.get(e.id)??[];r&&e.stub&&(e.stub.tight[0]&&o!=null&&a.add(`${i(r.from)}@${o}`),e.stub.tight[1]&&s!=null&&a.add(`${i(r.to)}@${s}`))}return a}var le=e=>Math.max(0,...e.map(e=>i(x(e.label).toUpperCase(),12)))+36,ue=(e,t)=>{let n=0;for(;n<e.length-2&&t>=e[n+1];)n++;return n},de=(e,t,n)=>[`${x(e)?x(e)+` `:``}→ ${x(n)}`,`from ${x(t)}`,...x(e)?[`→ ${x(n)}`]:[]];function fe(e,{width:t=830,minText:n=10,padding:r=24,floor:i=0}={}){let a=ae(e),s=Math.max(-1,...a.values())+1,u=(e.steps??[]).flatMap(e=>e.flow.flatMap(e=>Object.entries(o(e).show??{}))),d=new Set(u.map(([e])=>e)),f=u.some(([,e])=>c(e)&&e.some(e=>e.mono)),p=Array.from({length:s},()=>0),m=new Map(j(e.layout).map(e=>[e.id,e]));for(let e of m.values()){let t=a.get(e.id);p[t]=Math.max(p[t],L(e,d.has(e.id))+(e.shape===`decision`?70:0))}let g=f?10.5:11,_=t*g/n,v=_-r*2,y=e.layout.children,b=new Map(y.filter(e=>e.id!=null).map(e=>[e.id,e])),S=le(y),C=t=>{let n=[0];for(let e=0;e<t;e++)n.push(n[e]+Math.floor(s/t)+ +(e<s%t));let r=e=>ue(n,e),i=e=>r(a.get(e)),o=[...new Set([...m.keys()].map(i))].sort((e,t)=>e-t),c=o.length?o:[0],u=c.length>1,d=e=>u?[...new Set(e.children.map(e=>i(e.id)))].sort((e,t)=>e-t):c,f=/* @__PURE__ */ new Map,g=/* @__PURE__ */ new Map,_=[];e.edges.forEach(e=>{let t=l(e),[n,r]=[b.get(e.from),b.get(e.to)];if(!(m.has(e.from)||n)||!(m.has(e.to)||r))return;let a=!1,o=(e,t,n)=>{let r=d(e);return(n?r.find(e=>e>=t):r.findLast(e=>e<=t))??(a=!0,n?r.at(-1):r[0])},s,c;if(n||(s=i(e.from)),r||(c=i(e.to)),n&&r&&(s=d(n)[0]),n&&!r&&(s=o(n,c,!1)),r&&(c=o(r,s,!0)),s==null||c==null)return void(u&&_.push(t));if(a&&_.push(t),g.set(t,[s,c]),s===c)return;let p=de(e.label,(m.get(e.from)??n).label,(m.get(e.to)??r).label);f.set(t,p)});let C=Array.from({length:s},()=>0);for(let t of e.edges){let[e,n]=[a.get(t.from),a.get(t.to)];if(t.label==null||e==null||n==null||Math.abs(e-n)!==1||r(e)!==r(n))continue;let i=h(x(t.label));i-2>56&&(C[Math.min(e,n)]=Math.max(C[Math.min(e,n)],i+8))}let T=p.map((e,t)=>t===n[r(t)+1]-1?18:Math.max(56,C[t])),ee=Math.max(...n.slice(1).map((e,t)=>e-n[t])),E=Array.from({length:t},()=>0),D=e=>12+h(e)+8,O=c.every(e=>w(n[e],n[e+1],T,0)<=v),k=/* @__PURE__ */ new Map,A=/* @__PURE__ */ new Map,j=/* @__PURE__ */ new Set,M=/* @__PURE__ */ new Set;for(let[t,n]of f){let r=e.edges.find(e=>l(e)===t),[i,o]=[a.get(r.from),a.get(r.to)];i!=null&&k.set(i,Math.max(k.get(i)??0,D(n[0]))),o!=null&&A.set(o,Math.max(A.get(o)??0,D(n[1])))}for(let e of c){let[t,r]=[n[e],n[e+1]],i=v-w(t,r,T,0),a=(e,t)=>{e>0&&e<=i&&(i-=e,t())};a(A.get(t)??0,()=>E[e]=A.get(t)),(!A.has(t)||E[e])&&M.add(t);for(let e=t;e<r;e++){let t=(k.get(e)??0)+(e<r-1?A.get(e+1)??0:0);a(t-T[e],()=>T[e]=t),T[e]>=t&&j.add(e).add(-1-(e+1))}}let N=e=>y.findIndex(t=>t.id===e||t.children.some(t=>t.id===e)),P=/* @__PURE__ */ new Set;for(let[t]of f){let r=e.edges.find(e=>l(e)===t),[i,o]=[a.get(r.from),a.get(r.to)],[s,c]=g.get(t);(i==null||!j.has(i))&&P.add(`${N(r.from)}@${s}`),(o==null||!(o===n[c]?M.has(o):j.has(-1-o)))&&P.add(`${N(r.to)}@${c}`)}let F=new Map(y.flatMap(e=>e.children.map(t=>[t.id,e]))),te=new Set(e.edges.filter(e=>{let[t,n,i]=[a.get(e.from),a.get(e.to),F.get(e.from)];return e.around||t==null||n==null||!i||i!==F.get(e.to)||r(t)!==r(n)?!1:i.children.some(e=>a.get(e.id)>Math.min(t,n)&&a.get(e.id)<Math.max(t,n))}).map(l));return[{cols:a,starts:n,per:ee,blocks:c,gutter:S,gaps:T,lead:E,ends:g,stubs:f,around:te,tall:P,lost:_},O]},w=(e,t,n,r)=>S+r+p.slice(e,t).reduce((e,t)=>e+t,0)+n.slice(e,t).reduce((e,t)=>e+t,0);if(g<n||i>_)return C(1)[0];for(let e=1;e<=Math.max(1,Math.floor(s/2));e++){let[t,n]=C(e);if(n)return t}return C(1)[0]}function pe(e,t,n,r,i,a){let o=e.ends.get(t)?.[+!r],s=o==null?void 0:i(n,o);if(e.blocks.length<2||e.cols.has(n)||!s)return n;let c=e.stubs.get(t),l=c?`${t}@${r?`s`:`t`}`:`${n}@${o}`,u=r?s.x+s.w-(12+h(c?.[0]??``)+8):s.x+e.gutter+e.lead[o];return a[l]=c?{x:u,y:s.y,w:0,h:s.h}:s,l}var V=e=>{let t=typeof e==`string`?/^(\d{4})-(\d{2})-(\d{2})$/.exec(e):null;if(!t)return null;let n=Date.UTC(+t[1],t[2]-1,+t[3]);return new Date(n).toISOString().slice(0,10)===e?n/864e5:null},H=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],U=e=>/* @__PURE__ */ new Date(e*864e5),W=e=>((e+3)%7+7)%7,me=e=>{let t=e-W(e)+3,n=Date.UTC(U(t).getUTCFullYear(),0,1)/864e5;return Math.floor((t-n)/7)+1},G=e=>{let t=[];return e.layout.children.forEach((e,n)=>j(u(e)?e:{children:[e]}).forEach(e=>{let r=e.from==null?null:V(e.from);if(r==null)return;let i=e.to==null?null:V(e.to);t.push({id:e.id,track:n,from:r,to:i!=null&&i>=r?i:null,label:e})})),t};function he(e,t){let n=G(e),r=e.today==null?null:V(e.today),a=[...n.flatMap(e=>[e.from,e.to??e.from]),...r==null?[]:[r]],o=a.length?Math.min(...a):0,s=a.length?Math.max(...a):0,c=o-W(o),l=s+(6-W(s)),u=e=>(e-c)/(l-c+1)*t;for(let e=0;e<4;e++){let e=Math.max(0,...n.map(e=>{let n=e.to==null?u(e.from)-7:u(e.from),r=e.to==null?14:Math.max(24,u(e.to+1)-u(e.from)),a=i(x(e.label.label),13);return e.to!=null&&a+16<=r?0:n+r+6+a-t}));if(e<=0)break;l+=Math.ceil(e/(t/(l-c+1))/7)*7}let d=[];if((l-c+1)/7<=16)for(let e=c;e<=l;e+=7)d.push({x:u(e),label:`W${me(e)}`});else for(let e=c;e<=l;e++)U(e).getUTCDate()===1&&d.push({x:u(e),label:H[U(e).getUTCMonth()]});let f=e.layout.children.map(()=>1),p=[],m=e.layout.children.map(()=>[]);for(let e of[...n].sort((e,t)=>e.from-t.from)){let t=e.to!=null,n=t?u(e.from):u(e.from)-7,r=t?Math.max(24,u(e.to+1)-u(e.from)):14,a=i(x(e.label.label),13),o=t&&a+16<=r,s=m[e.track].findIndex(e=>e+8<=n);s<0&&(s=m[e.track].length),m[e.track][s]=o?n+r:n+r+6+a,f[e.track]=Math.max(f[e.track],s+1),p.push({id:e.id,track:e.track,row:s,x:n,w:r,milestone:!t,labelInside:o,date:K(e.from)})}let h=new Map(n.map((e,t)=>[e.id,t]));return p.sort((e,t)=>h.get(e.id)-h.get(t.id)),{start:c,end:l,ticks:d,items:p,rows:f,today:n.length&&r!=null?u(r):null,last:n.length?u(s):null,lastDate:K(s)}}var K=e=>`${U(e).getUTCDate()} ${H[U(e).getUTCMonth()]}`;function ge(e){let t=G(e).sort((e,t)=>e.from-t.from);return[{label:`timeline`,flow:t.map((e,n)=>({focus:[e.id],light:t.slice(0,n+1).map(e=>e.id),say:`${x(e.label.label)}, ${K(e.from)}${e.to==null?``:` to ${K(e.to)}`}${e.label.sub==null?``:` · ${x(e.label.sub)}`}`}))}]}var q=e=>u(e)?[...e.id?[e.id]:[],...e.children.flatMap(q)]:[e.id];function _e(e,t){let n=/* @__PURE__ */ new Map;e.children.forEach((e,t)=>q(e).forEach(e=>n.set(e,t)));let r=t.filter(t=>t.label!=null&&n.has(t.from)&&n.has(t.to)&&n.get(t.from)!==n.get(t.to)&&!(e.gap!=null&&t.around));if(e.gap!=null&&!r.length)return e.gap;let i=Math.max(0,...r.map(e=>h(x(e.label))+32));if(e.gap!=null&&e.direction!==`column`)return Math.max(e.gap,i);let a;if(e.direction===`column`){let t=r.map(e=>[n.get(e.from),n.get(e.to)].sort((e,t)=>e-t)),i=Math.max(0,...e.children.map((e,n)=>t.filter(([e,t])=>e<=n&&n<t).length));a=i?Math.min(i,3)*22+32-4:28}else a=Math.max(56,i);return Math.max(e.gap??0,a)}var ve=e=>{let t=/* @__PURE__ */ new Map,n=e=>e.children.forEach(e=>{e.id&&t.set(e.id,x(e.label)||e.id),u(e)&&n(e)});n(e.layout);let r=e=>t.get(e)??e,i=new Map(e.edges.map(e=>[l(e),e])),a=j(e.layout).map(e=>r(e.id)),s=e.steps??[],c=s.flatMap(e=>[`${x(e.label)}.`,...e.flow.map(o).flatMap(e=>x(e.say)?[x(e.say)]:e.hops.flatMap(e=>{let t=i.get(e.edge);return t?[e.back?`${r(t.to)} to ${r(t.from)}`:`${r(t.from)} to ${r(t.to)}`]:[]}))]),d=N(e).slice(1).map(e=>{let t=new Set(e.ports.map(e=>e.id)),n=j(e.props.layout).filter(e=>!t.has(e.id));return`${e.line}: ${n.map(e=>x(e.label)||e.id).join(`, `)}.${e.ports.length?` Ports: ${e.ports.map(M).join(`, `)}.`:``}`});return{title:`Flow figure: ${a.join(`, `)}.${s.length?` Steps: ${s.map(e=>x(e.label)).join(`, `)}.`:``}`,desc:[`The figure has these boxes: ${a.join(`, `)}.`,...c,...d].join(`
4
+ `)}},ye=6,J=e=>e.shape===`store`,Y=e=>e?.shape===`decision`,be=e=>e===`red`||e===`gray`,X=e=>!!e&&(e.shape===`decision`||!!e.check),xe=e=>e.check||(e.shape===`decision`?x(e.label):``),Z=(e,t)=>X(e.get(t.source))&&(be(e.get(t.target)?.tone)||t.tone===`red`),Se=e=>e.children.flatMap(e=>u(e)?e.label==null?Se(e):[e]:[]),Q=(e,t)=>{let n=new Map(e.edges.map(e=>[l(e),e]));return t.flow.map(e=>{let t=o(e);return{beat:t,hops:t.hops.flatMap(e=>{let t=n.get(e.edge);return t?[{...e,edge:t,source:e.back?t.to:t.from,target:e.back?t.from:t.to}]:[]})}})};function $(e){let t=j(e.layout),n=t.filter(J),r=new Map(t.map(e=>[e.id,e])),i=e.lanes&&I(e.layout)?e.layout.children.filter(u):Se(e.layout),a=[];for(let e of i){let t=j(e).filter(e=>!J(e));t.length&&a.push({name:x(e.label),look:e.look,boxes:t.map(e=>e.id)})}if(a.length){let n=new Set(a.flatMap(e=>e.boxes));for(let t of e.steps??[])for(let{hops:i}of Q(e,t))for(let e of i.flatMap(e=>[e.source,e.target])){let t=r.get(e);!t||n.has(e)||J(t)||Y(t)||(n.add(e),a.push({name:x(t.label),look:t.look,boxes:[e]}))}let i=new Map(t.map((e,t)=>[e.id,t]));a.sort((e,t)=>i.get(e.boxes[0])-i.get(t.boxes[0]))}if(!a.length){let t=/* @__PURE__ */ new Set;for(let n of e.steps??[])for(let{hops:i}of Q(e,n))for(let e of i)for(let n of[e.source,e.target])r.has(n)&&!J(r.get(n))&&!Y(r.get(n))&&t.add(n);a=[...t].slice(0,n.length?5:ye).map(e=>{let t=r.get(e);return{name:x(t.label),look:t.look,boxes:[e]}})}return n.length&&a.push({name:`Records`,look:n.find(e=>e.look)?.look,boxes:n.map(e=>e.id)}),a}function Ce(e,t){let n=e.steps?.find(e=>x(e.label)===t);if(!n)return[];let r=$(e),i=new Map(j(e.layout).map(e=>[e.id,e])),a=new Map(r.flatMap(e=>e.boxes.map(t=>[t,e.name]))),o=/* @__PURE__ */ new Map,s=e=>{for(let t of e.children)u(t)&&(t.id&&o.set(t.id,t.label),s(t))};s(e.layout);let c=e=>x(i.get(e)?.label??o.get(e)),l=Q(e,n);if(!l.length)return[];let d=l.flatMap(e=>e.hops).at(-1),f=d?c(d.target):``,p=r[0]?.name??``,m=l.map(({beat:e,hops:t},n)=>{let r=t.at(-1),o=e=>a.get(e)??c(e),s=r?a.has(r.target)||!Y(i.get(r.target))?o(r.target):n?p:o(r.source):p;p=s;let l=t.map(e=>x(e.edge.label)).filter(Boolean),u={actor:s,say:x(e.say)||(r?l.length?`${l.join(`, `)}: ${c(r.target)}`:c(r.target):``),note:x(e.note),records:[]},d=t.filter(e=>X(i.get(e.source))),f=d.find(e=>Z(i,e))??d.at(-1);f&&(u.stamp={mark:Z(i,f)?`✗`:`✓`,label:x(f.edge.label)},u.question=xe(i.get(f.source)));for(let e of t){let t=i.get(e.target);t&&J(t)&&u.records.push(x(e.data)||x(e.edge.label)||x(t.label))}return u}),h=new Set(l.flatMap(e=>e.hops.flatMap(e=>[e.source,e.target]))),g=l.flatMap(e=>e.hops).find(e=>Z(i,e)),_=[];if(g){let t=e.edges.filter(e=>e!==g.edge&&i.has(e.to)&&!be(i.get(e.to).tone)),n=/* @__PURE__ */ new Set([g.source]);for(let e=!0;e;){e=!1;for(let r of t)n.has(r.from)&&!n.has(r.to)&&(n.add(r.to),e=!0)}let r=t.filter(e=>n.has(e.from)&&n.has(e.to)&&e.to!==g.source),a=/* @__PURE__ */ new Map;for(let e of r)a.set(e.to,(a.get(e.to)??0)+1);for(let e=[g.source];e.length;){let t=e.shift();_.push(t);for(let n of r)n.from===t&&(a.set(n.to,a.get(n.to)-1),a.get(n.to)||e.push(n.to))}for(let e of n)_.includes(e)||_.push(e)}let v=_.slice(1).filter(e=>!h.has(e)).map(c);return m.forEach((e,t)=>{let n=m.slice(t+1).find(t=>t.actor!==e.actor);!e.note&&n&&(e.note=`${n.actor} acts next.`)}),m.push({actor:m.at(-1).actor,say:n.outcome||(/[.?!]$/.test(f)?f:`${f}.`),note:``,records:[],summary:{outcome:f,notReached:v}}),m}var we=[`person`,`shop`,`truck`],Te=e=>e.edges.some(e=>!!e.carries&&typeof e.carries==`object`)||$(e).some(e=>we.includes(e.look)),Ee={font:`system-ui, -apple-system, "Segoe UI", Roboto, sans-serif`},De={light:{...Ee,bg:`#fafbfd`,surface:`#ffffff`,border:`#dfe7f0`,ink:`#1d2433`,muted:`#5d687a`,accent:`#0074d9`,"on-accent":`#ffffff`,bad:`#c8352f`,good:`#23704e`,play:`#1d2433`},dark:{...Ee,bg:`#131820`,surface:`#1c2330`,border:`#2a3343`,ink:`#e9eef6`,muted:`#9aa6b8`,accent:`#4da3f0`,"on-accent":`#0b1220`,bad:`#ee5d57`,good:`#5cc48f`,play:`#6b778c`}},Oe={wide:880,roomy:1200,panel:376,slim:300,pad:16,chips:52,sheet:160,short:560,tall:760};export{p as $,q as A,le as B,se as C,oe as D,s as E,R as F,ee as G,T as H,h as I,x as J,w as K,E as L,I as M,c as N,ne as O,z as P,o as Q,ue as R,D as S,l as T,k as U,fe as V,j as W,ge as X,ce as Y,he as Z,O as _,Q as a,C as b,xe as c,d,m as et,y as f,P as g,b as h,Z as i,u as j,_e as k,Te as l,v as m,De as n,i as nt,X as o,_ as p,N as q,$ as r,a as rt,Ce as s,Oe as t,re as tt,g as u,f as v,B as w,A as x,ve as y,pe as z};
@@ -0,0 +1,6 @@
1
+ import{J as e,T as t,W as n,a as r,c as i,i as a,j as o,nt as s,o as c,r as l,s as u,t as d}from"./element-looks.js";var f=40*Math.cos(Math.PI/6),p=(e,t,n=0)=>[(e-t)*f,(e+t)*20-n*40],m=e=>Math.round(e*10)/10,h=e=>e.map(([e,t])=>`${m(e)},${m(t)}`).join(` `),g=(e,t,n=``)=>`<polygon points="${h(e)}" fill="${t}" ${n}/>`,_=4.6,v=5.4,y=6,b=8,x=8.6,S=1.6,C={ground:`#E8ECE3`,lawn:`#DDE6D4`,yard:`#D3DFC8`,walk:`#F4F5F0`,seam:`#E2E5DC`,curb:`#C3C8CE`,road:`#8A919B`,dash:`#EEF0F2`,glass:`#2a3446`,glassR:`#222a39`,light:`#f2b544`,lightR:`#d99a2b`,leaf:`#7DB27A`,leafD:`#5E9660`,trunk:`#6b5a49`,ink:`#141A22`,post:`#3b4252`,ao:`rgba(20,26,34,.11)`},w={brick:{l:`#c96a4b`,r:`#a4513a`,t:`#d6c0ab`,e:`#6e3424`,tex:`#b65d41`,texR:`#934733`,cap:`#f6ecdb`,capR:`#dccdb4`,fr:`#f3e8d6`,frR:`#d9cbb3`},stone:{l:`#e9dcc0`,r:`#cbbd9f`,t:`#d9cfb8`,e:`#8f8064`,tex:`#d6c8a8`,texR:`#b6a888`,cap:`#fbf7ee`,capR:`#ddd3bf`,fr:`#7d7058`,frR:`#6a5e48`},green:{l:`#86a581`,r:`#678663`,t:`#c3cac1`,e:`#3c533d`,tex:`#76946f`,texR:`#587553`,cap:`#eef0ea`,capR:`#cdd3ca`,fr:`#eef0ea`,frR:`#cdd3ca`},slate:{l:`#434b5a`,r:`#2e3440`,t:`#5a6372`,e:`#14181e`,tex:`#515a6a`,texR:`#3a414d`,cap:`#717a8a`,capR:`#5a6271`,fr:`#6b7484`,frR:`#555d6b`},pale:{l:`#e3e8ef`,r:`#c3ccd8`,t:`#d3dae4`,e:`#5d6878`,tex:`#d2d9e3`,texR:`#b3bdcb`,cap:`#f5f7fa`,capR:`#dce2ea`,fr:`#9aa5b5`,frR:`#818c9c`},clay:{l:`#e7d3b4`,r:`#c9b292`,t:`#d9c8ad`,e:`#7f6a4c`,tex:`#dbc5a3`,texR:`#b9a282`,cap:`#f8f0e1`,capR:`#ddd0b9`,fr:`#f8f0e1`,frR:`#ddd0b9`,roof:`#7a4f3a`,roofB:`#5f3c2c`},sand:{l:`#d8c49a`,r:`#b9a57c`,t:`#ccbf9f`,e:`#6f6043`,tex:`#cab68c`,texR:`#a9966e`,cap:`#f3ead6`,capR:`#d6cbb2`,fr:`#f3ead6`,frR:`#d6cbb2`},marble:{l:`#ece8df`,r:`#cfc9bc`,t:`#dfdacf`,e:`#7e776a`,tex:`#e0dbd0`,texR:`#bdb6a8`,cap:`#faf8f3`,capR:`#ddd8cc`,fr:`#5e584d`,frR:`#4e493f`},concrete:{l:`#cfd2cc`,r:`#b0b4ad`,t:`#c3c7c0`,e:`#5b6058`,tex:`#c2c6bf`,texR:`#a2a69f`,cap:`#eef0ec`,capR:`#d1d4ce`,fr:`#eef0ec`,frR:`#d1d4ce`},plain:{l:`#dcd8cf`,r:`#bfbab0`,t:`#d0ccc3`,e:`#716b60`,tex:`#cfcbc1`,texR:`#b0aba1`,cap:`#f6f4ef`,capR:`#d9d5cd`,fr:`#f6f4ef`,frR:`#d9d5cd`}},T=(e,t,n,r,i,a,o=``)=>g([p(e,n,i),p(t,n,i),p(t,r,i),p(e,r,i)],a,o),E=(e,t,n,r,i,a,o=``)=>g([p(t,e,r),p(n,e,r),p(n,e,i),p(t,e,i)],a,o),D=(e,t,n,r,i,a,o=``)=>g([p(e,t,r),p(e,n,r),p(e,n,i),p(e,t,i)],a,o),O=e=>`stroke="${e}" stroke-opacity=".55" stroke-width="1" stroke-linejoin="round"`,k=(e,t,n,r,i,a,o,s,c,l)=>{let u=l?O(l):``;return E(t+i,e,e+r,n,n+a,s,u)+D(e+r,t,t+i,n,n+a,c,u)+T(e,e+r,t,t+i,n+a,o,u)},A=(e,t,n,r,i,a,o)=>k(e,t,n,r,i,a,o.t,o.l,o.r,o.e),j=(e,t,n,r=1,i=``)=>`<line x1="${m(e[0])}" y1="${m(e[1])}" x2="${m(t[0])}" y2="${m(t[1])}" stroke="${n}" stroke-width="${r}" ${i}/>`,M=(e,t=28)=>Array.from({length:t},(n,r)=>e(r/t*Math.PI*2)),N=(e,t,n,r,i,a=``)=>g(M(i=>p(e+r*Math.cos(i),t+r*Math.sin(i),n)),i,a),P=(e,t,n,r)=>T(e-.05,e+n+.45,t-.05,t+r+.22,0,C.ao),F=(e,t,n,r,i,a,o)=>{let s=``;for(let c=r+a;c<i-.02;c+=a)s+=j(p(t,e,c),p(n,e,c),o,1);return s},I=(e,t,n,r,i,a,o)=>{let s=``;for(let c=r+a;c<i-.02;c+=a)s+=j(p(e,t,c),p(e,n,c),o,1);return s},L=(e,t,n,r,i,a,o)=>{let s=``;for(let c=t+a;c<n-.02;c+=a)s+=j(p(c,e,r),p(c,e,i),o,1);return s},R=(e,t,n,r,i,a,o)=>{let s=``;for(let c=t+a;c<n-.02;c+=a)s+=j(p(e,c,r),p(e,c,i),o,1);return s},z=(e,t,n,r,i,a)=>[[e,t,n],[e+r,t,n],[e,t+i,n],[e+r,t+i,n]].flatMap(([e,t])=>[[e,t,n],[e,t,n+a]]);function B(e,t,n,r,i,a,o,s=2,c=!0){let l=.05,u=E(t,n,r,i,a,e.fr)+E(t,n+l,r-l,i+l,a-l,o?C.light:C.glass);for(let o=1;o<s;o++){let c=n+(r-n)*o/s;u+=j(p(c,t,i+l),p(c,t,a-l),e.fr,1.5)}if(c){let o=i+(a-i)*.68;u+=j(p(n+l,t,o),p(r-l,t,o),e.fr,1.5)}return u+E(t,n-.03,r+.03,i-.06,i,e.cap)}function V(e,t,n,r,i,a,o,s=2,c=!0){let l=.05,u=D(t,n,r,i,a,e.frR)+D(t,n+l,r-l,i+l,a-l,o?C.lightR:C.glassR);for(let o=1;o<s;o++){let c=n+(r-n)*o/s;u+=j(p(t,c,i+l),p(t,c,a-l),e.frR,1.5)}if(c){let o=i+(a-i)*.68;u+=j(p(t,n+l,o),p(t,r-l,o),e.frR,1.5)}return u+D(t,n-.03,r+.03,i-.06,i,e.capR)}function H(e,t,n,r,i,a,o=.12){let s=T(e,e+n,t,t+r,i,a.cap,O(a.e));return s+=T(e+o,e+n-o,t+o,t+r-o,i-.1,a.t),s+=E(t+o,e+o,e+n-o,i-.1,i,a.tex)+D(e+o,t+o,t+r-o,i-.1,i,a.texR),s+=T(e,e+n,t+r-o,t+r,i,a.cap)+T(e+n-o,e+n,t,t+r,i,a.cap),s}var ee=(e,t,n,r=.8,i=.7,a=.35)=>k(e,t,n,r,i,a,`#e4e6e9`,`#cfd3d8`,`#aeb4bc`,`#6b717a`),U=(e,t,n,r,i)=>E(t,n,r,0,i,e.fr)+E(t,n+.06,r-.06,0,i-.05,C.glass)+E(t,(n+r)/2-.02,(n+r)/2+.02,0,i-.05,e.fr),te=(e,t,n,r,i,a,o)=>{let s=E(e,t-.05,n+.05,0,r+.05,i)+E(e,t,n,0,r,a);for(let i=.1;i<r-.05;i+=.105)s+=E(e,t,n,i,i+.035,o);return s};function ne(e,t){let n=w.clay,r=1.15,i=.95,a=.16,o=t+3,s=e+3,c=t+3/2,l=P(e,t,3,3)+A(e,t,0,3,3,r,n);l+=F(o,e,s,0,r,.13,n.tex)+I(s,t,o,0,r,.13,n.texR),l+=E(o,e,s,0,.1,n.texR)+D(s,t,o,0,.1,n.e,`fill-opacity=".35"`),l+=E(o,e+.3,e+.9,0,.92,`#5b3a2a`)+E(o,e+.36,e+.84,0,.86,`#6f4733`)+`<circle cx="${m(p(e+.76,o,.45)[0])}" cy="${m(p(e+.76,o,.45)[1])}" r="1.6" fill="${C.light}"/>`,l+=E(o,e+.22,e+.98,.92,.98,n.cap),l+=B(n,o,e+1.3,e+2,.32,.86,!0,2,!1)+B(n,o,e+2.2,e+2.8,.32,.86,!1,2,!1),l+=V(n,s,t+.45,t+1.15,.32,.86,!0,2,!1)+V(n,s,t+1.85,t+2.55,.32,.86,!1,2,!1),l+=g([p(e-a,t-a,r),p(s+a,t-a,r),p(s+a,c,2.0999999999999996),p(e-a,c,2.0999999999999996)],n.roofB),l+=g([p(s,t,r),p(s,o,r),p(s,c,2.0999999999999996)],n.r,O(n.e))+I(s,t+.5,o-.5,r,1.625,.13,n.texR),l+=V(n,s,c-.22,c+.22,1.3299999999999998,1.7,!0,1,!1),l+=g([p(e-a,o+a,r),p(s+a,o+a,r),p(s+a,c,2.0999999999999996),p(e-a,c,2.0999999999999996)],n.roof,O(n.e));for(let t=1;t<6;t++){let u=t/6;l+=j(p(e-a,o+a-(o+a-c)*u,r+i*u),p(s+a,o+a-(o+a-c)*u,r+i*u),n.roofB,1)}return l+=j(p(e-a,c,2.0999999999999996),p(s+a,c,2.0999999999999996),`#3e271c`,2),l+=k(e+.55,c+.25,1.7389999999999999,.36,.36,.611,`#9c4f3a`,`#8a4433`,`#6f3628`,`#4a241a`)+k(e+.5,c+.2,2.5999999999999996,.46,.46,.08,`#b9b0a2`,`#a39a8c`,`#8a8274`),{svg:l,ant:[e+2.5,c,2.0999999999999996],pts:[...z(e-a,t-a,0,3.32,3.32,r),[e-a,c,2.0999999999999996],[s+a,c,2.0999999999999996],[e+.5,c+.2,2.6999999999999997],[e+.96,c+.66,2.6999999999999997]]}}function W(e,t){let n=w.brick,r=1.5,i=t+3,a=e+3,o=P(e,t,3,3)+A(e,t,0,3,3,r,n);o+=F(i,e,a,0,r,.12,n.tex)+I(a,t,i,0,r,.12,n.texR),o+=E(i,e,a,0,.12,n.r)+D(a,t,i,0,.12,n.e,`fill-opacity=".5"`),o+=E(i,e+1.05,e+1.95,0,1,n.fr)+E(i,e+1.11,e+1.89,0,.94,C.glass)+E(i,e+1.49,e+1.51,0,.94,n.fr)+E(i,e+1.17,e+1.83,.72,.88,C.light),o+=B(n,i,e+.2,e+.85,.3,.95,!0,2,!1)+B(n,i,e+2.15,e+2.8,.3,.95,!0,2,!1);for(let t=0;t<7;t++){let r=e+.12+t*.395,a=r+.395;o+=g([p(r,i,1.14),p(a,i,1.14),p(a,i+.38,1),p(r,i+.38,1)],t%2?`#9c4632`:`#f6ecdb`,O(n.e))}return o+=g([p(e+.12,i+.38,1),p(e+2.89,i+.38,1),p(e+2.89,i+.38,.94),p(e+.12,i+.38,.94)],`#7c3626`),o+=V(n,a,t+.4,t+1.1,.45,1,!1)+V(n,a,t+1.5,t+2.2,.45,1,!0),o+=H(e,t,3,3,1.62,n),o+=ee(e+.4,t+.5,1.52)+ee(e+1.95,t+1.75,1.52,.45,.45,.24),{svg:o,ant:[e+2.5,t+.7,1.62],pts:z(e,t,0,3,3,1.9)}}function re(e,t,n){let r=w.stone,i=.04+1.38*n,a=t+3,o=e+3,s=P(e,t,3,3)+A(e,t,0,3,3,i,r);s+=F(a,e,o,0,i,.2,r.tex)+I(o,t,a,0,i,.2,r.texR);for(let i=1;i<n;i++)s+=E(a,e,o,i*1.38-.04,i*1.38+.06,r.cap)+D(o,t,a,i*1.38-.04,i*1.38+.06,r.capR);s+=E(a,e,o,0,.15,r.tex)+D(o,t,a,0,.15,r.texR);let c=e=>e*7%5<2;for(let i=0;i<n;i++)for(let n=0;n<4;n++){let l=.38+i*1.38,u=l+.74,d=e+.22+n*.68;(i!==0||n!==1&&n!==2)&&(s+=B(r,a,d,d+.48,l,u,c(i*4+n),2));let f=t+.22+n*.68;s+=V(r,o,f,f+.48,l,u,c(i*4+n+3),2)}s+=E(a,e+1,e+2,0,1.05,r.fr)+E(a,e+1.05,e+1.95,0,1,C.glass)+E(a,e+1.48,e+1.52,0,1,r.fr),s+=E(a,e+1.1,e+1.9,.75,.95,C.light),s+=k(e+.85,a,1.08,1.3,.45,.1,r.cap,r.cap,r.capR,r.e),s+=H(e,t,3,3,i+.12,r),s+=ee(e+1.7,t+.4,i+.02,.9,.7,.45);for(let n=0;n<3;n++)s+=E(t+1.1,e+1.8+n*.25,e+1.95+n*.25,i+.12,i+.37,`#8b939f`);return s+=k(e+.4,t+1.6,i+.02,.5,.5,.3,r.cap,r.cap,r.capR,r.e),{svg:s,ant:[e+2.4,t+2.3,i+.04],pts:z(e,t,0,3,3,i+.5)}}function ie(e,t){let n=w.green,r=1.4,i=t+2,a=e+3,o=P(e,t,3,2)+A(e,t,0,3,2,r,n);o+=L(i,e,a,0,r,.12,n.tex)+R(a,t,i,0,r,.12,n.texR),o+=E(i,e+.25,e+1.85,0,1.08,n.fr)+E(i,e+.3,e+1.8,0,1.03,`#1d222b`),o+=E(i,e+2.15,e+2.6,0,.88,n.fr)+E(i,e+2.2,e+2.55,0,.83,C.glass)+E(i,e+2.25,e+2.5,.6,.78,C.light),o+=V(n,a,t+.35,t+1.65,.55,1,!0,3,!1),o+=T(e-.05,a+.05,t-.05,i+.05,r,n.t,O(n.e));for(let n=t+.1;n<i;n+=.16)o+=j(p(e-.05,n,r),p(a+.05,n,r),`#a7b0a5`,1);o+=E(i+.05,e-.05,a+.05,1.3399999999999999,r,`#a7b0a5`)+D(a+.05,t-.05,i+.05,1.3399999999999999,r,`#8e978c`);for(let i=0;i<3;i++)o+=k(e+.4+i*.85,t+.6,r,.5,.8,.14,`#e9eee8`,`#dfe5dc`,`#c3cbc0`,n.e);return{svg:o,ant:[e+2.6,t+1.7,r],pts:z(e,t,0,3,2,1.54),depot:{x:e,y:i}}}function ae(e,t){let n=w.sand,r=1.35,i=t+3,a=e+3,o=P(e,t,3,3)+A(e,t,0,3,3,r,n);o+=L(i,e,a,0,r,.15,n.tex)+R(a,t,i,0,r,.15,n.texR);for(let t=0;t<3;t++){let r=e+.2+t*.95;o+=k(r-.04,i,0,.75,.28,.32,`#8b8f96`,`#9aa0a8`,`#767b83`,`#3b4252`),o+=te(i,r,r+.68,.86,n.fr,`#4f5866`,`#6a7482`),o+=E(i+.29,r+.02,r+.12,.12,.3,`#1d222b`)+E(i+.29,r+.56,r+.66,.12,.3,`#1d222b`)}return o+=g([p(e-.05,i,1.12),p(a+.05,i,1.12),p(a+.05,i+.3,1.06),p(e-.05,i+.3,1.06)],`#aab3be`,O(`#5b636f`)),o+=E(i+.3,e-.05,a+.05,1.01,1.06,`#7d8794`),o+=V(n,a,t+.4,t+2.6,.62,1.05,!0,4,!1),o+=H(e,t,3,3,1.4500000000000002,n),o+=k(e+.35,t+.35,1.37,2.3,.5,.18,`#e9e4d6`,`#d8d1bf`,`#bdb5a2`,n.e),o+=k(e+.35,t+1.25,1.37,2.3,.5,.18,`#e9e4d6`,`#d8d1bf`,`#bdb5a2`,n.e),{svg:o,ant:[e+2.6,t+2.4,1.37],pts:z(e,t,0,3,3.3,1.6500000000000001)}}function oe(e,t,n,r){let i=1.9,a=t+3,o=e+3,s=P(e,t,3,3)+A(e,t,0,3,3,i,n);s+=L(a,e,o,0,i,.5,n.tex)+R(o,t,a,0,i,.5,n.texR),s+=F(a,e,o,0,i,.63,n.tex)+I(o,t,a,0,i,.63,n.texR),s+=E(a,e+1.15,e+1.85,0,1.15,n.fr)+E(a,e+1.2,e+1.8,0,1.1,`#1d222b`)+E(a,e+1.49,e+1.51,0,1.1,n.fr),s+=E(a,e+1.92,e+2.04,.5,.68,`#1d222b`)+E(a,e+1.95,e+2.01,.6,.65,C.light);for(let t=0;t<6;t++)s+=E(a,e+.25,e+.95,.3+t*.17,.37+t*.17,n.e,`fill-opacity=".7"`),s+=E(a,e+2.2,e+2.8,.3+t*.17,.37+t*.17,n.e,`fill-opacity=".7"`);for(let e=0;e<4;e++){let i=t+.25+e*.68;s+=D(o,i,i+.42,.3,1.5,n.frR)+D(o,i+.04,i+.38,.34,1.46,`#1a1e26`);for(let t=0;t<5;t++)s+=D(o,i+.08,i+.14,.45+t*.22,.5+t*.22,t===2&&e===1?C.light:r)}s+=H(e,t,3,3,2.02,n),s+=k(e+.25,t+.3,1.92,.25,2.4,.08,n.cap,n.capR,n.texR);for(let[n,r]of[[e+.95,t+.55],[e+.95,t+1.65]]){s+=k(n,r,1.92,.95,.9,.32,`#c9ced6`,`#dfe3e9`,`#a9b0bb`,`#3d4659`);let e=[n+.475,r+.45];s+=N(e[0],e[1],2.25,.33,`#2a3142`)+N(e[0],e[1],2.26,.08,`#8b9099`);for(let t=0;t<3;t++){let n=t*2*Math.PI/3+.4;s+=j(p(e[0],e[1],2.26),p(e[0]+.3*Math.cos(n),e[1]+.3*Math.sin(n),2.26),`#8b9099`,1.5)}}return{svg:s,ant:[e+2.5,t+2.4,1.94],pts:z(e,t,0,3,3,2.3)}}function se(e,t){let n=w.marble,r=1.55,i=t+3,a=e+3,o=P(e,t,3,3.5);o+=k(e-.1,t-.1,0,3.2,3.6,.08,n.cap,n.tex,n.texR,n.e)+k(e-.05,t-.05,.08,3.1,3.35,.08,n.cap,n.tex,n.texR,n.e),o+=A(e,t,.16,3,3,1.3900000000000001,n),o+=I(a,t,i,.16,r,.24,n.texR),o+=E(i,e+1.15,e+1.85,.16,1.1,n.fr)+E(i,e+1.2,e+1.8,.16,1.05,`#3a352d`)+E(i,e+1.49,e+1.51,.16,1.05,n.fr);for(let t of[e+.18,e+.68,e+2.08,e+2.58])o+=E(i+.25,t,t+.26,.16,1.45,`#f7f4ee`)+E(i+.25,t+.18,t+.26,.16,1.45,`#d8d2c5`),o+=k(t-.03,i+.12,.16,.32,.16,.06,n.cap,n.tex,n.texR)+k(t-.03,i+.12,1.4100000000000001,.32,.16,.06,n.cap,n.tex,n.texR);for(let e=0;e<4;e++){let r=t+.35+e*.62;o+=D(a,r,r+.16,.45,1.25,n.frR)}o+=g([p(e-.05,i+.3,r),p(a+.05,i+.3,r),p(a+.05,t,r),p(e-.05,t,r)],n.cap,O(n.e)),o+=k(e-.05,t,1.45,3.1,3.3,.12,n.cap,n.tex,n.texR,n.e);let s=1.57;return o+=g([p(e,i+.3,s),p(a,i+.3,s),p(e+3/2,i+.3,2.09)],n.l,O(n.e))+g([p(e+.3,i+.3,1.6300000000000001),p(a-.3,i+.3,1.6300000000000001),p(e+3/2,i+.3,1.9700000000000002)],n.tex),o+=g([p(a,i+.3,s),p(e+3/2,i+.3,2.09),p(e+3/2,t+.2,2.09),p(a,t+.2,s)],n.r,O(n.e)),o+=T(e+.15,e+3/2-.1,t+.4,t+1.2,s,n.t),{svg:o,ant:[e+2.3,t+.7,1.57],pts:[...z(e-.1,t-.1,0,3.2,3.6,1.6500000000000001),[e+3/2,i+.3,2.09],[e+3/2,t+.2,2.09]]}}function ce(e,t){let n=w.concrete,r=1.25,i=t+3,a=e+3,o=P(e,t,3,3)+A(e,t,0,3,3,r,n);o+=L(i,e,a,0,r,.5,n.tex)+R(a,t,i,0,r,.5,n.texR),o+=te(i,e+.3,e+1.3,.95,n.fr,`#5a6b5f`,`#71837a`),o+=B(n,i,e+1.65,e+2.75,.55,.98,!0,3,!1)+V(n,a,t+.3,t+2.7,.55,.98,!0,4,!1);let s=n=>k(e+2.35,t+.25,0,.36,.36,n,`#a5503b`,`#93463a`,`#743628`,`#4a241a`)+k(e+2.31,t+.21,n,.44,.44,.08,`#6b717a`,`#5a6170`,`#454b57`);o+=T(e,a,t,i,r,n.t,O(n.e));for(let i=0;i<3;i++){let c=t+i,l=c+1;o+=g([p(e,c,r),p(a,c,r),p(a,l,1.8),p(e,l,1.8)],`#8f97a1`,O(`#3b4252`)),o+=E(l,e,a,r,1.8,`#2a3446`)+L(l,e,a,r,1.8,.3,`#5d6b80`),o+=g([p(a,c,r),p(a,l,r),p(a,l,1.8)],n.r,O(n.e)),i===0&&(o+=s(3))}return{svg:o,ant:[e+2.75,t+2.95,1.8],pts:[...z(e,t,0,3,3,1.8),[e+2.31,t+.21,3.08],[e+2.75,t+.65,3.08]]}}function le(e,t){let n=w.concrete,r=t+3,i=P(e+.2,t+1.3,2,1.7)+A(e+.2,t+1.3,0,2,1.7,1.05,n);i+=E(r,e+.9,e+1.5,0,.85,n.fr)+E(r,e+.95,e+1.45,0,.8,`#5b636f`)+E(r,e+.4,e+.7,.5,.75,`#2e3440`)+L(r,e+.4,e+.7,.5,.75,.06,`#5b636f`),i+=D(e+2.2,t+1.6,t+2.6,.55,.8,`#2e3440`)+R(e+2.2,t+1.6,t+2.6,.55,.8,.08,`#5b636f`),i+=H(e+.2,t+1.3,2,1.7,1.12,n,.08);let a=[e+1.6,t+.15],o=1.1,s=4.6,c=a[0]+o/2,l=a[1]+o/2,u=(e,t,n)=>{let r=o+n/s*-.8600000000000001;return[c+e*r/2,l+t*r/2,n]},d=`#4d5666`,f=e=>p(...e),h=``;for(let[e,t]of[[-1,-1],[1,-1],[-1,1],[1,1]])h+=j(f(u(e,t,0)),f(u(e,t,s)),d,2.2);let g=[0,.75,1.5,2.25,3,3.7,s];for(let e=0;e<g.length-1;e++)h+=j(f(u(-1,1,g[e])),f(u(1,1,g[e+1])),d,1.2)+j(f(u(1,1,g[e])),f(u(-1,1,g[e+1])),d,1.2),h+=j(f(u(1,-1,g[e])),f(u(1,1,g[e+1])),d,1.2)+j(f(u(1,1,g[e])),f(u(1,-1,g[e+1])),d,1.2),h+=j(f(u(-1,1,g[e+1])),f(u(1,1,g[e+1])),d,1.4)+j(f(u(1,-1,g[e+1])),f(u(1,1,g[e+1])),d,1.4);for(let[e,t]of[[0,.17],[.17,0],[.12,.12]])h+=k(c+e-.05,l+t-.05,3.55,.1,.1,.65,`#eef0f2`,`#dfe3e8`,`#b9c0ca`,`#5b636f`);let _=p(c+.15,l+.35,2.7);h+=`<ellipse cx="${m(_[0]+3)}" cy="${m(_[1])}" rx="7" ry="10" fill="#c9ced6" stroke="#5b636f" stroke-width="1"/><ellipse cx="${m(_[0]+4)}" cy="${m(_[1])}" rx="2" ry="3" fill="#5b636f"/>`;let v=f(u(0,0,s));return h+=j(v,[v[0],v[1]-14],d,1.6)+`<circle cx="${m(v[0])}" cy="${m(v[1]-15)}" r="3" fill="#D63B2F"/>`,i=`<ellipse cx="${m(p(c,l)[0]+6)}" cy="${m(p(c,l)[1]+2)}" rx="34" ry="12" fill="${C.ao}"/>`+h+i,{svg:i,ant:[c,l,5.05],own:!0,pts:[...z(e+.2,t+1.3,0,2,1.7,1.12),u(-1,-1,0),u(1,1,0),u(1,-1,0),[c,l,5.05]]}}function ue(e,t){let n=w.plain,r=1.6,i=t+3,a=e+3,o=P(e,t,3,3)+A(e,t,0,3,3,r,n);o+=F(i,e,a,0,r,.4,n.tex)+I(a,t,i,0,r,.4,n.texR),o+=U(n,i,e+1.15,e+1.85,.95)+E(i,e+1.05,e+1.95,.95,1.02,`#9a9488`),o+=B(n,i,e+.3,e+.9,.35,.85,!0,2,!1)+B(n,i,e+2.1,e+2.7,.35,.85,!1,2,!1),o+=B(n,i,e+.3,e+.9,1.05,1.42,!1,2,!1)+B(n,i,e+1.2,e+1.8,1.05,1.42,!0,2,!1)+B(n,i,e+2.1,e+2.7,1.05,1.42,!1,2,!1);for(let e=0;e<3;e++){let r=t+.3+e*.9;o+=V(n,a,r,r+.55,.35,.85,e===1,2,!1)+V(n,a,r,r+.55,1.05,1.42,e===2,2,!1)}return o+=H(e,t,3,3,1.7000000000000002,n),o+=ee(e+1.6,t+.5,1.62,.7,.6,.3),{svg:o,ant:[e+2.4,t+2.3,1.62],pts:z(e,t,0,3,3,1.9500000000000002)}}var de=([e,t,n])=>{let r=p(e,t,n),i=p(e,t,n+.8),a=`#3b4252`,o=`<ellipse cx="${m(r[0])}" cy="${m(r[1])}" rx="4" ry="2" fill="${a}"/>`+j(r,i,a,2);return o+=j(p(e-.16,t,n+.6),p(e+.16,t,n+.6),a,1.6)+j(p(e,t-.16,n+.45),p(e,t+.16,n+.45),a,1.6),o+`<circle cx="${m(i[0])}" cy="${m(i[1])}" r="3.4" fill="#ffffff" stroke="#3B4252" stroke-width="2"/>`},fe={person:ne,phone:ne,shop:W,desk:(e,t)=>re(e,t,2),team:(e,t)=>re(e,t,3),truck:ie,queue:ae,server:(e,t)=>oe(e,t,w.slate,`#6f95e3`),cloud:(e,t)=>oe(e,t,w.pale,`#3d7be0`),cabinet:se,gear:ce,tower:le};function pe(e,t,n=1,r=0){let[i,a]=p(e,t,0),o=`<ellipse cx="${m(i+6*n)}" cy="${m(a+2)}" rx="${m(13*n)}" ry="${m(6*n)}" fill="${C.ao}"/>`;o+=k(e-.06,t-.06,0,.12,.12,.4*n,C.trunk,C.trunk,`#574837`);let[s,c]=p(e,t,.4*n);if(r===0){let e=15*n;o+=`<circle cx="${m(s)}" cy="${m(c-e+4)}" r="${m(e)}" fill="${C.leafD}"/>`,o+=`<circle cx="${m(s-e*.2)}" cy="${m(c-e+4-e*.2)}" r="${m(e*.78)}" fill="${C.leaf}"/>`}else{let e=44*n,t=14*n;o+=g([[s,c-e],[s+t,c+2],[s,c+6*n]],C.leafD),o+=g([[s,c-e],[s,c+6*n],[s-t,c+2]],C.leaf)}return o}var me=(e,t,n)=>{let[r,i]=p(e,t,0),a=n*40;return`<ellipse cx="${m(r+3)}" cy="${m(i+1)}" rx="${m(a*1.15)}" ry="${m(a*.5)}" fill="${C.ao}"/><circle cx="${m(r)}" cy="${m(i-a*.62)}" r="${m(a*.72)}" fill="${C.leafD}"/><circle cx="${m(r-a*.16)}" cy="${m(i-a*.74)}" r="${m(a*.52)}" fill="${C.leaf}"/>`};function he(e){let t=e.slice().sort((e,t)=>e[0]-t[0]||e[1]-t[1]),n=(e,t,n)=>(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0]),r=[],i=[];for(let e of t){for(;r.length>=2&&n(r[r.length-2],r[r.length-1],e)<=0;)r.pop();r.push(e)}for(let e of t.slice().reverse()){for(;i.length>=2&&n(i[i.length-2],i[i.length-1],e)<=0;)i.pop();i.push(e)}return r.slice(0,-1).concat(i.slice(0,-1))}function ge(e,t,n,r=0){let i=e.length,a=(i-1)*n+44,o=[];for(let e=0,t=0,n=0;r&&e<i;e++)o.push([t,n+7]),e%2?t+=r:n+=r;let s=r>0,c=e.map((e,t)=>s?o[t][0]-5.4:t*n),l=e.map((e,t)=>s?o[t][1]-7:0),u=``,d=[],f=[];if(s){let e=o[i-1],t=[[e[0],e[0]+(i%2?0:40),e[1],e[1]+(i%2?40:0)]];o.forEach(([e,n],r)=>{let[a,s]=o[r+1]??[e,n];r<i-1&&t.push([e,a,n,s]),(!r||r%2)&&t.push([c[r]-2,e,n,n])}),u=T(Math.min(...c)-40,Math.max(...c)+44,-40,Math.max(...l)+60,0,C.lawn);for(let[e,n]of[[1.6,C.walk],[1.05,C.curb],[1,C.road]])for(let[r,i,a,o]of t)u+=T(r-e,i+e,a-e,o+e,0,n);for(let[e,n,r,i]of t)for(let t=1.6;t<Math.max(n-e,i-r)-1.6;t+=1.2){let a=Math.min(t+.6,Math.max(n-e,i-r)-1.6);u+=r===i?T(e+t,e+a,r-.03,r+.03,0,C.dash):T(e-.03,e+.03,r+t,r+a,0,C.dash)}let n=(e,n)=>t.every(([t,r,i,a])=>e<t-2.5||e>r+2.5||n<i-2.5||n>a+2.5)&&c.every((t,r)=>e<t-1.4||e>t+4.4||n<l[r]+1.6-1.4||n>l[r]+_+1.4);c.forEach((e,t)=>{for(let[r,i]of[[-4.6,-1.6],[7.4,-1.6],[4.6,4],[-3,9]])n(e+r,l[t]+i)&&d.push([e+r+l[t]+i,pe(e+r,l[t]+i)])})}else{u=T(-40,a,-40,4.449999999999999,0,C.lawn)+T(-40,a,x,60,0,C.lawn);for(let e of c)for(let[t,n,r,i]of[[-7.5,-2.5,10.5,15],[3,8,10.8,14.6],[-6,-1.5,-6,.6]])u+=T(e+t,e+n,r,i,0,C.yard)}c.forEach((e,t)=>u+=T(e-.3,e+3.3,4.449999999999999+l[t],v+l[t],0,C.yard));let h=(e,t,n,r)=>{let i=``;for(let a=Math.ceil(e*2)/2;a<t;a+=.5)i+=j(p(a,n),p(a,r),C.seam,1);return i};if(!s){u+=T(-40,a,v,y,0,C.walk)+h(-40,a,v,y),u+=T(-40,a,b,x,0,C.walk)+h(-40,a,b,x),u+=T(-40,a,y,b,0,C.road),u+=T(-40,a,y,6.05,0,C.curb)+T(-40,a,7.95,b,0,C.curb);for(let e=-40;e<a;e+=1.2)u+=T(e,e+.6,7.18,7.24,0,C.dash)}c.forEach((e,t)=>u+=T(e+1.05,e+1.95,_+l[t],v+l[t],0,C.walk)+h(e+1.05,e+1.95,_+l[t],v+l[t])),e.forEach((e,n)=>{let r=c[n],i=l[n]+S,a=(e&&fe[e]||ue)(r,i),o=[a.ant[0],a.ant[1],a.ant[2]+(a.own?0:.8)];t[n]&&!a.own&&(a.svg+=de(a.ant));let s=he((t[n]?[...a.pts,o]:a.pts).map(e=>p(...e))).map(([e,t])=>[m(e),m(t)]),u=s.reduce((e,t)=>t[1]<e[1]?t:e),h=p(r,i,1.5),[g,_]=p(...o);f.push({x:r,y:l[n],hull:s,tag:[m(h[0]),m(u[1])],door:r+1.5,depot:a.depot??null,roof:t[n]?[m(g),m(_)]:null}),d.push([r+1.5+i+1.5,`<g class="bld" id="b-${n}">${a.svg}</g>`])});for(let e of s?[]:c){for(let[t,n,r,i]of[[-4.6,-1.6,1,0],[7.4,-1.6,1,0],[4.6,13.2,1,0]])d.push([e+t+n,pe(e+t,n,r,i)]);for(let[t,n]of[[-4.2,.34],[4.2,.36]])d.push([e+t+9.2,me(e+t,9.15,n)])}let g=c.map((e,t)=>`<g class="pad" id="pad-${t}">${T(e-.55,e+3.55,1.05+l[t],5.1+l[t],0,`#FBFAF3`)}</g>`).join(``);return{svg:u+g+d.sort((e,t)=>e[0]-t[0]).map(e=>e[1]).join(``),lots:f,bends:o}}var _e=6.6,G=.78,ve=5.7,ye=.8,be=1.2,xe=[6.409999999999999,6.79],K={ink:`#141A22`,data:`#2456D6`,fail:`#B8322A`,muted:`#646C79`},Se={side:`#D9822B`,shade:`#B4661D`,top:`#EDAA5E`,rim:`#6E3E10`},Ce=(e,t,n=``)=>`<g${n?` id="${n}"`:``} transform="translate(${m(e[0])} ${m(e[1])})">${t}</g>`;function we(){let e=.17,t=e*Math.SQRT2*f,n=e*Math.SQRT2*20,r=.35,i=Math.sqrt(1-r*r),a=Se,o=`<path d="M${m(-t)},${m(-18.400000000000002)} L${m(-t)},0 A${m(t)} ${m(n)} 0 0 0 ${m(t)},0 L${m(t)},${m(-18.400000000000002)} Z" fill="${a.side}"/>`;o+=`<path d="M${m(r*t)},${m(-18.400000000000002+n*i)} L${m(r*t)},${m(n*i)} A${m(t)} ${m(n)} 0 0 0 ${m(t)},0 L${m(t)},${m(-18.400000000000002)} A${m(t)} ${m(n)} 0 0 1 ${m(r*t)},${m(-18.400000000000002+n*i)} Z" fill="${a.shade}"/>`;for(let e of[.3,.68])o+=`<path d="M${m(-t)},${m(-18.400000000000002*e)} A${m(t)} ${m(n)} 0 0 0 ${m(t)},${m(-18.400000000000002*e)}" fill="none" stroke="${a.rim}" stroke-opacity=".7" stroke-width="1"/>`;return o+=`<path d="M${m(-t)},${m(-18.400000000000002)} L${m(-t)},0 A${m(t)} ${m(n)} 0 0 0 ${m(t)},0 L${m(t)},${m(-18.400000000000002)}" fill="none" stroke="${a.rim}" stroke-opacity=".8" stroke-width="1"/>`,o+=`<ellipse cx="0" cy="${m(-18.400000000000002)}" rx="${m(t)}" ry="${m(n)}" fill="${a.top}" stroke="${a.rim}" stroke-width="1"/>`,o+=`<ellipse cx="0" cy="${m(-18.400000000000002)}" rx="${m(t*.74)}" ry="${m(n*.74)}" fill="none" stroke="${a.rim}" stroke-opacity=".55" stroke-width=".8"/>`,o+`<ellipse cx="${m(t*.38)}" cy="${m(-18.400000000000002-n*.1)}" rx="1.6" ry="1" fill="${a.rim}"/>`}function Te(){let e=.38,t=-.48/2,n=k(-.24,t,0,.48,.48,e,`#e3c48f`,`#c99a5b`,`#ad8046`,`#6b4a22`);return n+=T(-.035,.035,t,.24,e,`#a07a45`)+E(.24,-.035,.035,.26,e,`#a07a45`),n+=E(.24,-.18,-.03999999999999998,.08,.16,`#f4ecdc`)+E(.24,-.18,-.06999999999999998,.2,.23,`#f4ecdc`),n}function Ee(){let e=.16,t=-.28/2,n=k(-.22,t,0,.44,.28,e,`#cfe3c9`,`#7fb07a`,`#5f9160`,`#2f5a33`);n+=E(.14,-.04,.04,0,e,`#f4f6fb`)+T(-.04,.04,t,.14,e,`#f4f6fb`);for(let e of[.05,.1])n+=E(.14,-.2,.2,e,e+.012,`#5f9160`);return n}var De={barrel:we(),box:Te(),notes:Ee()};function Oe(e){let t=_e-G/2,n=6.99,r=1.78,i=.68,a=w.green,o=[`#9aa2ae`,`#7d8592`,`#646c79`,`#2a3142`],s=(e,t,n,r,i,a)=>k(e,t,i,n,r,a,o[0],o[1],o[2],o[3]),c=e=>g(Array.from({length:20},(t,n)=>{let r=n/20*Math.PI*2;return p(e+.17*Math.cos(r),7,.2+.17*Math.sin(r))}),`#1b2130`)+g(Array.from({length:14},(t,n)=>{let r=n/14*Math.PI*2;return p(e+.07*Math.cos(r),7.01,.2+.07*Math.sin(r))}),`#8b9099`),l=T(-.05,2.6,t,7.24,0,C.ao)+k(0,t,.2,2.5,G,.16,`#3a4458`,`#2a3142`,`#222838`,`#11151c`);l+=k(0,t,.36,.64,G,.72,`#a9c2a4`,a.l,a.r,a.e)+k(.06,6.27,1.08,.54,.66,.05,`#c3d2bf`,`#8fac8a`,`#6f8c6b`),l+=E(n,.1,.52,.72,.98,C.glass)+D(.64,6.29,6.91,.5,.98,`#587553`)+E(n,.08,.58,.42,.48,a.cap)+E(n,.04,.14,.52,.6,C.light),l+=s(i,t,r,.05,.43,.36)+k(i,t,.36,r,G,.07,`#8b929d`,`#6b7280`,`#5a6170`,`#2a3142`)+s(i,t,.07,G,.43,.5);let u=s(i,6.94,r,.05,.43,.13)+s(2.41,t,.05,G,.43,.2);u+=D(2.46,6.26,6.36,.48,.56,K.fail)+D(2.46,6.84,6.94,.48,.56,K.fail),u+=[.36,1.64,2.14].map(c).join(``);let d=.04,f=T(-.05,2.6,t,7.24,0,C.ao)+k(0,t,.2,2.5,G,.16,`#3a4458`,`#2a3142`,`#222838`,`#11151c`);f+=s(d,t,r,.05,.43,.36)+k(d,t,.36,r,G,.07,`#8b929d`,`#6b7280`,`#5a6170`,`#2a3142`)+s(d,t,.05,G,.43,.2);let h=s(d,6.94,r,.05,.43,.13)+s(1.75,t,.07,G,.43,.5);h+=k(1.86,t,.36,.64,G,.72,`#a9c2a4`,a.l,a.r,a.e)+k(1.9000000000000001,6.27,1.08,.54,.66,.05,`#c3d2bf`,`#8fac8a`,`#6f8c6b`),h+=D(2.5,6.31,6.890000000000001,.72,1,C.glassR)+E(n,1.98,2.4000000000000004,.72,.98,C.glass)+E(n,1.9400000000000002,2.44,.42,.48,a.cap)+E(n,2.3600000000000003,2.46,.52,.6,C.light),h+=[.36,.86,2.14].map(c).join(``);let _=[.27,.69,1.11,1.53].map(e=>i+e+.06),v=[.27,.69,1.11,1.53].map(e=>d+e-.04),y=xe.flatMap((e,t)=>_.map((n,r)=>Ce(p(n,e,.43),``,`tl`+(t*4+r)))).join(``),b=xe.flatMap((e,t)=>v.map((n,r)=>Ce(p(n,e,.43),``,`tr`+(t*4+r)))).join(``),x=he([e.x+.2,e.x+1.9].flatMap(t=>[e.y,e.y+6].flatMap(e=>[0,2.5].map(n=>p(t,e,n))))).map(e=>e.map(e=>m(e)).join(`,`)).join(` `),S=e=>g(Array.from({length:20},(t,n)=>{let r=n/20*Math.PI*2;return p(.79,e+.17*Math.cos(r),.2+.17*Math.sin(r))}),`#1b2130`)+g(Array.from({length:14},(t,n)=>{let r=n/14*Math.PI*2;return p(.8,e+.07*Math.cos(r),.2+.07*Math.sin(r))}),`#8b9099`),O=T(-.05,1.03,-.05,2.6,0,C.ao)+k(0,0,.2,G,2.5,.16,`#3a4458`,`#2a3142`,`#222838`,`#11151c`),A=O+s(0,.04,.05,1.78,.43,.36)+k(0,.04,.36,G,1.78,.07,`#8b929d`,`#6b7280`,`#5a6170`,`#2a3142`)+s(0,.04,G,.05,.43,.2),j=s(.73,.04,.05,1.78,.43,.13)+s(0,1.75,G,.07,.43,.5);j+=k(0,1.86,.36,G,.64,.72,`#a9c2a4`,a.l,a.r,a.e)+k(.06,1.92,1.08,.66,.52,.05,`#c3d2bf`,`#8fac8a`,`#6f8c6b`),j+=E(2.5,.1,.68,.72,1,C.glass)+D(G,1.95,2.4,.72,.98,C.glassR)+E(2.5,.08,.7000000000000001,.42,.48,a.cap),j+=E(2.5,.05,.16,.52,.6,C.light)+E(2.5,.62,.73,.52,.6,C.light),j+=[.36,.86,2.14].map(S).join(``);let M=O+k(0,0,.36,G,.64,.72,`#a9c2a4`,a.l,a.r,a.e)+D(G,.1,.5,.72,.98,C.glassR);M+=s(0,.68,.05,1.78,.43,.36)+k(0,.68,.36,G,1.78,.07,`#8b929d`,`#6b7280`,`#5a6170`,`#2a3142`)+s(0,.68,G,.07,.43,.5);let N=s(.73,.68,.05,1.78,.43,.13)+s(0,2.41,G,.05,.43,.2);N+=E(2.46,.05,.16,.46,.56,K.fail)+E(2.46,.62,.73,.46,.56,K.fail),N+=[.36,1.64,2.14].map(S).join(``);let P=(e,t)=>[0,1].flatMap(n=>[.27,.69,1.11,1.53].map((r,i)=>Ce(p(G/2-.19+.38*n,t+r,.43),``,e+(n*4+i)))).join(``);return{door:`<g id="depotDoor">${E(e.y+.002,e.x+.3,e.x+1.8,0,1.03,`#1d222b`)}<g id="doorPanel"></g></g>`,yard:`<clipPath id="outDoor"><polygon points="${x}"/></clipPath><g clip-path="url(#outDoor)"><g id="truckY">${A+j}</g></g>`,road:`<g id="truck" display="none"><g>${l}</g><g>${y}</g><g>${u}</g></g><g id="truckR" display="none"><g>${f}</g><g>${b}</g><g>${h}</g></g><g id="truckD" display="none">${A+P(`td`,.1)+j}</g><g id="truckU" display="none">${M+P(`tu`,.74)+N}</g>`,slots:{L:_,R:v}}}var ke=`<g class="scr" data-s="idle"><path d="M-6,-5 h12 M-6,0 h9 M-6,5 h7" stroke="${K.ink}" stroke-opacity=".4" stroke-width="1.6" stroke-linecap="round"/></g>
2
+ <g class="scr" data-s="tx" display="none"><circle r="8" fill="${K.data}"/><path d="M0,4V-4M-3.5,-.5L0,-4L3.5,-.5" stroke="#fff" stroke-width="1.8" fill="none" stroke-linecap="round" stroke-linejoin="round"/></g>
3
+ <g class="scr" data-s="in" display="none"><rect x="-7" y="-9" width="14" height="9" rx="2" fill="${K.data}"/><path d="M-6,4 h12 M-6,8 h8" stroke="${K.ink}" stroke-opacity=".4" stroke-width="1.6" stroke-linecap="round"/></g>`;function Ae(e,t){let n=`<rect x="${-e/2}" y="${-t}" width="${e}" height="${t}" rx="${m(e*.2)}" fill="${K.ink}"/>`;return n+=`<rect x="${m(-e/2+e*.09)}" y="${m(-t+t*.12)}" width="${m(e*.82)}" height="${m(t*.76)}" rx="${m(e*.08)}" fill="#F4F5F0"/>`,n+=`<rect x="${m(-e*.12)}" y="${m(-t+t*.045)}" width="${m(e*.24)}" height="${m(t*.03)}" rx="1" fill="#3b4252"/>`,`${n}<g transform="translate(0 ${m(-t/2)})">${ke}</g>`}var je={svg:Ae(26,46),w:26,h:46};function Me(e){let t=(t,n)=>k(t-.09,e.y-.09,0,.18,.18,n,`#5a6372`,`#434b5a`,`#2e3440`,`#14181e`),n=p(e.px,e.y);return`<g class="gt"><ellipse cx="${m(n[0]+4)}" cy="${m(n[1]+1)}" rx="12" ry="5" fill="${C.ao}"/>
4
+ ${t(e.ex,.7000000000000001)}${k(e.ex-.13,e.y-.13,.7000000000000001,.26,.26,.05,`#2e3440`,`#2e3440`,`#1d222b`)}
5
+ ${t(e.px,.92)}${k(e.px-.32,e.y-.11,.66,.24,.22,.22,`#5a6372`,`#434b5a`,`#2e3440`,`#14181e`)}
6
+ <line class="arm" stroke-width="5" stroke-linecap="round"/><line class="armW" stroke="#ffffff" stroke-width="5" stroke-dasharray="6 6"/><circle class="hub" r="3.5" fill="#2e3440"/></g>`}var Ne=[`box`,`barrel`,`notes`],Pe=xe.length*4,Fe=e=>Math.min(4,Math.max(1,Math.round(e??1)));function Ie(s,d=`narrow`){let p=l(s),m=n(s.layout),h=new Map(m.map(e=>[e.id,e])),g=new Map(p.flatMap((e,t)=>e.boxes.map(e=>[e,t]))),_=/* @__PURE__ */ new Map,v=e=>{for(let t of e.children){if(!o(t))continue;let e=n(t)[0];t.id&&e&&_.set(t.id,e.id),v(t)}};v(s.layout);let y=p.findIndex(e=>e.look===`truck`),b=p.map((e,t)=>t===y?`cab`:e.look===`person`||e.look===`phone`?`phone`:`antenna`),x=d===`stack`||d===`spread`,{svg:S,lots:C,bends:w}=ge(p.map(e=>e.look),b.map(e=>e===`antenna`),d===`wide`?8.5:10.5,x?d===`spread`?15:12:0),T=/* @__PURE__ */ new Map;for(let t of s.edges){let n=typeof t.carries==`object`?t.carries:void 0;n&&e(n.thing)&&!T.has(n.thing)&&T.set(n.thing,{form:Ne.find(e=>e===n.form)??`box`,count:Fe(n.count)})}let E=p.map((e,t)=>{let n=b[t],r=e=>C[e].hull.map(e=>e[0]),i=Math.min(...r(t)),a=t>0&&!x?Math.max(...r(t-1)):i-160,o=C[t].y,s=(i-Math.min(44,(i-a)*.28))/f+ve+o;return{name:e.name,look:e.look,device:n,lot:C[t],gate:{px:s-be/2,ex:s+be/2,y:ve+o,z:ye,L:be},port:[(i-28)/f+4.95+o,4.95+o],checks:e.boxes.some(e=>c(h.get(e)))}}),D={};p.forEach((t,n)=>t.boxes.forEach(t=>{let r=h.get(t);r&&(D[t]={label:e(r.label),actor:n,dead:r.tone===`red`||r.tone===`gray`,check:i(r),done:r.done})}));let O=(s.steps??[]).map(n=>{let i=e(n.label),o=r(s,n),c=/* @__PURE__ */ new Set,l=n=>{let r=typeof n.edge.carries==`object`&&e(n.edge.carries.thing)?n.edge.carries:void 0,i={edge:t(n.edge),from:n.source,to:n.target,label:e(n.edge.label),data:e(n.data),async:!!n.async,fail:a(h,n)};if(r){let e=r.from?h.has(r.from)?r.from:_.get(r.from):n.source;i.carry={thing:r.thing,...T.get(r.thing),from:g.get(e??``)??-1}}for(let e of[g.get(n.source),g.get(n.target),i.carry?.from])e!==void 0&&e>=0&&c.add(e);return i},d=o.map(e=>e.hops.map(l));return{name:i,moments:d.length?[...d,[]]:[],acting:u(s,i).map(e=>e.actor),path:[...c],end:d.at(-1)?.at(-1)?.to??``}}),k=O.flatMap(e=>e.moments.flat()),A=e=>[D[e.from]?.actor,D[e.to]?.actor],j=[];k.some(e=>!e.carry&&new Set(A(e)).size===2&&A(e).every(e=>e!==void 0))&&j.push(`data`),k.some(e=>e.carry)&&j.push(`thing`),k.some(e=>c(h.get(e.from)))&&j.push(`check`);let M=y>=0?Oe(C[y].depot):null;return{clear:d===`wide`?64:Re,bends:w,svg:S+E.filter(e=>e.checks).map(e=>Me(e.gate)).join(``)+(M?.yard??``),actors:E,boxes:D,stories:O,truck:y,truckArt:M,things:T,keys:j}}var Le=(e,t)=>t&&e.done||e.label,Re=92;function ze(e,t,n,r){let i=3*e,a=3*(n-e)-i,o=1-i-a,s=3*t,c=3*(r-t)-s,l=1-s-c,u=e=>((o*e+a)*e+i)*e,d=e=>(3*o*e+2*a)*e+i;return e=>{if(e<=0)return 0;if(e>=1)return 1;let t=0,n=1,r=e;for(let i=0;i<24;i++){let i=u(r)-e;if(Math.abs(i)<1e-5)break;i>0?n=r:t=r;let a=d(r);r=Math.abs(a)>1e-6?r-i/a:(t+n)/2,(r<=t||r>=n)&&(r=(t+n)/2)}return((l*r+c)*r+s)*r}}var q={out:ze(.23,1,.32,1),inOut:ze(.77,0,.175,1)},Be=e=>e,Ve=(e,t,n)=>[e[0]+(t[0]-e[0])*n,e[1]+(t[1]-e[1])*n],J=(e,t)=>{let n=1-t,r=r=>n*n*n*e.a[r]+3*n*n*t*e.c1[r]+3*n*t*t*e.c2[r]+t*t*t*e.b[r];return[r(0),r(1)]},He=e=>`yDU`.includes(e.orient),Ue=e=>e.length?[e.reduce((e,t)=>e+t[0],0)/e.length,e.reduce((e,t)=>e+t[1],0)/e.length]:void 0,We=e=>e.slice(1).reduce((t,n,r)=>t+Math.hypot(n[0]-e[r][0],n[1]-e[r][1]),0),Ge=(e,t)=>{for(let n=1;n<e.length;n++){let r=Math.hypot(e[n][0]-e[n-1][0],e[n][1]-e[n-1][1]);if(t<=r||n===e.length-1)return Ve(e[n-1],e[n],r?Math.min(1,t/r):1);t-=r}return e[e.length-1]},Ke=(e,t,n)=>[e.actors[t].lot.x+2.2+n%2*.42,4.84+Math.floor(n/2)*.38+e.actors[t].lot.y];function qe(e,t){let n=!1;for(let r=0,i=t.length-1;r<t.length;i=r++){let[a,o]=t[r],[s,c]=t[i];o>e[1]!=c>e[1]&&e[0]<(s-a)*(e[1]-o)/(c-o)+a&&(n=!n)}return n}function Je(e,t){let n=1/0;for(let r=0;r<e.length;r++){let[i,a]=e[r],[o,s]=e[(r+1)%e.length];(t-i)*(t-o)<=0&&i!==o&&(n=Math.min(n,a+(s-a)*(t-i)/(o-i)))}return n}var Ye=e=>Array.from({length:e+1},(e,t)=>t).sort((e,t)=>(e%8?1:0)-(t%8?1:0)),Xe=Ye(160);function Ze(e,t,n,r=Re){for(let i of Xe){let a=J(e,i/160);if(!(Math.hypot(a[0]-e.a[0],a[1]-e.a[1])<10||Math.hypot(a[0]-e.b[0],a[1]-e.b[1])<10))for(let e=0;e<t.length;e++){if(n.includes(e))continue;let i=Je(t[e],a[0]);if(qe(a,t[e])||a[1]<i&&i-a[1]<r)return!1}}return!0}function Qe(e,t,n,r,i=Re){for(let a=Math.min(e[1],t[1])-80;;a-=20){let o={a:e,b:t,c1:[e[0],a],c2:[t[0],a]};if(a<-1200||Ze(o,n,r,i))return o}}var $e=[];for(let e=80;e<=480;e+=80)for(let t=80;t<=480;t+=80)for(let n=-240;n<=240;n+=120)for(let r=-240;r<=240;r+=120)$e.push([e,t,n,r]);var et=(e,t)=>Math.min(...t.map((n,r)=>{let i=t[(r+1)%t.length],a=i[0]-n[0],o=i[1]-n[1],s=Math.max(0,Math.min(1,((e[0]-n[0])*a+(e[1]-n[1])*o)/(a*a+o*o||1)));return Math.hypot(e[0]-n[0]-s*a,e[1]-n[1]-s*o)})),tt=Ye(96),nt=/* @__PURE__ */ new Map;function rt(e,t,n,r,i,a,o){let s=Math.sign(o-e[0]),c=Math.sign(o-t[0]),l=`${s}${c}`,u=nt.get(l);if(!u){let e=([e,t,n,r])=>e+t+(Math.abs(n)+Math.abs(r))/4+(n*s<0?200:0)+(r*c<0?200:0);nt.set(l,u=$e.map(t=>[...t,e(t)]).sort((e,t)=>e[4]-t[4]))}let d=n.map(Ct),f=Math.min(e[1],t[1])-60;next:for(let[o,s,c,l]of u){let u={a:e,b:t,c1:[e[0]+c,e[1]-o],c2:[t[0]+l,t[1]-s]},p=tt.map(e=>J(u,e/96));if(p.some(e=>e[1]<=f)){for(let o of p)if(!(Math.min(Math.hypot(o[0]-e[0],o[1]-e[1]),Math.hypot(o[0]-t[0],o[1]-t[1]))<16))for(let e=0;e<n.length;e++){let t=n[e],s=d[e];if(r.includes(e)||o[0]<s.x-a||o[0]>s.x+s.w+a||o[1]>s.y+s.h+a||o[1]<s.y-i)continue;let c=Je(t,o[0]);if(qe(o,t)||(o[1]<c?c-o[1]<i:et(o,t)<a))continue next}return u}}}function it(e,t){let n={story:t,moment:-1,summary:!1,hi:[],ever:{},arcs:[],units:{},truck:null,gates:{},dev:[],screens:{},frame:[]},r=e.truck>=0?e.actors[e.truck].lot.depot:null;r&&(n.truck={orient:`y`,x:r.x+.66,y:r.y-1.62,lot:e.truck,door:1,load:[]}),e.actors.forEach((e,t)=>n.gates[t]={rows:[],deg:0,fail:!1,on:-1});let i=/* @__PURE__ */ new Set;for(let r of e.stories[t].moments.flat()){let t=r.carry,a=t&&t.from>=0?t.from:e.boxes[r.from]?.actor;if(t&&!i.has(t.thing)&&a!==void 0){i.add(t.thing);for(let r=0;r<t.count;r++){let i=`${t.thing}/${r}`,o=a===e.truck&&t.form!==`notes`&&n.truck&&n.truck.load.length<Pe?n.truck:null;n.units[i]={thing:t.thing,k:r,p:o?[0,0]:p(...Ke(e,a,r)),where:o?`bed`:`yard`,at:a,fail:!1,moment:-1},o&&o.load.push(i)}}}return n}function at(e,t){let n=e.actors,r=e.truck,i=r>=0?n[r].lot.depot:{x:0,y:0},a=i.x+.66,o=()=>!t.truck||t.truck.orient===`y`&&t.truck.y+2.5<=i.y+.9,s=e=>e===r&&!o(),c=e=>He(e)?p(e.x+G+.03,e.y+(e.orient===`U`?.33:2.17),.58):p(e.orient===`R`?e.x+2.18:e.x+.31,e.y+G/2+.41,.58),l=e=>s(e)?c(t.truck):p(...n[e].port);return{YX:a,parked:o,inCab:s,devBase:l,devTop:e=>{let t=l(e);return[t[0],t[1]-je.h*(s(e)?.82:1)-4]},gateMid:e=>{let t=n[e].gate;return p((t.px+t.ex)/2,t.y,t.z)},gateEnds:e=>{let t=n[e].gate;return[p(t.ex,t.y,t.z-.05),p(t.ex,t.y)]},truckPts:(e,n=1)=>{let i=e.y+G/2,a=He(e)?[e.x,e.x+G].flatMap(t=>[p(t,e.y),p(t,e.y+2.5),p(t,e.y,e.orient===`y`?.9:1.13),p(t,e.y+2.5,1.13)]):[e.x,e.x+2.5].flatMap(e=>[i-.4,i+.4].flatMap(t=>[p(e,t),p(e,t,1.13)]));if(t.dev.includes(r)){let t=c(e);a.push([t[0]-11*n,t[1]-40*n],[t[0]+11*n,t[1]-40*n])}return a}}}var ot=e=>e.label.charAt(0).toUpperCase()+e.label.slice(1)||(e.fail?`✗`:`✓`),st=/* @__PURE__ */ new WeakMap;function ct(e,t,n){let r=st.get(e)??/* @__PURE__ */ new Map;st.set(e,r);let i=`${t}/${n}`;return r.has(i)||r.set(i,lt(e,t,n)),r.get(i)}function lt(e,t,n){let r=e.stories[t],i=r.moments[n]??[],a=e.actors,o=e.truck,s=dt(e,t,n-1,1/0);s.moment=n,s.summary=!i.length&&n===r.moments.length-1,s.arcs=s.arcs.filter(e=>e.hold||s.summary),s.frame=s.arcs.filter(e=>!s.summary||e.fail).map(e=>e.b),s.hi=[],s.dev=[];let c=structuredClone(s),l=[],u=(e,t,n,r,i,a=q.inOut,o)=>(l.push({kind:e,hop:t,start:n,end:n+r,curve:a,apply:i,head:o}),i(c,1),n+r),d=(e,t,n)=>u(null,e,t,0,n),{YX:m,gateMid:h,gateEnds:g,devBase:_,devTop:v,truckPts:y}=at(e,c),b=a.map(e=>e.lot.hull),x=Ue(b.flat())[0],S=(t,n)=>p(t.x+e.truckArt.slots[t.orient===`R`?`R`:`L`][n%4],xe[Math.floor(n/4)]+t.y+G/2-_e,.43),C=e=>e.orient===`y`?e.x:e.orient===`R`?e.x+2.18:e.x+.31,w=e=>He(e)?p(e.x+G/2,e.y+(e.orient===`U`?0:2.5),.6):p(e.orient===`R`?e.x+2.5:e.x,e.y+G/2,.6),T=(t,n,r)=>{let i=e.bends,a=[];for(let e=t;i.length&&t!==n&&(a.push([i[e][0]-r,i[e][1]-r]),e!==n);e+=n>t?1:-1);return a},E=(...e)=>e.forEach(e=>{c.hi.includes(e)||c.hi.push(e),c.frame.push(...a[e].lot.hull)}),D=e=>Object.keys(c.units).filter(t=>c.units[t].thing===e),O=e=>t=>Ue(e.filter(e=>[`air`,`road`].includes(t.units[e].where)).map(e=>t.units[e].p)),k=(e,t,n,r,i,a,o,s)=>u(`unit`,e,t,460,(e,t)=>{let r=e.units[n],c=e.truck,l=Ve(i,a,t);r.p=[l[0],l[1]-184*t*(1-t)],r.where=t<1?`air`:o,r.at=s,c.load=c.load.filter(e=>e!==n),o===`bed`&&t===1&&c.load.push(n)},q.inOut,O(r)),A=(t,n,r,i,o)=>e.boxes[i].check?(c.frame.push(...g(r)),h(r)):a[r].device===`antenna`?(o.push(r),a[r].lot.roof):(d(t,n,e=>{e.dev.includes(r)||e.dev.push(r),e.screens[r]??=`idle`}),c.frame.push(_(r),v(r)),v(r)),j=(t,r,i,a,o,s,l)=>{let d=e.bends.length?rt(a,o,b,l,Re,14,x)??rt(a,o,b,l,0,0,x)??Qe(a,o,b,l):Qe(a,o,b,l,e.clear),f=Array.from({length:9},(e,t)=>J(d,t/8));return c.frame.push(...f),u(t,r,i,Math.min(1500,450+.7*We(f)),(e,t)=>void e.arcs.push({...d,...s,t,moment:n,near:l}),q.inOut,(e,t)=>J(d,t))},M=(e,t,n)=>{let r=c.truck,i=e=>w(e.truck),s=a[n].lot,l=[[C(r),_e+a[r.lot].lot.y],...T(r.lot,n,.4),[s.door,_e+s.y]];for(let e=l.length-2;e>0;e--){let[t,n,r]=l.slice(e-1,e+2);Math.abs((n[0]-t[0])*(r[1]-t[1])-(n[1]-t[1])*(r[0]-t[0]))<1e-6&&l.splice(e,1)}let f=l[1][0]<l[0][0]?`L`:`R`,p=l.at(-1)[0]<l.at(-2)[0];if(c.frame.push(...y(r)),r.orient===`y`){let n=r.y,s=a[o].lot.depot.y+.53;r.door<1&&(t=u(`door`,e,t,500,(e,t)=>void(e.truck.door=t),q.inOut,i)),t=u(`drive`,e,t,1e3,(e,t)=>{let r=e.truck;r.y=n+(s-n)*t,t===1&&Object.assign(r,{orient:f,x:f===`R`?m-1.78:m,y:_e-G/2+a[o].lot.y})},q.inOut,i)}else if(r.orient!==f){let n=r.x+(f===`R`?-1.78:1.78);d(e,t,e=>Object.assign(e.truck,{orient:f,x:n}))}let h=p?s.x+.95:s.x+.2,g=l.slice(1,-1),_=[[r.x+1.25,r.y+G/2],...g,[h+1.25,_e+s.y]];for(let[e,t]of g)c.frame.push(...y({...r,orient:`D`,x:e-G/2,y:t-1.25}));return c.frame.push(...y({...r,orient:p?`L`:`R`,x:h,y:_e-G/2+s.y})),u(`drive`,e,t,Math.min(2200,900+We(_)*60),(e,t)=>{let r=e.truck,i=We(_)*t,[a,o]=Ge(_,i),s=1;for(;s<_.length-1&&We(_.slice(0,s+1))<i;)s++;let c=_[s][0]-_[s-1][0],l=_[s][1]-_[s-1][1],u=Math.abs(c)>=Math.abs(l)?c>0?`R`:`L`:l>0?`D`:`U`;Object.assign(r,u===`D`||u===`U`?{orient:u,x:a-G/2,y:o-1.25}:{orient:u,x:a-1.25,y:o-G/2}),t===1&&(r.lot=n)},q.inOut,i)},N=(e,t,n)=>{let r=c.truck;return r.orient!==`y`&&r.lot===n?(c.frame.push(...y(r)),t):M(e,t,n)},P=(t,r,i,s,l)=>{let m=D(i.carry.thing),h=!!e.boxes[i.to].check,g=h?`gate`:`yard`;if(!m.length)return r;let _=t=>h?[(a[l].gate.px+a[l].gate.ex)/2+.1-t*.42,6.45+a[l].lot.y]:Ke(e,l,t);d(t,r,e=>m.forEach(t=>e.units[t].moment=n)),h&&d(t,r,e=>void(e.gates[l].on=n));let v=i.carry.form!==`notes`&&c.truck;if(v&&l===o){let e=N(t,r,s),n=v.load.length,i=m.slice(0,Math.max(0,Pe-n));return c.frame.push(...i.map(e=>c.units[e].p)),Math.max(e,...i.map((r,a)=>k(t,e+280*a,r,i,c.units[r].p,S(c.truck,n+a),`bed`,l)))}if(v&&s===o){let e=N(t,r,l);return Math.max(...m.map((n,r)=>{let i=c.truck.load.indexOf(n);return k(t,e+280*r,n,m,i<0?c.units[n].p:S(c.truck,i),p(..._(r)),g,l)}))}let y=m.map((e,t)=>{let[n,r]=c.units[e].p,i=(n/f+r/20)/2,o=(r/20-n/f)/2,[s,u]=_(t);return[[i,o],[i,6.75+a[c.units[e].at].lot.y],...T(c.units[e].at,l,.25),[s,6.75+a[l].lot.y],[s,u]]});return y.forEach(e=>c.frame.push(...e.map(e=>p(...e)),p(...e.at(-1),1.2))),u(`parcel`,t,r,Math.min(2600,700+Math.max(...y.map(We))*130),(e,t)=>m.forEach((n,r)=>{let i=e.units[n],a=We(y[r])*t,o=p(...Ge(y[r],a));i.p=[o[0],o[1]-(t<1?Math.abs(Math.sin(a*Math.PI*1.6))*5:0)],i.where=t<1?`road`:g,i.at=l}),q.inOut,O(m))},F=(t,o)=>{let s=i[t],l=e.boxes[s.from],f=e.boxes[s.to];if(!l||!f)return o;let m=l.actor,_=f.actor,v=(s.carry&&Object.values(c.units).find(e=>e.thing===s.carry.thing)?.at)??m,y=(e,t)=>n=>void(n.ever[e]={label:t.label,fail:t.dead,done:t.done??(t.check?t.label.replace(/\?$/,``):void 0)});if(d(t,o,y(m,l)),E(v,_),l.check){if(E(m),c.frame.push(...g(m)),u(`answer`,t,o,0,e=>{let t=e.gates[m],r=t.rows.find(e=>e.box===s.from)??t.rows[t.rows.push({box:s.from,q:l.check,a:``,fail:!1})-1];Object.assign(r,{a:ot(s),fail:s.fail}),t.on=n,e.ever[m].fail=s.fail||/^(no|false)$/i.test(s.label)}),s.fail){for(let e of Object.values(c.units))e.where===`gate`&&e.at===m&&c.frame.push(e.p);u(null,t,o,160,(e,t)=>e.arcs.forEach(e=>{e.gate===m&&e.hold&&(e.t=t<1?1-8/We(Array.from({length:9},(t,n)=>J(e,n/8)))*Math.sin(Math.PI*t):1)})),o=u(`fail`,t,o,90,(e,t)=>{if(e.gates[m].deg=12*t,!(t<1)){e.gates[m].fail=!0,e.arcs.forEach(e=>e.fail||=e.gate===m&&e.hold);for(let t of Object.values(e.units))t.fail||=t.where===`gate`&&t.at===m;e.ever[m]={label:_===m?f.label:s.label?ot(s):l.label,fail:!0}}},q.out);let e=2*Math.PI/.25,n=e*Math.sqrt(.75);if(o=u(`arm`,t,o,290,(t,r)=>{let i=r*.29;t.gates[m].deg=r<1?Math.max(0,12*Math.exp(-.5*e*i)*(Math.cos(n*i)+.5*e/n*Math.sin(n*i))):0},Be),_!==m){let e=[];o=j(`reply`,t,o,h(m),A(t,o,_,s.to,e),{gate:-1,hold:!1,fail:!0,text:f.label,dashed:s.async,to:_},e)}return d(t,o,y(_,f)),o}o+=380;let e=.8,r=2*Math.PI/.4,i=r*Math.sqrt(1-e*e);o=u(`arm`,t,o,460,(t,n)=>{let a=n*.46;t.gates[m].deg=n<1?78*(1-Math.exp(-.8*r*a)*(Math.cos(i*a)+e*r/i*Math.sin(i*a))):78},Be),d(t,o,e=>e.arcs.forEach(e=>e.hold&&=e.gate!==m));let v=Object.keys(c.units).filter(e=>c.units[e].where===`gate`&&c.units[e].at===m);if(v.length){let e=v.map(e=>c.units[e].p),n=p(a[m].lot.door,4.75+a[m].lot.y);o=u(`release`,t,o,520,(t,r)=>v.forEach((i,a)=>{t.units[i].p=Ve(e[a],n,r),t.units[i].where=r<1?`gate`:`in`}),q.inOut,e=>Ue(v.map(t=>e.units[t].p)))}}if(v!==_&&s.carry)o=P(t,o,s,v,_);else if(v!==_){let e=[],r=A(t,o,v,s.from,e),i=A(t,o,_,s.to,e),c=!!f.check,u=!l.check&&a[v].device!==`antenna`;c&&d(t,o,e=>void(e.gates[_].on=n)),u&&d(t,o,e=>void(e.screens[v]=`tx`)),o=j(`pulse`,t,o,r,i,{gate:c?_:-1,hold:c,fail:!1,text:l.check?``:s.data||s.label,dashed:s.async,to:_},e),u&&d(t,o,e=>void(e.screens[v]=`idle`)),c||d(t,o,e=>void(e.dev.includes(_)&&(e.screens[_]=`in`)))}if(f.check){let e=v!==_,a=c.gates[_].deg;c.frame.push(...g(_)),a>0&&(o=u(`arm`,t,o,260,(e,t)=>void(e.gates[_].deg=a*(1-t)))),u(`question`,t,o,0,t=>{let r=t.gates[_];e&&Object.assign(r,{rows:[],fail:!1}),r.rows.some(e=>e.box===s.to)||r.rows.push({box:s.to,q:f.check,a:``,fail:!1}),r.on=n}),o+=250;let l=i.some(e=>e.from===s.to)?void 0:r.moments.slice(n+1).flat().find(e=>e.from===s.to);l&&u(`answer`,t,o,0,e=>{let t=e.gates[_].rows.find(e=>e.box===s.to);t&&Object.assign(t,{a:ot(l),fail:l.fail})})}return d(t,o,y(_,f)),o},I=c.summary?200:0;c.summary&&u(null,-1,0,I,(e,t)=>{e.fade=1-t,t===1&&(e.arcs=e.arcs.filter(e=>e.fail))},Be),u(`camera`,-1,I,c.summary?900:700,()=>{},q.out);let L=[];if(i.forEach((e,t)=>{let n=-1;for(let r=0;r<t;r++)i[r].to===e.from&&(n=r);L[t]=F(t,n>=0?L[n]:700)}),c.summary){for(let e of r.path)c.frame.push(...a[e].lot.hull);c.truck&&r.path.includes(o)&&c.frame.push(...y(c.truck));for(let e of Object.values(c.units))[`yard`,`gate`,`in`].includes(e.where)&&c.frame.push(e.p,[e.p[0],e.p[1]+40]);a.forEach((e,t)=>c.gates[t].fail&&c.frame.push(...g(t)))}return{steps:l,start:s,scratch:c,end:Math.max(c.summary?I+900:700,...L)}}function ut(e,t,n){let{steps:r,end:i}=ct(e,t,n);return{events:r.flatMap(({kind:e,hop:t,start:n,end:r})=>e?[{kind:e,hop:t,start:n,end:r}]:[]),end:i}}function dt(e,t,n,r){if(n<0)return it(e,t);let{steps:i,start:a,scratch:o}=ct(e,t,n),s=structuredClone(a),c=[];for(let e of i)e.hop>=0&&(c[e.hop]=Math.max(c[e.hop]??0,e.end));let l=-1;for(let e of[...i].sort((e,t)=>e.start-t.start)){if(e.start>r)continue;let t=e.end>e.start?Math.min(1,(r-e.start)/(e.end-e.start)):1,n=e.curve(t);e.apply(s,n);let i=t<1&&e.hop>=0&&c[e.hop]>=l?e.head?.(s,n):void 0;i&&([s.lead,l]=[i,c[e.hop]])}return s.frame=[...o.frame],s.hi=s.summary?r===1/0?[...e.stories[t].path]:[]:[...o.hi],s}var ft=.45,pt=/* @__PURE__ */ Error(`over`),Y=12,mt=32,ht={big:{name:14.8,hero:16,kick:12,status:13.8,mark:20,tag:46,q:15,a:13,row:30,chip:13,chipH:26},small:{name:13,hero:14,kick:0,status:12,mark:18,tag:41,q:13,a:12,row:24,chip:12,chipH:22}},gt=(e,t)=>e.where===`yard`||e.where===`gate`||t&&(e.where===`bed`||e.where===`in`),_t=(e,t)=>t.narrow?1:Math.min(1.9,Math.max(1,.85/e)),vt=(e,t)=>[Math.max(e.x,Math.min(t[0],e.x+e.w)),Math.max(e.y,Math.min(t[1],e.y+e.h))],yt=/* @__PURE__ */ new Map;function bt(e,t,n,r){let i=`${t},${n},${r}`,a=yt.get(i);if(!a){let e=(e,t)=>e>.38?[0]:e<-.38?[t]:[t/2,t*.1,t*.9];a=[];for(let i of r)for(let r=0;r<16;r++){let o=Math.cos(r*Math.PI/8),s=Math.sin(r*Math.PI/8);for(let r of e(o,t))for(let t of e(s,n))a.push(o*i-r,s*i-t)}yt.set(i,a)}let o=[];for(let r=0;r<a.length;r+=2)o.push({x:e[0]+a[r],y:e[1]+a[r+1],w:t,h:n,anchor:e});return o}var xt=e=>Math.abs(e.reduce((t,n,r)=>t+n[0]*e[(r+1)%e.length][1]-e[(r+1)%e.length][0]*n[1],0))/2;function St(e,{l:t,t:n,r,b:i}){let a=e;for(let[e,o,s]of[[0,t,1],[0,r,0],[1,n,1],[1,i,0]]){let t=t=>s?t[e]>=o:t[e]<=o,n=[];a.forEach((r,i)=>{let s=a[(i+1)%a.length];if(t(r)&&n.push(r),t(r)!==t(s)){let t=(o-r[e])/(s[e]-r[e]);n.push([r[0]+(s[0]-r[0])*t,r[1]+(s[1]-r[1])*t])}}),a=n}return a.length>2?xt(a)/xt(e):0}var Ct=e=>{let t=e.map(e=>e[0]),n=e.map(e=>e[1]),r=Math.min(...t),i=Math.min(...n);return{x:r,y:i,w:Math.max(...t)-r,h:Math.max(...n)-i}},wt=/* @__PURE__ */ new Map,Tt=(e,t,n)=>{let r=`${t}${n}${e}`,i=wt.get(r);return i===void 0&&wt.set(r,i=s(e,t)*(n?1.06:1)*1.12),i},Et=(e,t,n=0)=>e.x<t.x+t.w+n&&t.x<e.x+e.w+n&&e.y<t.y+t.h+n&&t.y<e.y+e.h+n,Dt=/* @__PURE__ */ new WeakMap;function Ot(e,t,n=0){let r=t.x-n,i=t.y-n,a=t.x+t.w+n,o=t.y+t.h+n,s=Dt.get(e);if(!s){let t=1/0,n=-1/0,r=1/0,i=-1/0;for(let[a,o]of e)t=Math.min(t,a),n=Math.max(n,a),r=Math.min(r,o),i=Math.max(i,o);s=[t,n,r,i];for(let t=0;t<e.length;t++){let[n,r]=e[t],[i,a]=e[(t+1)%e.length],o=a-r,c=n-i,l=1/0,u=-1/0;for(let[t,n]of e){let e=t*o+n*c;e<l&&(l=e),e>u&&(u=e)}s.push(o,c,l,u)}Dt.set(e,s)}if(s[1]<=r||a<=s[0]||s[3]<=i||o<=s[2])return!1;for(let e=4;e<s.length;e+=4){let t=s[e],n=s[e+1],c=Math.min(r*t,a*t)+Math.min(i*n,o*n),l=Math.max(r*t,a*t)+Math.max(i*n,o*n);if(s[e+3]<=c||l<=s[e+2])return!1}return!0}function kt(e,t,n=d.sheet){let r=e>=d.wide||t<d.short&&e>=d.slim*2;return{w:e,h:t,narrow:e<d.roomy,form:e>=d.slim*2?e<d.roomy?`narrow`:`wide`:t<740||t>780?`spread`:`stack`,region:r?{l:d.pad*2+(e>=d.wide?d.panel:d.slim),t:d.chips+d.pad,r:e-d.pad,b:t-d.pad}:{l:8,t:d.chips+8,r:e-8,b:t-n-8}}}var At=/* @__PURE__ */ new WeakMap,jt=/* @__PURE__ */ new WeakMap,Mt=/* @__PURE__ */ new WeakMap;function Nt(e,t,n,r,i=!1,a=1/0){let o=ht[n.w<d.slim*2?`small`:`big`],s=o.chipH,c=e.actors,l=e.stories[t.story],u=at(e,t),{l:f,t:m,r:h,b:g}=n.region,_=(f+h)/2,v=(m+g)/2,y=e=>[(e[0]-r.x)*r.z+_,(e[1]-r.y)*r.z+v],b=e=>Ct(e.map(y)),x=t.truck&&!u.parked()?u.truckPts(t.truck,_t(r.z,n)):null,S=c.flatMap((e,n)=>{let r=e.gate,i=t.gates[n];if(!e.checks||i.on!==t.moment&&!i.fail)return[];let a=i.deg>1?r.z+r.L:i.fail?r.z+1:r.z+.3;return[{actor:n,r:b([p(r.px-.35,r.y),p(r.ex+.12,r.y),p(r.px,r.y,a),p(r.ex,r.y,r.z)])}]}),C=_t(r.z,n),w=t.dev.filter(e=>!u.inCab(e)).map(e=>{let t=u.devBase(e);return{actor:e,r:b([[t[0]-je.w*C/2,t[1]-je.h*C],[t[0]+je.w*C/2,t[1]]])}}),T=At.get(t.arcs);T||At.set(t.arcs,T=t.arcs.filter(e=>e.t>0).map(t=>e.bends.length?Array.from({length:97},(e,n)=>J(t,t.t*n/96)):Array.from({length:33},(e,n)=>J(t,t.t*(.05+.9*n/32)))));let E=Mt.get(e);E||Mt.set(e,E=c.map(e=>({h:e.lot.hull,box:Ct(e.lot.hull)})));let D=[...w,...S].map(e=>e.r),O=0,k=e=>e.x>=f&&e.y>=m&&e.x+e.w<=h&&e.y+e.h<=g,A=x?he(x):void 0,j=A?[...E,{h:A,box:Ct(A)}]:E,M=e=>({x:(e.x-_)/r.z+r.x,y:(e.y-v)/r.z+r.y,w:e.w/r.z,h:e.h/r.z}),N=e=>{let t=M(e),n=2/r.z;return!j.some(({h:e,box:r})=>Et(r,t,n)&&Ot(e,t,n))},P=jt.get(T);P||jt.set(T,P=T.flatMap(e=>Array.from({length:Math.ceil(e.length/8)},(t,n)=>{let r=e.slice(n*8,n*8+8);return{ps:r,box:Ct(r)}})));let F=e=>{let t=M(e),n=4/r.z,i=t.x-n,a=t.x+t.w+n,o=t.y-n,s=t.y+t.h+n;for(let{ps:e,box:r}of P)if(Et(r,t,n)){for(let t of e)if(t[0]>i&&t[0]<a&&t[1]>o&&t[1]<s)return!1}return!0},I=e=>!D.some(t=>Et(t,e,6)),L=e=>k(e)&&I(e)&&F(e)&&N(e),R=(e,t)=>{for(let n of e)for(let e of typeof n==`function`?n():n)if(t(e))return e},z=e=>R(e,L),B=e=>{let t=R(e,L);if(t)return t;if(++O>a)throw pt;return R(e,e=>k(e)&&I(e))??e[0][0]},V=[],H=r=>{let s=t.ever[r],p=c[r].name,_=s?Le(s,t.summary):`Not reached`,v=s?s.fail?`✗`:`✓`:``,b=t.summary&&e.boxes[l.end]?.actor===r,S=!n.narrow&&t.summary&&r===e.truck?Object.values(t.units).filter(e=>e.where===`bed`&&e.moment>=0):[],C=[...new Set(S.map(e=>e.thing))],w=(b?22:20)+Math.max(Tt(p,b?o.hero:o.name,!0),o.mark+Tt(_,o.status,!1),...C.map(e=>20+Tt(e,13,!0))),T=o.tag+(b?3:0)+C.length*20,E=Y,k=r===e.truck&&x,j=k?x.reduce((e,t)=>t[1]<e[1]?t:e):c[r].lot.tag,[M,N]=y(j),P=[M,N],F=[];if(k){let[e,t]=y(x.reduce((e,t)=>t[1]>e[1]?t:e));for(let n of[e-w/2,e+4,e-w-4])F.push({x:n,y:t+E,w,h:T,anchor:[e,t]})}for(let[e,t]of[[M-w/2,N-E-T],[M+E,N-T/2],[M-E-w,N-T/2],[M+4,N-E-T],[M-w-4,N-E-T],[M-w/2,N+E],[M+E,N-E-T],[M-E-w,N-E-T],[M+E,N+4],[M-E-w,N+4],[M-w/2,N-24-T],[M+4,N-24-T],[M-w-4,N-24-T],[M-w+36,N-E-T],[M-36,N-E-T]])F.push({x:e,y:t,w,h:T,anchor:P});let I=n.w<d.slim*2&&t.summary,L=n.w<d.wide&&t.summary&&!(k&&I)?[12,20,30,40]:n.narrow?[12,20,30,44,58]:[12,18,24],R=[F,()=>bt(P,w,T,L),()=>k?bt(y(x.reduce((e,t)=>t[1]>e[1]?t:e)),w,T,L):[],()=>k&&(!n.narrow||I)?[]:bt(y(c[r].lot.hull.reduce((e,t)=>t[1]>e[1]?t:e)),w,T,L),()=>t.dev.includes(r)&&!u.inCab(r)?bt(y(u.devTop(r)),w,T,L):[]],H=t.hi.includes(r)||t.summary&&l.path.includes(r),ee=St((k?A:c[r].lot.hull).map(y),n.region),U=ee<.6;if(U&&(!H||i&&n.narrow&&t.summary&&!b&&ee>=.01))return;let te={actor:r,name:p,status:_,mark:v,quiet:!l.path.includes(r),end:b,cargo:C},ne=M<f||M>h||N<m||N>g;if(H&&n.narrow&&(ne||U)&&!(t.summary&&b&&U)){let e=ie(te,w,T,[M,N]);V.push(e),D.push(e.r);return}if(U&&++O>a)throw pt;let W=H?B(R):z(R);if(!W)return;let re={x:W.x,y:W.y,w,h:T};V.push({...te,r:re,anchor:W.anchor,line:[vt(re,W.anchor),W.anchor]}),D.push(W)};(!n.narrow||n.w<d.slim*2&&t.summary)&&x&&t.hi.includes(e.truck)&&H(e.truck);let ee=[],U=(e,t,r,i,o)=>{for(let[e,n]of i)for(let i of[10,30,50])for(let a=0;a<8;a++){let o=a*Math.PI/4;t.push([e+Math.cos(o)*(i+r/2)-r/2,n+Math.sin(o)*(i+s/2)-s/2])}let c=t.map(([e,t])=>({x:e,y:t,w:r,h:s})),l=e=>k(e)&&N(e)&&I(e),u=c.find(l)??i.flatMap(e=>bt(e,r,s,n.narrow?[20,30,44,58]:[18,24])).find(l);if(!u&&++O>a)throw pt;ee.push({text:e,r:u??c[0],mark:o}),D.push(u??c[0])};for(let e of t.arcs){if(e.moment!==t.moment||e.t!==1||!e.text||t.ever[e.to]?.label===e.text)continue;let n=20+Tt(e.text,o.chip,!0),r=e.a;for(let t=0;t<=40;t++){let n=J(e,t/40);n[1]<r[1]&&(r=n)}let[i,a]=y(r),c=[[i-n/2,a-s-10]];for(let t of[.8,.2,.65,.35]){let[r,i]=y(J(e,t));c.push([r+10,i-s/2],[r-10-n,i-s/2])}U(e.text,c,n,[.5,.3,.7].map(t=>y(J(e,t))))}let te=/* @__PURE__ */ new Set;for(let e of Object.values(t.units)){let r=t.summary&&e.where===`bed`?x?.reduce((e,t)=>t[1]<e[1]?t:e):e.p;if(e.moment!==t.moment&&!t.summary||e.moment<0||!r||!gt(e,t.summary)||te.has(e.thing)||!n.narrow&&t.summary&&e.where===`bed`)continue;te.add(e.thing);let i=t.summary&&!e.fail?`✓`:void 0,a=20+(i?o.mark:0)+Tt(e.thing,o.chip,!0),c=s,[l,u]=y([r[0],r[1]+6]);U(e.thing,[[l-a/2,u+10],[l+10,u-c/2],[l-10-a,u-c/2],[l+10,u+10],[l-10-a,u+10],[l-a/2,u+30]],a,[[l,u]],i)}let ne=[];for(let e of S){let r=t.gates[e.actor];if(!r.rows.length||!(r.on===t.moment||t.summary&&r.fail&&!n.narrow))continue;let i=r.rows.map(({q:n,a:r,fail:i})=>({q:n,a:t.ever[e.actor]?.label===r?``:r,fail:i})),a=22+Math.max(Tt(c[e.actor].name,o.kick,!1),...i.map(e=>Tt(e.q,o.q,!0)+(e.a?Tt(e.a,o.a,!0)+40:26))),s=i.length*o.row+(i.length-1)*6+14+(o.kick&&16),l=e.r,u=c[e.actor].gate,d=y(p(u.ex,u.y)),f=l.y+l.h,m=l.x+l.w/2,h=l.y+l.h/2,g=[[m-14,l.y-Y-s,[m,l.y]],[m-a+14,l.y-Y-s,[m,l.y]],[l.x+l.w+Y,h-s/2,[l.x+l.w,h]],[l.x-Y-a,h-s/2,[l.x,h]],[l.x+l.w+Y,f-s,[l.x+l.w,f-4]],[l.x-Y-a,f-s,[l.x,f-4]],[d[0]-14,f+Y,d],[d[0]-a+14,f+Y,d],[m-a/2,f+Y,d]].map(([e,t,n])=>({x:e,y:t,w:a,h:s,anchor:n})),_=B([n.narrow?[...g.slice(6),...g.slice(0,6)]:g,...[d,[m,l.y],[l.x,h],[l.x+l.w,h]].map(e=>()=>bt(e,a,s,[12,24]))]);ne.push({actor:e.actor,r:{x:_.x,y:_.y,w:a,h:s},anchor:_.anchor,rows:i,kick:!!o.kick}),D.push(_)}let W=e=>t.hi.includes(e)?0:l.path.includes(e)?1:2,re=c.map((e,t)=>t).sort((e,t)=>W(e)-W(t));for(let e of re)V.some(t=>t.actor===e)||H(e);function ie(e,t,n,[r,i]){let a={l:f-r,r:r-h,t:m-i,b:i-g},o=Object.keys(a).reduce((e,t)=>a[t]>a[e]?t:e),s=o===`l`||o===`r`,c=s?m:f,l=Math.max(c,s?g-n:h-t),u=Math.max(c,Math.min(l,s?i-n/2:r-t/2)),d=[];for(let e=0;e<=l-c;e+=8)for(let a of e?[u-e,u+e]:[u]){if(a<c||a>l)continue;let e=s?o===`l`?f:h-t:a,u=s?a:o===`t`?m:g-n;d.push({x:e,y:u,w:t,h:n,anchor:[r,i]})}let p=B([d]),_={x:p.x,y:p.y,w:t,h:n};return{...e,r:_,anchor:p.anchor,line:[vt(_,p.anchor),p.anchor],pin:o}}for(let e of ne){let t=V.find(t=>t.actor===e.actor)?.r,n=e.r;!e.kick||!t||Math.max(t.x-n.x-n.w,n.x-t.x-t.w,t.y-n.y-n.h,n.y-t.y-t.h)>120||(e.kick=!1,e.r={...n,y:e.anchor[1]>n.y+n.h-16?n.y+16:n.y,h:n.h-16})}return O+=w.filter(e=>!k(e.r)||!N(e.r)).length+S.filter(e=>t.summary&&!k(e.r)).length,{placed:{cam:r,tags:V,signs:ne,chips:ee,devices:w,gates:S,hulls:i?c.map(e=>e.lot.hull.map(y)):[],truck:i&&x?he(x.map(y)):void 0,arcs:i?T.map(e=>e.map(y)):[],faults:O},bad:O,pr:y}}function Pt(e,t,n,r=n.narrow?1:n.w>=1800?1.3:1.2){let i=at(e,t),a=t.summary&&n.w<d.wide?e.stories[t.story].moments.slice(-3,-1).flat():[],o=[...new Set(a.flatMap(t=>[e.boxes[t.from]?.actor,e.boxes[t.to]?.actor]))].filter(e=>e!==void 0),s=o.length?[...o.flatMap(n=>n===e.truck&&t.truck&&!i.parked()?i.truckPts(t.truck):e.actors[n].lot.hull),...e.actors.flatMap((e,n)=>t.gates[n].fail?i.gateEnds(n):[])]:t.frame.length?t.frame:e.actors.flatMap(e=>e.lot.hull),c=s.map(e=>e[0]),l=s.map(e=>e[1]),u=Math.min(...c),f=Math.max(...c),m=Math.min(...l),h=Math.max(...l);f-u<520&&([u,f]=[(u+f)/2-260,(u+f)/2+260]);let{l:g,t:_,r:v,b:y}=n.region,b=v-g,x=y-_,S=n.narrow?0:mt,C=at(e,t),w=[];e.actors.forEach(({checks:e,gate:n},r)=>{let i=t.gates[r];e&&i.rows.length&&(i.on===t.moment||t.summary&&i.fail)&&w.push([p(n.px,n.y),24],[p(n.ex,n.y),24])});for(let e of t.dev)C.inCab(e)||w.push([C.devBase(e),0],[C.devTop(e),0]);for(let e of t.arcs)e.moment===t.moment&&e.t===1&&e.text&&w.push([J(e,.5),80]);for(let e of Object.values(t.units))(e.moment===t.moment||t.summary)&&e.moment>=0&&gt(e,t.summary)&&w.push([e.where===`bed`?C.truckPts(t.truck).reduce((e,t)=>t[1]<e[1]?t:e):e.p,80]);let T=t.dev.filter(C.inCab).map(C.devTop),E=t.arcs.filter(e=>e.t>0).flatMap(e=>Array.from({length:9},(t,n)=>J(e,e.t*n/8)));if(!n.narrow)for(let e of E)w.push([e,-14]);let D=(e,t,n,r)=>{let i=(t-e.x)*e.z+(g+v)/2,a=(n-e.y)*e.z+(_+y)/2;return i>=g-r&&i<=v+r&&a>=_-r&&a<=y+r},O=e=>w.every(([[t,n],r])=>D(e,t,n,r)),k=r=>{let i=Nt(e,t,n,r),a=(n.narrow?[...i.placed.signs,...i.placed.tags,...i.placed.devices,...i.placed.chips]:[]).map(e=>e.r),o=[...s,...E,...T].map(i.pr);return{lay:i,L:Math.min(...a.map(e=>e.x),...o.map(e=>e[0])),R:Math.max(...a.map(e=>e.x+e.w),...o.map(e=>e[0])),T:Math.min(...a.map(e=>e.y),...o.map(e=>e[1])),B:Math.max(...a.map(e=>e.y+e.h),...o.map(e=>e[1]))}},A=(e=>{let t=null,n,i=Math.max(e,Math.min((b-S)/(f-u),(x-2*S)/(h-m),r));for(let r=0;r<60&&i>=e;r++,i*=.96){let e={x:(u+f)/2,y:(m+h)/2,z:i};for(let r=0;r<3;r++){let a=k(e);if(n=a.lay,r<2){e={x:e.x+((a.L+a.R)/2-(g+v)/2)/i,y:e.y+((a.T+a.B)/2-(_+y)/2)/i,z:i};continue}if(a.R-a.L<=b-S&&a.B-a.T<=x-2*S){if(!a.lay.bad&&O(e))return{lay:a.lay,ok:!0};(!t||a.lay.bad<t.bad)&&(t=a.lay)}}}return{lay:t??n,ok:!1}})(Math.min(n.narrow?ft:.3,r)),j=r=>Nt(e,t,n,r.placed.cam,!0).placed;if(A.ok)return j(A.lay);let M=n.narrow?Math.min(ft,r):A.lay.placed.cam.z,N={x:(u+f)/2,y:(m+h)/2},P=e.stories[t.story],F=t.truck&&!C.parked()?C.truckPts(t.truck).reduce((e,t)=>t[1]<e[1]?t:e):null,I=e.actors.flatMap((n,r)=>t.hi.includes(r)||t.summary&&P.path.includes(r)?[r===e.truck&&F?F:n.lot.tag]:[]),L=e=>n.narrow?I.filter(([t,n])=>!D(e,t,n,0)).length:0,R=[],z=0,B=(e,t)=>t+Math.abs(e.z-M)*1e3+L(e)*300,V=r=>{for(let{c:i}of r.sort((e,t)=>e.score-t.score)){if(!O(i))continue;if(++z>zt)return;let r=R.length<4?1/0:R.map(e=>e.bad).sort((e,t)=>e-t)[3];try{let a=Nt(e,t,n,i,!1,r);if(!a.bad)return a;R.push({c:i,bad:a.bad})}catch(e){if(e!==pt)throw e}}},H=(e,t)=>V(t.flatMap(t=>Lt.flatMap(n=>Lt.map(r=>{let i={x:e.x+r/t,y:e.y+n/t,z:t};return{c:i,score:B(i,Math.hypot(r,n))}})))),ee=()=>V(R.sort((e,t)=>e.bad-t.bad).slice(0,4).flatMap(({c:e})=>Rt.flatMap(t=>Rt.map(n=>{let r={x:e.x+n/e.z,y:e.y+t/e.z,z:e.z};return{c:r,score:B(r,Math.hypot(r.x-N.x,r.y-N.y)*e.z)}})))),U=[...new Set([0,1,2,3,4,5].map(e=>Math.min(r,n.narrow?ft+e*.1:M*(1-e*.08))))],te=[.4,.35,.3,.25].filter(e=>e<Math.min(...U));return j(H(Bt(e,t)??N,U)??H(N,U)??H(N,te)??ee()??A.lay)}function Ft(e,t,n){let r=e.stories[t].moments.length,i=[];if(!r)return i;i[r-1]=Pt(e,dt(e,t,r-1,1/0),n);for(let a=r-2;a>=0;a--)i[a]=Pt(e,dt(e,t,a,1/0),n,Math.min(n.narrow?1:n.w>=1800?1.3:1.2,i[a+1].cam.z*(a===r-2&&n.w<d.wide?1:1.2)));let a=i[r-1].cam.z,o=e.stories[t].path.flatMap(t=>e.actors[t].lot.hull.map(e=>e[0])),s=n.w<d.wide?i[r-2].cam.z*2:(Math.max(...o)-Math.min(...o))*a<.7*(n.region.r-n.region.l)?i[r-2].cam.z*.92:i[r-2].cam.z*1.2,c=dt(e,t,r-1,1/0);if(a>s){let t=Pt(e,c,n,s);t.faults||(i[r-1]=t)}return i}function It(e,t,n){let r=n.form===`stack`||n.form===`spread`?[n.form,`narrow`]:[n.form],i={sc:e(r[0]),cams:[]};for(let a of r)if(i={sc:e(a),cams:Ft(e(a),t,n)},!i.cams.some(e=>e.faults))break;return i}var Lt=Array.from({length:13},(e,t)=>(t-6)*40),Rt=[-30,-20,-10,0,10,20,30],zt=400;function Bt(e,t){if(t.lead)return{x:t.lead[0],y:t.lead[1]};let n=e.stories[t.story].moments[t.moment]??[],r=[];for(let n of ct(e,t.story,t.moment).steps)n.hop>=0&&(r[n.hop]=Math.max(r[n.hop]??0,n.end));let i=-1;r.forEach((e,t)=>i=i<0||e>=r[i]?t:i);let a=i>=0?e.boxes[n[i].to]?.actor:void 0,o=a===void 0?void 0:Ue(e.actors[a].lot.hull);return o?{x:o[0],y:o[1]}:null}var X=`#141A22`,Vt=[`[data-stage=world]{overflow:hidden}[data-stage=world]>svg,.fw-ov>svg{position:absolute;inset:0;width:100%;height:100%}`,`.bld{transition:opacity .3s,filter .3s}.bld.quiet{opacity:.4;filter:saturate(.15)}.pad{opacity:0;transition:opacity .3s}.pad.on{opacity:1}`,`.fw-ov{position:absolute;inset:0;pointer-events:none;overflow:hidden;font-family:var(--flowfig-font);color:${X}}`,`.fw-tag,.fw-sign,.fw-dchip{position:absolute;left:0;top:0;box-sizing:border-box;overflow:hidden;white-space:nowrap;background:#fff;border:1px solid rgba(20,26,34,.16);transition:opacity .2s}`,`.fw-tag{padding:4px 9px;border-radius:6px}`,`.fw-tn{display:block;font:600 14.8px/19px var(--flowfig-font);color:${X}}`,`.fw-ts{display:flex;font:400 13.8px/17px var(--flowfig-font);color:#4B5361}`,`.fw-mk{display:inline-grid;place-items:center;flex:none;width:14px;height:14px;margin:2px 6px 0 0;border-radius:3px;background:${X};color:#fff;font:700 10px/1 var(--flowfig-font);font-style:normal}`,`.fw-no{color:${K.fail}}.fw-no>.fw-mk{background:${K.fail}}.fw-dchip>.fw-mk{margin-top:0}`,`.fw-tag{transition:opacity .2s,border-color .16s .2s,background-color .16s .2s}.fw-end{border:2px solid ${X};background:#EEF1EA}.fw-end.fw-x{border-color:${K.fail};background:#FCEBE8}.fw-end .fw-tn{font-size:16px;line-height:20px}`,`.fw-cg{font:500 13px/20px var(--flowfig-font)}`,`.fw-sk{font:500 12px/16px var(--flowfig-font);color:#5B6370}`,`.fw-quiet .fw-tn,.fw-quiet .fw-ts{color:#646C79}`,`.fw-sign{padding:6px 10px;border-radius:8px}`,`.fw-row{display:flex;align-items:center;justify-content:space-between;height:30px}.fw-row+.fw-row{margin-top:6px}`,`.fw-q{font:600 15px/20px var(--flowfig-font);color:${X}}`,`.fw-a{margin-left:12px;padding:0 6px;border-radius:5px;font:600 13px/24px var(--flowfig-font);background:#EEF1EA;color:${X}}`,`.fw-a.fw-no{background:#FCEBE8;color:${K.fail}}.fw-a.fw-no::before{content:"\\2717";margin-right:4px}`,`.fw-a.fw-m{display:inline-grid;place-items:center;width:14px;height:14px;padding:0;border-radius:3px;font:700 10px/1 var(--flowfig-font)}.fw-a.fw-m::before{content:none}`,`.fw-dchip{display:flex;align-items:center;padding:0 9px;border-radius:6px;font:600 13px/1 var(--flowfig-font);color:${K.data}}`,`.fw-dchip.fw-thing{color:${X}}.fw-dchip{transition:opacity .2s,scale .2s cubic-bezier(.23,1,.32,1)}.fw-dchip.fw-off{scale:.96}.gt{transition:opacity .2s}`,`.fw-off{opacity:0}`,`@container ff-guide (width < ${d.slim*2}px){.fw-tn{font-size:13px;line-height:16px}.fw-ts{font-size:12px;line-height:15px}.fw-mk{margin:1px 4px 0 0}.fw-sk{display:none}.fw-end .fw-tn{font-size:14px;line-height:17px}.fw-row{height:24px}.fw-q{font-size:13px;line-height:17px}.fw-a{font-size:12px;line-height:20px}.fw-dchip{font-size:12px}}`].join(``),Z=e=>e.toFixed(1),Q=e=>`${Z(e[0])},${Z(e[1])}`,Ht=(e,t)=>{let n=Ve(e.a,e.c1,t),r=Ve(e.c1,e.c2,t),i=Ve(e.c2,e.b,t),a=Ve(n,r,t),o=Ve(r,i,t),s=Ve(a,o,t);return[{a:e.a,c1:n,c2:a,b:s},{a:s,c1:o,c2:i,b:e.b}]},Ut=(e,t,n)=>{let r=t>0?Ht(e,t)[1]:e;return n<1&&(r=Ht(r,(n-t)/(1-t))[0]),`M${Q(r.a)}C${Q(r.c1)} ${Q(r.c2)} ${Q(r.b)}`},Wt=`http://www.w3.org/2000/svg`,$=(e,t,n)=>{let r=document.createElement(e);return r.className=t,n!==void 0&&(r.textContent=n),r},Gt=(e,t)=>{e.style.transform=`translate(${Z(t.x)}px,${Z(t.y)}px)`,e.style.width=`${Z(t.w)}px`,e.style.height=`${Z(t.h)}px`},Kt=(e,t)=>{e.textContent!==t&&(e.textContent=t)},qt;function Jt(e,t,n,r){let i=e.getRootNode();qt||(qt=new CSSStyleSheet,qt.replaceSync(Vt)),i.adoptedStyleSheets.includes(qt)||(i.adoptedStyleSheets=[...i.adoptedStyleSheets,qt]),e.dataset.stage=`world`;let a={},o=e=>a[e]??=Ie(t,e),s=document.createElementNS(Wt,`svg`);s.setAttribute(`role`,`img`);let c=$(`div`,`fw-ov`);e.append(s,c);let l=e=>s.querySelector(e),u=/* @__PURE__ */ new Map,d=o(`narrow`),f=()=>{let e=d.truckArt;return s.innerHTML=`<g class="fw-cam">${d.svg}${e?.door??``}<g class="fw-units"></g>${e?.road??``}`+d.actors.map((e,t)=>e.device===`antenna`?``:`<g class="fw-dev" data-a="${t}">${je.svg}</g>`).join(``)+`<g class="fw-arcs"></g></g>`,u.clear(),{art:e,depot:d.truck>=0?d.actors[d.truck].lot.depot:null,camG:l(`.fw-cam`),unitsG:l(`.fw-units`),arcsG:l(`.fw-arcs`),doorPanel:l(`#doorPanel`),devs:new Map([...s.querySelectorAll(`.fw-dev`)].map(e=>[Number(e.dataset.a),e])),arms:[...s.querySelectorAll(`.arm`)],arms2:[...s.querySelectorAll(`.armW`)],hubs:[...s.querySelectorAll(`.hub`)],gts:[...s.querySelectorAll(`.gt`)],checkers:d.actors.flatMap((e,t)=>e.checks?[t]:[])}},m=f(),h=(e,t)=>e?.setAttribute(`display`,t?`inline`:`none`),g=(e,t,n=1)=>e?.setAttribute(`transform`,`translate(${Z(t[0])} ${Z(t[1])})${n===1?``:` scale(${n})`}`),_=kt(0,0),v,y,b=0,x=``,S=``,C=/* @__PURE__ */ new Map,w=[],T=[],E=[],D=e=>kt(_.w,_.h,r(e)),O=e=>C.get(e)??C.set(e,It(o,e,D(e))).get(e),k=e=>{e!==d&&(d=e,m=f(),x=``,v=void 0)},A=(e,t)=>{let n=O(e);return k(n.sc),n.cams[t]};function j(e,t){let{l:n,t:r,r:i,b:a}=_.region;m.camG.setAttribute(`transform`,`translate(${Z((n+i)/2)} ${Z((r+a)/2)}) scale(${t.z.toFixed(4)}) translate(${Z(-t.x)} ${Z(-t.y)})`);let o=at(d,e),s=!!e.truck&&!o.parked();if(e.truck&&m.depot){let t=e.truck;for(let[e,n]of[[`#truck`,`L`],[`#truckR`,`R`],[`#truckY`,`y`],[`#truckD`,`D`],[`#truckU`,`U`]])h(l(e),t.orient===n),g(l(e),p(t.x,t.y-(`LR`.includes(n)?_e-G/2:0)));let n=m.depot.y+.004,r=m.depot.x+.3,i=m.depot.x+1.8,a=1.03*t.door,o=(e,t,a)=>`<polygon points="${[p(r,n,e),p(i,n,e),p(i,n,t),p(r,n,t)].map(Q).join(` `)}" fill="${a}"/>`,s=o(a,1.03,`#3b463d`);for(let e=0;e<9;e++){let t=.1+e*.105;t>a&&(s+=o(t,Math.min(1.03,t+.035),`#56645a`))}m.doorPanel&&m.doorPanel.dataset.k!==s&&(m.doorPanel.innerHTML=s,m.doorPanel.dataset.k=s);for(let n of`lrdu`)for(let r=0;r<8;r++){let i=l(`#t${n}${r}`),a=t.load[r]?d.things.get(e.units[t.load[r]].thing)?.form:void 0;i&&i.dataset.k!==(a??``)&&(i.innerHTML=a?De[a]:``,i.dataset.k=a??``)}}for(let[t,n]of Object.entries(e.units)){let e=u.get(t);e||(e=document.createElementNS(Wt,`g`),e.innerHTML=De[d.things.get(n.thing)?.form??`box`],m.unitsG.append(e),u.set(t,e));let r=n.where===`yard`||n.where===`road`||n.where===`gate`||n.where===`air`;h(e,r),r&&g(e,n.p)}for(let[t,n]of u)e.units[t]||h(n,!1);for(let[n,r]of m.devs){h(r,e.dev.includes(n)),g(r,o.devBase(n),(o.inCab(n)?.82:1)*_t(t.z,_));for(let t of r.querySelectorAll(`.scr`))h(t,t.getAttribute(`data-s`)===(e.screens[n]??`idle`))}m.checkers.forEach((t,n)=>{let r=d.actors[t].gate,i=e.gates[t],a=i.deg*Math.PI/180,o=p(r.px,r.y,r.z),s=p(r.px+r.L*Math.cos(a),r.y,r.z+r.L*Math.sin(a));for(let e of[m.arms[n],m.arms2[n]])e.setAttribute(`x1`,Z(o[0])),e.setAttribute(`y1`,Z(o[1])),e.setAttribute(`x2`,Z(s[0])),e.setAttribute(`y2`,Z(s[1]));m.arms[n].setAttribute(`stroke`,i.fail?K.fail:`#2e3440`),m.gts[n].style.opacity=i.on===e.moment||i.fail?``:`0`,m.hubs[n].setAttribute(`cx`,Z(o[0])),m.hubs[n].setAttribute(`cy`,Z(o[1]))});let c=``;for(let t of e.arcs){let n=t.fail?K.fail:K.data,r=t.dashed?` stroke-dasharray="7 6"`:``;c+=`<path d="${Ut(t,0,t.t)}" fill="none" stroke="${K.data}" stroke-opacity="${e.summary?t.fail?.38:.38*(e.fade??0):t.moment===e.moment||t.hold?.38:.16}" stroke-width="2" stroke-linecap="round"${r}/>`,t.t<1?c+=`<path d="${Ut(t,Math.max(0,t.t-.16),t.t)}" fill="none" stroke="${n}" stroke-width="3.2" stroke-linecap="round"/>`:t.fail&&(c+=`<path d="${Ut(t,.86,1)}" fill="none" stroke="${K.fail}" stroke-width="3.2" stroke-linecap="round"/>`),t.t>0&&(t.t<1||t.hold)&&(c+=`<circle cx="${Z(J(t,t.t)[0])}" cy="${Z(J(t,t.t)[1])}" r="7" fill="${n}" stroke="#fff" stroke-width="2.4"/>`)}m.arcsG.innerHTML=c,d.actors.forEach((t,n)=>{l(`#pad-${n}`)?.classList.toggle(`on`,e.hi.includes(n)&&!(n===d.truck&&s)),l(`#b-${n}`)?.classList.toggle(`quiet`,!d.stories[e.story].path.includes(n))})}function M(e,t){let n=document.createElementNS(Wt,`svg`),r=``;w=e.tags.map(e=>{let n=$(`div`,`fw-tag${e.quiet?` fw-quiet`:``}`),i=$(`i`,`fw-mk`),a=$(`span`,`fw-ts`);n.dataset.actor=e.name,a.append(i,``),n.append($(`b`,`fw-tn`,e.name),a);for(let t of e.cargo){let e=$(`span`,`fw-ts fw-cg`);e.append($(`i`,`fw-mk`,`✓`),t),n.append(e)}if(Gt(n,e.r),t.acting[y?.moment??-1]===e.name&&n.setAttribute(`aria-current`,`true`),e.pin){let{r:t}=e,[n,i]=e.anchor,a=e.pin===`l`?t.x:e.pin===`r`?t.x+t.w:Math.max(t.x+9,Math.min(t.x+t.w-9,n)),o=e.pin===`t`?t.y:e.pin===`b`?t.y+t.h:Math.max(t.y+9,Math.min(t.y+t.h-9,i));r+=`<path d="M-6 0H6L0 8Z" transform="translate(${Q([a,o])}) rotate(${{l:90,t:180,r:-90,b:0}[e.pin]})" fill="${X}"/>`}else r+=`<path d="M${Q(e.line[0])}L${Q(e.line[1])}" stroke="${X}" stroke-opacity=".55"/><circle cx="${Z(e.line[1][0])}" cy="${Z(e.line[1][1])}" r="2.5" fill="${X}"/>`;return{el:n,actor:e.actor,name:e.name,mk:i,st:a,end:e.end,w:n.style.width}}),T=e.signs.map(e=>{let t=$(`div`,`fw-sign`);e.kick&&t.append($(`div`,`fw-sk`,d.actors[e.actor].name));let n=e.rows.map(e=>{let n=$(`div`,`fw-row`),r=$(`span`,`fw-q`,e.q),i=$(`span`,e.a?`fw-a`:`fw-a fw-m`);return n.append(r,i),t.append(n),{q:r,a:i,m:!e.a}});return Gt(t,e.r),r+=`<path d="M${Q(e.anchor)}L${Q(vt(e.r,e.anchor))}" stroke="#2e3440" stroke-width="2"/>`,{el:t,actor:e.actor,rows:n}});let i=0;E=e.chips.map(e=>{let t=$(`div`,`fw-dchip${d.things.has(e.text)?` fw-thing`:``}`);return e.mark&&(t.append($(`i`,`fw-mk`,e.mark)),t.style.transitionDelay=`${i++*60}ms`),t.append(e.text),Gt(t,e.r),{el:t,text:e.text}}),n.innerHTML=r,c.replaceChildren(n,...w.map(e=>e.el),...T.map(e=>e.el),...E.map(e=>e.el))}function N(e,t){let n=d.stories[e.story],r=e.summary?n.path:e.hi,i=d.boxes[n.end],a=[];if(e.summary&&i){a.push(`End: ${i.label}${e.ever[i.actor]?.fail?`, failed`:``}.`);let t=/* @__PURE__ */ new Set;for(let n of Object.values(e.units))n.moment>=0&&!t.has(n.thing)&&a.push(`${t.add(n.thing)&&n.thing}: ${n.fail?`stopped`:`kept`}.`)}for(let t of w){let n=e.ever[t.actor];n&&r.includes(t.actor)&&a.push(`${t.name}: ${Le(n,e.summary)}${n.fail?`, failed`:``}.`)}s.setAttribute(`aria-label`,a.join(` `)||S);for(let n of w){let r=e.ever[n.actor];n.mk.hidden=!r,Kt(n.mk,r?r.fail?`✗`:`✓`:``),Kt(n.st.lastChild,r?Le(r,e.summary):`Not reached`),n.st.classList.toggle(`fw-no`,!!r?.fail),n.el.classList.toggle(`fw-end`,e.summary&&t&&n.end),n.el.style.width=t?n.w:`max-content`,n.el.style.minWidth=t?``:n.w,n.el.classList.toggle(`fw-x`,!!r?.fail)}for(let n of T){let r=e.gates[n.actor];n.el.classList.toggle(`fw-off`,!t&&(!r.rows.length||r.on!==e.moment&&!e.summary)),n.rows.forEach((e,t)=>{let n=r.rows[t];e.q.parentElement.style.visibility=n?``:`hidden`,Kt(e.a,e.m&&n?.a?n.fail?`✗`:`✓`:n?.a??``),e.a.hidden=!n?.a,e.a.classList.toggle(`fw-no`,!!n?.fail)})}let o=/* @__PURE__ */ new Set;for(let t of e.arcs)t.moment===e.moment&&t.t===1&&t.text&&o.add(t.text);for(let t of Object.values(e.units))t.moment===e.moment&&(t.where===`yard`||t.where===`gate`)&&o.add(t.thing);for(let e of E)e.el.classList.toggle(`fw-off`,!t&&!o.has(e.text))}function P(e,t){let{story:n,moment:r}=y,i=A(n,r),a=`${n}/${r}/${_.w}x${_.h}`;x!==a&&(x=a,M(i,d.stories[n]));let o=dt(d,n,r,e?1/0:t);j(o,v),N(o,e)}let F=()=>{let{width:t,height:n}=e.getBoundingClientRect();return t===_.w&&n===_.h?!1:(_=kt(t,n),C.clear(),k(o(_.form)),s.setAttribute(`viewBox`,`0 0 ${t} ${n}`),!0)},I=new ResizeObserver(()=>{F()&&y&&_.w&&(cancelAnimationFrame(b),n())});return I.observe(e),F(),{show(e,t,n,r){if(cancelAnimationFrame(b),S=r,y={story:e,moment:t},!_.w||!_.h)return 0;_=D(e);let i=A(e,t).cam,a=v??i;if(!n)return v=i,P(!0,0),0;let{end:o,events:s}=ut(d,e,t),c=s.find(e=>e.kind===`camera`),l=performance.now(),u=e=>{let t=e-l;if(t>=o)return v=i,P(!0,0);let n=q.out(Math.min(1,Math.max(0,(t-c.start)/(c.end-c.start))));v={x:a.x+(i.x-a.x)*n,y:a.y+(i.y-a.y)*n,z:a.z+(i.z-a.z)*n},P(!1,t),b=requestAnimationFrame(u)};return u(l),o},fits(e){try{return!_.w||O(e).cams.every(e=>!e.faults)}catch{return!1}},stop(){cancelAnimationFrame(b),I.disconnect()}}}export{Jt as mountWorld,Ie as scene};
@@ -0,0 +1,27 @@
1
+ import { type FlowProps } from './model.ts';
2
+ declare const Base: typeof HTMLElement;
3
+ export declare class FlowfigExplain extends Base {
4
+ #private;
5
+ static observedAttributes: string[];
6
+ constructor();
7
+ connectedCallback(): void;
8
+ disconnectedCallback(): void;
9
+ attributeChangedCallback(name: string, old: string | null, value: string | null): void;
10
+ get spec(): FlowProps | undefined;
11
+ set spec(v: FlowProps | undefined);
12
+ get beforeSpec(): FlowProps | undefined;
13
+ set beforeSpec(v: FlowProps | undefined);
14
+ get moment(): number;
15
+ set moment(i: number);
16
+ next(): void;
17
+ back(): void;
18
+ play(): void;
19
+ pause(): void;
20
+ show(stepLabel: string): void;
21
+ }
22
+ declare global {
23
+ interface HTMLElementTagNameMap {
24
+ 'flowfig-explain': FlowfigExplain;
25
+ }
26
+ }
27
+ export {};