UNPKG

@storybook/addon-docs

Version:

Storybook Docs: Document UI components automatically with stories and MDX

1,075 lines (1,046 loc) 300 kB
import { getControlId, getControlSetterButtonId } from "./_browser-chunks/chunk-CYSK6WYR.js"; import { EmptyBlock, Source, curriedDarken$1, curriedLighten$1, curriedOpacify$1, curriedTransparentize$1, rgba } from "./_browser-chunks/chunk-DDRHE7EB.js"; import { __commonJS, __require, __toESM } from "./_browser-chunks/chunk-A242L54C.js"; // ../../node_modules/memoizerific/memoizerific.js var require_memoizerific = __commonJS({ "../../node_modules/memoizerific/memoizerific.js"(exports, module) { (function(f2) { if (typeof exports == "object" && typeof module < "u") module.exports = f2(); else if (typeof define == "function" && define.amd) define([], f2); else { var g2; typeof window < "u" ? g2 = window : typeof global < "u" ? g2 = global : typeof self < "u" ? g2 = self : g2 = this, g2.memoizerific = f2(); } })(function() { var define2, module2, exports2; return (function e2(t, n2, r2) { function s2(o3, u2) { if (!n2[o3]) { if (!t[o3]) { var a2 = typeof __require == "function" && __require; if (!u2 && a2) return a2(o3, !0); if (i2) return i2(o3, !0); var f2 = new Error("Cannot find module '" + o3 + "'"); throw f2.code = "MODULE_NOT_FOUND", f2; } var l2 = n2[o3] = { exports: {} }; t[o3][0].call(l2.exports, function(e3) { var n3 = t[o3][1][e3]; return s2(n3 || e3); }, l2, l2.exports, e2, t, n2, r2); } return n2[o3].exports; } for (var i2 = typeof __require == "function" && __require, o2 = 0; o2 < r2.length; o2++) s2(r2[o2]); return s2; })({ 1: [function(_dereq_, module3, exports3) { module3.exports = function(forceSimilar) { if (typeof Map != "function" || forceSimilar) { var Similar = _dereq_("./similar"); return new Similar(); } else return /* @__PURE__ */ new Map(); }; }, { "./similar": 2 }], 2: [function(_dereq_, module3, exports3) { function Similar() { return this.list = [], this.lastItem = void 0, this.size = 0, this; } Similar.prototype.get = function(key) { var index; if (this.lastItem && this.isEqual(this.lastItem.key, key)) return this.lastItem.val; if (index = this.indexOf(key), index >= 0) return this.lastItem = this.list[index], this.list[index].val; }, Similar.prototype.set = function(key, val) { var index; return this.lastItem && this.isEqual(this.lastItem.key, key) ? (this.lastItem.val = val, this) : (index = this.indexOf(key), index >= 0 ? (this.lastItem = this.list[index], this.list[index].val = val, this) : (this.lastItem = { key, val }, this.list.push(this.lastItem), this.size++, this)); }, Similar.prototype.delete = function(key) { var index; if (this.lastItem && this.isEqual(this.lastItem.key, key) && (this.lastItem = void 0), index = this.indexOf(key), index >= 0) return this.size--, this.list.splice(index, 1)[0]; }, Similar.prototype.has = function(key) { var index; return this.lastItem && this.isEqual(this.lastItem.key, key) ? !0 : (index = this.indexOf(key), index >= 0 ? (this.lastItem = this.list[index], !0) : !1); }, Similar.prototype.forEach = function(callback, thisArg) { var i2; for (i2 = 0; i2 < this.size; i2++) callback.call(thisArg || this, this.list[i2].val, this.list[i2].key, this); }, Similar.prototype.indexOf = function(key) { var i2; for (i2 = 0; i2 < this.size; i2++) if (this.isEqual(this.list[i2].key, key)) return i2; return -1; }, Similar.prototype.isEqual = function(val1, val2) { return val1 === val2 || val1 !== val1 && val2 !== val2; }, module3.exports = Similar; }, {}], 3: [function(_dereq_, module3, exports3) { var MapOrSimilar = _dereq_("map-or-similar"); module3.exports = function(limit) { var cache = new MapOrSimilar(!1), lru = []; return function(fn) { var memoizerific = function() { var currentCache = cache, newMap, fnResult, argsLengthMinusOne = arguments.length - 1, lruPath = Array(argsLengthMinusOne + 1), isMemoized = !0, i2; if ((memoizerific.numArgs || memoizerific.numArgs === 0) && memoizerific.numArgs !== argsLengthMinusOne + 1) throw new Error("Memoizerific functions should always be called with the same number of arguments"); for (i2 = 0; i2 < argsLengthMinusOne; i2++) { if (lruPath[i2] = { cacheItem: currentCache, arg: arguments[i2] }, currentCache.has(arguments[i2])) { currentCache = currentCache.get(arguments[i2]); continue; } isMemoized = !1, newMap = new MapOrSimilar(!1), currentCache.set(arguments[i2], newMap), currentCache = newMap; } return isMemoized && (currentCache.has(arguments[argsLengthMinusOne]) ? fnResult = currentCache.get(arguments[argsLengthMinusOne]) : isMemoized = !1), isMemoized || (fnResult = fn.apply(null, arguments), currentCache.set(arguments[argsLengthMinusOne], fnResult)), limit > 0 && (lruPath[argsLengthMinusOne] = { cacheItem: currentCache, arg: arguments[argsLengthMinusOne] }, isMemoized ? moveToMostRecentLru(lru, lruPath) : lru.push(lruPath), lru.length > limit && removeCachedResult(lru.shift())), memoizerific.wasMemoized = isMemoized, memoizerific.numArgs = argsLengthMinusOne + 1, fnResult; }; return memoizerific.limit = limit, memoizerific.wasMemoized = !1, memoizerific.cache = cache, memoizerific.lru = lru, memoizerific; }; }; function moveToMostRecentLru(lru, lruPath) { var lruLen = lru.length, lruPathLen = lruPath.length, isMatch, i2, ii; for (i2 = 0; i2 < lruLen; i2++) { for (isMatch = !0, ii = 0; ii < lruPathLen; ii++) if (!isEqual(lru[i2][ii].arg, lruPath[ii].arg)) { isMatch = !1; break; } if (isMatch) break; } lru.push(lru.splice(i2, 1)[0]); } function removeCachedResult(removedLru) { var removedLruLen = removedLru.length, currentLru = removedLru[removedLruLen - 1], tmp, i2; for (currentLru.cacheItem.delete(currentLru.arg), i2 = removedLruLen - 2; i2 >= 0 && (currentLru = removedLru[i2], tmp = currentLru.cacheItem.get(currentLru.arg), !tmp || !tmp.size); i2--) currentLru.cacheItem.delete(currentLru.arg); } function isEqual(val1, val2) { return val1 === val2 || val1 !== val1 && val2 !== val2; } }, { "map-or-similar": 1 }] }, {}, [3])(3); }); } }); // src/blocks/components/ArgsTable/ArgsTable.tsx import React23 from "react"; import { once } from "storybook/internal/client-logger"; import { Button as Button5, Link as Link3, ResetWrapper } from "storybook/internal/components"; import { includeConditionalArg } from "storybook/internal/csf"; import { DocumentIcon as DocumentIcon2, UndoIcon } from "@storybook/icons"; // ../../node_modules/es-toolkit/dist/predicate/isPrimitive.mjs function isPrimitive(value2) { return value2 == null || typeof value2 != "object" && typeof value2 != "function"; } // ../../node_modules/es-toolkit/dist/predicate/isTypedArray.mjs function isTypedArray(x2) { return ArrayBuffer.isView(x2) && !(x2 instanceof DataView); } // ../../node_modules/es-toolkit/dist/compat/_internal/getSymbols.mjs function getSymbols(object2) { return Object.getOwnPropertySymbols(object2).filter((symbol) => Object.prototype.propertyIsEnumerable.call(object2, symbol)); } // ../../node_modules/es-toolkit/dist/compat/_internal/getTag.mjs function getTag(value2) { return value2 == null ? value2 === void 0 ? "[object Undefined]" : "[object Null]" : Object.prototype.toString.call(value2); } // ../../node_modules/es-toolkit/dist/compat/_internal/tags.mjs var regexpTag = "[object RegExp]", stringTag = "[object String]", numberTag = "[object Number]", booleanTag = "[object Boolean]", argumentsTag = "[object Arguments]", symbolTag = "[object Symbol]", dateTag = "[object Date]", mapTag = "[object Map]", setTag = "[object Set]", arrayTag = "[object Array]"; var arrayBufferTag = "[object ArrayBuffer]", objectTag = "[object Object]"; var dataViewTag = "[object DataView]", uint8ArrayTag = "[object Uint8Array]", uint8ClampedArrayTag = "[object Uint8ClampedArray]", uint16ArrayTag = "[object Uint16Array]", uint32ArrayTag = "[object Uint32Array]"; var int8ArrayTag = "[object Int8Array]", int16ArrayTag = "[object Int16Array]", int32ArrayTag = "[object Int32Array]"; var float32ArrayTag = "[object Float32Array]", float64ArrayTag = "[object Float64Array]"; // ../../node_modules/es-toolkit/dist/object/cloneDeepWith.mjs function cloneDeepWithImpl(valueToClone, keyToClone, objectToClone, stack = /* @__PURE__ */ new Map(), cloneValue = void 0) { let cloned = cloneValue?.(valueToClone, keyToClone, objectToClone, stack); if (cloned !== void 0) return cloned; if (isPrimitive(valueToClone)) return valueToClone; if (stack.has(valueToClone)) return stack.get(valueToClone); if (Array.isArray(valueToClone)) { let result = new Array(valueToClone.length); stack.set(valueToClone, result); for (let i2 = 0; i2 < valueToClone.length; i2++) result[i2] = cloneDeepWithImpl(valueToClone[i2], i2, objectToClone, stack, cloneValue); return Object.hasOwn(valueToClone, "index") && (result.index = valueToClone.index), Object.hasOwn(valueToClone, "input") && (result.input = valueToClone.input), result; } if (valueToClone instanceof Date) return new Date(valueToClone.getTime()); if (valueToClone instanceof RegExp) { let result = new RegExp(valueToClone.source, valueToClone.flags); return result.lastIndex = valueToClone.lastIndex, result; } if (valueToClone instanceof Map) { let result = /* @__PURE__ */ new Map(); stack.set(valueToClone, result); for (let [key, value2] of valueToClone) result.set(key, cloneDeepWithImpl(value2, key, objectToClone, stack, cloneValue)); return result; } if (valueToClone instanceof Set) { let result = /* @__PURE__ */ new Set(); stack.set(valueToClone, result); for (let value2 of valueToClone) result.add(cloneDeepWithImpl(value2, void 0, objectToClone, stack, cloneValue)); return result; } if (typeof Buffer < "u" && Buffer.isBuffer(valueToClone)) return valueToClone.subarray(); if (isTypedArray(valueToClone)) { let result = new (Object.getPrototypeOf(valueToClone)).constructor(valueToClone.length); stack.set(valueToClone, result); for (let i2 = 0; i2 < valueToClone.length; i2++) result[i2] = cloneDeepWithImpl(valueToClone[i2], i2, objectToClone, stack, cloneValue); return result; } if (valueToClone instanceof ArrayBuffer || typeof SharedArrayBuffer < "u" && valueToClone instanceof SharedArrayBuffer) return valueToClone.slice(0); if (valueToClone instanceof DataView) { let result = new DataView(valueToClone.buffer.slice(0), valueToClone.byteOffset, valueToClone.byteLength); return stack.set(valueToClone, result), copyProperties(result, valueToClone, objectToClone, stack, cloneValue), result; } if (typeof File < "u" && valueToClone instanceof File) { let result = new File([valueToClone], valueToClone.name, { type: valueToClone.type }); return stack.set(valueToClone, result), copyProperties(result, valueToClone, objectToClone, stack, cloneValue), result; } if (typeof Blob < "u" && valueToClone instanceof Blob) { let result = new Blob([valueToClone], { type: valueToClone.type }); return stack.set(valueToClone, result), copyProperties(result, valueToClone, objectToClone, stack, cloneValue), result; } if (valueToClone instanceof Error) { let result = new valueToClone.constructor(); return stack.set(valueToClone, result), result.message = valueToClone.message, result.name = valueToClone.name, result.stack = valueToClone.stack, result.cause = valueToClone.cause, copyProperties(result, valueToClone, objectToClone, stack, cloneValue), result; } if (valueToClone instanceof Boolean) { let result = new Boolean(valueToClone.valueOf()); return stack.set(valueToClone, result), copyProperties(result, valueToClone, objectToClone, stack, cloneValue), result; } if (valueToClone instanceof Number) { let result = new Number(valueToClone.valueOf()); return stack.set(valueToClone, result), copyProperties(result, valueToClone, objectToClone, stack, cloneValue), result; } if (valueToClone instanceof String) { let result = new String(valueToClone.valueOf()); return stack.set(valueToClone, result), copyProperties(result, valueToClone, objectToClone, stack, cloneValue), result; } if (typeof valueToClone == "object" && isCloneableObject(valueToClone)) { let result = Object.create(Object.getPrototypeOf(valueToClone)); return stack.set(valueToClone, result), copyProperties(result, valueToClone, objectToClone, stack, cloneValue), result; } return valueToClone; } function copyProperties(target, source, objectToClone = target, stack, cloneValue) { let keys = [...Object.keys(source), ...getSymbols(source)]; for (let i2 = 0; i2 < keys.length; i2++) { let key = keys[i2], descriptor = Object.getOwnPropertyDescriptor(target, key); (descriptor == null || descriptor.writable) && (target[key] = cloneDeepWithImpl(source[key], key, objectToClone, stack, cloneValue)); } } function isCloneableObject(object2) { switch (getTag(object2)) { case argumentsTag: case arrayTag: case arrayBufferTag: case dataViewTag: case booleanTag: case dateTag: case float32ArrayTag: case float64ArrayTag: case int8ArrayTag: case int16ArrayTag: case int32ArrayTag: case mapTag: case numberTag: case objectTag: case regexpTag: case setTag: case stringTag: case symbolTag: case uint8ArrayTag: case uint8ClampedArrayTag: case uint16ArrayTag: case uint32ArrayTag: return !0; default: return !1; } } // ../../node_modules/es-toolkit/dist/object/cloneDeep.mjs function cloneDeep(obj) { return cloneDeepWithImpl(obj, void 0, obj, /* @__PURE__ */ new Map(), void 0); } // ../../node_modules/es-toolkit/dist/object/pickBy.mjs function pickBy(obj, shouldPick) { let result = {}, keys = Object.keys(obj); for (let i2 = 0; i2 < keys.length; i2++) { let key = keys[i2], value2 = obj[key]; shouldPick(value2, key) && (result[key] = value2); } return result; } // ../../node_modules/es-toolkit/dist/string/words.mjs var CASE_SPLIT_PATTERN = new RegExp("\\p{Lu}?\\p{Ll}+|[0-9]+|\\p{Lu}+(?!\\p{Ll})|\\p{Emoji_Presentation}|\\p{Extended_Pictographic}|\\p{L}+", "gu"); // src/blocks/components/ArgsTable/ArgsTable.tsx import { styled as styled18 } from "storybook/theming"; // src/blocks/components/ArgsTable/ArgRow.tsx import React19, { useState as useState8 } from "react"; import { codeCommon as codeCommon3 } from "storybook/internal/components"; // ../../node_modules/markdown-to-jsx/dist/index.modern.js import * as e from "react"; function n() { return n = Object.assign ? Object.assign.bind() : function(e2) { for (var n2 = 1; n2 < arguments.length; n2++) { var r2 = arguments[n2]; for (var t in r2) Object.prototype.hasOwnProperty.call(r2, t) && (e2[t] = r2[t]); } return e2; }, n.apply(this, arguments); } var r = ["children", "options"]; var o = ["allowFullScreen", "allowTransparency", "autoComplete", "autoFocus", "autoPlay", "cellPadding", "cellSpacing", "charSet", "classId", "colSpan", "contentEditable", "contextMenu", "crossOrigin", "encType", "formAction", "formEncType", "formMethod", "formNoValidate", "formTarget", "frameBorder", "hrefLang", "inputMode", "keyParams", "keyType", "marginHeight", "marginWidth", "maxLength", "mediaGroup", "minLength", "noValidate", "radioGroup", "readOnly", "rowSpan", "spellCheck", "srcDoc", "srcLang", "srcSet", "tabIndex", "useMap"].reduce((e2, n2) => (e2[n2.toLowerCase()] = n2, e2), { class: "className", for: "htmlFor" }), a = { amp: "&", apos: "'", gt: ">", lt: "<", nbsp: "\xA0", quot: "\u201C" }, c = ["style", "script", "pre"], i = ["src", "href", "data", "formAction", "srcDoc", "action"], u = /([-A-Z0-9_:]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|(?:\{((?:\\.|{[^}]*?}|[^}])*)\})))?/gi, l = /\n{2,}$/, s = /^(\s*>[\s\S]*?)(?=\n\n|$)/, f = /^ *> ?/gm, _ = /^(?:\[!([^\]]*)\]\n)?([\s\S]*)/, d = /^ {2,}\n/, p = /^(?:([-*_])( *\1){2,}) *(?:\n *)+\n/, y = /^(?: {1,3})?(`{3,}|~{3,}) *(\S+)? *([^\n]*?)?\n([\s\S]*?)(?:\1\n?|$)/, h = /^(?: {4}[^\n]+\n*)+(?:\n *)+\n?/, g = /^(`+)((?:\\`|(?!\1)`|[^`])+)\1/, m = /^(?:\n *)*\n/, k = /\r\n?/g, x = /^\[\^([^\]]+)](:(.*)((\n+ {4,}.*)|(\n(?!\[\^).+))*)/, q = /^\[\^([^\]]+)]/, v = /\f/g, b = /^---[ \t]*\n(.|\n)*\n---[ \t]*\n/, $ = /^\s*?\[(x|\s)\]/, S = /^ *(#{1,6}) *([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/, z = /^ *(#{1,6}) +([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/, E = /^([^\n]+)\n *(=|-)\2{2,} *\n/, A = /^ *(?!<[a-z][^ >/]* ?\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\n?(\s*(?:<\1[^>]*?>[\s\S]*?<\/\1>|(?!<\1\b)[\s\S])*?)<\/\1>(?!<\/\1>)\n*/i, R = /&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi, B = /^<!--[\s\S]*?(?:-->)/, L = /^(data|aria|x)-[a-z_][a-z\d_.-]*$/, O = /^ *<([a-z][a-z0-9:]*)(?:\s+((?:<.*?>|[^>])*))?\/?>(?!<\/\1>)(\s*\n)?/i, j = /^\{.*\}$/, C = /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/, I = /^<([^ >]+[:@\/][^ >]+)>/, T = /-([a-z])?/gi, M = /^(\|.*)\n(?: *(\|? *[-:]+ *\|[-| :]*)\n((?:.*\|.*\n)*))?\n?/, w = /^[^\n]+(?: \n|\n{2,})/, D = /^\[([^\]]*)\]:\s+<?([^\s>]+)>?\s*("([^"]*)")?/, F = /^!\[([^\]]*)\] ?\[([^\]]*)\]/, P = /^\[([^\]]*)\] ?\[([^\]]*)\]/, Z = /(\n|^[-*]\s|^#|^ {2,}|^-{2,}|^>\s)/, N = /\t/g, G = /(^ *\||\| *$)/g, U = /^ *:-+: *$/, V = /^ *:-+ *$/, H = /^ *-+: *$/, Q = (e2) => `(?=[\\s\\S]+?\\1${e2 ? "\\1" : ""})`, W = "((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|\\\\\\1|[\\s\\S])+?)", J = RegExp(`^([*_])\\1${Q(1)}${W}\\1\\1(?!\\1)`), K = RegExp(`^([*_])${Q(0)}${W}\\1(?!\\1)`), X = RegExp(`^(==)${Q(0)}${W}\\1`), Y = RegExp(`^(~~)${Q(0)}${W}\\1`), ee = /^(:[a-zA-Z0-9-_]+:)/, ne = /^\\([^0-9A-Za-z\s])/, re = /\\([^0-9A-Za-z\s])/g, te = /^[\s\S](?:(?! \n|[0-9]\.|http)[^=*_~\-\n:<`\\\[!])*/, oe = /^\n+/, ae = /^([ \t]*)/, ce = /(?:^|\n)( *)$/, ie = "(?:\\d+\\.)", ue = "(?:[*+-])"; function le(e2) { return "( *)(" + (e2 === 1 ? ie : ue) + ") +"; } var se = le(1), fe = le(2); function _e(e2) { return RegExp("^" + (e2 === 1 ? se : fe)); } var de = _e(1), pe = _e(2); function ye(e2) { return RegExp("^" + (e2 === 1 ? se : fe) + "[^\\n]*(?:\\n(?!\\1" + (e2 === 1 ? ie : ue) + " )[^\\n]*)*(\\n|$)", "gm"); } var he = ye(1), ge = ye(2); function me(e2) { let n2 = e2 === 1 ? ie : ue; return RegExp("^( *)(" + n2 + ") [\\s\\S]+?(?:\\n{2,}(?! )(?!\\1" + n2 + " (?!" + n2 + " ))\\n*|\\s*\\n*$)"); } var ke = me(1), xe = me(2); function qe(e2, n2) { let r2 = n2 === 1, t = r2 ? ke : xe, o2 = r2 ? he : ge, a2 = r2 ? de : pe; return { t: (e3) => a2.test(e3), o: je(function(e3, n3) { let r3 = ce.exec(n3.prevCapture); return r3 && (n3.list || !n3.inline && !n3.simple) ? t.exec(e3 = r3[1] + e3) : null; }), i: 1, u(e3, n3, t2) { let c2 = r2 ? +e3[2] : void 0, i2 = e3[0].replace(l, ` `).match(o2), u2 = !1; return { items: i2.map(function(e4, r3) { let o3 = a2.exec(e4)[0].length, c3 = RegExp("^ {1," + o3 + "}", "gm"), l2 = e4.replace(c3, "").replace(a2, ""), s2 = r3 === i2.length - 1, f2 = l2.indexOf(` `) !== -1 || s2 && u2; u2 = f2; let _2 = t2.inline, d2 = t2.list, p2; t2.list = !0, f2 ? (t2.inline = !1, p2 = Se(l2) + ` `) : (t2.inline = !0, p2 = Se(l2)); let y2 = n3(p2, t2); return t2.inline = _2, t2.list = d2, y2; }), ordered: r2, start: c2 }; }, l: (n3, r3, t2) => e2(n3.ordered ? "ol" : "ul", { key: t2.key, start: n3.type === "20" ? n3.start : void 0 }, n3.items.map(function(n4, o3) { return e2("li", { key: o3 }, r3(n4, t2)); })) }; } var ve = RegExp(`^\\[((?:\\[[^\\[\\]]*(?:\\[[^\\[\\]]*\\][^\\[\\]]*)*\\]|[^\\[\\]])*)\\]\\(\\s*<?((?:\\([^)]*\\)|[^\\s\\\\]|\\\\.)*?)>?(?:\\s+['"]([\\s\\S]*?)['"])?\\s*\\)`), be = /^!\[(.*?)\]\( *((?:\([^)]*\)|[^() ])*) *"?([^)"]*)?"?\)/; function $e(e2) { return typeof e2 == "string"; } function Se(e2) { let n2 = e2.length; for (; n2 > 0 && e2[n2 - 1] <= " "; ) n2--; return e2.slice(0, n2); } function ze(e2, n2) { return e2.startsWith(n2); } function Ee(e2, n2, r2) { if (Array.isArray(r2)) { for (let n3 = 0; n3 < r2.length; n3++) if (ze(e2, r2[n3])) return !0; return !1; } return r2(e2, n2); } function Ae(e2) { return e2.replace(/[ÀÁÂÃÄÅàáâãä忯]/g, "a").replace(/[çÇ]/g, "c").replace(/[ðÐ]/g, "d").replace(/[ÈÉÊËéèêë]/g, "e").replace(/[ÏïÎîÍíÌì]/g, "i").replace(/[Ññ]/g, "n").replace(/[øØœŒÕõÔôÓóÒò]/g, "o").replace(/[ÜüÛûÚúÙù]/g, "u").replace(/[ŸÿÝý]/g, "y").replace(/[^a-z0-9- ]/gi, "").replace(/ /gi, "-").toLowerCase(); } function Re(e2) { return H.test(e2) ? "right" : U.test(e2) ? "center" : V.test(e2) ? "left" : null; } function Be(e2, n2, r2, t) { let o2 = r2.inTable; r2.inTable = !0; let a2 = [[]], c2 = ""; function i2() { if (!c2) return; let e3 = a2[a2.length - 1]; e3.push.apply(e3, n2(c2, r2)), c2 = ""; } return e2.trim().split(/(`[^`]*`|\\\||\|)/).filter(Boolean).forEach((e3, n3, r3) => { e3.trim() === "|" && (i2(), t) ? n3 !== 0 && n3 !== r3.length - 1 && a2.push([]) : c2 += e3; }), i2(), r2.inTable = o2, a2; } function Le(e2, n2, r2) { r2.inline = !0; let t = e2[2] ? e2[2].replace(G, "").split("|").map(Re) : [], o2 = e2[3] ? (function(e3, n3, r3) { return e3.trim().split(` `).map(function(e4) { return Be(e4, n3, r3, !0); }); })(e2[3], n2, r2) : [], a2 = Be(e2[1], n2, r2, !!o2.length); return r2.inline = !1, o2.length ? { align: t, cells: o2, header: a2, type: "25" } : { children: a2, type: "21" }; } function Oe(e2, n2) { return e2.align[n2] == null ? {} : { textAlign: e2.align[n2] }; } function je(e2) { return e2.inline = 1, e2; } function Ce(e2) { return je(function(n2, r2) { return r2.inline ? e2.exec(n2) : null; }); } function Ie(e2) { return je(function(n2, r2) { return r2.inline || r2.simple ? e2.exec(n2) : null; }); } function Te(e2) { return function(n2, r2) { return r2.inline || r2.simple ? null : e2.exec(n2); }; } function Me(e2) { return je(function(n2) { return e2.exec(n2); }); } var we = /(javascript|vbscript|data(?!:image)):/i; function De(e2) { try { let n2 = decodeURIComponent(e2).replace(/[^A-Za-z0-9/:]/g, ""); if (we.test(n2)) return null; } catch { return null; } return e2; } function Fe(e2) { return e2 && e2.replace(re, "$1"); } function Pe(e2, n2, r2) { let t = r2.inline || !1, o2 = r2.simple || !1; r2.inline = !0, r2.simple = !0; let a2 = e2(n2, r2); return r2.inline = t, r2.simple = o2, a2; } function Ze(e2, n2, r2) { let t = r2.inline || !1, o2 = r2.simple || !1; r2.inline = !1, r2.simple = !0; let a2 = e2(n2, r2); return r2.inline = t, r2.simple = o2, a2; } function Ne(e2, n2, r2) { let t = r2.inline || !1; r2.inline = !1; let o2 = e2(n2, r2); return r2.inline = t, o2; } var Ge = (e2, n2, r2) => ({ children: Pe(n2, e2[2], r2) }); function Ue() { return {}; } function Ve() { return null; } function He(...e2) { return e2.filter(Boolean).join(" "); } function Qe(e2, n2, r2) { let t = e2, o2 = n2.split("."); for (; o2.length && (t = t[o2[0]], t !== void 0); ) o2.shift(); return t || r2; } function We(r2 = "", t = {}) { t.overrides = t.overrides || {}, t.namedCodesToUnicode = t.namedCodesToUnicode ? n({}, a, t.namedCodesToUnicode) : a; let l2 = t.slugify || Ae, G2 = t.sanitizer || De, U2 = t.createElement || e.createElement, V2 = [s, y, h, t.enforceAtxHeadings ? z : S, E, M, ke, xe], H4 = [...V2, w, A, B, O]; function Q2(e2, n2) { for (let r3 = 0; r3 < e2.length; r3++) if (e2[r3].test(n2)) return !0; return !1; } function W2(e2, r3, ...o2) { let a2 = Qe(t.overrides, e2 + ".props", {}); return U2((function(e3, n2) { let r4 = Qe(n2, e3); return r4 ? typeof r4 == "function" || typeof r4 == "object" && "render" in r4 ? r4 : Qe(n2, e3 + ".component", e3) : e3; })(e2, t.overrides), n({}, r3, a2, { className: He(r3?.className, a2.className) || void 0 }), ...o2); } function re2(e2) { e2 = e2.replace(b, ""); let n2 = !1; t.forceInline ? n2 = !0 : t.forceBlock || (n2 = Z.test(e2) === !1); let r3 = fe2(se2(n2 ? e2 : Se(e2).replace(oe, "") + ` `, { inline: n2 })); for (; $e(r3[r3.length - 1]) && !r3[r3.length - 1].trim(); ) r3.pop(); if (t.wrapper === null) return r3; let o2 = t.wrapper || (n2 ? "span" : "div"), a2; if (r3.length > 1 || t.forceWrapper) a2 = r3; else { if (r3.length === 1) return a2 = r3[0], typeof a2 == "string" ? W2("span", { key: "outer" }, a2) : a2; a2 = null; } return U2(o2, { key: "outer" }, a2); } function ce2(e2, n2) { if (!n2 || !n2.trim()) return null; let r3 = n2.match(u); return r3 ? r3.reduce(function(n3, r4) { let t2 = r4.indexOf("="); if (t2 !== -1) { let a2 = (function(e3) { return e3.indexOf("-") !== -1 && e3.match(L) === null && (e3 = e3.replace(T, function(e4, n4) { return n4.toUpperCase(); })), e3; })(r4.slice(0, t2)).trim(), c2 = (function(e3) { let n4 = e3[0]; return (n4 === '"' || n4 === "'") && e3.length >= 2 && e3[e3.length - 1] === n4 ? e3.slice(1, -1) : e3; })(r4.slice(t2 + 1).trim()), u2 = o[a2] || a2; if (u2 === "ref") return n3; let l3 = n3[u2] = (function(e3, n4, r5, t3) { return n4 === "style" ? (function(e4) { let n5 = [], r6 = "", t4 = !1, o2 = !1, a3 = ""; if (!e4) return n5; for (let c4 = 0; c4 < e4.length; c4++) { let i2 = e4[c4]; if (i2 !== '"' && i2 !== "'" || t4 || (o2 ? i2 === a3 && (o2 = !1, a3 = "") : (o2 = !0, a3 = i2)), i2 === "(" && r6.endsWith("url") ? t4 = !0 : i2 === ")" && t4 && (t4 = !1), i2 !== ";" || o2 || t4) r6 += i2; else { let e5 = r6.trim(); if (e5) { let r7 = e5.indexOf(":"); if (r7 > 0) { let t5 = e5.slice(0, r7).trim(), o3 = e5.slice(r7 + 1).trim(); n5.push([t5, o3]); } } r6 = ""; } } let c3 = r6.trim(); if (c3) { let e5 = c3.indexOf(":"); if (e5 > 0) { let r7 = c3.slice(0, e5).trim(), t5 = c3.slice(e5 + 1).trim(); n5.push([r7, t5]); } } return n5; })(r5).reduce(function(n5, [r6, o2]) { return n5[r6.replace(/(-[a-z])/g, (e4) => e4[1].toUpperCase())] = t3(o2, e3, r6), n5; }, {}) : i.indexOf(n4) !== -1 ? t3(Fe(r5), e3, n4) : (r5.match(j) && (r5 = Fe(r5.slice(1, r5.length - 1))), r5 === "true" || r5 !== "false" && r5); })(e2, a2, c2, G2); typeof l3 == "string" && (A.test(l3) || O.test(l3)) && (n3[u2] = re2(l3.trim())); } else r4 !== "style" && (n3[o[r4] || r4] = !0); return n3; }, {}) : null; } let ie2 = [], ue2 = {}, le2 = { 0: { t: [">"], o: Te(s), i: 1, u(e2, n2, r3) { let [, t2, o2] = e2[0].replace(f, "").match(_); return { alert: t2, children: n2(o2, r3) }; }, l(e2, n2, r3) { let t2 = { key: r3.key }; return e2.alert && (t2.className = "markdown-alert-" + l2(e2.alert.toLowerCase(), Ae), e2.children.unshift({ attrs: {}, children: [{ type: "27", text: e2.alert }], noInnerParse: !0, type: "11", tag: "header" })), W2("blockquote", t2, n2(e2.children, r3)); } }, 1: { t: [" "], o: Me(d), i: 1, u: Ue, l: (e2, n2, r3) => W2("br", { key: r3.key }) }, 2: { t: ["--", "__", "**", "- ", "* ", "_ "], o: Te(p), i: 1, u: Ue, l: (e2, n2, r3) => W2("hr", { key: r3.key }) }, 3: { t: [" "], o: Te(h), i: 0, u: (e2) => ({ lang: void 0, text: Fe(Se(e2[0].replace(/^ {4}/gm, ""))) }), l: (e2, r3, t2) => W2("pre", { key: t2.key }, W2("code", n({}, e2.attrs, { className: e2.lang ? "lang-" + e2.lang : "" }), e2.text)) }, 4: { t: ["```", "~~~"], o: Te(y), i: 0, u: (e2) => ({ attrs: ce2("code", e2[3] || ""), lang: e2[2] || void 0, text: e2[4], type: "3" }) }, 5: { t: ["`"], o: Ie(g), i: 3, u: (e2) => ({ text: Fe(e2[2]) }), l: (e2, n2, r3) => W2("code", { key: r3.key }, e2.text) }, 6: { t: ["[^"], o: Te(x), i: 0, u: (e2) => (ie2.push({ footnote: e2[2], identifier: e2[1] }), {}), l: Ve }, 7: { t: ["[^"], o: Ce(q), i: 1, u: (e2) => ({ target: "#" + l2(e2[1], Ae), text: e2[1] }), l: (e2, n2, r3) => W2("a", { key: r3.key, href: G2(e2.target, "a", "href") }, W2("sup", { key: r3.key }, e2.text)) }, 8: { t: ["[ ]", "[x]"], o: Ce($), i: 1, u: (e2) => ({ completed: e2[1].toLowerCase() === "x" }), l: (e2, n2, r3) => W2("input", { checked: e2.completed, key: r3.key, readOnly: !0, type: "checkbox" }) }, 9: { t: ["#"], o: Te(t.enforceAtxHeadings ? z : S), i: 1, u: (e2, n2, r3) => ({ children: Pe(n2, e2[2], r3), id: l2(e2[2], Ae), level: e2[1].length }), l: (e2, n2, r3) => W2("h" + e2.level, { id: e2.id, key: r3.key }, n2(e2.children, r3)) }, 10: { t: (e2) => { let n2 = e2.indexOf(` `); return n2 > 0 && n2 < e2.length - 1 && (e2[n2 + 1] === "=" || e2[n2 + 1] === "-"); }, o: Te(E), i: 1, u: (e2, n2, r3) => ({ children: Pe(n2, e2[1], r3), level: e2[2] === "=" ? 1 : 2, type: "9" }) }, 11: { t: ["<"], o: Me(A), i: 1, u(e2, n2, r3) { let [, t2] = e2[3].match(ae), o2 = RegExp("^" + t2, "gm"), a2 = e2[3].replace(o2, ""), i2 = Q2(H4, a2) ? Ne : Pe, u2 = e2[1].toLowerCase(), l3 = c.indexOf(u2) !== -1, s2 = (l3 ? u2 : e2[1]).trim(), f2 = { attrs: ce2(s2, e2[2]), noInnerParse: l3, tag: s2 }; if (r3.inAnchor = r3.inAnchor || u2 === "a", l3) f2.text = e2[3]; else { let e3 = r3.inHTML; r3.inHTML = !0, f2.children = i2(n2, a2, r3), r3.inHTML = e3; } return r3.inAnchor = !1, f2; }, l: (e2, r3, t2) => W2(e2.tag, n({ key: t2.key }, e2.attrs), e2.text || (e2.children ? r3(e2.children, t2) : "")) }, 13: { t: ["<"], o: Me(O), i: 1, u(e2) { let n2 = e2[1].trim(); return { attrs: ce2(n2, e2[2] || ""), tag: n2 }; }, l: (e2, r3, t2) => W2(e2.tag, n({}, e2.attrs, { key: t2.key })) }, 12: { t: ["<!--"], o: Me(B), i: 1, u: () => ({}), l: Ve }, 14: { t: ["!["], o: Ie(be), i: 1, u: (e2) => ({ alt: Fe(e2[1]), target: Fe(e2[2]), title: Fe(e2[3]) }), l: (e2, n2, r3) => W2("img", { key: r3.key, alt: e2.alt || void 0, title: e2.title || void 0, src: G2(e2.target, "img", "src") }) }, 15: { t: ["["], o: Ce(ve), i: 3, u: (e2, n2, r3) => ({ children: Ze(n2, e2[1], r3), target: Fe(e2[2]), title: Fe(e2[3]) }), l: (e2, n2, r3) => W2("a", { key: r3.key, href: G2(e2.target, "a", "href"), title: e2.title }, n2(e2.children, r3)) }, 16: { t: ["<"], o: Ce(I), i: 0, u(e2) { let n2 = e2[1], r3 = !1; return n2.indexOf("@") !== -1 && n2.indexOf("//") === -1 && (r3 = !0, n2 = n2.replace("mailto:", "")), { children: [{ text: n2, type: "27" }], target: r3 ? "mailto:" + n2 : n2, type: "15" }; } }, 17: { t: (e2, n2) => !n2.inAnchor && !t.disableAutoLink && (ze(e2, "http://") || ze(e2, "https://")), o: Ce(C), i: 0, u: (e2) => ({ children: [{ text: e2[1], type: "27" }], target: e2[1], title: void 0, type: "15" }) }, 20: qe(W2, 1), 33: qe(W2, 2), 19: { t: [` `], o: Te(m), i: 3, u: Ue, l: () => ` ` }, 21: { o: je(function(e2, n2) { if (n2.inline || n2.simple || n2.inHTML && e2.indexOf(` `) === -1 && n2.prevCapture.indexOf(` `) === -1) return null; let r3 = "", t2 = 0; for (; ; ) { let n3 = e2.indexOf(` `, t2), o3 = e2.slice(t2, n3 === -1 ? void 0 : n3 + 1); if (Q2(V2, o3) || (r3 += o3, n3 === -1 || !o3.trim())) break; t2 = n3 + 1; } let o2 = Se(r3); return o2 === "" ? null : [r3, , o2]; }), i: 3, u: Ge, l: (e2, n2, r3) => W2("p", { key: r3.key }, n2(e2.children, r3)) }, 22: { t: ["["], o: Ce(D), i: 0, u: (e2) => (ue2[e2[1]] = { target: e2[2], title: e2[4] }, {}), l: Ve }, 23: { t: ["!["], o: Ie(F), i: 0, u: (e2) => ({ alt: e2[1] ? Fe(e2[1]) : void 0, ref: e2[2] }), l: (e2, n2, r3) => ue2[e2.ref] ? W2("img", { key: r3.key, alt: e2.alt, src: G2(ue2[e2.ref].target, "img", "src"), title: ue2[e2.ref].title }) : null }, 24: { t: (e2) => e2[0] === "[" && e2.indexOf("](") === -1, o: Ce(P), i: 0, u: (e2, n2, r3) => ({ children: n2(e2[1], r3), fallbackChildren: e2[0], ref: e2[2] }), l: (e2, n2, r3) => ue2[e2.ref] ? W2("a", { key: r3.key, href: G2(ue2[e2.ref].target, "a", "href"), title: ue2[e2.ref].title }, n2(e2.children, r3)) : W2("span", { key: r3.key }, e2.fallbackChildren) }, 25: { t: ["|"], o: Te(M), i: 1, u: Le, l(e2, n2, r3) { let t2 = e2; return W2("table", { key: r3.key }, W2("thead", null, W2("tr", null, t2.header.map(function(e3, o2) { return W2("th", { key: o2, style: Oe(t2, o2) }, n2(e3, r3)); }))), W2("tbody", null, t2.cells.map(function(e3, o2) { return W2("tr", { key: o2 }, e3.map(function(e4, o3) { return W2("td", { key: o3, style: Oe(t2, o3) }, n2(e4, r3)); })); }))); } }, 27: { o: je(function(e2, n2) { let r3; return ze(e2, ":") && (r3 = ee.exec(e2)), r3 || te.exec(e2); }), i: 4, u(e2) { let n2 = e2[0]; return { text: n2.indexOf("&") === -1 ? n2 : n2.replace(R, (e3, n3) => t.namedCodesToUnicode[n3] || e3) }; }, l: (e2) => e2.text }, 28: { t: ["**", "__"], o: Ie(J), i: 2, u: (e2, n2, r3) => ({ children: n2(e2[2], r3) }), l: (e2, n2, r3) => W2("strong", { key: r3.key }, n2(e2.children, r3)) }, 29: { t: (e2) => { let n2 = e2[0]; return (n2 === "*" || n2 === "_") && e2[1] !== n2; }, o: Ie(K), i: 3, u: (e2, n2, r3) => ({ children: n2(e2[2], r3) }), l: (e2, n2, r3) => W2("em", { key: r3.key }, n2(e2.children, r3)) }, 30: { t: ["\\"], o: Ie(ne), i: 1, u: (e2) => ({ text: e2[1], type: "27" }) }, 31: { t: ["=="], o: Ie(X), i: 3, u: Ge, l: (e2, n2, r3) => W2("mark", { key: r3.key }, n2(e2.children, r3)) }, 32: { t: ["~~"], o: Ie(Y), i: 3, u: Ge, l: (e2, n2, r3) => W2("del", { key: r3.key }, n2(e2.children, r3)) } }; t.disableParsingRawHTML === !0 && (delete le2[11], delete le2[13]); let se2 = (function(e2) { var n2 = Object.keys(e2); function r3(t2, o2) { var a2 = []; if (o2.prevCapture = o2.prevCapture || "", t2.trim()) for (; t2; ) for (var c2 = 0; c2 < n2.length; ) { var i2 = n2[c2], u2 = e2[i2]; if (!u2.t || Ee(t2, o2, u2.t)) { var l3 = u2.o(t2, o2); if (l3 && l3[0]) { t2 = t2.substring(l3[0].length); var s2 = u2.u(l3, r3, o2); o2.prevCapture += l3[0], s2.type || (s2.type = i2), a2.push(s2); break; } c2++; } else c2++; } return o2.prevCapture = "", a2; } return n2.sort(function(n3, r4) { return e2[n3].i - e2[r4].i || (n3 < r4 ? -1 : 1); }), function(e3, n3) { return r3((function(e4) { return e4.replace(k, ` `).replace(v, "").replace(N, " "); })(e3), n3); }; })(le2), fe2 = /* @__PURE__ */ (function(e2, n2) { return function r3(t2, o2 = {}) { if (Array.isArray(t2)) { let e3 = o2.key, n3 = [], a2 = !1; for (let e4 = 0; e4 < t2.length; e4++) { o2.key = e4; let c2 = r3(t2[e4], o2), i2 = $e(c2); i2 && a2 ? n3[n3.length - 1] += c2 : c2 !== null && n3.push(c2), a2 = i2; } return o2.key = e3, n3; } return (function(r4, t3, o3) { let a2 = e2[r4.type].l; return n2 ? n2(() => a2(r4, t3, o3), r4, t3, o3) : a2(r4, t3, o3); })(t2, r3, o2); }; })(le2, t.renderRule), _e2 = re2(r2); return ie2.length ? W2("div", null, _e2, W2("footer", { key: "footer" }, ie2.map(function(e2) { return W2("div", { id: l2(e2.identifier, Ae), key: e2.identifier }, e2.identifier, fe2(se2(e2.footnote, { inline: !0 }))); }))) : _e2; } var index_modern_default = (n2) => { let { children: t, options: o2 } = n2, a2 = (function(e2, n3) { if (e2 == null) return {}; var r2, t2, o3 = {}, a3 = Object.keys(e2); for (t2 = 0; t2 < a3.length; t2++) n3.indexOf(r2 = a3[t2]) >= 0 || (o3[r2] = e2[r2]); return o3; })(n2, r); return e.cloneElement(We(t ?? "", o2), a2); }; // src/blocks/components/ArgsTable/ArgRow.tsx import { styled as styled14 } from "storybook/theming"; // src/blocks/components/ArgsTable/ArgControl.tsx import React16, { useCallback as useCallback5, useEffect as useEffect6, useState as useState6 } from "react"; import { Link } from "storybook/internal/components"; // src/blocks/controls/index.tsx import React15, { Suspense, lazy } from "react"; // src/blocks/controls/Boolean.tsx import React, { useCallback } from "react"; import { Button } from "storybook/internal/components"; import { styled } from "storybook/theming"; var Label = styled.label(({ theme }) => ({ lineHeight: "18px", alignItems: "center", marginBottom: 8, display: "inline-block", position: "relative", whiteSpace: "nowrap", background: theme.boolean.background, borderRadius: "3em", padding: 1, '&[aria-disabled="true"]': { opacity: 0.5, input: { cursor: "not-allowed" } }, input: { appearance: "none", width: "100%", height: "100%", position: "absolute", left: 0, top: 0, margin: 0, padding: 0, border: "none", background: "transparent", cursor: "pointer", borderRadius: "3em", "&:focus": { outline: "none", boxShadow: `${theme.color.secondary} 0 0 0 1px inset !important` }, "@media (forced-colors: active)": { "&:focus": { outline: "1px solid highlight" } } }, span: { textAlign: "center", fontSize: theme.typography.size.s1, fontWeight: theme.typography.weight.bold, lineHeight: "1", cursor: "pointer", display: "inline-block", padding: "7px 15px", transition: "all 100ms ease-out", userSelect: "none", borderRadius: "3em", color: curriedTransparentize$1(0.5, theme.color.defaultText), background: "transparent", "&:hover": { boxShadow: `${curriedOpacify$1(0.3, theme.appBorderColor)} 0 0 0 1px inset` }, "&:active": { boxShadow: `${curriedOpacify$1(0.05, theme.appBorderColor)} 0 0 0 2px inset`, color: curriedOpacify$1(1, theme.appBorderColor) }, "&:first-of-type": { paddingRight: 8 }, "&:last-of-type": { paddingLeft: 8 } }, "input:checked ~ span:last-of-type, input:not(:checked) ~ span:first-of-type": { background: theme.boolean.selectedBackground, boxShadow: theme.base === "light" ? `${curriedOpacify$1(0.1, theme.appBorderColor)} 0 0 2px` : `${theme.appBorderColor} 0 0 0 1px`, color: theme.color.defaultText, padding: "7px 15px", "@media (forced-colors: active)": { textDecoration: "underline" } } })), parse = (value2) => value2 === "true", BooleanControl = ({ name, value: value2, onChange, onBlur, onFocus, argType }) => { let onSetFalse = useCallback(() => onChange(!1), [onChange]), readonly = !!argType?.table?.readonly; if (value2 === void 0) return React.createElement( Button, { ariaLabel: !1, variant: "outline", size: "medium", id: getControlSetterButtonId(name), onClick: onSetFalse, disabled: readonly }, "Set boolean" ); let controlId = getControlId(name), parsedValue = typeof value2 == "string" ? parse(value2) : value2; return React.createElement(Label, { "aria-disabled": readonly, htmlFor: controlId, "aria-label": name }, React.createElement( "input", { id: controlId, type: "checkbox", onChange: (e2) => onChange(e2.target.checked), checked: parsedValue, role: "switch", disabled: readonly, name, onBlur, onFocus } ), React.createElement("span", { "aria-hidden": "true" }, "False"), React.createElement("span", { "aria-hidden": "true" }, "True")); }; // src/blocks/controls/Date.tsx import React2, { useEffect, useRef, useState } from "react"; import { Form } from "storybook/internal/components"; import { styled as styled2 } from "storybook/theming"; var parseDate = (value2) => { let [year, month, day] = value2.split("-"), result = /* @__PURE__ */ new Date(); return result.setFullYear(parseInt(year, 10), parseInt(month, 10) - 1, parseInt(day, 10)), result; }, parseTime = (value2) => { let [hours, minutes] = value2.split(":"), result = /* @__PURE__ */ new Date(); return result.setHours(parseInt(hours, 10)), result.setMinutes(parseInt(minutes, 10)), result; }, formatDate = (value2) => { let date = new Date(value2), year = `000${date.getFullYear()}`.slice(-4), month = `0${date.getMonth() + 1}`.slice(-2), day = `0${date.getDate()}`.slice(-2); return `${year}-${month}-${day}`; }, formatTime = (value2) => { let date = new Date(value2), hours = `0${date.getHours()}`.slice(-2), minutes = `0${date.getMinutes()}`.slice(-2); return `${hours}:${minutes}`; }, FormInput = styled2(Form.Input)( ({ theme, readOnly }) => readOnly ? { background: theme.base === "light" ? theme.color.lighter : "transparent" } : {} ), FlexSpaced = styled2.fieldset(({ theme }) => ({ flex: 1, display: "flex", border: 0, marginInline: 0, padding: 0, input: { marginLeft: 10, flex: 1, height: 32, // hardcode height bc Chromium bug https://bugs.chromium.org/p/chromium/issues/detail?id=417606 "&::-webkit-calendar-picker-indicator": { opacity: 0.5, height: 12, filter: theme.base === "light" ? void 0 : "invert(1)" } }, "input:first-of-type": { marginLeft: 0, flexGrow: 4 }, "input:last-of-type": { flexGrow: 3 } })), DateControl = ({ name, value: value2, onChange, onFocus, onBlur, argType }) => { let [valid, setValid] = useState(!0), dateRef = useRef(), timeRef = useRef(), readonly = !!argType?.table?.readonly; useEffect(() => { valid !== !1 && (dateRef && dateRef.current && (dateRef.current.value = value2 ? formatDate(value2) : ""), timeRef && timeRef.current && (timeRef.current.value = value2 ? formatTime(value2) : "")); }, [value2]); let onDateChange = (e2) => { if (!e2.target.value) return onChange(); let parsed = parseDate(e2.target.value), result = new Date(value2 ?? ""); result.setFullYear(parsed.getFullYear(), parsed.getMonth(), parsed.getDate()); let time = result.getTime(); time && onChange(time), setValid(!!time); }, onTimeChange = (e2) => { if (!e2.target.value) return onChange(); let parsed = parseTime(e2.target.value), result = new Date(value2 ?? ""); result.setHours(parsed.getHours()), result.setMinutes(parsed.getMinutes()); let time = result.getTime(); time && onChange(time), setValid(!!time); }, controlId = getControlId(name); return React2.createElement(FlexSpaced, null, React2.createElement("legend", { className: "sb-sr-only" }, name), React2.createElement("label", { htmlFor: `${controlId}-date`, className: "sb-sr-only" }, "Date"), React2.createElement( FormInput, { type: "date", max: "9999-12-31", ref: dateRef, id: `${controlId}-date`, name: `${controlId}-date`, readOnly: readonly, onChange: onDateChange, onFocus, onBlur } ), React2.createElement("label", { htmlFor: `${controlId}-time`, className: "sb-sr-only" }, "Time"), React2.createElement( FormInput, { type: "time", id: `${controlId}-time`, name: `${controlId}-time`, ref: timeRef, onChange: onTimeChange, readOnly: readonly, onFocus, onBlur } ), valid ? null : React2.createElement("div", null, "invalid")); }; // src/blocks/controls/Number.tsx import React3, { useCallback as useCallback2, useEffect as useEffect2, useRef as useRef2, useState as useState2 } from "react"; import { Button as Button2, Form as Form2 } from "storybook/internal/components"; import { styled as styled3 } from "storybook/theming"; var Wrapper = styled3.label({ display: "flex" }), parse2 = (value2) => { let result = parseFloat(value2); return Number.isNaN(result) ? void 0 : result; }, format = (value2) => value2 != null ? String(value2) : "", FormInput2 = styled3(Form2.Input)(({ theme }) => ({ background: theme.base === "light" ? theme.color.lighter : "transparent" })), NumberControl = ({ name, value: value2, onChange, min, max, step, onBlur, onFocus, argType }) => { let [inputValue, setInputValue] = useState2(typeof value2 == "number" ? value2 : ""), [forceVisible, setForceVisible] = useState2(!1), [parseError, setParseError] = useState2(null), readonly = !!argType?.table?.readonly, handleChange = useCallback2( (event) => { setInputValue(event.target.value); let result = parseFloat(event.target.value); if (Number.isNaN(result)) setParseError(new Error(`'${event.target.value}' is not a number`)); else { let finalValue = result; typeof min == "number" && finalValue < min && (finalValue = min), typeof max == "number" && finalValue > max && (finalValue = max), onChange(finalValue), setParseError(null), finalValue !== result && setInputValue(String(finalValue)); } }, [onChange, setParseError, min, max] ), onForceVisible = useCallback2(() => { setInputValue("0"), onChange(0), setForceVisible(!0); }, [setForceVisible]), htmlElRef = useRef2(null); return useEffect2(() => { forceVisible && htmlElRef.current && htmlElRef.current.select(); }, [forceVisible]), useEffect2(() => { let newInputValue = typeof value2 == "number" ? value2 : ""; inputValue !== newInputValue && setInputValue(newInputValue); }, [value2]), value2 === void 0 ? React3.createElement( Button2, { ariaLabel: !1, variant: "outline", size: "medium", id: getControlSetterButtonId(name), onClick: onForceVisible, disabled: readonly }, "Set number" ) : React3.createElement(Wrapper, null, React3.createElement( FormInput2, { ref: htmlElRef, id: getControlId(name), type: "number", onChange: handleChange, size: "flex", placeholder: "Edit number...", value: inputValue, valid: parseError ? "error" : void 0, autoFocus: forceVisible, readOnly: readonly, name, min, max, step, onFocus, onBlur } )); }; // src/blocks/controls/options/Options.tsx import React7 from "react"; // src/blocks/controls/options/Checkbox.tsx import React4, { useEffect as useEffect3, useState as useState3 } from "react"; import { logger } from "storybook/internal/client-logger"; import { styled as styled4 } from "storybook/theming"; // src/blocks/controls/options/helpers.ts var selectedKey = (value2, options) => { let entry = options && Object.entries(options).find(([_key, val]) => val === value2); return entry ? entry[0] : void 0; }, selectedKeys = (value2, options) => value2 && options ? Object.entries(options).filter((entry) => value2.includes(entry[1])).map((entry) => entry[0]) : [], selectedValues = (keys, options) => keys && options && keys.map((key) => options[key]); // src/blocks/controls/options/Checkbox.tsx var Wrapper2 = styled4.fieldset( { border: "none", marginInline: 0, padding: 0, display: "flex", alignItems: "flex-start" }, ({ $isInline: isInline }) => isInline ? { flexWrap: "wrap", gap: 15, label: { display: "inline-flex" } } : { flexDirection: "column", gap: 8, label: { display: "flex" } } ), Text = styled4.span(({ $readOnly }) => ({ opacity: $readOnly ? 0.5 : 1 })), Label2 = styled4.label(({ $readOnly }) => ({ lineHeight: "20px", alignItems: "center", cursor: $readOnly ? "not-allowed" : "pointer", input: { cursor: $readOnly ? "not-allowed" : "pointer", margin: 0, marginRight: 6 } })), CheckboxControl = ({ name, options, value: value2, onChange, isInline, argType }) => { if (!options) return logger.warn(`Checkbox with no options: ${name}`), React4.createElement(React4.Fragment, null, "-"); let initial2 = selectedKeys(value2 || [], options), [selected, setSelected] = useState3(initial2), readonly = !!argType?.table?.readonly, handleChange = (e2) => { let option = e2.target.value, updated = [...selected]; updated.includes(option) ? updated.splice(updated.indexOf(option), 1) : updated.push(option), onChange(selectedValues(updated, options)), setSelected(updated); }; useEffect3(() => { setSelected(selectedKeys(value2 || [], options)); }, [value2]); let controlId = getControlId(name); return React4.createElement(Wrapper2, { $isInline: isInline }, React4.createElement("legend", { className: "sb-sr-only" }, name), Object.keys(options).map((key, index) => { let id = `${controlId}-${index}`; return React4.createElement(Label2, { key: id, htmlFor: id, $readOnly: readonly }, React4.createElement( "input", { type: "checkbox", disabled: readonly, id, name: id, value: key, onChange: handleChange, checked: