.outer{display:flex;height:100%}.inner-col{width:0;flex-grow:1;height:100%}.factory-panel{display:flex;flex-direction:column}.factory{padding:10px;margin:10px;flex-grow:1}.factory-red{background-color:#c224;border:1px solid #cc222288}.factory-green{background-color:#3c34;border:1px solid #33cc3388}.factory-blue{background-color:#24c4;border:1px solid #2244cc88}.factory-bin{background-color:#9994;border:1px solid #999}.ag-row.red-row{background-color:#c224}.ag-row.green-row{background-color:#3c34}.ag-row.blue-row{background-color:#24c4}.ag-row.file-row{background-color:#9994}.ag-row.pending-row{background-color:#ffdf0033}const PRIMITIVE_TYPES = ["string","number","boolean","undefined","null","NaN","symbol"]; const OBJECT_PROPERTIES_LIMIT = 3; function getType(value){if (value === null) return "null";if (Number.isNaN(value)) return "NaN";if (Array.isArray(value)) return "array";if (value instanceof Date) return "date";if (value instanceof RegExp) return "regexp";if (value instanceof Map) return "map";if (value instanceof Set) return "set";if (value instanceof WeakMap) return "weakmap";if (value instanceof WeakSet) return "weakset";if (value instanceof Promise) return "promise";if (value instanceof Error) return "error";if (typeof value === "object") return "object";return typeof value}function safeStringify(obj,space = 2){const seen = new WeakSet();const isLoggableArray = getType(obj) === "array" && obj.every(isLoggableType);const getObjectValue = (value) =>{if (seen.has(value)){return "[Circular]"}else if (value === undefined){return "undefined"}seen.add(value);// Include custom class names if available if (value.constructor && value.constructor.name && getType(value) !== "object"){return `${value.constructor.name}Class{...}`}return value}return isLoggableArray ? JSON.stringify(obj) : JSON.stringify(obj,(_,value) => {const valueType = getType(value); let newValue = value; if (valueType === "object") {newValue = getObjectValue(newValue);} else if (valueType === "array") {newValue = value.map((item) => {return getType(item === "object") ? getObjectValue(item) : item;});} return newValue;},space)}function isPrimitiveType(value){return PRIMITIVE_TYPES.includes(getType(value))}function isLoggableType(value){const valueType = getType(value);return isPrimitiveType(value) || (valueType === "array" && value.every(isPrimitiveType)) || (valueType === "object" && Object.values(value).every(isPrimitiveType) && Object.keys(value).length <= OBJECT_PROPERTIES_LIMIT)}function getConsoleValue(value){return isPrimitiveType(value) ? value :{__consoleLogObject:true,isLoggable: isLoggableType(value),argType: getType(value),safeString: safeStringify(value)}}function getConsoleLogData(args){return args.map(getConsoleValue)}const originalConsoleLog = console.log; console.log = (...args) =>{try{window.parent.postMessage({type: "console-log",pageName: "drag-and-drop",exampleName: "two-grids",data: getConsoleLogData(args),})}catch{// Posting is best-effort and shouldn't block normal console logging.
}originalConsoleLog(...args)};{}
