### React Context Provider and Consumer Setup Source: https://github.com/roboplc/logicline/blob/main/ll-default-view/dist/index.html Demonstrates the basic setup for a React Context. It shows how to create a context, provide a value using a Provider component, and consume that value within a component using the `useContext` hook or a Consumer component. ```javascript var El = { $$typeof: pl, Consumer: null, Provider: null, _currentValue: null, _currentValue2: null, _threadCount: 0 }; function _c() { return { controller: new S1, data: new Map, refCount: 0 }; } function Ba(l) { l.refCount--, l.refCount === 0 && b1(T1, function() { l.controller.abort() }) } ``` -------------------------------- ### Install HTTP Exporter for Global Process State (Rust) Source: https://github.com/roboplc/logicline/blob/main/README.md Installs a built-in HTTP server to export global process state. The server binds to port 9001 by default and provides state snapshots in JSON format at the /state endpoint. It can be configured to bind to a specific address. ```rust logicline::global::install_exporter().unwrap(); ``` -------------------------------- ### Define and execute logic lines with actions in Rust Source: https://github.com/roboplc/logicline/blob/main/README.md Demonstrates how to define a sequence of actions within a Line to control a fan based on temperature. It utilizes the `action!` macro and `then` combinator for chaining operations. The example also shows enabling recording and serializing the rack state. ```rust use logicline::{action, Rack}; let mut rack = Rack::new().with_recording_enabled(); let mut processor = rack.processor(); // Some fan state let mut fan = false; // A temperature sensor value let temperature = 31.0; processor // a sequence to turn on the fan on if the temperature is above 30 degrees .line("fan_on", temperature) .then(action!("temp_high", |t| (t > 30.0).then_some(()))) .then(action!("fan_on", |()| { fan = true; Some(()) })); processor // a sequence to turn off the fan if the temperature is below 25 degrees .line("fan_off", temperature) .then(action!("temp_low", |t| (t < 25.0).then_some(()))) .then(action!("fan_off", |()| { fan = false; Some(()) })); rack.ingress(&mut processor); ``` -------------------------------- ### Create Logic Lines with Actions in Rust Source: https://context7.com/roboplc/logicline/llms.txt Illustrates creating named logic Lines using the `action!` macro. Each action returns `Option`, where `Some` continues the chain and `None` breaks it. This example shows setting a fan state based on temperature. ```rust use logicline::{action, Rack}; let mut rack = Rack::new().with_recording_enabled(); let mut processor = rack.processor(); // State to be modified by the logic chain let mut fan = false; let temperature = 31.0; // Create a line that turns on the fan if temperature > 30 processor .line("fan_on", temperature) .then(action!("temp_high", |t| (t > 30.0).then_some(()))) .then(action!("fan_on", |()| { fan = true; Some(()) })); // Create another line for turning off the fan processor .line("fan_off", temperature) .then(action!("temp_low", |t| (t < 25.0).then_some(()))) .then(action!("fan_off", |()| { fan = false; Some(()) })); rack.ingress(&mut processor); // Output: fan is now true because temperature (31.0) > 30.0 assert!(fan); ``` -------------------------------- ### Combine closures with OR logic in a Step in Rust Source: https://github.com/roboplc/logicline/blob/main/README.md Illustrates using `then_any` to combine two closures within a single step, allowing either condition to be met. This example uses a struct `Env` for input and demonstrates conditional logic based on temperature and humidity. ```rust use logicline::{action, Rack}; // Here we use Env as a reference, so the `Clone` trait is not required for the // structure itself. #[derive(serde::Serialize)] struct Env { temperature: f32, humidity: f32, } let env = Env { temperature: 25.0, humidity: 40.0, }; let rack = Rack::new(); let mut processor = rack.processor(); let mut env_healthy = true; processor .line("env_unhealthy", &env) .then_any( action!("temp_high", |env: &Env| (env.temperature > 30.0).then_some(())), action!("humidity_high", |env: &Env| (env.humidity > 60.0).then_some(())), ) .then(action!("set_unhealthy", |()| { env_healthy = false; Some(()) })); ``` -------------------------------- ### Manage Global State with HTTP Exporter (Rust) Source: https://context7.com/roboplc/logicline/llms.txt Illustrates the use of the `global` module in logicline to manage a process-wide singleton Rack and an optional HTTP server for real-time visualization. The exporter serves JSON state at `/state` and a UI at `/`. This example sets up the exporter, simulates periodic processing, and updates the global rack state. ```rust use logicline::{action, global}; fn main() { // Install HTTP exporter on default port 9001 global::install_exporter().unwrap(); global::set_recording(true); println!("Open http://localhost:9001 to view the state"); let mut temperature = 20.0; let mut direction_up = true; // Simulate periodic processing loop loop { let mut processor = global::processor(); let mut fan = false; processor .line("fan_on", temperature) .then(action!("temp_high", |t| (t > 30.0).then_some(()))) .then(action!("fan_on", |()| { fan = true; Some(()) })); processor .line("fan_off", temperature) .then(action!("temp_low", |t| (t < 25.0).then_some(()))) .then(action!("fan_off", |()| { fan = false; Some(()) })); // Ingest processor state into global rack global::ingress(&mut processor); // Simulate temperature changes if direction_up { temperature += 1.0; if temperature >= 35.0 { direction_up = false; } } else { temperature -= 1.0; if temperature <= 15.0 { direction_up = true; } } std::thread::sleep(std::time::Duration::from_secs(1)); } } ``` -------------------------------- ### Integrate React-Specific ESLint Plugins (TypeScript) Source: https://github.com/roboplc/logicline/blob/main/ll-default-view/README.md This code demonstrates how to integrate 'eslint-plugin-react-x' and 'eslint-plugin-react-dom' into an ESLint configuration for React projects. It involves importing the plugins and enabling their recommended TypeScript and React rules. ```javascript // eslint.config.js import reactX from 'eslint-plugin-react-x' import reactDom from 'eslint-plugin-react-dom' export default tseslint.config({ plugins: { // Add the react-x and react-dom plugins 'react-x': reactX, 'react-dom': reactDom, }, rules: { // other rules... // Enable its recommended typescript rules ...reactX.configs['recommended-typescript'].rules, ...reactDom.configs.recommended.rules, }, }) ``` -------------------------------- ### Expand ESLint Configuration with Type-Checked Rules (TypeScript) Source: https://github.com/roboplc/logicline/blob/main/ll-default-view/README.md This snippet shows how to extend the ESLint configuration to include type-aware linting rules for TypeScript projects. It requires the 'tseslint' package and specifies project configuration files. ```javascript export default tseslint.config({ extends: [ // Remove ...tseslint.configs.recommended and replace with this ...tseslint.configs.recommendedTypeChecked, // Alternatively, use this for stricter rules ...tseslint.configs.strictTypeChecked, // Optionally, add this for stylistic rules ...tseslint.configs.stylisticTypeChecked, ], languageOptions: { // other options... parserOptions: { project: ['./tsconfig.node.json', './tsconfig.app.json'], tsconfigRootDir: import.meta.dirname, }, }, }) ``` -------------------------------- ### Implement Custom Snapshot Formatter for Data Safety (Rust) Source: https://context7.com/roboplc/logicline/llms.txt Shows how to implement the `SnapshotFormatter` trait in logicline to customize the data included in exported snapshots. This is particularly useful for masking sensitive information, such as voltage readings, in production environments. The example defines a `SensitiveDataFormatter` that hides inputs for steps whose names start with 'voltage'. ```rust use logicline::{Snapshot, SnapshotFormatter, global}; struct SensitiveDataFormatter; impl SnapshotFormatter for SensitiveDataFormatter { fn format(&self, mut snapshot: Snapshot) -> Snapshot { for line in snapshot.lines_mut().values_mut() { for step in line.steps_mut() { for info in step.info_mut() { // Hide inputs for steps with names starting with "voltage" if info.name().starts_with("voltage") { *info = info.to_modified( None, // Keep original name Some(serde_json::Value::String("".to_owned())), // Mask input None, // Keep original input_kind None, // Keep original passed state ); } } } } snapshot } } fn main() { // Set the formatter before installing the exporter global::set_snapshot_formatter(Box::new(SensitiveDataFormatter)); global::install_exporter().unwrap(); // Now all /state requests will have voltage inputs masked } ``` -------------------------------- ### Create Rack and Processor in Rust Source: https://context7.com/roboplc/logicline/llms.txt Demonstrates how to initialize a Rack with recording enabled, create a Processor from it, and ingest results back into the Rack. It also shows how to check and modify the recording state. ```rust use logicline::Rack; // Create a new rack with recording enabled let mut rack = Rack::new().with_recording_enabled(); // Create a processor from the rack let mut processor = rack.processor(); // After processing, ingest the results back into the rack rack.ingress(&mut processor); // Check recording state assert!(rack.is_recording()); // Disable recording at runtime rack.set_recording(false); ``` -------------------------------- ### Resource Hinting and Preloading Utilities (JavaScript) Source: https://github.com/roboplc/logicline/blob/main/ll-default-view/dist/index.html Implements functions for adding resource hints like 'dns-prefetch' and 'preconnect', and for preloading resources. It utilizes the browser's native capabilities to improve performance by fetching resources or establishing connections in advance. It also prevents duplicate entries by checking existing elements. ```javascript var ra=typeof document>"u"?null:document; function qo(l,t,u){var a=ra;if(a&&typeof t==="string"&&t){var e=et(t);e='link\[rel="'+l+'"]\[href="'+e+'"]',typeof u==="string"&&(e+='[crossorigin="'+u+'"]'),Ho.has(e)||(Ho.add(e),l={rel:l,crossOrigin:u,href:t},a.querySelector(e)===null&&(t=a.createElement("link"),Rl(t,"link",l),_l(t),a.head.appendChild(t)))}} function dv(l){Xt.D(l),qo("dns-prefetch",l,null)} function vv(l,t){Xt.C(l,t),qo("preconnect",l,t)} function yv(l,t,u){Xt.L(l,t,u);var a=ra;if(a&&l&&t){var e='link\[rel="preload"]\[as="'+et(t)+'"]';t==="image"&&u&&u.imageSrcSet?(e+='[imagesrcset="'+et(u.imageSrcSet)+'"]',typeof u.imageSizes==="string"&&(e+='[imagesizes="'+et(u.imageSizes)+'"]') ``` -------------------------------- ### Get Current Input Value or Text Content Source: https://github.com/roboplc/logicline/blob/main/ll-default-view/dist/index.html Retrieves the current value from an input element or the text content from other elements. This is used to capture user input or displayed text. ```javascript var Vt = null, Pn = null, Ue = null; function Ui() { if (Ue) return Ue; var l, t = Pn, u = t.length, a, e = "value" in Vt ? Vt.value : Vt.textContent, n = e.length; for (l = 0; l < u && t[l] === e[l]; l++); var c = u - l; for (a = 1; a <= c && t[u - a] === e[n - a]; a++); return Ue = e.slice(l, 1 < a ? 1 - a : void 0); } ``` -------------------------------- ### React DOM Client Initialization and Exports (JavaScript) Source: https://github.com/roboplc/logicline/blob/main/ll-default-view/dist/index.html This snippet details the initialization process for the React DOM client and exports its public API. It includes the logic for checking the development environment and returning the appropriate exports. This is the entry point for using React DOM in a project. ```javascript var ed; function Gv() { if (ed) return ti.exports; ed = 1; function _() { if (!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ > "u" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE != "function")) try { __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(_) } catch (G) { console.error(G) } } return _(), ti.exports = jv(), ti.exports } ``` -------------------------------- ### Implement Custom Data Safety Formatting for Snapshots (Rust) Source: https://github.com/roboplc/logicline/blob/main/README.md Defines a custom snapshot formatter to hide sensitive data, such as inputs starting with 'voltage', from exported state snapshots. This involves implementing the `SnapshotFormatter` trait and registering the formatter globally. ```rust struct SensitiveDataFormatter {} impl logicline::SnapshotFormatter for SensitiveDataFormatter { fn format(&self, mut snapshot: Snapshot) -> Snapshot { for line in snapshot.lines_mut().values_mut() { for step in line.steps_mut() { for i in step.info_mut() { // Step data is under Arc to let it be cloned without // overhead, so we need to replace the original step data // with the new one. In this example a helper method is used. if i.name().starts_with("voltage") { *i = i.to_modified( None, Some(serde_json::Value::String("".to_owned())), None, None, ); } } } } snapshot } } // then in the main function logicline::global::set_snapshot_formatter(Box::new(SensitiveDataFormatter {})); ``` -------------------------------- ### Working with Snapshots and Line States in Rust Source: https://context7.com/roboplc/logicline/llms.txt Demonstrates how to create immutable snapshots of the logic state, query individual line states, and iterate over recorded steps. It also shows how to create filtered snapshots based on specific criteria. This functionality is crucial for debugging and monitoring. ```rust use logicline::{action, Rack}; let mut rack = Rack::new().with_recording_enabled(); let mut processor = rack.processor(); processor .line("check_voltage", 250u16) .then(action!("voltage_ok", |v| (v < 300).then_some(()))) .then(action!("proceed", |()| Some(()))); rack.ingress(&mut processor); // Create a snapshot let snapshot = rack.snapshot(); // Query specific line state if let Some(line) = snapshot.line_state("check_voltage") { println!("Line: {}", line.name()); for step in line.steps() { for info in step.info() { println!(" Step: {} - passed: {}", info.name(), info.passed()); } } } // Create filtered snapshot (only lines that passed completely) let passed_only = rack.snapshot_filtered(|line| { line.steps().iter().all(|s| s.passed()) }); ``` -------------------------------- ### Serialize Logic State to Human-Readable and JSON Formats (Rust) Source: https://context7.com/roboplc/logicline/llms.txt Demonstrates how to implement `Display` and `Serialize` for `Rack` and `Snapshot` types in logicline. This allows for human-readable console output and JSON export, facilitating integration with web-based visualization tools. It shows the creation of a rack, definition of processing lines with actions, and subsequent display and serialization. ```rust use logicline::{action, Rack}; let mut rack = Rack::new().with_recording_enabled(); let mut processor = rack.processor(); let temperature = 31.0; processor .line("fan_on", temperature) .then(action!("temp_high", |t| (t > 30.0).then_some(()))) .then(action!("fan_on", |()| Some(()))); processor .line("fan_off", temperature) .then(action!("temp_low", |t| (t < 25.0).then_some(()))) .then(action!("fan_off", |()| Some(()))); rack.ingress(&mut processor); // Human-readable format println!("{}", rack); // Output: // fan_off: temp_low(31.0) ! -> fan_off // fan_on: temp_high(31.0) -> fan_on // JSON serialization for web visualization let json = serde_json::to_string_pretty(&rack).unwrap(); println!("{}", json); // Output (partial): // { // "lines": { // "fan_on": { // "name": "fan_on", // "steps": [ // { "name": "temp_high", "input": 31.0, "input_kind": "flow", "passed": true }, // { "name": "fan_on", "input": null, "input_kind": "flow", "passed": true } // ] // } // } // } ``` -------------------------------- ### Use then_any for Logical OR in Rust Source: https://context7.com/roboplc/logicline/llms.txt Demonstrates the `then_any` method for implementing logical OR operations within a logic chain. The chain continues if either of the provided actions succeeds. Note that inputs for `then_any` must implement `Clone`. ```rust use logicline::{action, Rack}; use serde::Serialize; #[derive(Serialize, Clone)] struct Env { temperature: f32, humidity: f32, } let env = Env { temperature: 35.0, // High temperature humidity: 40.0, // Normal humidity }; let rack = Rack::new(); let mut processor = rack.processor(); let mut env_unhealthy = false; // Chain passes if EITHER temperature OR humidity is too high processor .line("env_unhealthy", &env) .then_any( action!("temp_high", |env: &Env| (env.temperature > 30.0).then_some(())), action!("humidity_high", |env: &Env| (env.humidity > 60.0).then_some(())), ) .then(action!("set_unhealthy", |()| { env_unhealthy = true; Some(()) })); // env_unhealthy is true because temperature > 30.0 assert!(env_unhealthy); ``` -------------------------------- ### Create a new Rack instance in Rust Source: https://github.com/roboplc/logicline/blob/main/README.md Initializes a new Rack instance, which serves as the top-level container for logic. Racks can manage global states or act as factories for Processors. ```rust use logicline::Rack; let rack = Rack::new(); ``` -------------------------------- ### Display Logic Line State Snapshots with React Source: https://github.com/roboplc/logicline/blob/main/logicline-view/README.md This React component demonstrates how to use the RackView component from the logicline-view library to display state snapshots. It fetches data from a local endpoint and updates the view periodically. Dependencies include React and the logicline-view library. ```react-tsx import { useState, useEffect } from "react"; import { RackView, type Snapshot } from "logicline-view"; import "../node_modules/logicline-view/dist/style.css"; const App = () => { const [data, setData] = useState({ lines: [] as any }); useEffect(() => { let t: number; const fetchData = () => { fetch(`http://${window.location.hostname}:9001/state`) .then((res) => res.json()) .then(setData); t = setTimeout(fetchData, 500); }; fetchData(); return () => clearTimeout(t); }, []); return ( { console.log(v); }} /> ); }; ``` -------------------------------- ### React useSyncExternalStore Hook Implementation Source: https://github.com/roboplc/logicline/blob/main/ll-default-view/dist/index.html Hook for subscribing to an external store. It handles subscriptions and ensures consistency with React's rendering. Uses Q0, M0, and O0 for managing subscriptions and updates. ```javascript useSyncExternalStore:function(l,t,u){var a=K,e=Ql();if(tl){if(u===void 0)throw Error(v(407));u=u()}else{if(u=t(),sl===null)throw Error(v(349));(k&124)!==0||z0(a,t,u)}e.memoizedState=u;var n={value:u,getSnapshot:t};return e.queue=n,Q0(M0.bind(null,a,n,l), [l]),a.flags|=2048,ua(9,ke(),O0.bind(null,a,n,u,t),null),u} ``` ```javascript useSyncExternalStore:_0 ``` -------------------------------- ### React Element Creation and Rendering Source: https://github.com/roboplc/logicline/blob/main/ll-default-view/dist/index.html Provides functions for creating React elements, handling nested children, and rendering them into an array. It supports various element types and ensures proper key handling for efficient updates. ```javascript function Hl(s,A,D,z,Y){var P=typeof s;(P==="undefined"||P==="boolean")&&(s=null);var C=!1;if(s===null)C=!0;else switch(P){case"bigint":case"string":case"number":C=!0;break;case"object":switch(s.$$typeof){case _:case G:C=!0;break;case p:return C=s._init,Hl(C(s._payload),A,D,z,Y)}}if(C)return Y=Y(s),C=z===""?"."+Nl(s,0):z,vt(Y)?(D="",C!=null&&(D=C.replace(zt,"$&&/")+"/"),Hl(Y,A,D,"",function(Qt){return Qt})):Y!=null&&(mt(Y)&&(Y=Jl(Y,D+(Y.key==null||s&&s.key===Y.key?"":(""+Y.key).replace(zt,"$&&/")+"/")+C)),A.push(Y)),1;C=0;var wl=z===""?".":z+":";if(vt(s))for(var dl=0;dlnew Promise((G,x)=>{if(typeof navigator<"u"&&typeof navigator.clipboard<"u"&&navigator.permissions!==void 0){const N="text/plain",U=new Blob([_],{type:N}),V=[new ClipboardItem({[N]:U})];navigator.permissions.query({name:"clipboard-write"}).then(L=>{L.state==="granted"||L.state==="prompt"?navigator.clipboard.write(V).then(()=>G(),x).catch(x):x(new Error("Cliboard permission not granted"))})}else if(document.queryCommandSupported&&document.queryCommandSupported("copy")){var v=document.createElement("textarea");v.textContent=_,v.style.position="fixed",v.style.width="2em",v.style.height="2em",v.style.padding="0",v.style.border="none",v.style.outline="none",v.style.boxShadow="none",v.style.background="transparent",document.body.appendChild(v),v.focus(),v.select();try{document.execCommand("copy"),document.body.removeChild(v),G()}catch(N){document.body.removeChild(v),x(N)}}else x(new Error("Clipboard API is unavailable"))}); ``` -------------------------------- ### React DOM Rendering and Hydration Functions Source: https://github.com/roboplc/logicline/blob/main/ll-default-view/dist/index.html Provides functions for creating React roots, hydrating existing DOM structures, and managing the rendering lifecycle. It includes error handling for version mismatches and integration with React DevTools. ```javascript function Wf(l){this._internalRoot=l} Hn.prototype.render=Wf.prototype.render=function(l){ var t=this._internalRoot; if(t===null)throw Error(v(409)); var u=t.current,a=tt(); Zo(u,a,l,t,null,null) }; Hn.prototype.unmount=Wf.prototype.unmount=function(){ var l=this._internalRoot; if(l!==null){ this._internalRoot=null; var t=l.containerInfo; Zo(l.current,2,null,l,null,null), yn(), t[qu]=null } }; function Hn(l){this._internalRoot=l} Hn.prototype.unstable_scheduleHydration=function(l){ if(l){ var t=di(); l={blockedOn:null,target:l,priority:t}; for(var u=0;u{for(const U of N)if(U.type==="childList")for(const V of U.addedNodes)V.tagName==="LINK"&&V.rel==="modulepreload"&&v(V)}).observe(document,{childList:!0,subtree:!0});function x(N){const U={};return N.integrity&&(U.integrity=N.integrity),N.referrerPolicy&&(U.referrerPolicy=N.referrerPolicy),N.crossOrigin==="use-credentials"?U.credentials="include":N.crossOrigin==="anonymous"?U.credentials="omit":U.credentials="same-origin",U}function v(N){if(N.ep)return;N.ep=!0;const U=x(N);fetch(N.href,U)}})() ``` -------------------------------- ### React Scheduler (JavaScript) Source: https://github.com/roboplc/logicline/blob/main/ll-default-view/dist/index.html The production build of React's scheduler, a library for managing asynchronous tasks and rendering. It provides utilities for scheduling callbacks with different priorities and managing task execution, crucial for maintaining responsiveness in complex applications. It utilizes `setTimeout` or `MessageChannel` for scheduling. ```javascript var Ff={exports:{}},me={},If={exports:{}},Pf={};/ ** * @license React * scheduler.production.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * /var Po;function xv(){return Po||(Po=1,function(_){function G(S,O){var X=S.length;S.push(O);l:for(;0>>1,s=S[fl];if(0>>1;flN(z,X))YN(P,z)?(S[fl]=P,S[Y]=X,fl=Y):(S[fl]=z,S[D]=X,fl=D);else if(YN(P,X))S[fl]=P,S[Y]=X,fl=Y;else break l}}return O}function N(S,O){var X=S.sortIndex-O.sortIndex;return X!==0?X:S.id-O.id}if(_.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"){var U=performance;_.unstable_now=function(){return U.now()}}else{var V=Date,L=V.now();_.unstable_now=function(){return V.now()-L}}var M=[],E=[],p=1,F=null,J=3,ol=!1,Sl=!1,Vl=!1,jl=!1,du=typeof setTimeout=="function"?setTimeout:null,_t=typeof clearTimeout=="function"?clearTimeout:null,pl=typeof setImmediate<"u"?setImmediate:null;function vt(S){for(var O=x(E);O!==null;){if(O.callback===null)v(E);else if(O.startTime<=S)v(E),O.sortIndex=O.expirationTime,G(M,O);else break;O=x(E)}}}function I(S){if(Vl=!1,vt(S),!Sl)if(x(M)!==null)Sl=!0,Ll||(Ll=!0,Nl());else{var O=x(E);O!==null&&Hl(I,O.startTime-S)}}var Ll=!1,Kl=-1,Jl=5,mt=-1;function Hu(){return jl?!0:!(_.unstable_now()-mtS&&Hu());){var fl=F.callback;if(typeof fl==="function"){F.callback=null,J=F.priorityLevel;var s=fl(F.expirationTime<=S);if(typeof s==="function"){F.callback=s,vt(S),O=!0;break t}F===x(M)&&v(M),vt(S)}else v(M);F=x(M)}if(F!==null)O=!0;else{var A=x(E);A!==null&&Hl(I,A.startTime-S),O=!1}}break l}finally{F=null,J=X,ol=!1}O=void 0}}finally{O?Nl():Ll=!1}}}var Nl;if(typeof pl==="function")Nl=function(){pl(zt)};else if(typeof MessageChannel<"u"){var vu=new MessageChannel,yu=vu.port2;vu.port1.onmessage=zt,Nl=function(){yu.postMessage(null)}}else Nl=function(){du(zt,0)};function Hl(S,O){Kl=du(function(){S(_.unstable_now())},O)}.unstable_IdlePriority=5,.unstable_ImmediatePriority=1,.unstable_LowPriority=4,.unstable_NormalPriority=3,.unstable_Profiling=null,.unstable_UserBlockingPriority=2,.unstable_cancelCallback=function(S){S.callback=null},.unstable_forceFrameRate=function(S){0>S||125