1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[68255],{13747:(e,t,n)=>{n.d(t,{SK:()=>i,Y8:()=>s,gH:()=>a});var r=n(1850);let o="/playground/fonts/v1/noto-sans-jp/";function a(e){try{let t=new URL(e);if("https:"!==t.protocol&&"http:"!==t.protocol||t.username||t.password||"/"!==t.pathname||t.search||t.hash)return;return new URL(o,t.origin).toString()}catch{return}}function s(e){try{let t=new URL(e);return("https:"===t.protocol||"http:"===t.protocol)&&""===t.username&&""===t.password&&""===t.search&&""===t.hash&&t.pathname===o}catch{return!1}}function i(e){return e&&s(e)?["@font-face{font-family:'"+r.rz+"';font-style:normal;font-display:swap;font-weight:400;src:url("+e+"noto-sans-jp-japanese-400-normal.woff2) format('woff2')}","@font-face{font-family:'"+r.rz+"';font-style:normal;font-display:swap;font-weight:700;src:url("+e+"noto-sans-jp-japanese-700-normal.woff2) format('woff2')}"].join(""):""}},28480:(e,t,n)=>{n.d(t,{An:()=>y,IN:()=>a,Pb:()=>u,VL:()=>f,bU:()=>m,mc:()=>v,vC:()=>h});var r=n(1850),o=n(13747);let a="allow-scripts",s=`(() => { 2 const root = document.documentElement; 3 const sessionNonce = root.dataset.session || ""; 4 const releaseDigest = root.dataset.release || ""; 5 const language = root.dataset.language || "ja"; 6 const strings = JSON.parse(root.dataset.strings || "{}"); 7 const editableValues = JSON.parse(root.dataset.editableValues || "{}"); 8 const assets = JSON.parse(root.dataset.assets || "{}"); 9 const capabilities = JSON.parse(root.dataset.capabilities || "[]"); 10 const pending = new Map(); 11 const maxInFlight = ${r.gT}; 12 const maxRequestBytes = ${r.RL}; 13 let sequence = 0; 14 const interpolate = (text, params) => Object.entries(params || {}).reduce( 15 (result, [key, value]) => result.split("{" + key + "}").join(String(value)), 16 text, 17 ); 18 const call = (method, payload = null, idempotencyKey = null) => new Promise((resolve, reject) => { 19 if (pending.size >= maxInFlight) { 20 reject(new Error("NIHO playground RPC in-flight limit exceeded")); 21 return; 22 } 23 const requestId = "tab_" + (++sequence) + "_" + Date.now(); 24 const request = { requestId, bridgeVersion: "0.1.0", releaseDigest, sessionNonce, method, idempotencyKey, payload }; 25 if (new TextEncoder().encode(JSON.stringify(request)).byteLength > maxRequestBytes) { 26 reject(new Error("NIHO playground RPC request too large")); 27 return; 28 } 29 const timeout = setTimeout(() => { 30 pending.delete(requestId); 31 reject(new Error("NIHO playground RPC timeout")); 32 }, 5000); 33 pending.set(requestId, { resolve, reject, timeout }); 34 parent.postMessage({ 35 channel: "niho.playground.v0", 36 kind: "rpc", 37 sessionNonce, 38 releaseDigest, 39 request, 40 }, "*"); 41 }); 42 const mutationKey = () => typeof crypto.randomUUID === "function" 43 ? crypto.randomUUID() 44 : "mutation_" + Date.now() + "_" + Math.random().toString(16).slice(2); 45 addEventListener("message", (event) => { 46 const data = event.data; 47 if (event.source !== parent || !data || data.channel !== "niho.playground.v0" || data.kind !== "rpc-response") return; 48 if (data.sessionNonce !== sessionNonce || data.releaseDigest !== releaseDigest || !data.response) return; 49 const entry = pending.get(data.response.requestId); 50 if (!entry) return; 51 clearTimeout(entry.timeout); 52 pending.delete(data.response.requestId); 53 if (data.response.ok) entry.resolve(data.response.value); 54 else entry.reject(Object.assign(new Error(data.response.error.messageKey), { code: data.response.error.code })); 55 }); 56 const api = { 57 viewer: { get: () => call("viewer.get") }, 58 spot: { get: () => call("spot.get") }, 59 settings: { get: (key) => Object.prototype.hasOwnProperty.call(editableValues, key) ? editableValues[key] : undefined }, 60 assets: { url: (key) => Object.prototype.hasOwnProperty.call(assets, key) ? assets[key] : undefined }, 61 t: (key, params) => { 62 if (!capabilities.includes("strings.resolve")) throw new Error("NIHO playground capability denied"); 63 return interpolate(strings[language]?.[key] ?? strings.ja?.[key] ?? key, params); 64 }, 65 diag: { 66 ready: () => call("diag.ready"), 67 error: (input) => call("diag.error", input), 68 }, 69 ui: { confirm: (input) => call("ui.confirm", input) }, 70 devices: { 71 list: () => call("devices.list"), 72 execute: (input) => call("devices.execute", input, mutationKey()), 73 }, 74 records: { 75 consent: (input) => call("records.consent", input, mutationKey()), 76 list: (input) => call("records.list", input), 77 append: (input) => call("records.append", input, mutationKey()), 78 delete: (input) => call("records.delete", input, mutationKey()), 79 }, 80 scripts: { status: () => call("scripts.status") }, 81 }; 82 Object.defineProperty(window, "niho", { value: Object.freeze(api), configurable: false, writable: false }); 83})();`,i=`(() => { 84 const root = document.documentElement; 85 const sessionNonce = root.dataset.session || ""; 86 const releaseDigest = root.dataset.release || ""; 87 const authoringDigest = root.dataset.authoringDigest || ""; 88 const allowedNodes = new Set(JSON.parse(root.dataset.authoringNodes || "[]")); 89 let enabled = false;
90 let selectedNodeId = null; 91 const renderSelection = () => { 92 document.querySelectorAll("[data-niho-authoring-selected]").forEach((node) => node.removeAttribute("data-niho-authoring-selected")); 93 if (!enabled || !selectedNodeId || !allowedNodes.has(selectedNodeId)) return; 94 const node = document.querySelector('[data-niho-node="' + CSS.escape(selectedNodeId) + '"]'); 95 if (node) node.setAttribute("data-niho-authoring-selected", "true"); 96 }; 97 addEventListener("message", (event) => { 98 const data = event.data; 99 if (event.source !== parent || !data || data.channel !== "niho.playground.authoring.v0" || data.kind !== "state") return; 100 if (data.sessionNonce !== sessionNonce || data.releaseDigest !== releaseDigest || data.authoringDigest !== authoringDigest) return; 101 enabled = data.enabled === true; 102 selectedNodeId = typeof data.selectedNodeId === "string" && allowedNodes.has(data.selectedNodeId) ? data.selectedNodeId : null; 103 renderSelection(); 104 }); 105 document.addEventListener("click", (event) => { 106 if (!enabled || !(event.target instanceof Element)) return; 107 const node = event.target.closest("[data-niho-node]"); 108 const nodeId = node?.getAttribute("data-niho-node") || ""; 109 if (!allowedNodes.has(nodeId)) return; 110 event.preventDefault(); 111 event.stopPropagation(); 112 event.stopImmediatePropagation(); 113 parent.postMessage({ 114 channel: "niho.playground.authoring.v0", 115 kind: "node-select", 116 sessionNonce, 117 releaseDigest, 118 authoringDigest, 119 nodeId, 120 }, "*"); 121 }, true); 122})();`,d=["ELEMENT_CLICK","FORM_SUBMIT","INPUT_CHANGE","LIST_ITEM_CLICK"],c=`(() => { 123 var root = document.documentElement; 124 var sessionNonce = root.dataset.session || ""; 125 var releaseDigest = root.dataset.release || ""; 126 var NODE_ID_PATTERN = /^[A-Za-z][A-Za-z0-9-]{0,79}$/; 127 var bindings = []; 128 try { 129 bindings = JSON.parse(root.dataset.workflowBindings || "[]"); 130 } catch (error) { 131 bindings = []; 132 } 133 var boundByEvent = { ELEMENT_CLICK: {}, FORM_SUBMIT: {}, INPUT_CHANGE: {}, LIST_ITEM_CLICK: {} };
134 bindings.forEach(function (binding) { 135 if (!binding || typeof binding.nodeId !== "string" || !NODE_ID_PATTERN.test(binding.nodeId)) return; 136 var set = boundByEvent[binding.event]; 137 if (set) set[binding.nodeId] = true; 138 }); 139 var post = function (message) { 140 parent.postMessage(Object.assign({ 141 channel: "niho.playground.workflow.v1", 142 sessionNonce: sessionNonce, 143 releaseDigest: releaseDigest, 144 }, message), "*"); 145 }; 146 var findBoundAncestor = function (start, boundSet) { 147 var node = start; 148 while (node && node.nodeType === 1) { 149 if (node.hasAttribute("data-niho-node")) { 150 var nodeId = node.getAttribute("data-niho-node") || ""; 151 if (NODE_ID_PATTERN.test(nodeId) && boundSet[nodeId]) return { nodeId: nodeId, element: node }; 152 } 153 node = node.parentElement; 154 } 155 return null; 156 }; 157 // ä¸è¦§ã®é ç®ï¼#15566ï¼: data-niho-record-id ãæã¤ç¥å ï¼LISTãè¨é²ãã¨ã«æãliï¼ãæ¢ãã 158 // record idã¯ãã®DOM屿§ç±æ¥ãªã®ã§ã親ã¯cacheã«ç¡ãrecord idã®eventãä¿¡ç¨ããªã 159 // ï¼member-playground-tab.tsxåç §ï¼ã 160 var findRecordAncestor = function (start) { 161 var node = start; 162 while (node && node.nodeType === 1) { 163 if (node.hasAttribute("data-niho-record-id")) return node; 164 node = node.parentElement; 165 } 166 return null; 167 }; 168 var readFieldValue = function (field) { 169 var tag = field.tagName; 170 var type = (field.getAttribute("type") || "").toLowerCase(); 171 if (tag === "INPUT" && type === "checkbox") return field.checked; 172 if (tag === "INPUT" && (type === "number" || type === "range")) { 173 if (field.value === "") return null; 174 var parsed = Number(field.value); 175 return isNaN(parsed) ? null : parsed; 176 } 177 if (tag !== "INPUT" && tag !== "TEXTAREA" && tag !== "SELECT") { 178 // CHOICE (#15567): the [data-niho-field] element is the choices 179 // container, not a form control itself. The submitted value is the 180 // selected option's stable node ID (radio value), or null when unset. 181 var checkedOption = field.querySelector('input[type="radio"]:checked'); 182 return checkedOption ? checkedOption.value : null; 183 } 184 if (typeof field.value === "string") return field.value; 185 return field.textContent || ""; 186 }; 187 var collectFormInputs = function (container) { 188 var inputs = {}; 189 if (!container) return inputs; 190 var fields = container.querySelectorAll("[data-niho-field]"); 191 for (var index = 0; index < fields.length; index += 1) { 192 var field = fields[index]; 193 var key = field.getAttribute("data-niho-field"); 194 if (!key) continue; 195 inputs[key] = readFieldValue(field); 196 } 197 return inputs; 198 }; 199 document.addEventListener("click", function (event) { 200 var match = findBoundAncestor(event.target, boundByEvent.ELEMENT_CLICK); 201 if (!match) return; 202 post({ kind: "event", nodeId: match.nodeId, eventType: "ELEMENT_CLICK" }); 203 }, true); 204 document.addEventListener("submit", function (event) { 205 var target = event.target; 206 if (!target || target.tagName !== "FORM") return; 207 var match = findBoundAncestor(target, boundByEvent.FORM_SUBMIT); 208 if (!match) return; 209 event.preventDefault(); 210 post({ kind: "event", nodeId: match.nodeId, eventType: "FORM_SUBMIT", formInputs: collectFormInputs(match.element) }); 211 }, true); 212 document.addEventListener("change", function (event) { 213 var match = findBoundAncestor(event.target, boundByEvent.INPUT_CHANGE); 214 if (!match) return; 215 post({ kind: "event", nodeId: match.nodeId, eventType: "INPUT_CHANGE", formInputs: collectFormInputs(match.element) }); 216 }, true); 217 document.addEventListener("click", function (event) { 218 // ä¸è¦§ã®é ç®ãæ¼ããã¨ãï¼#15566ï¼: ã¯ãªãã¯ã®ç¥å ã«è¨é²ã®è¡ï¼[data-niho-record-id]ï¼ã¨ã 219 // æç¸ãããä¸è¦§ï¼LISTï¼ã®nodeãããã°éããELEMENT_CLICKã¨ã¯å¥ã®listenerã«ãã¦ã 220 // åãclickã§ä¸¡æ¹ãç¬ç«ã«å¤å®ã§ããããã«ããï¼ä¸è¦§ã®è¡ã®ä¸ã«å¥ã®bound buttonããã£ã¦ã 221 // äºãã妨ããªãï¼ã 222 var recordNode = findRecordAncestor(event.target); 223 if (!recordNode) return; 224 var match = findBoundAncestor(recordNode, boundByEvent.LIST_ITEM_CLICK); 225 if (!match) return; 226 var recordId = recordNode.getAttribute("data-niho-record-id") || ""; 227 if (!recordId) return; 228 post({ kind: "event", nodeId: match.nodeId, eventType: "LIST_ITEM_CLICK", recordId: recordId }); 229 }, true); 230 addEventListener("message", function (event) { 231 var data = event.data; 232 if (event.source !== parent || !data || data.channel !== "niho.playground.workflow.v1") return; 233 if (data.sessionNonce !== sessionNonce || data.releaseDigest !== releaseDigest) return; 234 if (data.kind === "effect") { 235 var effect = data.effect; 236 if (!effect) return; 237 if (effect.type === "DATA_CHANGED") {
238 // ä¸è¦§ï¼LISTã#15566ï¼ã®ååå¾å¥æ©ãnodeIdãæããªãã®ã§ãä¸è¦§ã®æç»runtime 239 // ï¼tab-app-definition-codegen.tsçæç©ï¼ãdocumentå ¨ä½ã§è³¼èªããã 240 if (typeof effect.collectionKey === "string") { 241 document.dispatchEvent(new CustomEvent("niho:data-changed", { detail: { collectionKey: effect.collectionKey } })); 242 } 243 return; 244 } 245 if (typeof effect.nodeId !== "string" || !NODE_ID_PATTERN.test(effect.nodeId)) return; 246 var node = document.querySelector('[data-niho-node="' + CSS.escape(effect.nodeId) + '"]'); 247 if (!node) return; 248 if (effect.type === "UI_UPDATE") { 249 if (effect.target === "VISIBILITY") node.hidden = effect.value !== true; 250 else if (effect.target === "TEXT") node.textContent = effect.value === null || effect.value === undefined ? "" : String(effect.value); 251 } else if (effect.type === "FORM_RESET") { 252 var form = node.tagName === "FORM" ? node : node.querySelector("form"); 253 if (form) form.reset(); 254 } 255 return; 256 } 257 if (data.kind === "run-state") { 258 if (typeof data.nodeId !== "string" || !NODE_ID_PATTERN.test(data.nodeId)) return; 259 var runNode = document.querySelector('[data-niho-node="' + CSS.escape(data.nodeId) + '"]'); 260 if (!runNode) return; 261 var running = data.running === true; 262 if (running) runNode.setAttribute("aria-busy", "true"); 263 else runNode.removeAttribute("aria-busy"); 264 var controls = runNode.querySelectorAll("button, input[type=submit]"); 265 for (var controlIndex = 0; controlIndex < controls.length; controlIndex += 1) { 266 controls[controlIndex].disabled = running; 267 } 268 if (runNode.matches && runNode.matches("button, input[type=submit]")) runNode.disabled = running; 269 } 270 }); 271})();`,l=/^[A-Za-z][A-Za-z0-9-]{0,79}$/;function u(e){if(!e.data||"object"!=typeof e.data||Array.isArray(e.data))return!1;let t=e.data,n=new Set(["channel","kind","sessionNonce","releaseDigest","nodeId","eventType","formInputs","recordId"]);if(!Object.keys(t).every(e=>n.has(e))||"niho.playground.workflow.v1"!==t.channel||"event"!==t.kind||t.sessionNonce!==e.sessionNonce||t.releaseDigest!==e.releaseDigest||"string"!=typeof t.nodeId||!l.test(t.nodeId)||!d.includes(t.eventType)||void 0!==t.formInputs&&!function(e){let t;if(!e||"object"!=typeof e||Array.isArray(e))return!1;let n=Object.entries(e);if(n.length>50)return!1;for(let[,e]of n)if(null!==e&&"string"!=typeof e&&"number"!=typeof e&&"boolean"!=typeof e)return!1;try{t=new TextEncoder().encode(JSON.stringify(e)).byteLength}catch{return!1}return t<=8192}(t.formInputs))return!1;if("LIST_ITEM_CLICK"===t.eventType){var r;if(!("string"==typeof(r=t.recordId)&&r.trim().length>0&&r.length<=200))return!1}else if(void 0!==t.recordId)return!1;return e.bindings.some(e=>e.nodeId===t.nodeId&&e.event===t.eventType)}function f(e){return!!e.sourceMatches&&"null"===e.eventOrigin&&u(e)}let p=`(() => { 272 const source = document.getElementById("niho-lottie"); 273 const player = window.lottie; 274 if (!source || !player || typeof player.loadAnimation !== "function") return; 275 let documents = {}; 276 try { 277 documents = JSON.parse(source.textContent || "{}"); 278 } catch (error) { 279 return; 280 } 281 const reducedMotion = document.documentElement.dataset.reducedMotion === "true"; 282 const mounted = new Map(); 283 const isElement = (node) => Boolean(node) && node.nodeType === 1; 284 const readSpec = (node) => ({ 285 key: node.getAttribute("data-niho-lottie") || "", 286 loop: node.getAttribute("data-niho-lottie-loop") === "true", 287 }); 288 const destroy = (node) => { 289 const entry = mounted.get(node); 290 if (!entry) return; 291 mounted.delete(node); 292 if (!entry.animation) return; 293 try { 294 entry.animation.destroy(); 295 } catch (error) {} 296 }; 297 const mount = (node) => { 298 const spec = readSpec(node); 299 const entry = mounted.get(node); 300 if (entry && entry.key === spec.key && entry.loop === spec.loop) return; 301 if (entry) destroy(node); 302 if (!Object.prototype.hasOwnProperty.call(documents, spec.key)) return; 303 try { 304 const animation = player.loadAnimation({ 305 container: node, 306 renderer: "svg", 307 loop: spec.loop, 308 autoplay: !reducedMotion, 309 animationData: JSON.parse(JSON.stringify(documents[spec.key])), 310 }); 311 mounted.set(node, { key: spec.key, loop: spec.loop, animation: animation }); 312 if (reducedMotion) animation.goToAndStop(0, true); 313 } catch (error) { 314 mounted.set(node, { key: spec.key, loop: spec.loop, animation: null }); 315 } 316 }; 317 const evaluate = (node) => { 318 if (!isElement(node)) return; 319 if (!node.hasAttribute("data-niho-lottie")) { 320 destroy(node); 321 return; 322 } 323 mount(node); 324 }; 325 const scan = (node) => { 326 if (!isElement(node)) return; 327 evaluate(node); 328 node.querySelectorAll("[data-niho-lottie]").forEach(mount); 329 }; 330 const unmount = (node) => { 331 if (!isElement(node)) return; 332 mounted.forEach((entry, mountedNode) => {
333 if (mountedNode !== node && !node.contains(mountedNode)) return; 334 destroy(mountedNode); 335 }); 336 }; 337 scan(document.body); 338 new MutationObserver((records) => { 339 records.forEach((record) => { 340 if (record.type === "attributes") { 341 evaluate(record.target); 342 return; 343 } 344 record.removedNodes.forEach(unmount); 345 record.addedNodes.forEach(scan); 346 }); 347 }).observe(document.body, { 348 childList: true, 349 subtree: true, 350 attributes: true, 351 attributeFilter: ["data-niho-lottie", "data-niho-lottie-loop"], 352 }); 353})();`;function g(e){return e.replaceAll("&","&").replaceAll('"',""").replaceAll("<","<").replaceAll(">",">")}function h(e){let t=[...new Set(e.assetSources??[])].filter(e=>/^https?:\/\/[A-Za-z0-9.:-]+\/[A-Za-z0-9._~\-/]*\/$/.test(e)).map(e=>` ${e}`).join(""),n=e.webFontSource&&(0,o.Y8)(e.webFontSource)?e.webFontSource:void 0,r=(0,o.SK)(n),a=e.authoring?" 'sha256-V7cndJyGKYVrIgptdP+zji7iulmgebCHPJnsjvHW/Cc='":"",d=e.lottieDocuments??{},l=Object.keys(d).length>0?e.lottieRenderer:void 0,u=l?` 'sha256-${l.sha256Base64}' 'sha256-KSvf9dUr1NGEjP9Xs1vj/GGZ/CJ+n6nCJod+E5YiLoU='`:"",f=void 0!==e.workflowBindings?" 'sha256-Ev3mVkscGeVGs9PzTIeWZI2e5V2+ExjYn8zrzDEafcc='":"",h=`default-src 'none'; script-src 'sha256-DEdqQ44xdel8X/reCqMgohaMxmq1spPzjR0/5zL3hHI=' 'sha256-${e.bundleScriptSha256Base64}'${a}${u}${f}; style-src 'unsafe-inline'; img-src data:${t}; connect-src 'none'; font-src${n?` ${n}`:" 'none'"}; media-src 'none'; worker-src 'none'; frame-src 'none'; form-action 'none'; base-uri 'none'; object-src 'none'`,m=e.prefersReducedMotion?"*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}":"",y=e.authoring?` data-authoring-digest="${g(e.authoring.digest)}" data-authoring-nodes="${g(JSON.stringify(e.authoring.nodeIds))}"`:"",v=e.authoring?'[data-niho-authoring-selected="true"]{outline:3px solid #245c4f!important;outline-offset:2px!important}':"",E=e.authoring?`<script>${i}</script>`:"",I=void 0!==e.workflowBindings?` data-workflow-bindings="${g(JSON.stringify(e.workflowBindings))}"`:"",b=void 0!==e.workflowBindings?`<script>${c}</script>`:"",N=l?`<script type="application/json" id="niho-lottie">${JSON.stringify(d).replace(/</gu,"\\u003c")}</script>`:"",w=l?`<script>${l.source}</script><script>${p}</script>`:"",S=l?"[data-niho-lottie]{display:block}":"";return`<!doctype html><html data-session="${g(e.sessionNonce)}" data-release="${g(e.releaseDigest)}" data-language="${g(e.language)}" data-strings="${g(JSON.stringify(e.strings))}" data-editable-values="${g(JSON.stringify(e.editableValues??{}))}" data-assets="${g(JSON.stringify(e.assets??{}))}" data-capabilities="${g(JSON.stringify(e.effectiveCapabilities))}" data-reduced-motion="${e.prefersReducedMotion?"true":"false"}"${y}${I}><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="Content-Security-Policy" content="${g(h)}"><style>${r}html,body{margin:0;min-height:100%;font-family:system-ui,-apple-system,sans-serif;color:#292524;background:#fff}*{box-sizing:border-box}${S}${m}${v}</style></head><body><main id="app"><div id="tab-root"></div></main>${N}<script>${s}</script>${E}${w}${b}<script>${e.bundleJavaScript}</script></body></html>`}function m(e){if(!e.sourceMatches||"null"!==e.eventOrigin||!e.data||"object"!=typeof e.data||Array.isArray(e.data))return!1;let t=e.data,n=["channel","kind","sessionNonce","releaseDigest","authoringDigest","nodeId"];return!(Object.keys(t).length!==n.length||n.some(e=>!Object.hasOwn(t,e)))&&"niho.playground.authoring.v0"===t.channel&&"node-select"===t.kind&&t.sessionNonce===e.sessionNonce&&t.releaseDigest===e.releaseDigest&&t.authoringDigest===e.authoringDigest&&"string"==typeof t.nodeId&&e.nodeIds.includes(t.nodeId)}function y(e){if(!e.sourceMatches||"null"!==e.eventOrigin||!e.data||"object"!=typeof e.data||Array.isArray(e.data))return!1;let t=e.data;return"niho.playground.v0"===t.channel&&"rpc"===t.kind&&t.sessionNonce===e.sessionNonce&&t.releaseDigest===e.releaseDigest&&!!t.request&&"object"==typeof t.request&&t.request.sessionNonce===e.sessionNonce&&t.request.releaseDigest===e.releaseDigest&&"0.1.0"===t.request.bridgeVersion}class v{constructor(e){this.onHardFailure=e,this.hardFailures=0,this.timer=null}arm(e){this.cancel(),this.timer=setTimeout(()=>{this.timer=null,this.hardFailures+=1,this.onHardFailure(this.hardFailures>=2)},e?2e3:5e3)}ready(){this.cancel(),this.hardFailures=0}recordHardFailure(){this.cancel(),this.hardFailures+=1,this.onHardFailure(this.hardFailures>=2)}cancel(){null!==this.timer&&clearTimeout(this.timer),this.timer=null}}},57550:(e,t,n)=>{n.d(t,{J:()=>i});var r=n(30779);function o(e,t){"AGGREGATE"===e.kind&&t.add(e.schemaKey)}function a(e,t,n){"FORM_INPUT"===e.kind&&e.nodeId===t&&n.set(e.fieldKey,e.type)}function s(){return new Date}function i(e){let{workflow:t,sink:n}=e,i=e.now??s,d=(0,r.IJ)(),c=function(e){let t=new Set,n=[];
353for(let o of e.workflows){var r;let e=o.event;if("TAB_OPEN"===e.type||"ELEMENT_CLICK"!==(r=e.type)&&"FORM_SUBMIT"!==r&&"INPUT_CHANGE"!==r&&"LIST_ITEM_CLICK"!==r)continue;let a=`${e.type}:${e.nodeId}`;t.has(a)||(t.add(a),n.push({nodeId:e.nodeId,event:e.type}))}return n}(t.definition),l=new Map(e.dataSchemas.map(e=>[e.key,{...e}])),u={...t.runtimeContext.localStateDefaults},f=!1;async function p(e){let t=l.get(e);return!t||!t.consentRequired||!!t.consented||!!await n.requestConsent({purpose:t.purpose})&&(await n.consent(e,t.version),t.consented=!0,!0)}function g(e){return"string"==typeof e?e:""}async function h(s,c,h,m){var y,v,E;let I,b,N=(I=new Set,s.steps.forEach(e=>(function e(t,n){"ACTION"===t.kind?function(e,t){switch(e.kind){case"UI_UPDATE":case"LOCAL_STATE_SET":o(e.value,t);return;case"LOCAL_STATE_INCREMENT":o(e.delta,t);return;case"UI_MESSAGE":o(e.message,t);return;case"UI_CONFIRM":o(e.title,t),o(e.message,t);return;case"RECORDS_APPEND":Object.values(e.values).forEach(e=>o(e,t));return;case"RECORDS_DELETE":o(e.recordId,t);return;case"DEVICES_EXECUTE":Object.values(e.params).forEach(e=>o(e,t));return;case"FORM_RESET":case"RECORDS_READ":case"DEVICES_READ":return}}(t.action,n):(!function e(t,n){switch(t.kind){case"COMPARE":o(t.left,n),o(t.right,n);return;case"IS_EMPTY":o(t.ref,n);return;case"NOT":e(t.item,n);return;case"ALL":case"ANY":t.items.forEach(t=>e(t,n));return}}(t.condition,n),t.then.forEach(t=>e(t,n)),t.else.forEach(t=>e(t,n)))})(e,I)),[...I]),w={};for(let e of N){let t=l.get(e);w[e]=(null==t?void 0:t.consentRequired)&&!t.consented?0:await n.countRecords(e)}let S=!1,T=async e=>{let t=e.action;switch(t.kind){case"RECORDS_READ":{let e=l.get(t.schemaKey);if((null==e?void 0:e.consentRequired)&&!e.consented)return{values:{totalCount:0,hasRecords:!1}};let r=await n.countRecords(t.schemaKey);return{values:{totalCount:r,hasRecords:r>0}}}case"RECORDS_APPEND":{if(!await p(t.schemaKey))throw S=!0,Error("member declined record consent");let r=Object.fromEntries(Object.keys(t.values).map(t=>[t,e.values[`values.${t}`]??null]).filter(e=>{let[,t]=e;return null!==t}));return await n.appendRecord(t.schemaKey,r,e.idempotencyKey),{values:{}}}case"RECORDS_DELETE":{if(!await p(t.schemaKey))throw S=!0,Error("member declined record consent");let r=e.values.recordId;if("string"!=typeof r||0===r.length)throw Error("recordId is required for RECORDS_DELETE");return await n.deleteRecord(t.schemaKey,r,e.idempotencyKey),{values:{}}}case"DEVICES_READ":{let e=await n.readDevice(t.deviceKey);return{values:{power:e.power,brightnessPercent:e.brightnessPercent}}}case"DEVICES_EXECUTE":{let r=Object.fromEntries(Object.keys(t.params).map(t=>[t,e.values[`params.${t}`]??null]));return await n.executeDevice(t.deviceKey,t.operation,r,e.idempotencyKey),{values:{}}}case"UI_CONFIRM":return{values:{confirmed:await n.confirm({title:g(e.values.title),message:g(e.values.message),intent:t.intent})}};case"UI_MESSAGE":return n.message({tone:t.tone,message:g(e.values.message)}),{values:{}};case"UI_UPDATE":return n.effect({type:"UI_UPDATE",nodeId:t.nodeId,target:t.target,value:e.values.value??null}),{values:{}};case"FORM_RESET":return n.effect({type:"FORM_RESET",nodeId:t.nodeId}),{values:{}};default:return{values:{}}}},O="TAB_OPEN"===c.type?null:c.nodeId,R=h&&O?(b=new Map,s.steps.forEach(e=>(function e(t,n,r){"ACTION"===t.kind?function(e,t,n){switch(e.kind){case"UI_UPDATE":case"LOCAL_STATE_SET":a(e.value,t,n);return;case"LOCAL_STATE_INCREMENT":a(e.delta,t,n);return;case"UI_MESSAGE":a(e.message,t,n);return;case"UI_CONFIRM":a(e.title,t,n),a(e.message,t,n);return;case"RECORDS_APPEND":Object.values(e.values).forEach(e=>a(e,t,n));return;case"RECORDS_DELETE":a(e.recordId,t,n);return;case"DEVICES_EXECUTE":Object.values(e.params).forEach(e=>a(e,t,n));return;case"FORM_RESET":case"RECORDS_READ":case"DEVICES_READ":return}}(t.action,n,r):(!function e(t,n,r){switch(t.kind){case"COMPARE":a(t.left,n,r),a(t.right,n,r);return;case"IS_EMPTY":a(t.ref,n,r);return;case"NOT":e(t.item,n,r);return;case"ALL":case"ANY":t.items.forEach(t=>e(t,n,r));return}}(t.condition,n,r),t.then.forEach(t=>e(t,n,r)),t.else.forEach(t=>e(t,n,r)))})(e,O,b)),y=b,Object.fromEntries(Object.entries(h).map(e=>{var t;let[n,r]=e;return[n,("NUMBER"===(t=y.get(n))||"DATE"===t)&&""===r?null:r]}))):h;O&&n.runState(O,!0);try{let o,a=await (0,r.PC)(s,{event:c,...R&&O?{formInputs:{[O]:R}}:{},...m&&O?{listItems:{[O]:m}}:{},viewer:{role:e.viewer.role,language:e.viewer.language,prefersReducedMotion:e.viewer.prefersReducedMotion,prefersHighContrast:e.viewer.prefersHighContrast},spot:{displayName:e.spot.displayName,theme:e.spot.theme},dataFieldTypes:t.runtimeContext.dataFieldTypes,localStateTypes:t.runtimeContext.localStateTypes,aggregates:w,localState:u,now:(E=i(),o=e=>String(e).padStart(2,"0"),{date:`${E.getFullYear()}-${o(E.getMonth()+1)}-${o(E.getDate())}`,datetime:E.toISOString()})},{adapter:T},d);if(f)return;u={...a.localState},null==(v=e.onTrace)||v.call(e,{workflowId:s.id,status:a.status,trace:a.trace}),"ERROR"!==a.status||S||n.message({tone:"ERROR",message:"ãã¾ãåãã¾ããã§ãããæéãããã¦ããä¸åº¦ã試ããã ããã"})}finally{O&&n.runState(O,!1)}}return{bindings:c,async dispatch(e){if(f)return;let n="TAB_OPEN"===e.type?{type:"TAB_OPEN"}:e.nodeId?{type:e.type,nodeId:e.nodeId}:null;if(n)for(let o of t.definition.workflows.filter(e=>
353(0,r.HN)(e,n))){if(f)return;await h(o,n,e.formInputs,e.listItem)}},dispose(){f=!0}}}},68936:(e,t,n)=>{n.d(t,{_:()=>d});var r=n(95155),o=n(12115),a=n(28480),s=n(13747),i=n(1850);function d(e){var t;let{cached:d,onRpc:c,onRuntimeFailure:l,releaseDigest:u}=e,f=(0,o.useRef)(null),p=(0,o.useRef)(0),[g,h]=(0,o.useState)(!1),[m,y]=(0,o.useState)(!1),[v,E]=(0,o.useState)(0),[I,b]=(0,o.useState)(null),[N]=(0,o.useState)(()=>crypto.randomUUID()),w=(0,o.useRef)(l);w.current=l;let S=(0,o.useRef)(e.onRuntimeEvent);S.current=e.onRuntimeEvent;let T=(0,o.useRef)(null);null===T.current&&(T.current=new a.mc(e=>{y(!0),S.current({phase:"READY_TIMEOUT",fingerprintSource:{code:"ready-timeout"}}),w.current(e)}));let O=T.current;(0,o.useEffect)(()=>()=>O.cancel(),[O]),(0,o.useEffect)(()=>{b((0,s.gH)(window.location.origin)??"")},[]),(0,o.useEffect)(()=>{let t=e=>{var t,n;null==(n=f.current)||null==(t=n.contentWindow)||t.postMessage({channel:"niho.playground.v0",kind:"rpc-response",sessionNonce:N,releaseDigest:u,response:e},"*")},n=n=>{var r,o,s;let d=e.authoring;if((null==d?void 0:d.enabled)&&(0,a.bU)({data:n.data,eventOrigin:n.origin,sourceMatches:n.source===(null==(r=f.current)?void 0:r.contentWindow),sessionNonce:N,releaseDigest:u,authoringDigest:d.digest,nodeIds:d.nodeIds}))return void d.onSelectNode(n.data.nodeId);let l=e.workflow;if(l&&(0,a.VL)({data:n.data,eventOrigin:n.origin,sourceMatches:n.source===(null==(o=f.current)?void 0:o.contentWindow),sessionNonce:N,releaseDigest:u,bindings:l.bindings}))return void l.onEvent({nodeId:n.data.nodeId,eventType:n.data.eventType,...void 0!==n.data.formInputs?{formInputs:n.data.formInputs}:{},...void 0!==n.data.recordId?{recordId:n.data.recordId}:{}});if(!(0,a.An)({data:n.data,eventOrigin:n.origin,sourceMatches:n.source===(null==(s=f.current)?void 0:s.contentWindow),sessionNonce:N,releaseDigest:u}))return;let g=n.data.request;(function(e){try{let t=JSON.stringify(e);return"string"==typeof t?new TextEncoder().encode(t).byteLength:1/0}catch{return 1/0}})(g)>i.RL||p.current>=i.gT?t({requestId:g.requestId,ok:!1,error:{code:"INVALID_REQUEST",messageKey:"playground.rpc.resourceLimit",retryable:!1}}):(p.current+=1,c(g).then(e=>{"diag.ready"===g.method&&e.ok&&(O.ready(),y(!1),S.current({phase:"READY"})),t(e)}).finally(()=>{p.current=Math.max(0,p.current-1)}))};return window.addEventListener("message",n),()=>window.removeEventListener("message",n)},[c,e.authoring,e.workflow,u,N,O]);let R=(0,o.useCallback)(()=>{var t,n;let r=e.authoring;r&&(null==(n=f.current)||null==(t=n.contentWindow)||t.postMessage({channel:"niho.playground.authoring.v0",kind:"state",sessionNonce:N,releaseDigest:u,authoringDigest:r.digest,enabled:r.enabled,selectedNodeId:r.selectedNodeId},"*"))},[e.authoring,u,N]),D=(0,o.useCallback)(()=>{let t=e.workflow;t&&t.onChannelReady({postEffect:e=>{var t,n;null==(n=f.current)||null==(t=n.contentWindow)||t.postMessage({channel:"niho.playground.workflow.v1",kind:"effect",sessionNonce:N,releaseDigest:u,effect:e},"*")},setRunState:(e,t)=>{var n,r;null==(r=f.current)||null==(n=r.contentWindow)||n.postMessage({channel:"niho.playground.workflow.v1",kind:"run-state",sessionNonce:N,releaseDigest:u,nodeId:e,running:t},"*")}})},[e.workflow,u,N]);(0,o.useEffect)(()=>{R(),D()},[D,R,v]);let k=Object.keys(e.lottieDocuments??{}).length>0,[A,C]=(0,o.useState)({status:"loading"});(0,o.useEffect)(()=>{if(!k)return;let e=!0;return n.e(51456).then(n.bind(n,51456)).then(t=>{e&&C({status:"ready",source:t.PLAYGROUND_LOTTIE_RENDERER_SOURCE,sha256Base64:t.PLAYGROUND_LOTTIE_RENDERER_SHA256_BASE64})}).catch(()=>{e&&C({status:"unavailable"})}),()=>{e=!1}},[k]);let _=k&&"loading"===A.status,M=(0,a.vC)({sessionNonce:N,releaseDigest:u,bundleJavaScript:e.bundleJavaScript,bundleScriptSha256Base64:e.bundleScriptSha256Base64,language:e.language,strings:e.strings,editableValues:e.editableValues,assets:e.assets,assetSources:e.assetSources,webFontSource:I??void 0,lottieDocuments:e.lottieDocuments,lottieRenderer:"ready"===A.status?A:void 0,effectiveCapabilities:(0,i.vT)(e.effectiveCapabilities),prefersReducedMotion:e.prefersReducedMotion,authoring:e.authoring?{digest:e.authoring.digest,nodeIds:e.authoring.nodeIds}:void 0,workflowBindings:null==(t=e.workflow)?void 0:t.bindings}),x=_||null===I;return(0,o.useEffect)(()=>
353{if(!x)return O.arm(d),()=>O.cancel()},[d,v,M,x,O]),(0,r.jsxs)("section",{"aria-label":e.title,className:"relative min-h-[20rem] overflow-hidden rounded-2xl border border-stone-200 bg-white",children:[!1!==e.showMemberChrome?(0,r.jsxs)("div",{className:"flex min-h-11 items-center justify-between gap-3 border-b border-stone-200 bg-stone-50 px-3 text-xs text-stone-700",children:[(0,r.jsxs)("span",{className:"truncate",children:["ãã®ã¿ã㯠",e.spotName," ã使"]}),(0,r.jsx)("button",{type:"button",className:"min-h-9 rounded-full px-3 underline",onClick:()=>h(e=>!e),children:"ã¿ãæ
å ±"})]}):null,!1!==e.showMemberChrome&&g?(0,r.jsxs)("div",{className:"border-b border-stone-200 bg-white p-4 text-sm",role:"region","aria-label":"ã¿ãæ
å ±",children:[(0,r.jsx)("p",{className:"font-medium",children:e.title}),(0,r.jsxs)("p",{className:"mt-1 break-all text-xs text-stone-600",children:["ç ",e.releaseDigest.slice(0,22),"â¦"]}),(0,r.jsxs)("div",{className:"mt-3 flex flex-wrap gap-2",children:[(0,r.jsx)("button",{type:"button",className:"min-h-11 rounded-lg border px-3 disabled:opacity-50",disabled:e.reportPending,onClick:()=>e.onReport("POLICY"),children:"éå ±ãã"}),(0,r.jsx)("button",{type:"button",className:"min-h-11 rounded-lg border px-3 disabled:opacity-50",disabled:e.reportPending,onClick:()=>e.onReport("BUG"),children:e.reportPending?"éä¿¡ä¸â¦":"ä¸å
·åãå ±å"}),(0,r.jsx)("button",{type:"button",className:"min-h-11 rounded-lg border px-3",onClick:e.onHide,children:"ãã®ã¿ããé表示"})]})]}):null,m&&!1!==e.showMemberChrome?(0,r.jsxs)("div",{className:"grid min-h-[18rem] place-content-center gap-3 p-6 text-center",role:"status",children:[(0,r.jsx)("p",{className:"font-medium",children:"ãã®ã¿ããèªã¿è¾¼ãã¾ããã§ãã"}),(0,r.jsx)("button",{type:"button",className:"min-h-11 rounded-lg border px-4",onClick:()=>{y(!1),E(e=>e+1)},children:"ããä¸åº¦è©¦ã"})]}):null,e.workflowBanner?(0,r.jsx)("div",{className:"px-4 pt-3",children:e.workflowBanner}):null,x?(0,r.jsx)("div",{className:"grid min-h-[18rem] place-content-center p-6 text-center text-sm text-stone-600",role:"status",children:"èªã¿è¾¼ãã§ãã¾ãâ¦"}):(0,r.jsx)("iframe",{ref:f,title:e.title,srcDoc:M,sandbox:a.IN,className:m?"hidden":"h-[32rem] w-full border-0",referrerPolicy:"no-referrer",allow:"",onLoad:()=>{R(),D()}},v)]})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.