@8btc/xcanvas 0.0.13-beta.1 → 0.0.13-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +1 -6
  2. package/dist/{XCanvas-DCYJidql.js → XCanvas-C_YqSiej.js} +17 -3046
  3. package/dist/{ar-SA-G6X2FPQ2-DDHkAUNk.js → ar-SA-G6X2FPQ2-C3Zkx8HI.js} +1 -1
  4. package/dist/{arc-BTslQwGV.js → arc-C8Cqhi75.js} +1 -1
  5. package/dist/{az-AZ-76LH7QW2-IroT_ktK.js → az-AZ-76LH7QW2-DzVDRLKn.js} +1 -1
  6. package/dist/{bg-BG-XCXSNQG7-_OtrYx6q.js → bg-BG-XCXSNQG7-Cv8X6n50.js} +1 -1
  7. package/dist/{blockDiagram-38ab4fdb-Bz_-90TJ.js → blockDiagram-38ab4fdb-RGHPMqhn.js} +5 -5
  8. package/dist/{bn-BD-2XOGV67Q--YD3Qc9v.js → bn-BD-2XOGV67Q-B31WUnZU.js} +1 -1
  9. package/dist/{c4Diagram-3d4e48cf-j-5z0Cip.js → c4Diagram-3d4e48cf-CLy47ZZF.js} +2 -2
  10. package/dist/{ca-ES-6MX7JW3Y-m6Eb-Qoc.js → ca-ES-6MX7JW3Y-CpMypehz.js} +1 -1
  11. package/dist/{channel-B9A0Hxv6.js → channel-mo-a3EDS.js} +1 -1
  12. package/dist/{chunk-EIO257PC-BWSNVfeJ.js → chunk-EIO257PC-C4NkQgg-.js} +1 -1
  13. package/dist/{classDiagram-70f12bd4-CuYrznpR.js → classDiagram-70f12bd4-BmtpOhQY.js} +5 -5
  14. package/dist/{classDiagram-v2-f2320105-CyOgmkZP.js → classDiagram-v2-f2320105-DodeiyjI.js} +5 -5
  15. package/dist/{clone-xP5mHxtV.js → clone-BB7oJ18n.js} +1 -1
  16. package/dist/{createText-2e5e7dd3-DYar9TAh.js → createText-2e5e7dd3-BASWJpGP.js} +1 -1
  17. package/dist/{cs-CZ-2BRQDIVT-C9Y9h9nn.js → cs-CZ-2BRQDIVT-jHTRSHaR.js} +1 -1
  18. package/dist/{da-DK-5WZEPLOC-DK11E3ka.js → da-DK-5WZEPLOC-DKXc8Qlr.js} +1 -1
  19. package/dist/{de-DE-XR44H4JA-a7ufoL1i.js → de-DE-XR44H4JA-BgMwPDH1.js} +1 -1
  20. package/dist/{edges-e0da2a9e-D-mkOSFc.js → edges-e0da2a9e-CFBRLznp.js} +3 -3
  21. package/dist/{el-GR-BZB4AONW-Cfu1-fVG.js → el-GR-BZB4AONW-Co-6JahB.js} +1 -1
  22. package/dist/{en-B4ZKOASM-DNjt-LwK.js → en-B4ZKOASM-CkJv0OCH.js} +1 -1
  23. package/dist/{erDiagram-9861fffd-CpjyCG4K.js → erDiagram-9861fffd-D_aNPIUi.js} +4 -4
  24. package/dist/{es-ES-U4NZUMDT-Bjsd6vbf.js → es-ES-U4NZUMDT-IQ_Q3CRS.js} +1 -1
  25. package/dist/{eu-ES-A7QVB2H4-N7rJjGSi.js → eu-ES-A7QVB2H4-CbSeHWaO.js} +1 -1
  26. package/dist/{fa-IR-HGAKTJCU-D0rzkbHf.js → fa-IR-HGAKTJCU-D2PeuE5f.js} +1 -1
  27. package/dist/{fi-FI-Z5N7JZ37-C2GA_le3.js → fi-FI-Z5N7JZ37-xdmWeM22.js} +1 -1
  28. package/dist/{flowDb-956e92f1-C8vjQGjo.js → flowDb-956e92f1-DQ1C6jUC.js} +1 -1
  29. package/dist/{flowDiagram-66a62f08-NMPkiAw6.js → flowDiagram-66a62f08-BWh9Ct0h.js} +6 -6
  30. package/dist/{flowDiagram-v2-96b9c2cf-CsUZaRB0.js → flowDiagram-v2-96b9c2cf-C72GTEjU.js} +5 -5
  31. package/dist/{flowchart-elk-definition-4a651766-C_5foKeo.js → flowchart-elk-definition-4a651766-6MFYQLSH.js} +5 -5
  32. package/dist/{fr-FR-RHASNOE6-BkiDJYcv.js → fr-FR-RHASNOE6-D9Ks0amH.js} +1 -1
  33. package/dist/{ganttDiagram-c361ad54-IjetilmD.js → ganttDiagram-c361ad54-BUqUgBrm.js} +3 -3
  34. package/dist/{gitGraphDiagram-72cf32ee-BXH3P65D.js → gitGraphDiagram-72cf32ee-N2vKHB1M.js} +1 -1
  35. package/dist/{gl-ES-HMX3MZ6V-DBCgv9MO.js → gl-ES-HMX3MZ6V-C640e-lQ.js} +1 -1
  36. package/dist/{graph-BZYSa57E.js → graph-BjXwgiLc.js} +1 -1
  37. package/dist/{he-IL-6SHJWFNN-DMvtkqVk.js → he-IL-6SHJWFNN-t4-hZdU6.js} +1 -1
  38. package/dist/{hi-IN-IWLTKZ5I-B196wJUk.js → hi-IN-IWLTKZ5I-Z2XQ7OaH.js} +1 -1
  39. package/dist/{hu-HU-A5ZG7DT2-CayjIYC7.js → hu-HU-A5ZG7DT2-E59hZrhC.js} +1 -1
  40. package/dist/{id-ID-SAP4L64H-kbbxPvDx.js → id-ID-SAP4L64H-DCdory64.js} +1 -1
  41. package/dist/{image-EDRW2JGV-8GYqS18e.js → image-EDRW2JGV-KermR2ht.js} +1 -1
  42. package/dist/{index-3862675e-FbbzdRbq.js → index-3862675e-B5wgvXRd.js} +6 -6
  43. package/dist/{index-UPLxYBsO.js → index-XfybIDdh.js} +23 -23
  44. package/dist/index.css +2 -28
  45. package/dist/index.d.ts +1 -2
  46. package/dist/index.js +1 -1
  47. package/dist/index.umd.cjs +32 -3061
  48. package/dist/{infoDiagram-f8f76790-nI0mTH6c.js → infoDiagram-f8f76790-uvmfS8Qq.js} +1 -1
  49. package/dist/{it-IT-JPQ66NNP-DmF-nwbf.js → it-IT-JPQ66NNP-Bv_Iwmch.js} +1 -1
  50. package/dist/{ja-JP-DBVTYXUO-BWuJGKzA.js → ja-JP-DBVTYXUO-CcBIJKuV.js} +1 -1
  51. package/dist/{journeyDiagram-49397b02-CHuTfbqt.js → journeyDiagram-49397b02-D0Q-4AW4.js} +3 -3
  52. package/dist/{kaa-6HZHGXH3-D7W2DsXA.js → kaa-6HZHGXH3-IqqDBtAx.js} +1 -1
  53. package/dist/{kab-KAB-ZGHBKWFO-CfjxYgTo.js → kab-KAB-ZGHBKWFO-EPV9JeMY.js} +1 -1
  54. package/dist/{kk-KZ-P5N5QNE5-yuFs7eMQ.js → kk-KZ-P5N5QNE5-yTVp6d-O.js} +1 -1
  55. package/dist/{km-KH-HSX4SM5Z-Dwij0df7.js → km-KH-HSX4SM5Z-D82o5MOr.js} +1 -1
  56. package/dist/{ko-KR-MTYHY66A-BWf5fW_J.js → ko-KR-MTYHY66A-BfM6DdOv.js} +1 -1
  57. package/dist/{ku-TR-6OUDTVRD-eSa9ssIF.js → ku-TR-6OUDTVRD-C7Rk-p-H.js} +1 -1
  58. package/dist/{layout-CaPSEM6X.js → layout-Dpf7xSy2.js} +2 -2
  59. package/dist/{line-BjgrYvSg.js → line-BdMmSNzA.js} +1 -1
  60. package/dist/{linear-CFTDJJVP.js → linear-juAm9t4V.js} +1 -1
  61. package/dist/{lt-LT-XHIRWOB4-XFA9GMKx.js → lt-LT-XHIRWOB4-CEyfIX1g.js} +1 -1
  62. package/dist/{lv-LV-5QDEKY6T-W3OTCHk1.js → lv-LV-5QDEKY6T-BU64hsiQ.js} +1 -1
  63. package/dist/{mindmap-definition-fc14e90a-W3q8ysVr.js → mindmap-definition-fc14e90a-CwoX0Cob.js} +3 -3
  64. package/dist/{mr-IN-CRQNXWMA-C5OxGYCW.js → mr-IN-CRQNXWMA-BXKs8g-X.js} +1 -1
  65. package/dist/{my-MM-5M5IBNSE-BeH-wy_T.js → my-MM-5M5IBNSE-thu0BGux.js} +1 -1
  66. package/dist/{nb-NO-T6EIAALU-u7-fg6Xa.js → nb-NO-T6EIAALU-zFIV3_zm.js} +1 -1
  67. package/dist/{nl-NL-IS3SIHDZ-C_9y7qqo.js → nl-NL-IS3SIHDZ-BB-P2uZ_.js} +1 -1
  68. package/dist/{nn-NO-6E72VCQL-Cshm8sF9.js → nn-NO-6E72VCQL-lYnuYnBH.js} +1 -1
  69. package/dist/{oc-FR-POXYY2M6-I37FrgUY.js → oc-FR-POXYY2M6-CabNCooh.js} +1 -1
  70. package/dist/{pa-IN-N4M65BXN-0FXK_TCM.js → pa-IN-N4M65BXN-B6QNCT0d.js} +1 -1
  71. package/dist/{percentages-BXMCSKIN-afhnNBYL.js → percentages-BXMCSKIN-zDx6wOCn.js} +1 -1
  72. package/dist/{pica-CzJqfhBf.js → pica-DYZwJpBr.js} +1 -1
  73. package/dist/{pieDiagram-8a3498a8-DbeHWFAt.js → pieDiagram-8a3498a8-CZ1F9c35.js} +2 -2
  74. package/dist/{pl-PL-T2D74RX3-UFxDbbwy.js → pl-PL-T2D74RX3-Bf84r6xt.js} +1 -1
  75. package/dist/{pt-BR-5N22H2LF-DznxuRQz.js → pt-BR-5N22H2LF-B0aYjzDB.js} +1 -1
  76. package/dist/{pt-PT-UZXXM6DQ-owN7qWB-.js → pt-PT-UZXXM6DQ-DYX7IfGn.js} +1 -1
  77. package/dist/{quadrantDiagram-120e2f19-kUZT4a7b.js → quadrantDiagram-120e2f19-B6f7G-G7.js} +2 -2
  78. package/dist/{requirementDiagram-deff3bca-Dxe1Va6K.js → requirementDiagram-deff3bca-DzswuYl6.js} +4 -4
  79. package/dist/{ro-RO-JPDTUUEW-CAS2eW3Q.js → ro-RO-JPDTUUEW-CQ3RWbgW.js} +1 -1
  80. package/dist/{ru-RU-B4JR7IUQ-TQaxpqNm.js → ru-RU-B4JR7IUQ-BMakJPR_.js} +1 -1
  81. package/dist/{sankeyDiagram-04a897e0-Deu3XtGY.js → sankeyDiagram-04a897e0-DZ0MXLN8.js} +1 -1
  82. package/dist/{sequenceDiagram-704730f1-BYNQERXB.js → sequenceDiagram-704730f1-DPPOefV8.js} +2 -2
  83. package/dist/{si-LK-N5RQ5JYF-BR3skypF.js → si-LK-N5RQ5JYF-CVxhGv0d.js} +1 -1
  84. package/dist/{sk-SK-C5VTKIMK-T4e097Mu.js → sk-SK-C5VTKIMK-DpwaLj4k.js} +1 -1
  85. package/dist/{sl-SI-NN7IZMDC-BYgsoW03.js → sl-SI-NN7IZMDC-DDtRAYmt.js} +1 -1
  86. package/dist/{stateDiagram-587899a1-CXxUv56j.js → stateDiagram-587899a1-CcX3b78Z.js} +5 -5
  87. package/dist/{stateDiagram-v2-d93cdb3a-BDSonixF.js → stateDiagram-v2-d93cdb3a-CgyGsTUS.js} +5 -5
  88. package/dist/{styles-6aaf32cf-CFgXyA4X.js → styles-6aaf32cf-0ax5CwFV.js} +1 -1
  89. package/dist/{styles-9a916d00-BU_R2fV8.js → styles-9a916d00-B-3F_04G.js} +1 -1
  90. package/dist/{styles-c10674c1-BTWMniGj.js → styles-c10674c1-Cu_WYE1K.js} +4 -4
  91. package/dist/{subset-shared.chunk-DUc1d68h.js → subset-shared.chunk-DTG65AL4.js} +2 -2
  92. package/dist/{subset-worker.chunk-B4lE1ph2.js → subset-worker.chunk-4DNRKnX7.js} +2 -2
  93. package/dist/{sv-SE-XGPEYMSR-C-mhvJKn.js → sv-SE-XGPEYMSR-B-N4KQQu.js} +1 -1
  94. package/dist/{svgDrawCommon-08f97a94-HuhU8_G9.js → svgDrawCommon-08f97a94-CVZZb1cd.js} +1 -1
  95. package/dist/{ta-IN-2NMHFXQM-tg8Hyvm7.js → ta-IN-2NMHFXQM-B37Qom-B.js} +1 -1
  96. package/dist/{th-TH-HPSO5L25-C-CmPt4n.js → th-TH-HPSO5L25-BXsZa0sK.js} +1 -1
  97. package/dist/{timeline-definition-85554ec2-CCpMOh01.js → timeline-definition-85554ec2-CC6bTINw.js} +2 -2
  98. package/dist/{tr-TR-DEFEU3FU-CSg_Bfod.js → tr-TR-DEFEU3FU-Dvx6cFkQ.js} +1 -1
  99. package/dist/{uk-UA-QMV73CPH-DScelITQ.js → uk-UA-QMV73CPH-BY1Uu4NH.js} +1 -1
  100. package/dist/{vi-VN-M7AON7JQ-DhfNR86M.js → vi-VN-M7AON7JQ-gh-gf7BK.js} +1 -1
  101. package/dist/{xychartDiagram-e933f94c-ClBB1EW9.js → xychartDiagram-e933f94c-D1HTa1w6.js} +4 -4
  102. package/dist/{zh-CN-LNUGB5OW-ANWecdyg.js → zh-CN-LNUGB5OW-6OIel3A0.js} +1 -1
  103. package/dist/{zh-HK-E62DVLB3-BS1fZpuK.js → zh-HK-E62DVLB3-BJ1RcwYs.js} +1 -1
  104. package/dist/{zh-TW-RAJ6MFWO-xkTqFSz4.js → zh-TW-RAJ6MFWO-rgF22h5C.js} +1 -1
  105. package/package.json +1 -1
@@ -4,7 +4,7 @@ import * as React from "react";
4
4
  import React__default, { useCallback, useReducer, useEffect, useDebugValue as useDebugValue$1, useContext, createContext, useRef, useLayoutEffect, useState, useMemo, createElement, forwardRef, Children, isValidElement, cloneElement, Fragment as Fragment$1, memo, useImperativeHandle, version as version$1, useDeferredValue } from "react";
5
5
  import * as ReactDOM from "react-dom";
6
6
  import ReactDOM__default, { flushSync, unstable_batchedUpdates, createPortal } from "react-dom";
7
- const version = "0.0.13-beta.1";
7
+ const version = "0.0.13-beta.3";
8
8
  const packageJson = {
9
9
  version
10
10
  };
@@ -8079,7 +8079,7 @@ var Vd = typeof Worker < "u", qd = async (e12, t3) => {
8079
8079
  return Vd = false, bd$1() && (i3 instanceof zn || i3 instanceof Qn) || console.error("Failed to use workers for subsetting, falling back to the main thread.", i3), r3(e12, t3);
8080
8080
  }
8081
8081
  }) : r3(e12, t3);
8082
- }, pa = null, ua = null, W6 = async () => (pa || (pa = import("./subset-worker.chunk-B4lE1ph2.js")), pa), z6 = async () => (ua || (ua = import("./subset-shared.chunk-DUc1d68h.js")), ua), ma = null, Q6 = () => (ma || (ma = mn(async () => {
8082
+ }, pa = null, ua = null, W6 = async () => (pa || (pa = import("./subset-worker.chunk-4DNRKnX7.js")), pa), z6 = async () => (ua || (ua = import("./subset-shared.chunk-DTG65AL4.js")), ua), ma = null, Q6 = () => (ma || (ma = mn(async () => {
8083
8083
  let { WorkerUrl: e12 } = await W6();
8084
8084
  return qo$1.create(e12);
8085
8085
  })), ma);
@@ -13054,12 +13054,12 @@ var bs = (e12) => {
13054
13054
  return t3;
13055
13055
  };
13056
13056
  var Qp$1 = { mouse: 8, pen: 16, touch: 28 }, b9 = 16, e62 = { e: true, s: true, n: true, w: true };
13057
- var jp$1 = { e: true, s: true, n: true, w: true, nw: true, se: true }, Ms = { e: true, s: true, n: true, w: true }, cn$1 = (e12, t3, n3, r3, o3, i3, a3) => {
13057
+ var jp$1 = { e: true, s: true, n: true, w: true, nw: true, se: true }, Ms = { e: true, s: true, n: true, w: true }, cn = (e12, t3, n3, r3, o3, i3, a3) => {
13058
13058
  let [s3, d3] = T$1(u$1(e12 + n3 / 2, t3 + r3 / 2), u$1(o3, i3), a3);
13059
13059
  return [s3 - n3 / 2, d3 - r3 / 2, n3, r3];
13060
13060
  }, Ai = (e12) => !(e12.viewport.isMobile || e12.isTouchScreen && (Bs || _s)), Ls = (e12) => Ai(e12) ? e62 : {}, Ki$1 = ([e12, t3, n3, r3, o3, i3], a3, s3, d3, c3 = {}, l3 = 4, U3 = br) => {
13061
- let p3 = Qp$1[d3], m3 = p3 / s3.value, b3 = p3 / s3.value, E3 = p3 / s3.value, g3 = p3 / s3.value, h3 = n3 - e12, x3 = r3 - t3, y3 = l3 / s3.value, w3 = (p3 - U3 * 2) / (2 * s3.value), I3 = { nw: c3.nw ? void 0 : cn$1(e12 - y3 - E3 + w3, t3 - y3 - g3 + w3, m3, b3, o3, i3, a3), ne: c3.ne ? void 0 : cn$1(n3 + y3 - w3, t3 - y3 - g3 + w3, m3, b3, o3, i3, a3), sw: c3.sw ? void 0 : cn$1(e12 - y3 - E3 + w3, r3 + y3 - w3, m3, b3, o3, i3, a3), se: c3.se ? void 0 : cn$1(n3 + y3 - w3, r3 + y3 - w3, m3, b3, o3, i3, a3), rotation: c3.rotation ? void 0 : cn$1(e12 + h3 / 2 - m3 / 2, t3 - y3 - g3 + w3 - b9 / s3.value, m3, b3, o3, i3, a3) }, S3 = 5 * Qp$1.mouse / s3.value;
13062
- return Math.abs(h3) > S3 && (c3.n || (I3.n = cn$1(e12 + h3 / 2 - m3 / 2, t3 - y3 - g3 + w3, m3, b3, o3, i3, a3)), c3.s || (I3.s = cn$1(e12 + h3 / 2 - m3 / 2, r3 + y3 - w3, m3, b3, o3, i3, a3))), Math.abs(x3) > S3 && (c3.w || (I3.w = cn$1(e12 - y3 - E3 + w3, t3 + x3 / 2 - b3 / 2, m3, b3, o3, i3, a3)), c3.e || (I3.e = cn$1(n3 + y3 - w3, t3 + x3 / 2 - b3 / 2, m3, b3, o3, i3, a3))), I3;
13061
+ let p3 = Qp$1[d3], m3 = p3 / s3.value, b3 = p3 / s3.value, E3 = p3 / s3.value, g3 = p3 / s3.value, h3 = n3 - e12, x3 = r3 - t3, y3 = l3 / s3.value, w3 = (p3 - U3 * 2) / (2 * s3.value), I3 = { nw: c3.nw ? void 0 : cn(e12 - y3 - E3 + w3, t3 - y3 - g3 + w3, m3, b3, o3, i3, a3), ne: c3.ne ? void 0 : cn(n3 + y3 - w3, t3 - y3 - g3 + w3, m3, b3, o3, i3, a3), sw: c3.sw ? void 0 : cn(e12 - y3 - E3 + w3, r3 + y3 - w3, m3, b3, o3, i3, a3), se: c3.se ? void 0 : cn(n3 + y3 - w3, r3 + y3 - w3, m3, b3, o3, i3, a3), rotation: c3.rotation ? void 0 : cn(e12 + h3 / 2 - m3 / 2, t3 - y3 - g3 + w3 - b9 / s3.value, m3, b3, o3, i3, a3) }, S3 = 5 * Qp$1.mouse / s3.value;
13062
+ return Math.abs(h3) > S3 && (c3.n || (I3.n = cn(e12 + h3 / 2 - m3 / 2, t3 - y3 - g3 + w3, m3, b3, o3, i3, a3)), c3.s || (I3.s = cn(e12 + h3 / 2 - m3 / 2, r3 + y3 - w3, m3, b3, o3, i3, a3))), Math.abs(x3) > S3 && (c3.w || (I3.w = cn(e12 - y3 - E3 + w3, t3 + x3 / 2 - b3 / 2, m3, b3, o3, i3, a3)), c3.e || (I3.e = cn(n3 + y3 - w3, t3 + x3 / 2 - b3 / 2, m3, b3, o3, i3, a3))), I3;
13063
13063
  }, Ds = (e12, t3, n3, r3 = "mouse", o3 = e62) => {
13064
13064
  if (e12.locked || X$1(e12)) return {};
13065
13065
  if (e12.type === "freedraw" || ae(e12)) {
@@ -13456,7 +13456,7 @@ var X2 = (e12) => {
13456
13456
  var s6 = async (e12) => {
13457
13457
  let t3;
13458
13458
  if (e12.type === H.png) try {
13459
- return await (await import("./image-EDRW2JGV-8GYqS18e.js")).decodePngMetadata(e12);
13459
+ return await (await import("./image-EDRW2JGV-KermR2ht.js")).decodePngMetadata(e12);
13460
13460
  } catch (n3) {
13461
13461
  throw n3.message === "INVALID" ? new nn("Image doesn't contain scene", "IMAGE_NOT_CONTAINS_SCENE_DATA") : new nn("Error: cannot restore image");
13462
13462
  }
@@ -13529,7 +13529,7 @@ var K9 = (e12) => e12 && e12.name.match(/\.(json|excalidraw|png|svg)$/)?.[1] ||
13529
13529
  return new File([i3], t3, { type: o3 });
13530
13530
  }, BY = (e12) => Di$1(e12.slice(e12.indexOf(",") + 1)), _Y = async (e12, t3) => {
13531
13531
  if (e12.type === H.svg) return e12;
13532
- let [n3, r3] = await Promise.all([import("./pica-CzJqfhBf.js").then((n8) => n8.p).then((i3) => i3.default), import("./image-blob-reduce.esm-BKPqMdie.js").then((i3) => i3.default)]), o3 = r3({ pica: n3({ features: ["js", "wasm"] }) });
13532
+ let [n3, r3] = await Promise.all([import("./pica-DYZwJpBr.js").then((n8) => n8.p).then((i3) => i3.default), import("./image-blob-reduce.esm-BKPqMdie.js").then((i3) => i3.default)]), o3 = r3({ pica: n3({ features: ["js", "wasm"] }) });
13533
13533
  if (t3.outputType) {
13534
13534
  let { outputType: i3 } = t3;
13535
13535
  o3._create_blob = function(a3) {
@@ -13633,7 +13633,7 @@ var X9 = async (e12) => {
13633
13633
  }
13634
13634
  throw new Error("INVALID");
13635
13635
  };
13636
- var t = { paste: "Paste", pasteAsPlaintext: "Paste as plaintext", pasteCharts: "Paste charts", selectAll: "Select all", multiSelect: "Add element to selection", moveCanvas: "Move canvas", cut: "Cut", copy: "Copy", copyAsPng: "Copy to clipboard as PNG", copyAsSvg: "Copy to clipboard as SVG", copyText: "Copy to clipboard as text", copySource: "Copy source to clipboard", convertToCode: "Convert to code", bringForward: "Bring forward", sendToBack: "Send to back", bringToFront: "Bring to front", sendBackward: "Send backward", delete: "Delete", copyStyles: "Copy styles", pasteStyles: "Paste styles", stroke: "Stroke", changeStroke: "Change stroke color", background: "Background", changeBackground: "Change background color", fill: "Fill", strokeWidth: "Stroke width", strokeStyle: "Stroke style", strokeStyle_solid: "Solid", strokeStyle_dashed: "Dashed", strokeStyle_dotted: "Dotted", sloppiness: "Sloppiness", opacity: "Opacity", textAlign: "Text align", edges: "Edges", sharp: "Sharp", round: "Round", arrowheads: "Arrowheads", arrowhead_none: "None", arrowhead_arrow: "Arrow", arrowhead_bar: "Bar", arrowhead_circle: "Circle", arrowhead_circle_outline: "Circle (outline)", arrowhead_triangle: "Triangle", arrowhead_triangle_outline: "Triangle (outline)", arrowhead_diamond: "Diamond", arrowhead_diamond_outline: "Diamond (outline)", arrowhead_crowfoot_many: "Crow's foot (many)", arrowhead_crowfoot_one: "Crow's foot (one)", arrowhead_crowfoot_one_or_many: "Crow's foot (one or many)", more_options: "More options", arrowtypes: "Arrow type", arrowtype_sharp: "Sharp arrow", arrowtype_round: "Curved arrow", arrowtype_elbowed: "Elbow arrow", fontSize: "Font size", fontFamily: "Font family", addWatermark: 'Add "Made with Excalidraw"', handDrawn: "Hand-drawn", normal: "Normal", code: "Code", small: "Small", medium: "Medium", large: "Large", veryLarge: "Very large", solid: "Solid", hachure: "Hachure", zigzag: "Zigzag", crossHatch: "Cross-hatch", thin: "Thin", bold: "Bold", left: "Left", center: "Center", right: "Right", extraBold: "Extra bold", architect: "Architect", artist: "Artist", cartoonist: "Cartoonist", fileTitle: "File name", colorPicker: "Color picker", canvasColors: "Used on canvas", canvasBackground: "Canvas background", drawingCanvas: "Drawing canvas", clearCanvas: "Clear canvas", layers: "Layers", actions: "Actions", language: "Language", liveCollaboration: "Live collaboration...", duplicateSelection: "Duplicate", untitled: "Untitled", name: "Name", yourName: "Your name", madeWithExcalidraw: "Made with Excalidraw", group: "Group selection", ungroup: "Ungroup selection", collaborators: "Collaborators", toggleGrid: "Toggle grid", addToLibrary: "Add to library", removeFromLibrary: "Remove from library", libraryLoadingMessage: "Loading library…", libraries: "Browse libraries", loadingScene: "Loading scene…", loadScene: "Load scene from file", align: "Align", alignTop: "Align top", alignBottom: "Align bottom", alignLeft: "Align left", alignRight: "Align right", centerVertically: "Center vertically", centerHorizontally: "Center horizontally", distributeHorizontally: "Distribute horizontally", distributeVertically: "Distribute vertically", flipHorizontal: "Flip horizontal", flipVertical: "Flip vertical", viewMode: "View mode", share: "Share", showStroke: "Show stroke color picker", showBackground: "Show background color picker", showFonts: "Show font picker", toggleTheme: "Toggle light/dark theme", theme: "Theme", personalLib: "Personal Library", excalidrawLib: "Excalidraw Library", decreaseFontSize: "Decrease font size", increaseFontSize: "Increase font size", unbindText: "Unbind text", bindText: "Bind text to the container", createContainerFromText: "Wrap text in a container", link: { edit: "Edit link", editEmbed: "Edit embeddable link", create: "Add link", label: "Link", labelEmbed: "Link & embed", empty: "No link is set", hint: "Type or paste your link here", goToElement: "Go to target element" }, lineEditor: { edit: "Edit line", editArrow: "Edit arrow" }, elementLock: { lock: "Lock", unlock: "Unlock", lockAll: "Lock all", unlockAll: "Unlock all" }, statusPublished: "Published", sidebarLock: "Keep sidebar open", selectAllElementsInFrame: "Select all elements in frame", removeAllElementsFromFrame: "Remove all elements from frame", eyeDropper: "Pick color from canvas", textToDiagram: "Text to diagram", prompt: "Prompt", followUs: "Follow us", discordChat: "Discord chat", zoomToFitViewport: "Zoom to fit in viewport", zoomToFitSelection: "Zoom to fit selection", zoomToFit: "Zoom to fit all elements", installPWA: "Install Excalidraw locally (PWA)", autoResize: "Enable text auto-resizing", imageCropping: "Image cropping", unCroppedDimension: "Uncropped dimension", copyElementLink: "Copy link to object", linkToElement: "Link to object", wrapSelectionInFrame: "Wrap selection in frame" }, r$1 = { title: "Link to object", desc: "Click on a shape on canvas or paste a link.", notFound: "Linked object wasn't found on canvas." }, a = { noItems: "No items added yet...", hint_emptyLibrary: "Select an item on canvas to add it here, or install a library from the public repository, below.", hint_emptyPrivateLibrary: "Select an item on canvas to add it here." }, i = { title: "Find on canvas", noMatch: "No matches found...", singleResult: "result", multipleResults: "results", placeholder: "Find text on canvas..." }, n = { clearReset: "Reset the canvas", exportJSON: "Export to file", exportImage: "Export image...", export: "Save to...", copyToClipboard: "Copy to clipboard", copyLink: "Copy link", save: "Save to current file", saveAs: "Save as", load: "Open", getShareableLink: "Get shareable link", close: "Close", selectLanguage: "Select language", scrollBackToContent: "Scroll back to content", zoomIn: "Zoom in", zoomOut: "Zoom out", resetZoom: "Reset zoom", menu: "Menu", done: "Done", edit: "Edit", undo: "Undo", redo: "Redo", resetLibrary: "Reset library", createNewRoom: "Create new room", fullScreen: "Full screen", darkMode: "Dark mode", lightMode: "Light mode", systemMode: "System mode", zenMode: "Zen mode", objectsSnapMode: "Snap to objects", exitZenMode: "Exit zen mode", cancel: "Cancel", clear: "Clear", remove: "Remove", embed: "Toggle embedding", publishLibrary: "Publish", submit: "Submit", confirm: "Confirm", embeddableInteractionButton: "Click to interact" }, l = { clearReset: "This will clear the whole canvas. Are you sure?", couldNotCreateShareableLink: "Couldn't create shareable link.", couldNotCreateShareableLinkTooBig: "Couldn't create shareable link: the scene is too big", couldNotLoadInvalidFile: "Couldn't load invalid file", importBackendFailed: "Importing from backend failed.", cannotExportEmptyCanvas: "Cannot export empty canvas.", couldNotCopyToClipboard: "Couldn't copy to clipboard.", decryptFailed: "Couldn't decrypt data.", uploadedSecurly: "The upload has been secured with end-to-end encryption, which means that Excalidraw server and third parties can't read the content.", loadSceneOverridePrompt: "Loading external drawing will replace your existing content. Do you wish to continue?", collabStopOverridePrompt: `Stopping the session will overwrite your previous, locally stored drawing. Are you sure?
13636
+ var t = { paste: "Paste", pasteAsPlaintext: "Paste as plaintext", pasteCharts: "Paste charts", selectAll: "Select all", multiSelect: "Add element to selection", moveCanvas: "Move canvas", cut: "Cut", copy: "Copy", copyAsPng: "Copy to clipboard as PNG", copyAsSvg: "Copy to clipboard as SVG", copyText: "Copy to clipboard as text", copySource: "Copy source to clipboard", convertToCode: "Convert to code", bringForward: "Bring forward", sendToBack: "Send to back", bringToFront: "Bring to front", sendBackward: "Send backward", delete: "Delete", copyStyles: "Copy styles", pasteStyles: "Paste styles", stroke: "Stroke", changeStroke: "Change stroke color", background: "Background", changeBackground: "Change background color", fill: "Fill", strokeWidth: "Stroke width", strokeStyle: "Stroke style", strokeStyle_solid: "Solid", strokeStyle_dashed: "Dashed", strokeStyle_dotted: "Dotted", sloppiness: "Sloppiness", opacity: "Opacity", textAlign: "Text align", edges: "Edges", sharp: "Sharp", round: "Round", arrowheads: "Arrowheads", arrowhead_none: "None", arrowhead_arrow: "Arrow", arrowhead_bar: "Bar", arrowhead_circle: "Circle", arrowhead_circle_outline: "Circle (outline)", arrowhead_triangle: "Triangle", arrowhead_triangle_outline: "Triangle (outline)", arrowhead_diamond: "Diamond", arrowhead_diamond_outline: "Diamond (outline)", arrowhead_crowfoot_many: "Crow's foot (many)", arrowhead_crowfoot_one: "Crow's foot (one)", arrowhead_crowfoot_one_or_many: "Crow's foot (one or many)", more_options: "More options", arrowtypes: "Arrow type", arrowtype_sharp: "Sharp arrow", arrowtype_round: "Curved arrow", arrowtype_elbowed: "Elbow arrow", fontSize: "Font size", fontFamily: "Font family", addWatermark: 'Add "Made with Excalidraw"', handDrawn: "Hand-drawn", normal: "Normal", code: "Code", small: "Small", medium: "Medium", large: "Large", veryLarge: "Very large", solid: "Solid", hachure: "Hachure", zigzag: "Zigzag", crossHatch: "Cross-hatch", thin: "Thin", bold: "Bold", left: "Left", center: "Center", right: "Right", extraBold: "Extra bold", architect: "Architect", artist: "Artist", cartoonist: "Cartoonist", fileTitle: "File name", colorPicker: "Color picker", canvasColors: "Used on canvas", canvasBackground: "Canvas background", drawingCanvas: "Drawing canvas", clearCanvas: "Clear canvas", layers: "Layers", actions: "Actions", language: "Language", liveCollaboration: "Live collaboration...", duplicateSelection: "Duplicate", untitled: "Untitled", name: "Name", yourName: "Your name", madeWithExcalidraw: "Made with Excalidraw", group: "Group selection", ungroup: "Ungroup selection", collaborators: "Collaborators", toggleGrid: "Toggle grid", addToLibrary: "Add to library", removeFromLibrary: "Remove from library", libraryLoadingMessage: "Loading library…", libraries: "Browse libraries", loadingScene: "Loading scene…", loadScene: "Load scene from file", align: "Align", alignTop: "Align top", alignBottom: "Align bottom", alignLeft: "Align left", alignRight: "Align right", centerVertically: "Center vertically", centerHorizontally: "Center horizontally", distributeHorizontally: "Distribute horizontally", distributeVertically: "Distribute vertically", flipHorizontal: "Flip horizontal", flipVertical: "Flip vertical", viewMode: "View mode", share: "Share", showStroke: "Show stroke color picker", showBackground: "Show background color picker", showFonts: "Show font picker", toggleTheme: "Toggle light/dark theme", theme: "Theme", personalLib: "Personal Library", excalidrawLib: "Excalidraw Library", decreaseFontSize: "Decrease font size", increaseFontSize: "Increase font size", unbindText: "Unbind text", bindText: "Bind text to the container", createContainerFromText: "Wrap text in a container", link: { edit: "Edit link", editEmbed: "Edit embeddable link", create: "Add link", label: "Link", labelEmbed: "Link & embed", empty: "No link is set", hint: "Type or paste your link here", goToElement: "Go to target element" }, lineEditor: { edit: "Edit line", editArrow: "Edit arrow" }, elementLock: { lock: "Lock", unlock: "Unlock", lockAll: "Lock all", unlockAll: "Unlock all" }, statusPublished: "Published", sidebarLock: "Keep sidebar open", selectAllElementsInFrame: "Select all elements in frame", removeAllElementsFromFrame: "Remove all elements from frame", eyeDropper: "Pick color from canvas", textToDiagram: "Text to diagram", prompt: "Prompt", followUs: "Follow us", discordChat: "Discord chat", zoomToFitViewport: "Zoom to fit in viewport", zoomToFitSelection: "Zoom to fit selection", zoomToFit: "Zoom to fit all elements", installPWA: "Install Excalidraw locally (PWA)", autoResize: "Enable text auto-resizing", imageCropping: "Image cropping", unCroppedDimension: "Uncropped dimension", copyElementLink: "Copy link to object", linkToElement: "Link to object", wrapSelectionInFrame: "Wrap selection in frame" }, r = { title: "Link to object", desc: "Click on a shape on canvas or paste a link.", notFound: "Linked object wasn't found on canvas." }, a = { noItems: "No items added yet...", hint_emptyLibrary: "Select an item on canvas to add it here, or install a library from the public repository, below.", hint_emptyPrivateLibrary: "Select an item on canvas to add it here." }, i = { title: "Find on canvas", noMatch: "No matches found...", singleResult: "result", multipleResults: "results", placeholder: "Find text on canvas..." }, n = { clearReset: "Reset the canvas", exportJSON: "Export to file", exportImage: "Export image...", export: "Save to...", copyToClipboard: "Copy to clipboard", copyLink: "Copy link", save: "Save to current file", saveAs: "Save as", load: "Open", getShareableLink: "Get shareable link", close: "Close", selectLanguage: "Select language", scrollBackToContent: "Scroll back to content", zoomIn: "Zoom in", zoomOut: "Zoom out", resetZoom: "Reset zoom", menu: "Menu", done: "Done", edit: "Edit", undo: "Undo", redo: "Redo", resetLibrary: "Reset library", createNewRoom: "Create new room", fullScreen: "Full screen", darkMode: "Dark mode", lightMode: "Light mode", systemMode: "System mode", zenMode: "Zen mode", objectsSnapMode: "Snap to objects", exitZenMode: "Exit zen mode", cancel: "Cancel", clear: "Clear", remove: "Remove", embed: "Toggle embedding", publishLibrary: "Publish", submit: "Submit", confirm: "Confirm", embeddableInteractionButton: "Click to interact" }, l = { clearReset: "This will clear the whole canvas. Are you sure?", couldNotCreateShareableLink: "Couldn't create shareable link.", couldNotCreateShareableLinkTooBig: "Couldn't create shareable link: the scene is too big", couldNotLoadInvalidFile: "Couldn't load invalid file", importBackendFailed: "Importing from backend failed.", cannotExportEmptyCanvas: "Cannot export empty canvas.", couldNotCopyToClipboard: "Couldn't copy to clipboard.", decryptFailed: "Couldn't decrypt data.", uploadedSecurly: "The upload has been secured with end-to-end encryption, which means that Excalidraw server and third parties can't read the content.", loadSceneOverridePrompt: "Loading external drawing will replace your existing content. Do you wish to continue?", collabStopOverridePrompt: `Stopping the session will overwrite your previous, locally stored drawing. Are you sure?
13637
13637
 
13638
13638
  (If you want to keep your local drawing, simply close the browser tab instead.)`, errorAddingToLibrary: "Couldn't add item to the library", errorRemovingFromLibrary: "Couldn't remove item from the library", confirmAddLibrary: "This will add {{numShapes}} shape(s) to your library. Are you sure?", imageDoesNotContainScene: "This image does not seem to contain any scene data. Have you enabled scene embedding during export?", cannotRestoreFromImage: "Scene couldn't be restored from this image file", invalidSceneUrl: "Couldn't import scene from the supplied URL. It's either malformed, or doesn't contain valid Excalidraw JSON data.", resetLibrary: "This will clear your library. Are you sure?", removeItemsFromsLibrary: "Delete {{count}} item(s) from library?", invalidEncryptionKey: "Encryption key must be of 22 characters. Live collaboration is disabled.", collabOfflineWarning: `No internet connection available.
13639
13639
  Your changes will not be saved!` }, s = { unsupportedFileType: "Unsupported file type.", imageInsertError: "Couldn't insert image. Try again later...", fileTooBig: "File is too big. Maximum allowed size is {{maxSize}}.", svgImageInsertError: "Couldn't insert SVG image. The SVG markup looks invalid.", failedToFetchImage: "Failed to fetch image.", cannotResolveCollabServer: "Couldn't connect to the collab server. Please reload the page and try again.", importLibraryError: "Couldn't load library", saveLibraryError: "Couldn't save library to storage. Please save your library to a file locally to make sure you don't lose changes.", collabSaveFailed: "Couldn't save to the backend database. If problems persist, you should save your file locally to ensure you don't lose your work.", collabSaveFailed_sizeExceeded: "Couldn't save to the backend database, the canvas seems to be too big. You should save the file locally to ensure you don't lose your work.", imageToolNotSupported: "Images are disabled.", brave_measure_text_error: { line1: "Looks like you are using Brave browser with the <bold>Aggressively Block Fingerprinting</bold> setting enabled.", line2: "This could result in breaking the <bold>Text Elements</bold> in your drawings.", line3: "We strongly recommend disabling this setting. You can follow <link>these steps</link> on how to do so.", line4: "If disabling this setting doesn't fix the display of text elements, please open an <issueLink>issue</issueLink> on our GitHub, or write us on <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "Embeddable elements cannot be added to the library.", iframe: "IFrame elements cannot be added to the library.", image: "Support for adding images to the library coming soon!" }, asyncPasteFailedOnRead: "Couldn't paste (couldn't read from system clipboard).", asyncPasteFailedOnParse: "Couldn't paste.", copyToSystemClipboardFailed: "Couldn't copy to clipboard." }, d = { selection: "Selection", image: "Insert image", rectangle: "Rectangle", diamond: "Diamond", ellipse: "Ellipse", arrow: "Arrow", line: "Line", freedraw: "Draw", text: "Text", library: "Library", lock: "Keep selected tool active after drawing", penMode: "Pen mode - prevent touch", link: "Add / Update link for a selected shape", eraser: "Eraser", frame: "Frame tool", magicframe: "Wireframe to code", embeddable: "Web Embed", laser: "Laser pointer", hand: "Hand (panning tool)", extraTools: "More tools", mermaidToExcalidraw: "Mermaid to Excalidraw" }, c = { rectangle: "Rectangle", diamond: "Diamond", ellipse: "Ellipse", arrow: "Arrow", line: "Line", freedraw: "Freedraw", text: "Text", image: "Image", group: "Group", frame: "Frame", magicframe: "Wireframe to code", embeddable: "Web Embed", selection: "Selection", iframe: "IFrame" }, p = { canvasActions: "Canvas actions", selectedShapeActions: "Selected shape actions", shapes: "Shapes" }, m = { dismissSearch: "Escape to dismiss search", canvasPanning: "To move canvas, hold mouse wheel or spacebar while dragging, or use the hand tool", linearElement: "Click to start multiple points, drag for single line", arrowTool: "Click to start multiple points, drag for single line. Press {{arrowShortcut}} again to change arrow type.", freeDraw: "Click and drag, release when you're finished", text: "Tip: you can also add text by double-clicking anywhere with the selection tool", embeddable: "Click-drag to create a website embed", text_selected: "Double-click or press ENTER to edit text", text_editing: "Press Escape or CtrlOrCmd+ENTER to finish editing", linearElementMulti: "Click on last point or press Escape or Enter to finish", lockAngle: "You can constrain angle by holding SHIFT", resize: `You can constrain proportions by holding SHIFT while resizing,
@@ -13644,7 +13644,7 @@ or hold Alt and click to add new points`, placeImage: "Click to place the image,
13644
13644
  Will increase exported file size.` }, title: { exportToPng: "Export to PNG", exportToSvg: "Export to SVG", copyPngToClipboard: "Copy PNG to clipboard" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Copy to clipboard" } }, E = { tooltip: "Your drawings are end-to-end encrypted so Excalidraw's servers will never see them.", link: "Blog post on end-to-end encryption in Excalidraw" }, T = { angle: "Angle", shapes: "Shapes", height: "Height", scene: "Scene", selected: "Selected", storage: "Storage", fullTitle: "Canvas & Shape properties", title: "Properties", generalStats: "General", elementProperties: "Shape properties", total: "Total", version: "Version", versionCopy: "Click to copy", versionNotAvailable: "Version not available", width: "Width" }, L = { addedToLibrary: "Added to library", copyStyles: "Copied styles.", copyToClipboard: "Copied to clipboard.", copyToClipboardAsPng: `Copied {{exportSelection}} to clipboard as PNG
13645
13645
  ({{exportColorScheme}})`, copyToClipboardAsSvg: `Copied {{exportSelection}} to clipboard as SVG
13646
13646
  ({{exportColorScheme}})`, fileSaved: "File saved.", fileSavedToFilename: "Saved to {filename}", canvas: "canvas", selection: "selection", pasteAsSingleElement: `Use {{shortcut}} to paste as a single element,
13647
- or paste into an existing text editor`, unableToEmbed: "Embedding this url is currently not allowed. Raise an issue on GitHub to request the url whitelisted", unrecognizedLinkFormat: "The link you embedded does not match the expected format. Please try to paste the 'embed' string provided by the source site", elementLinkCopied: "Link copied to clipboard" }, F = { transparent: "Transparent", black: "Black", white: "White", red: "Red", pink: "Pink", grape: "Grape", violet: "Violet", gray: "Gray", blue: "Blue", cyan: "Cyan", teal: "Teal", green: "Green", yellow: "Yellow", orange: "Orange", bronze: "Bronze" }, P = { app: { center_heading: "All your data is saved locally in your browser.", center_heading_plus: "Did you want to go to the Excalidraw+ instead?", menuHint: "Export, preferences, languages, ..." }, defaults: { menuHint: "Export, preferences, and more...", center_heading: "Diagrams. Made. Simple.", toolbarHint: "Pick a tool & Start drawing!", helpHint: "Shortcuts & help" } }, A = { mostUsedCustomColors: "Most used custom colors", colors: "Colors", shades: "Shades", hexCode: "Hex code", noShades: "No shades available for this color" }, _ = { action: { exportToImage: { title: "Export as image", button: "Export as image", description: "Export the scene data as an image from which you can import later." }, saveToDisk: { title: "Save to disk", button: "Save to disk", description: "Export the scene data to a file from which you can import later." }, excalidrawPlus: { title: "Excalidraw+", button: "Export to Excalidraw+", description: "Save the scene to your Excalidraw+ workspace." } }, modal: { loadFromFile: { title: "Load from file", button: "Load from file", description: "Loading from a file will <bold>replace your existing content</bold>.<br></br>You can back up your drawing first using one of the options below." }, shareableLink: { title: "Load from link", button: "Replace my content", description: "Loading external drawing will <bold>replace your existing content</bold>.<br></br>You can back up your drawing first by using one of the options below." } } }, D = { title: "Mermaid to Excalidraw", button: "Insert", description: "Currently only <flowchartLink>Flowchart</flowchartLink>,<sequenceLink> Sequence, </sequenceLink> and <classLink>Class </classLink>Diagrams are supported. The other types will be rendered as image in Excalidraw.", syntax: "Mermaid Syntax", preview: "Preview" }, I = { placeholder: "Quick search" }, N$1 = { badge: { old: "old" }, sceneFonts: "In this scene", availableFonts: "Available fonts", empty: "No fonts found" }, z = { empty: "No users found", hint: { text: "Click on user to follow", followStatus: "You're currently following this user", inCall: "User is in a voice call", micMuted: "User's microphone is muted", isSpeaking: "User is speaking" } }, R$1 = { title: "Command palette", shortcuts: { select: "Select", confirm: "Confirm", close: "Close" }, recents: "Recently used", search: { placeholder: "Search menus, commands, and discover hidden gems", noMatch: "No matching commands..." }, itemNotAvailable: "Command is not available...", shortcutHint: "For Command palette, use {{shortcut}}" }, B = { labels: t, elementLink: r$1, library: a, search: i, buttons: n, alerts: l, errors: s, toolBar: d, element: c, headings: p, hints: m, canvasError: u, errorSplash: h, shareDialog: b, roomDialog: g$1, errorDialog: y, exportDialog: w, helpDialog: k$1, clearCanvasDialog: v, publishDialog: f, publishSuccessDialog: S, confirmDialog: C, imageExportDialog: x, encrypted: E, stats: T, toast: L, colors: F, welcomeScreen: P, colorPicker: A, overwriteConfirm: _, mermaid: D, quickSearch: I, fontList: N$1, userList: z, commandPalette: R$1 };
13647
+ or paste into an existing text editor`, unableToEmbed: "Embedding this url is currently not allowed. Raise an issue on GitHub to request the url whitelisted", unrecognizedLinkFormat: "The link you embedded does not match the expected format. Please try to paste the 'embed' string provided by the source site", elementLinkCopied: "Link copied to clipboard" }, F = { transparent: "Transparent", black: "Black", white: "White", red: "Red", pink: "Pink", grape: "Grape", violet: "Violet", gray: "Gray", blue: "Blue", cyan: "Cyan", teal: "Teal", green: "Green", yellow: "Yellow", orange: "Orange", bronze: "Bronze" }, P = { app: { center_heading: "All your data is saved locally in your browser.", center_heading_plus: "Did you want to go to the Excalidraw+ instead?", menuHint: "Export, preferences, languages, ..." }, defaults: { menuHint: "Export, preferences, and more...", center_heading: "Diagrams. Made. Simple.", toolbarHint: "Pick a tool & Start drawing!", helpHint: "Shortcuts & help" } }, A = { mostUsedCustomColors: "Most used custom colors", colors: "Colors", shades: "Shades", hexCode: "Hex code", noShades: "No shades available for this color" }, _ = { action: { exportToImage: { title: "Export as image", button: "Export as image", description: "Export the scene data as an image from which you can import later." }, saveToDisk: { title: "Save to disk", button: "Save to disk", description: "Export the scene data to a file from which you can import later." }, excalidrawPlus: { title: "Excalidraw+", button: "Export to Excalidraw+", description: "Save the scene to your Excalidraw+ workspace." } }, modal: { loadFromFile: { title: "Load from file", button: "Load from file", description: "Loading from a file will <bold>replace your existing content</bold>.<br></br>You can back up your drawing first using one of the options below." }, shareableLink: { title: "Load from link", button: "Replace my content", description: "Loading external drawing will <bold>replace your existing content</bold>.<br></br>You can back up your drawing first by using one of the options below." } } }, D = { title: "Mermaid to Excalidraw", button: "Insert", description: "Currently only <flowchartLink>Flowchart</flowchartLink>,<sequenceLink> Sequence, </sequenceLink> and <classLink>Class </classLink>Diagrams are supported. The other types will be rendered as image in Excalidraw.", syntax: "Mermaid Syntax", preview: "Preview" }, I = { placeholder: "Quick search" }, N$1 = { badge: { old: "old" }, sceneFonts: "In this scene", availableFonts: "Available fonts", empty: "No fonts found" }, z = { empty: "No users found", hint: { text: "Click on user to follow", followStatus: "You're currently following this user", inCall: "User is in a voice call", micMuted: "User's microphone is muted", isSpeaking: "User is speaking" } }, R$1 = { title: "Command palette", shortcuts: { select: "Select", confirm: "Confirm", close: "Close" }, recents: "Recently used", search: { placeholder: "Search menus, commands, and discover hidden gems", noMatch: "No matching commands..." }, itemNotAvailable: "Command is not available...", shortcutHint: "For Command palette, use {{shortcut}}" }, B = { labels: t, elementLink: r, library: a, search: i, buttons: n, alerts: l, errors: s, toolBar: d, element: c, headings: p, hints: m, canvasError: u, errorSplash: h, shareDialog: b, roomDialog: g$1, errorDialog: y, exportDialog: w, helpDialog: k$1, clearCanvasDialog: v, publishDialog: f, publishSuccessDialog: S, confirmDialog: C, imageExportDialog: x, encrypted: E, stats: T, toast: L, colors: F, welcomeScreen: P, colorPicker: A, overwriteConfirm: _, mermaid: D, quickSearch: I, fontList: N$1, userList: z, commandPalette: R$1 };
13648
13648
  var R = 100, k = 36, N = { "ar-SA": 94, "az-AZ": 17, "bg-BG": 71, "bn-BD": 52, "ca-ES": 83, "cs-CZ": 86, "da-DK": 61, "de-DE": 100, "el-GR": 80, en: R, "es-ES": 96, "eu-ES": 97, "fa-IR": 84, "fi-FI": 76, "fr-FR": 99, "gl-ES": 86, "he-IL": 77, "hi-IN": 76, "hu-HU": 76, "id-ID": 91, "it-IT": 98, "ja-JP": 90, kaa: k, "kab-KAB": 76, "kk-KZ": 18, "km-KH": 83, "ko-KR": 100, "ku-TR": 87, "lt-LT": 48, "lv-LV": 77, "mr-IN": 98, "my-MM": 35, "nb-NO": 93, "nl-NL": 75, "nn-NO": 67, "oc-FR": 92, "pa-IN": 78, "pl-PL": 99, "pt-BR": 91, "pt-PT": 83, "ro-RO": 99, "ru-RU": 92, "si-LK": 7, "sk-SK": 100, "sl-SI": 100, "sv-SE": 100, "ta-IN": 81, "th-TH": 44, "tr-TR": 87, "uk-UA": 93, "vi-VN": 49, "zh-CN": 100, "zh-HK": 22, "zh-TW": 100 };
13649
13649
  const __vite_import_meta_env__$3 = {};
13650
13650
  const isSelfAtom = (atom2, a3) => atom2.unstable_is ? atom2.unstable_is(a3) : a3 === atom2;
@@ -20480,7 +20480,7 @@ _$94cfa2cfccc8cc22$export$6531021b3bf36eae.constants = {
20480
20480
  let $94cfa2cfccc8cc22$export$6531021b3bf36eae = _$94cfa2cfccc8cc22$export$6531021b3bf36eae;
20481
20481
  var YE = createIsolation();
20482
20482
  var { useAtom: ce, useSetAtom: Tr, useAtomValue: Ws, useStore: LM } = YE, VE = YE.Provider, st = createStore$2();
20483
- var YT = g$2({ "./locales/ar-SA.json": () => import("./ar-SA-G6X2FPQ2-DDHkAUNk.js"), "./locales/az-AZ.json": () => import("./az-AZ-76LH7QW2-IroT_ktK.js"), "./locales/bg-BG.json": () => import("./bg-BG-XCXSNQG7-_OtrYx6q.js"), "./locales/bn-BD.json": () => import("./bn-BD-2XOGV67Q--YD3Qc9v.js"), "./locales/ca-ES.json": () => import("./ca-ES-6MX7JW3Y-m6Eb-Qoc.js"), "./locales/cs-CZ.json": () => import("./cs-CZ-2BRQDIVT-C9Y9h9nn.js"), "./locales/da-DK.json": () => import("./da-DK-5WZEPLOC-DK11E3ka.js"), "./locales/de-DE.json": () => import("./de-DE-XR44H4JA-a7ufoL1i.js"), "./locales/el-GR.json": () => import("./el-GR-BZB4AONW-Cfu1-fVG.js"), "./locales/en.json": () => import("./en-B4ZKOASM-DNjt-LwK.js"), "./locales/es-ES.json": () => import("./es-ES-U4NZUMDT-Bjsd6vbf.js"), "./locales/eu-ES.json": () => import("./eu-ES-A7QVB2H4-N7rJjGSi.js"), "./locales/fa-IR.json": () => import("./fa-IR-HGAKTJCU-D0rzkbHf.js"), "./locales/fi-FI.json": () => import("./fi-FI-Z5N7JZ37-C2GA_le3.js"), "./locales/fr-FR.json": () => import("./fr-FR-RHASNOE6-BkiDJYcv.js"), "./locales/gl-ES.json": () => import("./gl-ES-HMX3MZ6V-DBCgv9MO.js"), "./locales/he-IL.json": () => import("./he-IL-6SHJWFNN-DMvtkqVk.js"), "./locales/hi-IN.json": () => import("./hi-IN-IWLTKZ5I-B196wJUk.js"), "./locales/hu-HU.json": () => import("./hu-HU-A5ZG7DT2-CayjIYC7.js"), "./locales/id-ID.json": () => import("./id-ID-SAP4L64H-kbbxPvDx.js"), "./locales/it-IT.json": () => import("./it-IT-JPQ66NNP-DmF-nwbf.js"), "./locales/ja-JP.json": () => import("./ja-JP-DBVTYXUO-BWuJGKzA.js"), "./locales/kaa.json": () => import("./kaa-6HZHGXH3-D7W2DsXA.js"), "./locales/kab-KAB.json": () => import("./kab-KAB-ZGHBKWFO-CfjxYgTo.js"), "./locales/kk-KZ.json": () => import("./kk-KZ-P5N5QNE5-yuFs7eMQ.js"), "./locales/km-KH.json": () => import("./km-KH-HSX4SM5Z-Dwij0df7.js"), "./locales/ko-KR.json": () => import("./ko-KR-MTYHY66A-BWf5fW_J.js"), "./locales/ku-TR.json": () => import("./ku-TR-6OUDTVRD-eSa9ssIF.js"), "./locales/lt-LT.json": () => import("./lt-LT-XHIRWOB4-XFA9GMKx.js"), "./locales/lv-LV.json": () => import("./lv-LV-5QDEKY6T-W3OTCHk1.js"), "./locales/mr-IN.json": () => import("./mr-IN-CRQNXWMA-C5OxGYCW.js"), "./locales/my-MM.json": () => import("./my-MM-5M5IBNSE-BeH-wy_T.js"), "./locales/nb-NO.json": () => import("./nb-NO-T6EIAALU-u7-fg6Xa.js"), "./locales/nl-NL.json": () => import("./nl-NL-IS3SIHDZ-C_9y7qqo.js"), "./locales/nn-NO.json": () => import("./nn-NO-6E72VCQL-Cshm8sF9.js"), "./locales/oc-FR.json": () => import("./oc-FR-POXYY2M6-I37FrgUY.js"), "./locales/pa-IN.json": () => import("./pa-IN-N4M65BXN-0FXK_TCM.js"), "./locales/percentages.json": () => import("./percentages-BXMCSKIN-afhnNBYL.js"), "./locales/pl-PL.json": () => import("./pl-PL-T2D74RX3-UFxDbbwy.js"), "./locales/pt-BR.json": () => import("./pt-BR-5N22H2LF-DznxuRQz.js"), "./locales/pt-PT.json": () => import("./pt-PT-UZXXM6DQ-owN7qWB-.js"), "./locales/ro-RO.json": () => import("./ro-RO-JPDTUUEW-CAS2eW3Q.js"), "./locales/ru-RU.json": () => import("./ru-RU-B4JR7IUQ-TQaxpqNm.js"), "./locales/si-LK.json": () => import("./si-LK-N5RQ5JYF-BR3skypF.js"), "./locales/sk-SK.json": () => import("./sk-SK-C5VTKIMK-T4e097Mu.js"), "./locales/sl-SI.json": () => import("./sl-SI-NN7IZMDC-BYgsoW03.js"), "./locales/sv-SE.json": () => import("./sv-SE-XGPEYMSR-C-mhvJKn.js"), "./locales/ta-IN.json": () => import("./ta-IN-2NMHFXQM-tg8Hyvm7.js"), "./locales/th-TH.json": () => import("./th-TH-HPSO5L25-C-CmPt4n.js"), "./locales/tr-TR.json": () => import("./tr-TR-DEFEU3FU-CSg_Bfod.js"), "./locales/uk-UA.json": () => import("./uk-UA-QMV73CPH-DScelITQ.js"), "./locales/vi-VN.json": () => import("./vi-VN-M7AON7JQ-DhfNR86M.js"), "./locales/zh-CN.json": () => import("./zh-CN-LNUGB5OW-ANWecdyg.js"), "./locales/zh-HK.json": () => import("./zh-HK-E62DVLB3-BS1fZpuK.js"), "./locales/zh-TW.json": () => import("./zh-TW-RAJ6MFWO-xkTqFSz4.js") });
20483
+ var YT = g$2({ "./locales/ar-SA.json": () => import("./ar-SA-G6X2FPQ2-C3Zkx8HI.js"), "./locales/az-AZ.json": () => import("./az-AZ-76LH7QW2-DzVDRLKn.js"), "./locales/bg-BG.json": () => import("./bg-BG-XCXSNQG7-Cv8X6n50.js"), "./locales/bn-BD.json": () => import("./bn-BD-2XOGV67Q-B31WUnZU.js"), "./locales/ca-ES.json": () => import("./ca-ES-6MX7JW3Y-CpMypehz.js"), "./locales/cs-CZ.json": () => import("./cs-CZ-2BRQDIVT-jHTRSHaR.js"), "./locales/da-DK.json": () => import("./da-DK-5WZEPLOC-DKXc8Qlr.js"), "./locales/de-DE.json": () => import("./de-DE-XR44H4JA-BgMwPDH1.js"), "./locales/el-GR.json": () => import("./el-GR-BZB4AONW-Co-6JahB.js"), "./locales/en.json": () => import("./en-B4ZKOASM-CkJv0OCH.js"), "./locales/es-ES.json": () => import("./es-ES-U4NZUMDT-IQ_Q3CRS.js"), "./locales/eu-ES.json": () => import("./eu-ES-A7QVB2H4-CbSeHWaO.js"), "./locales/fa-IR.json": () => import("./fa-IR-HGAKTJCU-D2PeuE5f.js"), "./locales/fi-FI.json": () => import("./fi-FI-Z5N7JZ37-xdmWeM22.js"), "./locales/fr-FR.json": () => import("./fr-FR-RHASNOE6-D9Ks0amH.js"), "./locales/gl-ES.json": () => import("./gl-ES-HMX3MZ6V-C640e-lQ.js"), "./locales/he-IL.json": () => import("./he-IL-6SHJWFNN-t4-hZdU6.js"), "./locales/hi-IN.json": () => import("./hi-IN-IWLTKZ5I-Z2XQ7OaH.js"), "./locales/hu-HU.json": () => import("./hu-HU-A5ZG7DT2-E59hZrhC.js"), "./locales/id-ID.json": () => import("./id-ID-SAP4L64H-DCdory64.js"), "./locales/it-IT.json": () => import("./it-IT-JPQ66NNP-Bv_Iwmch.js"), "./locales/ja-JP.json": () => import("./ja-JP-DBVTYXUO-CcBIJKuV.js"), "./locales/kaa.json": () => import("./kaa-6HZHGXH3-IqqDBtAx.js"), "./locales/kab-KAB.json": () => import("./kab-KAB-ZGHBKWFO-EPV9JeMY.js"), "./locales/kk-KZ.json": () => import("./kk-KZ-P5N5QNE5-yTVp6d-O.js"), "./locales/km-KH.json": () => import("./km-KH-HSX4SM5Z-D82o5MOr.js"), "./locales/ko-KR.json": () => import("./ko-KR-MTYHY66A-BfM6DdOv.js"), "./locales/ku-TR.json": () => import("./ku-TR-6OUDTVRD-C7Rk-p-H.js"), "./locales/lt-LT.json": () => import("./lt-LT-XHIRWOB4-CEyfIX1g.js"), "./locales/lv-LV.json": () => import("./lv-LV-5QDEKY6T-BU64hsiQ.js"), "./locales/mr-IN.json": () => import("./mr-IN-CRQNXWMA-BXKs8g-X.js"), "./locales/my-MM.json": () => import("./my-MM-5M5IBNSE-thu0BGux.js"), "./locales/nb-NO.json": () => import("./nb-NO-T6EIAALU-zFIV3_zm.js"), "./locales/nl-NL.json": () => import("./nl-NL-IS3SIHDZ-BB-P2uZ_.js"), "./locales/nn-NO.json": () => import("./nn-NO-6E72VCQL-lYnuYnBH.js"), "./locales/oc-FR.json": () => import("./oc-FR-POXYY2M6-CabNCooh.js"), "./locales/pa-IN.json": () => import("./pa-IN-N4M65BXN-B6QNCT0d.js"), "./locales/percentages.json": () => import("./percentages-BXMCSKIN-zDx6wOCn.js"), "./locales/pl-PL.json": () => import("./pl-PL-T2D74RX3-Bf84r6xt.js"), "./locales/pt-BR.json": () => import("./pt-BR-5N22H2LF-B0aYjzDB.js"), "./locales/pt-PT.json": () => import("./pt-PT-UZXXM6DQ-DYX7IfGn.js"), "./locales/ro-RO.json": () => import("./ro-RO-JPDTUUEW-CQ3RWbgW.js"), "./locales/ru-RU.json": () => import("./ru-RU-B4JR7IUQ-BMakJPR_.js"), "./locales/si-LK.json": () => import("./si-LK-N5RQ5JYF-CVxhGv0d.js"), "./locales/sk-SK.json": () => import("./sk-SK-C5VTKIMK-DpwaLj4k.js"), "./locales/sl-SI.json": () => import("./sl-SI-NN7IZMDC-DDtRAYmt.js"), "./locales/sv-SE.json": () => import("./sv-SE-XGPEYMSR-B-N4KQQu.js"), "./locales/ta-IN.json": () => import("./ta-IN-2NMHFXQM-B37Qom-B.js"), "./locales/th-TH.json": () => import("./th-TH-HPSO5L25-BXsZa0sK.js"), "./locales/tr-TR.json": () => import("./tr-TR-DEFEU3FU-Dvx6cFkQ.js"), "./locales/uk-UA.json": () => import("./uk-UA-QMV73CPH-BY1Uu4NH.js"), "./locales/vi-VN.json": () => import("./vi-VN-M7AON7JQ-gh-gf7BK.js"), "./locales/zh-CN.json": () => import("./zh-CN-LNUGB5OW-6OIel3A0.js"), "./locales/zh-HK.json": () => import("./zh-HK-E62DVLB3-BJ1RcwYs.js"), "./locales/zh-TW.json": () => import("./zh-TW-RAJ6MFWO-rgF22h5C.js") });
20484
20484
  var VT = 85, _o = { code: "en", label: "English" }, xi = [_o, ...[{ code: "ar-SA", label: "العربية", rtl: true }, { code: "bg-BG", label: "Български" }, { code: "ca-ES", label: "Català" }, { code: "cs-CZ", label: "Česky" }, { code: "de-DE", label: "Deutsch" }, { code: "el-GR", label: "Ελληνικά" }, { code: "es-ES", label: "Español" }, { code: "eu-ES", label: "Euskara" }, { code: "fa-IR", label: "فارسی", rtl: true }, { code: "fi-FI", label: "Suomi" }, { code: "fr-FR", label: "Français" }, { code: "gl-ES", label: "Galego" }, { code: "he-IL", label: "עברית", rtl: true }, { code: "hi-IN", label: "हिन्दी" }, { code: "hu-HU", label: "Magyar" }, { code: "id-ID", label: "Bahasa Indonesia" }, { code: "it-IT", label: "Italiano" }, { code: "ja-JP", label: "日本語" }, { code: "kab-KAB", label: "Taqbaylit" }, { code: "kk-KZ", label: "Қазақ тілі" }, { code: "ko-KR", label: "한국어" }, { code: "ku-TR", label: "Kurdî" }, { code: "lt-LT", label: "Lietuvių" }, { code: "lv-LV", label: "Latviešu" }, { code: "my-MM", label: "Burmese" }, { code: "nb-NO", label: "Norsk bokmål" }, { code: "nl-NL", label: "Nederlands" }, { code: "nn-NO", label: "Norsk nynorsk" }, { code: "oc-FR", label: "Occitan" }, { code: "pa-IN", label: "ਪੰਜਾਬੀ" }, { code: "pl-PL", label: "Polski" }, { code: "pt-BR", label: "Português Brasileiro" }, { code: "pt-PT", label: "Português" }, { code: "ro-RO", label: "Română" }, { code: "ru-RU", label: "Русский" }, { code: "sk-SK", label: "Slovenčina" }, { code: "sv-SE", label: "Svenska" }, { code: "sl-SI", label: "Slovenščina" }, { code: "tr-TR", label: "Türkçe" }, { code: "uk-UA", label: "Українська" }, { code: "zh-CN", label: "简体中文" }, { code: "zh-TW", label: "繁體中文" }, { code: "vi-VN", label: "Tiếng Việt" }, { code: "mr-IN", label: "मराठी" }].filter((e12) => N[e12.code] >= VT).sort((e12, o3) => e12.label > o3.label ? 1 : -1)], Xs = "__test__";
20485
20485
  c$1.DEV && xi.unshift({ code: Xs, label: "test language" }, { code: `${Xs}.rtl`, label: "‪test language (rtl)‬", rtl: true });
20486
20486
  var bi = _o, Ks = {}, $s = async (e12) => {
@@ -21547,7 +21547,7 @@ var yn = (e12, { selectedElementIds: o3 }, t3) => {
21547
21547
  let m3 = pp$1(o3, t3, r3, { exportBackground: n3, viewBackgroundColor: a3, exportPadding: i3, exportingFrame: c3 });
21548
21548
  if (e12 === "png") {
21549
21549
  let d3 = vY(m3);
21550
- return t3.exportEmbedScene && (d3 = d3.then((p3) => import("./image-EDRW2JGV-8GYqS18e.js").then(({ encodePngMetadata: u3 }) => u3({ blob: p3, metadata: to$1(o3, t3, r3) })))), es(d3, { description: "Export to PNG", name: l3, extension: t3.exportEmbedScene ? "excalidraw.png" : "png", mimeTypes: [yo.png], fileHandle: s3 });
21550
+ return t3.exportEmbedScene && (d3 = d3.then((p3) => import("./image-EDRW2JGV-KermR2ht.js").then(({ encodePngMetadata: u3 }) => u3({ blob: p3, metadata: to$1(o3, t3, r3) })))), es(d3, { description: "Export to PNG", name: l3, extension: t3.exportEmbedScene ? "excalidraw.png" : "png", mimeTypes: [yo.png], fileHandle: s3 });
21551
21551
  } else if (e12 === "clipboard") try {
21552
21552
  let d3 = vY(m3);
21553
21553
  await Bp(d3);
@@ -23888,7 +23888,7 @@ TTD mermaid definition render errror: ${M.message}`, "color: yellow"), le("ai",
23888
23888
  }
23889
23889
  }, b3 = useRef(f3);
23890
23890
  b3.current = f3;
23891
- let [x3, T3] = useState({ loaded: false, api: import("./index-UPLxYBsO.js").then((n8) => n8.b6) });
23891
+ let [x3, T3] = useState({ loaded: false, api: import("./index-XfybIDdh.js").then((n8) => n8.b6) });
23892
23892
  useEffect(() => {
23893
23893
  (async () => {
23894
23894
  await x3.api, T3((_3) => ({ ..._3, loaded: true }));
@@ -25528,7 +25528,7 @@ var He = () => useContext(gT), Do = () => useContext(hT), me = () => useContext(
25528
25528
  this.addElementsFromPasteOrLibrary({ elements: d3, files: m8.files || null, position: "cursor", retainSeed: r5 });
25529
25529
  } else if (m8.text) {
25530
25530
  if (m8.text && lT(m8.text)) {
25531
- let u3 = await import("./index-UPLxYBsO.js").then((n9) => n9.b6);
25531
+ let u3 = await import("./index-XfybIDdh.js").then((n9) => n9.b6);
25532
25532
  try {
25533
25533
  let { elements: h3, files: f3 } = await u3.parseMermaidToExcalidraw(m8.text), b3 = Yi(h3, { regenerateIds: true });
25534
25534
  this.addElementsFromPasteOrLibrary({ elements: b3, files: f3, position: "cursor" });
@@ -27398,2973 +27398,6 @@ function CustomExcalidraw(props) {
27398
27398
  }
27399
27399
  ) });
27400
27400
  }
27401
- function r(e12) {
27402
- var t3, f3, n3 = "";
27403
- if ("string" == typeof e12 || "number" == typeof e12) n3 += e12;
27404
- else if ("object" == typeof e12) if (Array.isArray(e12)) {
27405
- var o3 = e12.length;
27406
- for (t3 = 0; t3 < o3; t3++) e12[t3] && (f3 = r(e12[t3])) && (n3 && (n3 += " "), n3 += f3);
27407
- } else for (f3 in e12) e12[f3] && (n3 && (n3 += " "), n3 += f3);
27408
- return n3;
27409
- }
27410
- function clsx() {
27411
- for (var e12, t3, f3 = 0, n3 = "", o3 = arguments.length; f3 < o3; f3++) (e12 = arguments[f3]) && (t3 = r(e12)) && (n3 && (n3 += " "), n3 += t3);
27412
- return n3;
27413
- }
27414
- const CLASS_PART_SEPARATOR = "-";
27415
- const createClassGroupUtils = (config) => {
27416
- const classMap = createClassMap(config);
27417
- const {
27418
- conflictingClassGroups,
27419
- conflictingClassGroupModifiers
27420
- } = config;
27421
- const getClassGroupId = (className) => {
27422
- const classParts = className.split(CLASS_PART_SEPARATOR);
27423
- if (classParts[0] === "" && classParts.length !== 1) {
27424
- classParts.shift();
27425
- }
27426
- return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);
27427
- };
27428
- const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {
27429
- const conflicts = conflictingClassGroups[classGroupId] || [];
27430
- if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {
27431
- return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];
27432
- }
27433
- return conflicts;
27434
- };
27435
- return {
27436
- getClassGroupId,
27437
- getConflictingClassGroupIds
27438
- };
27439
- };
27440
- const getGroupRecursive = (classParts, classPartObject) => {
27441
- if (classParts.length === 0) {
27442
- return classPartObject.classGroupId;
27443
- }
27444
- const currentClassPart = classParts[0];
27445
- const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
27446
- const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : void 0;
27447
- if (classGroupFromNextClassPart) {
27448
- return classGroupFromNextClassPart;
27449
- }
27450
- if (classPartObject.validators.length === 0) {
27451
- return void 0;
27452
- }
27453
- const classRest = classParts.join(CLASS_PART_SEPARATOR);
27454
- return classPartObject.validators.find(({
27455
- validator
27456
- }) => validator(classRest))?.classGroupId;
27457
- };
27458
- const arbitraryPropertyRegex = /^\[(.+)\]$/;
27459
- const getGroupIdForArbitraryProperty = (className) => {
27460
- if (arbitraryPropertyRegex.test(className)) {
27461
- const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];
27462
- const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(":"));
27463
- if (property) {
27464
- return "arbitrary.." + property;
27465
- }
27466
- }
27467
- };
27468
- const createClassMap = (config) => {
27469
- const {
27470
- theme,
27471
- classGroups
27472
- } = config;
27473
- const classMap = {
27474
- nextPart: /* @__PURE__ */ new Map(),
27475
- validators: []
27476
- };
27477
- for (const classGroupId in classGroups) {
27478
- processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);
27479
- }
27480
- return classMap;
27481
- };
27482
- const processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {
27483
- classGroup.forEach((classDefinition) => {
27484
- if (typeof classDefinition === "string") {
27485
- const classPartObjectToEdit = classDefinition === "" ? classPartObject : getPart(classPartObject, classDefinition);
27486
- classPartObjectToEdit.classGroupId = classGroupId;
27487
- return;
27488
- }
27489
- if (typeof classDefinition === "function") {
27490
- if (isThemeGetter(classDefinition)) {
27491
- processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
27492
- return;
27493
- }
27494
- classPartObject.validators.push({
27495
- validator: classDefinition,
27496
- classGroupId
27497
- });
27498
- return;
27499
- }
27500
- Object.entries(classDefinition).forEach(([key, classGroup2]) => {
27501
- processClassesRecursively(classGroup2, getPart(classPartObject, key), classGroupId, theme);
27502
- });
27503
- });
27504
- };
27505
- const getPart = (classPartObject, path) => {
27506
- let currentClassPartObject = classPartObject;
27507
- path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => {
27508
- if (!currentClassPartObject.nextPart.has(pathPart)) {
27509
- currentClassPartObject.nextPart.set(pathPart, {
27510
- nextPart: /* @__PURE__ */ new Map(),
27511
- validators: []
27512
- });
27513
- }
27514
- currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);
27515
- });
27516
- return currentClassPartObject;
27517
- };
27518
- const isThemeGetter = (func) => func.isThemeGetter;
27519
- const createLruCache = (maxCacheSize) => {
27520
- if (maxCacheSize < 1) {
27521
- return {
27522
- get: () => void 0,
27523
- set: () => {
27524
- }
27525
- };
27526
- }
27527
- let cacheSize = 0;
27528
- let cache = /* @__PURE__ */ new Map();
27529
- let previousCache = /* @__PURE__ */ new Map();
27530
- const update = (key, value) => {
27531
- cache.set(key, value);
27532
- cacheSize++;
27533
- if (cacheSize > maxCacheSize) {
27534
- cacheSize = 0;
27535
- previousCache = cache;
27536
- cache = /* @__PURE__ */ new Map();
27537
- }
27538
- };
27539
- return {
27540
- get(key) {
27541
- let value = cache.get(key);
27542
- if (value !== void 0) {
27543
- return value;
27544
- }
27545
- if ((value = previousCache.get(key)) !== void 0) {
27546
- update(key, value);
27547
- return value;
27548
- }
27549
- },
27550
- set(key, value) {
27551
- if (cache.has(key)) {
27552
- cache.set(key, value);
27553
- } else {
27554
- update(key, value);
27555
- }
27556
- }
27557
- };
27558
- };
27559
- const IMPORTANT_MODIFIER = "!";
27560
- const MODIFIER_SEPARATOR = ":";
27561
- const MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;
27562
- const createParseClassName = (config) => {
27563
- const {
27564
- prefix,
27565
- experimentalParseClassName
27566
- } = config;
27567
- let parseClassName = (className) => {
27568
- const modifiers = [];
27569
- let bracketDepth = 0;
27570
- let parenDepth = 0;
27571
- let modifierStart = 0;
27572
- let postfixModifierPosition;
27573
- for (let index2 = 0; index2 < className.length; index2++) {
27574
- let currentCharacter = className[index2];
27575
- if (bracketDepth === 0 && parenDepth === 0) {
27576
- if (currentCharacter === MODIFIER_SEPARATOR) {
27577
- modifiers.push(className.slice(modifierStart, index2));
27578
- modifierStart = index2 + MODIFIER_SEPARATOR_LENGTH;
27579
- continue;
27580
- }
27581
- if (currentCharacter === "/") {
27582
- postfixModifierPosition = index2;
27583
- continue;
27584
- }
27585
- }
27586
- if (currentCharacter === "[") {
27587
- bracketDepth++;
27588
- } else if (currentCharacter === "]") {
27589
- bracketDepth--;
27590
- } else if (currentCharacter === "(") {
27591
- parenDepth++;
27592
- } else if (currentCharacter === ")") {
27593
- parenDepth--;
27594
- }
27595
- }
27596
- const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);
27597
- const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);
27598
- const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;
27599
- const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : void 0;
27600
- return {
27601
- modifiers,
27602
- hasImportantModifier,
27603
- baseClassName,
27604
- maybePostfixModifierPosition
27605
- };
27606
- };
27607
- if (prefix) {
27608
- const fullPrefix = prefix + MODIFIER_SEPARATOR;
27609
- const parseClassNameOriginal = parseClassName;
27610
- parseClassName = (className) => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {
27611
- isExternal: true,
27612
- modifiers: [],
27613
- hasImportantModifier: false,
27614
- baseClassName: className,
27615
- maybePostfixModifierPosition: void 0
27616
- };
27617
- }
27618
- if (experimentalParseClassName) {
27619
- const parseClassNameOriginal = parseClassName;
27620
- parseClassName = (className) => experimentalParseClassName({
27621
- className,
27622
- parseClassName: parseClassNameOriginal
27623
- });
27624
- }
27625
- return parseClassName;
27626
- };
27627
- const stripImportantModifier = (baseClassName) => {
27628
- if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {
27629
- return baseClassName.substring(0, baseClassName.length - 1);
27630
- }
27631
- if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {
27632
- return baseClassName.substring(1);
27633
- }
27634
- return baseClassName;
27635
- };
27636
- const createSortModifiers = (config) => {
27637
- const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map((modifier) => [modifier, true]));
27638
- const sortModifiers = (modifiers) => {
27639
- if (modifiers.length <= 1) {
27640
- return modifiers;
27641
- }
27642
- const sortedModifiers = [];
27643
- let unsortedModifiers = [];
27644
- modifiers.forEach((modifier) => {
27645
- const isPositionSensitive = modifier[0] === "[" || orderSensitiveModifiers[modifier];
27646
- if (isPositionSensitive) {
27647
- sortedModifiers.push(...unsortedModifiers.sort(), modifier);
27648
- unsortedModifiers = [];
27649
- } else {
27650
- unsortedModifiers.push(modifier);
27651
- }
27652
- });
27653
- sortedModifiers.push(...unsortedModifiers.sort());
27654
- return sortedModifiers;
27655
- };
27656
- return sortModifiers;
27657
- };
27658
- const createConfigUtils = (config) => ({
27659
- cache: createLruCache(config.cacheSize),
27660
- parseClassName: createParseClassName(config),
27661
- sortModifiers: createSortModifiers(config),
27662
- ...createClassGroupUtils(config)
27663
- });
27664
- const SPLIT_CLASSES_REGEX = /\s+/;
27665
- const mergeClassList = (classList, configUtils) => {
27666
- const {
27667
- parseClassName,
27668
- getClassGroupId,
27669
- getConflictingClassGroupIds,
27670
- sortModifiers
27671
- } = configUtils;
27672
- const classGroupsInConflict = [];
27673
- const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);
27674
- let result = "";
27675
- for (let index2 = classNames.length - 1; index2 >= 0; index2 -= 1) {
27676
- const originalClassName = classNames[index2];
27677
- const {
27678
- isExternal,
27679
- modifiers,
27680
- hasImportantModifier,
27681
- baseClassName,
27682
- maybePostfixModifierPosition
27683
- } = parseClassName(originalClassName);
27684
- if (isExternal) {
27685
- result = originalClassName + (result.length > 0 ? " " + result : result);
27686
- continue;
27687
- }
27688
- let hasPostfixModifier = !!maybePostfixModifierPosition;
27689
- let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);
27690
- if (!classGroupId) {
27691
- if (!hasPostfixModifier) {
27692
- result = originalClassName + (result.length > 0 ? " " + result : result);
27693
- continue;
27694
- }
27695
- classGroupId = getClassGroupId(baseClassName);
27696
- if (!classGroupId) {
27697
- result = originalClassName + (result.length > 0 ? " " + result : result);
27698
- continue;
27699
- }
27700
- hasPostfixModifier = false;
27701
- }
27702
- const variantModifier = sortModifiers(modifiers).join(":");
27703
- const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
27704
- const classId = modifierId + classGroupId;
27705
- if (classGroupsInConflict.includes(classId)) {
27706
- continue;
27707
- }
27708
- classGroupsInConflict.push(classId);
27709
- const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);
27710
- for (let i3 = 0; i3 < conflictGroups.length; ++i3) {
27711
- const group = conflictGroups[i3];
27712
- classGroupsInConflict.push(modifierId + group);
27713
- }
27714
- result = originalClassName + (result.length > 0 ? " " + result : result);
27715
- }
27716
- return result;
27717
- };
27718
- function twJoin() {
27719
- let index2 = 0;
27720
- let argument;
27721
- let resolvedValue;
27722
- let string = "";
27723
- while (index2 < arguments.length) {
27724
- if (argument = arguments[index2++]) {
27725
- if (resolvedValue = toValue(argument)) {
27726
- string && (string += " ");
27727
- string += resolvedValue;
27728
- }
27729
- }
27730
- }
27731
- return string;
27732
- }
27733
- const toValue = (mix) => {
27734
- if (typeof mix === "string") {
27735
- return mix;
27736
- }
27737
- let resolvedValue;
27738
- let string = "";
27739
- for (let k2 = 0; k2 < mix.length; k2++) {
27740
- if (mix[k2]) {
27741
- if (resolvedValue = toValue(mix[k2])) {
27742
- string && (string += " ");
27743
- string += resolvedValue;
27744
- }
27745
- }
27746
- }
27747
- return string;
27748
- };
27749
- function createTailwindMerge(createConfigFirst, ...createConfigRest) {
27750
- let configUtils;
27751
- let cacheGet;
27752
- let cacheSet;
27753
- let functionToCall = initTailwindMerge;
27754
- function initTailwindMerge(classList) {
27755
- const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());
27756
- configUtils = createConfigUtils(config);
27757
- cacheGet = configUtils.cache.get;
27758
- cacheSet = configUtils.cache.set;
27759
- functionToCall = tailwindMerge;
27760
- return tailwindMerge(classList);
27761
- }
27762
- function tailwindMerge(classList) {
27763
- const cachedResult = cacheGet(classList);
27764
- if (cachedResult) {
27765
- return cachedResult;
27766
- }
27767
- const result = mergeClassList(classList, configUtils);
27768
- cacheSet(classList, result);
27769
- return result;
27770
- }
27771
- return function callTailwindMerge() {
27772
- return functionToCall(twJoin.apply(null, arguments));
27773
- };
27774
- }
27775
- const fromTheme = (key) => {
27776
- const themeGetter = (theme) => theme[key] || [];
27777
- themeGetter.isThemeGetter = true;
27778
- return themeGetter;
27779
- };
27780
- const arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i;
27781
- const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
27782
- const fractionRegex = /^\d+\/\d+$/;
27783
- const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
27784
- const lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/;
27785
- const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/;
27786
- const shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
27787
- const imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
27788
- const isFraction = (value) => fractionRegex.test(value);
27789
- const isNumber = (value) => !!value && !Number.isNaN(Number(value));
27790
- const isInteger = (value) => !!value && Number.isInteger(Number(value));
27791
- const isPercent = (value) => value.endsWith("%") && isNumber(value.slice(0, -1));
27792
- const isTshirtSize = (value) => tshirtUnitRegex.test(value);
27793
- const isAny = () => true;
27794
- const isLengthOnly = (value) => (
27795
- // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
27796
- // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
27797
- // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
27798
- lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)
27799
- );
27800
- const isNever = () => false;
27801
- const isShadow = (value) => shadowRegex.test(value);
27802
- const isImage = (value) => imageRegex.test(value);
27803
- const isAnyNonArbitrary = (value) => !isArbitraryValue(value) && !isArbitraryVariable(value);
27804
- const isArbitrarySize = (value) => getIsArbitraryValue(value, isLabelSize, isNever);
27805
- const isArbitraryValue = (value) => arbitraryValueRegex.test(value);
27806
- const isArbitraryLength = (value) => getIsArbitraryValue(value, isLabelLength, isLengthOnly);
27807
- const isArbitraryNumber = (value) => getIsArbitraryValue(value, isLabelNumber, isNumber);
27808
- const isArbitraryPosition = (value) => getIsArbitraryValue(value, isLabelPosition, isNever);
27809
- const isArbitraryImage = (value) => getIsArbitraryValue(value, isLabelImage, isImage);
27810
- const isArbitraryShadow = (value) => getIsArbitraryValue(value, isLabelShadow, isShadow);
27811
- const isArbitraryVariable = (value) => arbitraryVariableRegex.test(value);
27812
- const isArbitraryVariableLength = (value) => getIsArbitraryVariable(value, isLabelLength);
27813
- const isArbitraryVariableFamilyName = (value) => getIsArbitraryVariable(value, isLabelFamilyName);
27814
- const isArbitraryVariablePosition = (value) => getIsArbitraryVariable(value, isLabelPosition);
27815
- const isArbitraryVariableSize = (value) => getIsArbitraryVariable(value, isLabelSize);
27816
- const isArbitraryVariableImage = (value) => getIsArbitraryVariable(value, isLabelImage);
27817
- const isArbitraryVariableShadow = (value) => getIsArbitraryVariable(value, isLabelShadow, true);
27818
- const getIsArbitraryValue = (value, testLabel, testValue) => {
27819
- const result = arbitraryValueRegex.exec(value);
27820
- if (result) {
27821
- if (result[1]) {
27822
- return testLabel(result[1]);
27823
- }
27824
- return testValue(result[2]);
27825
- }
27826
- return false;
27827
- };
27828
- const getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {
27829
- const result = arbitraryVariableRegex.exec(value);
27830
- if (result) {
27831
- if (result[1]) {
27832
- return testLabel(result[1]);
27833
- }
27834
- return shouldMatchNoLabel;
27835
- }
27836
- return false;
27837
- };
27838
- const isLabelPosition = (label) => label === "position" || label === "percentage";
27839
- const isLabelImage = (label) => label === "image" || label === "url";
27840
- const isLabelSize = (label) => label === "length" || label === "size" || label === "bg-size";
27841
- const isLabelLength = (label) => label === "length";
27842
- const isLabelNumber = (label) => label === "number";
27843
- const isLabelFamilyName = (label) => label === "family-name";
27844
- const isLabelShadow = (label) => label === "shadow";
27845
- const getDefaultConfig = () => {
27846
- const themeColor = fromTheme("color");
27847
- const themeFont = fromTheme("font");
27848
- const themeText = fromTheme("text");
27849
- const themeFontWeight = fromTheme("font-weight");
27850
- const themeTracking = fromTheme("tracking");
27851
- const themeLeading = fromTheme("leading");
27852
- const themeBreakpoint = fromTheme("breakpoint");
27853
- const themeContainer = fromTheme("container");
27854
- const themeSpacing = fromTheme("spacing");
27855
- const themeRadius = fromTheme("radius");
27856
- const themeShadow = fromTheme("shadow");
27857
- const themeInsetShadow = fromTheme("inset-shadow");
27858
- const themeTextShadow = fromTheme("text-shadow");
27859
- const themeDropShadow = fromTheme("drop-shadow");
27860
- const themeBlur = fromTheme("blur");
27861
- const themePerspective = fromTheme("perspective");
27862
- const themeAspect = fromTheme("aspect");
27863
- const themeEase = fromTheme("ease");
27864
- const themeAnimate = fromTheme("animate");
27865
- const scaleBreak = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"];
27866
- const scalePosition = () => [
27867
- "center",
27868
- "top",
27869
- "bottom",
27870
- "left",
27871
- "right",
27872
- "top-left",
27873
- // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
27874
- "left-top",
27875
- "top-right",
27876
- // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
27877
- "right-top",
27878
- "bottom-right",
27879
- // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
27880
- "right-bottom",
27881
- "bottom-left",
27882
- // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
27883
- "left-bottom"
27884
- ];
27885
- const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];
27886
- const scaleOverflow = () => ["auto", "hidden", "clip", "visible", "scroll"];
27887
- const scaleOverscroll = () => ["auto", "contain", "none"];
27888
- const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];
27889
- const scaleInset = () => [isFraction, "full", "auto", ...scaleUnambiguousSpacing()];
27890
- const scaleGridTemplateColsRows = () => [isInteger, "none", "subgrid", isArbitraryVariable, isArbitraryValue];
27891
- const scaleGridColRowStartAndEnd = () => ["auto", {
27892
- span: ["full", isInteger, isArbitraryVariable, isArbitraryValue]
27893
- }, isInteger, isArbitraryVariable, isArbitraryValue];
27894
- const scaleGridColRowStartOrEnd = () => [isInteger, "auto", isArbitraryVariable, isArbitraryValue];
27895
- const scaleGridAutoColsRows = () => ["auto", "min", "max", "fr", isArbitraryVariable, isArbitraryValue];
27896
- const scaleAlignPrimaryAxis = () => ["start", "end", "center", "between", "around", "evenly", "stretch", "baseline", "center-safe", "end-safe"];
27897
- const scaleAlignSecondaryAxis = () => ["start", "end", "center", "stretch", "center-safe", "end-safe"];
27898
- const scaleMargin = () => ["auto", ...scaleUnambiguousSpacing()];
27899
- const scaleSizing = () => [isFraction, "auto", "full", "dvw", "dvh", "lvw", "lvh", "svw", "svh", "min", "max", "fit", ...scaleUnambiguousSpacing()];
27900
- const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];
27901
- const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {
27902
- position: [isArbitraryVariable, isArbitraryValue]
27903
- }];
27904
- const scaleBgRepeat = () => ["no-repeat", {
27905
- repeat: ["", "x", "y", "space", "round"]
27906
- }];
27907
- const scaleBgSize = () => ["auto", "cover", "contain", isArbitraryVariableSize, isArbitrarySize, {
27908
- size: [isArbitraryVariable, isArbitraryValue]
27909
- }];
27910
- const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];
27911
- const scaleRadius = () => [
27912
- // Deprecated since Tailwind CSS v4.0.0
27913
- "",
27914
- "none",
27915
- "full",
27916
- themeRadius,
27917
- isArbitraryVariable,
27918
- isArbitraryValue
27919
- ];
27920
- const scaleBorderWidth = () => ["", isNumber, isArbitraryVariableLength, isArbitraryLength];
27921
- const scaleLineStyle = () => ["solid", "dashed", "dotted", "double"];
27922
- const scaleBlendMode = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"];
27923
- const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];
27924
- const scaleBlur = () => [
27925
- // Deprecated since Tailwind CSS v4.0.0
27926
- "",
27927
- "none",
27928
- themeBlur,
27929
- isArbitraryVariable,
27930
- isArbitraryValue
27931
- ];
27932
- const scaleRotate = () => ["none", isNumber, isArbitraryVariable, isArbitraryValue];
27933
- const scaleScale = () => ["none", isNumber, isArbitraryVariable, isArbitraryValue];
27934
- const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];
27935
- const scaleTranslate = () => [isFraction, "full", ...scaleUnambiguousSpacing()];
27936
- return {
27937
- cacheSize: 500,
27938
- theme: {
27939
- animate: ["spin", "ping", "pulse", "bounce"],
27940
- aspect: ["video"],
27941
- blur: [isTshirtSize],
27942
- breakpoint: [isTshirtSize],
27943
- color: [isAny],
27944
- container: [isTshirtSize],
27945
- "drop-shadow": [isTshirtSize],
27946
- ease: ["in", "out", "in-out"],
27947
- font: [isAnyNonArbitrary],
27948
- "font-weight": ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black"],
27949
- "inset-shadow": [isTshirtSize],
27950
- leading: ["none", "tight", "snug", "normal", "relaxed", "loose"],
27951
- perspective: ["dramatic", "near", "normal", "midrange", "distant", "none"],
27952
- radius: [isTshirtSize],
27953
- shadow: [isTshirtSize],
27954
- spacing: ["px", isNumber],
27955
- text: [isTshirtSize],
27956
- "text-shadow": [isTshirtSize],
27957
- tracking: ["tighter", "tight", "normal", "wide", "wider", "widest"]
27958
- },
27959
- classGroups: {
27960
- // --------------
27961
- // --- Layout ---
27962
- // --------------
27963
- /**
27964
- * Aspect Ratio
27965
- * @see https://tailwindcss.com/docs/aspect-ratio
27966
- */
27967
- aspect: [{
27968
- aspect: ["auto", "square", isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]
27969
- }],
27970
- /**
27971
- * Container
27972
- * @see https://tailwindcss.com/docs/container
27973
- * @deprecated since Tailwind CSS v4.0.0
27974
- */
27975
- container: ["container"],
27976
- /**
27977
- * Columns
27978
- * @see https://tailwindcss.com/docs/columns
27979
- */
27980
- columns: [{
27981
- columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]
27982
- }],
27983
- /**
27984
- * Break After
27985
- * @see https://tailwindcss.com/docs/break-after
27986
- */
27987
- "break-after": [{
27988
- "break-after": scaleBreak()
27989
- }],
27990
- /**
27991
- * Break Before
27992
- * @see https://tailwindcss.com/docs/break-before
27993
- */
27994
- "break-before": [{
27995
- "break-before": scaleBreak()
27996
- }],
27997
- /**
27998
- * Break Inside
27999
- * @see https://tailwindcss.com/docs/break-inside
28000
- */
28001
- "break-inside": [{
28002
- "break-inside": ["auto", "avoid", "avoid-page", "avoid-column"]
28003
- }],
28004
- /**
28005
- * Box Decoration Break
28006
- * @see https://tailwindcss.com/docs/box-decoration-break
28007
- */
28008
- "box-decoration": [{
28009
- "box-decoration": ["slice", "clone"]
28010
- }],
28011
- /**
28012
- * Box Sizing
28013
- * @see https://tailwindcss.com/docs/box-sizing
28014
- */
28015
- box: [{
28016
- box: ["border", "content"]
28017
- }],
28018
- /**
28019
- * Display
28020
- * @see https://tailwindcss.com/docs/display
28021
- */
28022
- display: ["block", "inline-block", "inline", "flex", "inline-flex", "table", "inline-table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row-group", "table-row", "flow-root", "grid", "inline-grid", "contents", "list-item", "hidden"],
28023
- /**
28024
- * Screen Reader Only
28025
- * @see https://tailwindcss.com/docs/display#screen-reader-only
28026
- */
28027
- sr: ["sr-only", "not-sr-only"],
28028
- /**
28029
- * Floats
28030
- * @see https://tailwindcss.com/docs/float
28031
- */
28032
- float: [{
28033
- float: ["right", "left", "none", "start", "end"]
28034
- }],
28035
- /**
28036
- * Clear
28037
- * @see https://tailwindcss.com/docs/clear
28038
- */
28039
- clear: [{
28040
- clear: ["left", "right", "both", "none", "start", "end"]
28041
- }],
28042
- /**
28043
- * Isolation
28044
- * @see https://tailwindcss.com/docs/isolation
28045
- */
28046
- isolation: ["isolate", "isolation-auto"],
28047
- /**
28048
- * Object Fit
28049
- * @see https://tailwindcss.com/docs/object-fit
28050
- */
28051
- "object-fit": [{
28052
- object: ["contain", "cover", "fill", "none", "scale-down"]
28053
- }],
28054
- /**
28055
- * Object Position
28056
- * @see https://tailwindcss.com/docs/object-position
28057
- */
28058
- "object-position": [{
28059
- object: scalePositionWithArbitrary()
28060
- }],
28061
- /**
28062
- * Overflow
28063
- * @see https://tailwindcss.com/docs/overflow
28064
- */
28065
- overflow: [{
28066
- overflow: scaleOverflow()
28067
- }],
28068
- /**
28069
- * Overflow X
28070
- * @see https://tailwindcss.com/docs/overflow
28071
- */
28072
- "overflow-x": [{
28073
- "overflow-x": scaleOverflow()
28074
- }],
28075
- /**
28076
- * Overflow Y
28077
- * @see https://tailwindcss.com/docs/overflow
28078
- */
28079
- "overflow-y": [{
28080
- "overflow-y": scaleOverflow()
28081
- }],
28082
- /**
28083
- * Overscroll Behavior
28084
- * @see https://tailwindcss.com/docs/overscroll-behavior
28085
- */
28086
- overscroll: [{
28087
- overscroll: scaleOverscroll()
28088
- }],
28089
- /**
28090
- * Overscroll Behavior X
28091
- * @see https://tailwindcss.com/docs/overscroll-behavior
28092
- */
28093
- "overscroll-x": [{
28094
- "overscroll-x": scaleOverscroll()
28095
- }],
28096
- /**
28097
- * Overscroll Behavior Y
28098
- * @see https://tailwindcss.com/docs/overscroll-behavior
28099
- */
28100
- "overscroll-y": [{
28101
- "overscroll-y": scaleOverscroll()
28102
- }],
28103
- /**
28104
- * Position
28105
- * @see https://tailwindcss.com/docs/position
28106
- */
28107
- position: ["static", "fixed", "absolute", "relative", "sticky"],
28108
- /**
28109
- * Top / Right / Bottom / Left
28110
- * @see https://tailwindcss.com/docs/top-right-bottom-left
28111
- */
28112
- inset: [{
28113
- inset: scaleInset()
28114
- }],
28115
- /**
28116
- * Right / Left
28117
- * @see https://tailwindcss.com/docs/top-right-bottom-left
28118
- */
28119
- "inset-x": [{
28120
- "inset-x": scaleInset()
28121
- }],
28122
- /**
28123
- * Top / Bottom
28124
- * @see https://tailwindcss.com/docs/top-right-bottom-left
28125
- */
28126
- "inset-y": [{
28127
- "inset-y": scaleInset()
28128
- }],
28129
- /**
28130
- * Start
28131
- * @see https://tailwindcss.com/docs/top-right-bottom-left
28132
- */
28133
- start: [{
28134
- start: scaleInset()
28135
- }],
28136
- /**
28137
- * End
28138
- * @see https://tailwindcss.com/docs/top-right-bottom-left
28139
- */
28140
- end: [{
28141
- end: scaleInset()
28142
- }],
28143
- /**
28144
- * Top
28145
- * @see https://tailwindcss.com/docs/top-right-bottom-left
28146
- */
28147
- top: [{
28148
- top: scaleInset()
28149
- }],
28150
- /**
28151
- * Right
28152
- * @see https://tailwindcss.com/docs/top-right-bottom-left
28153
- */
28154
- right: [{
28155
- right: scaleInset()
28156
- }],
28157
- /**
28158
- * Bottom
28159
- * @see https://tailwindcss.com/docs/top-right-bottom-left
28160
- */
28161
- bottom: [{
28162
- bottom: scaleInset()
28163
- }],
28164
- /**
28165
- * Left
28166
- * @see https://tailwindcss.com/docs/top-right-bottom-left
28167
- */
28168
- left: [{
28169
- left: scaleInset()
28170
- }],
28171
- /**
28172
- * Visibility
28173
- * @see https://tailwindcss.com/docs/visibility
28174
- */
28175
- visibility: ["visible", "invisible", "collapse"],
28176
- /**
28177
- * Z-Index
28178
- * @see https://tailwindcss.com/docs/z-index
28179
- */
28180
- z: [{
28181
- z: [isInteger, "auto", isArbitraryVariable, isArbitraryValue]
28182
- }],
28183
- // ------------------------
28184
- // --- Flexbox and Grid ---
28185
- // ------------------------
28186
- /**
28187
- * Flex Basis
28188
- * @see https://tailwindcss.com/docs/flex-basis
28189
- */
28190
- basis: [{
28191
- basis: [isFraction, "full", "auto", themeContainer, ...scaleUnambiguousSpacing()]
28192
- }],
28193
- /**
28194
- * Flex Direction
28195
- * @see https://tailwindcss.com/docs/flex-direction
28196
- */
28197
- "flex-direction": [{
28198
- flex: ["row", "row-reverse", "col", "col-reverse"]
28199
- }],
28200
- /**
28201
- * Flex Wrap
28202
- * @see https://tailwindcss.com/docs/flex-wrap
28203
- */
28204
- "flex-wrap": [{
28205
- flex: ["nowrap", "wrap", "wrap-reverse"]
28206
- }],
28207
- /**
28208
- * Flex
28209
- * @see https://tailwindcss.com/docs/flex
28210
- */
28211
- flex: [{
28212
- flex: [isNumber, isFraction, "auto", "initial", "none", isArbitraryValue]
28213
- }],
28214
- /**
28215
- * Flex Grow
28216
- * @see https://tailwindcss.com/docs/flex-grow
28217
- */
28218
- grow: [{
28219
- grow: ["", isNumber, isArbitraryVariable, isArbitraryValue]
28220
- }],
28221
- /**
28222
- * Flex Shrink
28223
- * @see https://tailwindcss.com/docs/flex-shrink
28224
- */
28225
- shrink: [{
28226
- shrink: ["", isNumber, isArbitraryVariable, isArbitraryValue]
28227
- }],
28228
- /**
28229
- * Order
28230
- * @see https://tailwindcss.com/docs/order
28231
- */
28232
- order: [{
28233
- order: [isInteger, "first", "last", "none", isArbitraryVariable, isArbitraryValue]
28234
- }],
28235
- /**
28236
- * Grid Template Columns
28237
- * @see https://tailwindcss.com/docs/grid-template-columns
28238
- */
28239
- "grid-cols": [{
28240
- "grid-cols": scaleGridTemplateColsRows()
28241
- }],
28242
- /**
28243
- * Grid Column Start / End
28244
- * @see https://tailwindcss.com/docs/grid-column
28245
- */
28246
- "col-start-end": [{
28247
- col: scaleGridColRowStartAndEnd()
28248
- }],
28249
- /**
28250
- * Grid Column Start
28251
- * @see https://tailwindcss.com/docs/grid-column
28252
- */
28253
- "col-start": [{
28254
- "col-start": scaleGridColRowStartOrEnd()
28255
- }],
28256
- /**
28257
- * Grid Column End
28258
- * @see https://tailwindcss.com/docs/grid-column
28259
- */
28260
- "col-end": [{
28261
- "col-end": scaleGridColRowStartOrEnd()
28262
- }],
28263
- /**
28264
- * Grid Template Rows
28265
- * @see https://tailwindcss.com/docs/grid-template-rows
28266
- */
28267
- "grid-rows": [{
28268
- "grid-rows": scaleGridTemplateColsRows()
28269
- }],
28270
- /**
28271
- * Grid Row Start / End
28272
- * @see https://tailwindcss.com/docs/grid-row
28273
- */
28274
- "row-start-end": [{
28275
- row: scaleGridColRowStartAndEnd()
28276
- }],
28277
- /**
28278
- * Grid Row Start
28279
- * @see https://tailwindcss.com/docs/grid-row
28280
- */
28281
- "row-start": [{
28282
- "row-start": scaleGridColRowStartOrEnd()
28283
- }],
28284
- /**
28285
- * Grid Row End
28286
- * @see https://tailwindcss.com/docs/grid-row
28287
- */
28288
- "row-end": [{
28289
- "row-end": scaleGridColRowStartOrEnd()
28290
- }],
28291
- /**
28292
- * Grid Auto Flow
28293
- * @see https://tailwindcss.com/docs/grid-auto-flow
28294
- */
28295
- "grid-flow": [{
28296
- "grid-flow": ["row", "col", "dense", "row-dense", "col-dense"]
28297
- }],
28298
- /**
28299
- * Grid Auto Columns
28300
- * @see https://tailwindcss.com/docs/grid-auto-columns
28301
- */
28302
- "auto-cols": [{
28303
- "auto-cols": scaleGridAutoColsRows()
28304
- }],
28305
- /**
28306
- * Grid Auto Rows
28307
- * @see https://tailwindcss.com/docs/grid-auto-rows
28308
- */
28309
- "auto-rows": [{
28310
- "auto-rows": scaleGridAutoColsRows()
28311
- }],
28312
- /**
28313
- * Gap
28314
- * @see https://tailwindcss.com/docs/gap
28315
- */
28316
- gap: [{
28317
- gap: scaleUnambiguousSpacing()
28318
- }],
28319
- /**
28320
- * Gap X
28321
- * @see https://tailwindcss.com/docs/gap
28322
- */
28323
- "gap-x": [{
28324
- "gap-x": scaleUnambiguousSpacing()
28325
- }],
28326
- /**
28327
- * Gap Y
28328
- * @see https://tailwindcss.com/docs/gap
28329
- */
28330
- "gap-y": [{
28331
- "gap-y": scaleUnambiguousSpacing()
28332
- }],
28333
- /**
28334
- * Justify Content
28335
- * @see https://tailwindcss.com/docs/justify-content
28336
- */
28337
- "justify-content": [{
28338
- justify: [...scaleAlignPrimaryAxis(), "normal"]
28339
- }],
28340
- /**
28341
- * Justify Items
28342
- * @see https://tailwindcss.com/docs/justify-items
28343
- */
28344
- "justify-items": [{
28345
- "justify-items": [...scaleAlignSecondaryAxis(), "normal"]
28346
- }],
28347
- /**
28348
- * Justify Self
28349
- * @see https://tailwindcss.com/docs/justify-self
28350
- */
28351
- "justify-self": [{
28352
- "justify-self": ["auto", ...scaleAlignSecondaryAxis()]
28353
- }],
28354
- /**
28355
- * Align Content
28356
- * @see https://tailwindcss.com/docs/align-content
28357
- */
28358
- "align-content": [{
28359
- content: ["normal", ...scaleAlignPrimaryAxis()]
28360
- }],
28361
- /**
28362
- * Align Items
28363
- * @see https://tailwindcss.com/docs/align-items
28364
- */
28365
- "align-items": [{
28366
- items: [...scaleAlignSecondaryAxis(), {
28367
- baseline: ["", "last"]
28368
- }]
28369
- }],
28370
- /**
28371
- * Align Self
28372
- * @see https://tailwindcss.com/docs/align-self
28373
- */
28374
- "align-self": [{
28375
- self: ["auto", ...scaleAlignSecondaryAxis(), {
28376
- baseline: ["", "last"]
28377
- }]
28378
- }],
28379
- /**
28380
- * Place Content
28381
- * @see https://tailwindcss.com/docs/place-content
28382
- */
28383
- "place-content": [{
28384
- "place-content": scaleAlignPrimaryAxis()
28385
- }],
28386
- /**
28387
- * Place Items
28388
- * @see https://tailwindcss.com/docs/place-items
28389
- */
28390
- "place-items": [{
28391
- "place-items": [...scaleAlignSecondaryAxis(), "baseline"]
28392
- }],
28393
- /**
28394
- * Place Self
28395
- * @see https://tailwindcss.com/docs/place-self
28396
- */
28397
- "place-self": [{
28398
- "place-self": ["auto", ...scaleAlignSecondaryAxis()]
28399
- }],
28400
- // Spacing
28401
- /**
28402
- * Padding
28403
- * @see https://tailwindcss.com/docs/padding
28404
- */
28405
- p: [{
28406
- p: scaleUnambiguousSpacing()
28407
- }],
28408
- /**
28409
- * Padding X
28410
- * @see https://tailwindcss.com/docs/padding
28411
- */
28412
- px: [{
28413
- px: scaleUnambiguousSpacing()
28414
- }],
28415
- /**
28416
- * Padding Y
28417
- * @see https://tailwindcss.com/docs/padding
28418
- */
28419
- py: [{
28420
- py: scaleUnambiguousSpacing()
28421
- }],
28422
- /**
28423
- * Padding Start
28424
- * @see https://tailwindcss.com/docs/padding
28425
- */
28426
- ps: [{
28427
- ps: scaleUnambiguousSpacing()
28428
- }],
28429
- /**
28430
- * Padding End
28431
- * @see https://tailwindcss.com/docs/padding
28432
- */
28433
- pe: [{
28434
- pe: scaleUnambiguousSpacing()
28435
- }],
28436
- /**
28437
- * Padding Top
28438
- * @see https://tailwindcss.com/docs/padding
28439
- */
28440
- pt: [{
28441
- pt: scaleUnambiguousSpacing()
28442
- }],
28443
- /**
28444
- * Padding Right
28445
- * @see https://tailwindcss.com/docs/padding
28446
- */
28447
- pr: [{
28448
- pr: scaleUnambiguousSpacing()
28449
- }],
28450
- /**
28451
- * Padding Bottom
28452
- * @see https://tailwindcss.com/docs/padding
28453
- */
28454
- pb: [{
28455
- pb: scaleUnambiguousSpacing()
28456
- }],
28457
- /**
28458
- * Padding Left
28459
- * @see https://tailwindcss.com/docs/padding
28460
- */
28461
- pl: [{
28462
- pl: scaleUnambiguousSpacing()
28463
- }],
28464
- /**
28465
- * Margin
28466
- * @see https://tailwindcss.com/docs/margin
28467
- */
28468
- m: [{
28469
- m: scaleMargin()
28470
- }],
28471
- /**
28472
- * Margin X
28473
- * @see https://tailwindcss.com/docs/margin
28474
- */
28475
- mx: [{
28476
- mx: scaleMargin()
28477
- }],
28478
- /**
28479
- * Margin Y
28480
- * @see https://tailwindcss.com/docs/margin
28481
- */
28482
- my: [{
28483
- my: scaleMargin()
28484
- }],
28485
- /**
28486
- * Margin Start
28487
- * @see https://tailwindcss.com/docs/margin
28488
- */
28489
- ms: [{
28490
- ms: scaleMargin()
28491
- }],
28492
- /**
28493
- * Margin End
28494
- * @see https://tailwindcss.com/docs/margin
28495
- */
28496
- me: [{
28497
- me: scaleMargin()
28498
- }],
28499
- /**
28500
- * Margin Top
28501
- * @see https://tailwindcss.com/docs/margin
28502
- */
28503
- mt: [{
28504
- mt: scaleMargin()
28505
- }],
28506
- /**
28507
- * Margin Right
28508
- * @see https://tailwindcss.com/docs/margin
28509
- */
28510
- mr: [{
28511
- mr: scaleMargin()
28512
- }],
28513
- /**
28514
- * Margin Bottom
28515
- * @see https://tailwindcss.com/docs/margin
28516
- */
28517
- mb: [{
28518
- mb: scaleMargin()
28519
- }],
28520
- /**
28521
- * Margin Left
28522
- * @see https://tailwindcss.com/docs/margin
28523
- */
28524
- ml: [{
28525
- ml: scaleMargin()
28526
- }],
28527
- /**
28528
- * Space Between X
28529
- * @see https://tailwindcss.com/docs/margin#adding-space-between-children
28530
- */
28531
- "space-x": [{
28532
- "space-x": scaleUnambiguousSpacing()
28533
- }],
28534
- /**
28535
- * Space Between X Reverse
28536
- * @see https://tailwindcss.com/docs/margin#adding-space-between-children
28537
- */
28538
- "space-x-reverse": ["space-x-reverse"],
28539
- /**
28540
- * Space Between Y
28541
- * @see https://tailwindcss.com/docs/margin#adding-space-between-children
28542
- */
28543
- "space-y": [{
28544
- "space-y": scaleUnambiguousSpacing()
28545
- }],
28546
- /**
28547
- * Space Between Y Reverse
28548
- * @see https://tailwindcss.com/docs/margin#adding-space-between-children
28549
- */
28550
- "space-y-reverse": ["space-y-reverse"],
28551
- // --------------
28552
- // --- Sizing ---
28553
- // --------------
28554
- /**
28555
- * Size
28556
- * @see https://tailwindcss.com/docs/width#setting-both-width-and-height
28557
- */
28558
- size: [{
28559
- size: scaleSizing()
28560
- }],
28561
- /**
28562
- * Width
28563
- * @see https://tailwindcss.com/docs/width
28564
- */
28565
- w: [{
28566
- w: [themeContainer, "screen", ...scaleSizing()]
28567
- }],
28568
- /**
28569
- * Min-Width
28570
- * @see https://tailwindcss.com/docs/min-width
28571
- */
28572
- "min-w": [{
28573
- "min-w": [
28574
- themeContainer,
28575
- "screen",
28576
- /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
28577
- "none",
28578
- ...scaleSizing()
28579
- ]
28580
- }],
28581
- /**
28582
- * Max-Width
28583
- * @see https://tailwindcss.com/docs/max-width
28584
- */
28585
- "max-w": [{
28586
- "max-w": [
28587
- themeContainer,
28588
- "screen",
28589
- "none",
28590
- /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
28591
- "prose",
28592
- /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
28593
- {
28594
- screen: [themeBreakpoint]
28595
- },
28596
- ...scaleSizing()
28597
- ]
28598
- }],
28599
- /**
28600
- * Height
28601
- * @see https://tailwindcss.com/docs/height
28602
- */
28603
- h: [{
28604
- h: ["screen", "lh", ...scaleSizing()]
28605
- }],
28606
- /**
28607
- * Min-Height
28608
- * @see https://tailwindcss.com/docs/min-height
28609
- */
28610
- "min-h": [{
28611
- "min-h": ["screen", "lh", "none", ...scaleSizing()]
28612
- }],
28613
- /**
28614
- * Max-Height
28615
- * @see https://tailwindcss.com/docs/max-height
28616
- */
28617
- "max-h": [{
28618
- "max-h": ["screen", "lh", ...scaleSizing()]
28619
- }],
28620
- // ------------------
28621
- // --- Typography ---
28622
- // ------------------
28623
- /**
28624
- * Font Size
28625
- * @see https://tailwindcss.com/docs/font-size
28626
- */
28627
- "font-size": [{
28628
- text: ["base", themeText, isArbitraryVariableLength, isArbitraryLength]
28629
- }],
28630
- /**
28631
- * Font Smoothing
28632
- * @see https://tailwindcss.com/docs/font-smoothing
28633
- */
28634
- "font-smoothing": ["antialiased", "subpixel-antialiased"],
28635
- /**
28636
- * Font Style
28637
- * @see https://tailwindcss.com/docs/font-style
28638
- */
28639
- "font-style": ["italic", "not-italic"],
28640
- /**
28641
- * Font Weight
28642
- * @see https://tailwindcss.com/docs/font-weight
28643
- */
28644
- "font-weight": [{
28645
- font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]
28646
- }],
28647
- /**
28648
- * Font Stretch
28649
- * @see https://tailwindcss.com/docs/font-stretch
28650
- */
28651
- "font-stretch": [{
28652
- "font-stretch": ["ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "normal", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded", isPercent, isArbitraryValue]
28653
- }],
28654
- /**
28655
- * Font Family
28656
- * @see https://tailwindcss.com/docs/font-family
28657
- */
28658
- "font-family": [{
28659
- font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]
28660
- }],
28661
- /**
28662
- * Font Variant Numeric
28663
- * @see https://tailwindcss.com/docs/font-variant-numeric
28664
- */
28665
- "fvn-normal": ["normal-nums"],
28666
- /**
28667
- * Font Variant Numeric
28668
- * @see https://tailwindcss.com/docs/font-variant-numeric
28669
- */
28670
- "fvn-ordinal": ["ordinal"],
28671
- /**
28672
- * Font Variant Numeric
28673
- * @see https://tailwindcss.com/docs/font-variant-numeric
28674
- */
28675
- "fvn-slashed-zero": ["slashed-zero"],
28676
- /**
28677
- * Font Variant Numeric
28678
- * @see https://tailwindcss.com/docs/font-variant-numeric
28679
- */
28680
- "fvn-figure": ["lining-nums", "oldstyle-nums"],
28681
- /**
28682
- * Font Variant Numeric
28683
- * @see https://tailwindcss.com/docs/font-variant-numeric
28684
- */
28685
- "fvn-spacing": ["proportional-nums", "tabular-nums"],
28686
- /**
28687
- * Font Variant Numeric
28688
- * @see https://tailwindcss.com/docs/font-variant-numeric
28689
- */
28690
- "fvn-fraction": ["diagonal-fractions", "stacked-fractions"],
28691
- /**
28692
- * Letter Spacing
28693
- * @see https://tailwindcss.com/docs/letter-spacing
28694
- */
28695
- tracking: [{
28696
- tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]
28697
- }],
28698
- /**
28699
- * Line Clamp
28700
- * @see https://tailwindcss.com/docs/line-clamp
28701
- */
28702
- "line-clamp": [{
28703
- "line-clamp": [isNumber, "none", isArbitraryVariable, isArbitraryNumber]
28704
- }],
28705
- /**
28706
- * Line Height
28707
- * @see https://tailwindcss.com/docs/line-height
28708
- */
28709
- leading: [{
28710
- leading: [
28711
- /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
28712
- themeLeading,
28713
- ...scaleUnambiguousSpacing()
28714
- ]
28715
- }],
28716
- /**
28717
- * List Style Image
28718
- * @see https://tailwindcss.com/docs/list-style-image
28719
- */
28720
- "list-image": [{
28721
- "list-image": ["none", isArbitraryVariable, isArbitraryValue]
28722
- }],
28723
- /**
28724
- * List Style Position
28725
- * @see https://tailwindcss.com/docs/list-style-position
28726
- */
28727
- "list-style-position": [{
28728
- list: ["inside", "outside"]
28729
- }],
28730
- /**
28731
- * List Style Type
28732
- * @see https://tailwindcss.com/docs/list-style-type
28733
- */
28734
- "list-style-type": [{
28735
- list: ["disc", "decimal", "none", isArbitraryVariable, isArbitraryValue]
28736
- }],
28737
- /**
28738
- * Text Alignment
28739
- * @see https://tailwindcss.com/docs/text-align
28740
- */
28741
- "text-alignment": [{
28742
- text: ["left", "center", "right", "justify", "start", "end"]
28743
- }],
28744
- /**
28745
- * Placeholder Color
28746
- * @deprecated since Tailwind CSS v3.0.0
28747
- * @see https://v3.tailwindcss.com/docs/placeholder-color
28748
- */
28749
- "placeholder-color": [{
28750
- placeholder: scaleColor()
28751
- }],
28752
- /**
28753
- * Text Color
28754
- * @see https://tailwindcss.com/docs/text-color
28755
- */
28756
- "text-color": [{
28757
- text: scaleColor()
28758
- }],
28759
- /**
28760
- * Text Decoration
28761
- * @see https://tailwindcss.com/docs/text-decoration
28762
- */
28763
- "text-decoration": ["underline", "overline", "line-through", "no-underline"],
28764
- /**
28765
- * Text Decoration Style
28766
- * @see https://tailwindcss.com/docs/text-decoration-style
28767
- */
28768
- "text-decoration-style": [{
28769
- decoration: [...scaleLineStyle(), "wavy"]
28770
- }],
28771
- /**
28772
- * Text Decoration Thickness
28773
- * @see https://tailwindcss.com/docs/text-decoration-thickness
28774
- */
28775
- "text-decoration-thickness": [{
28776
- decoration: [isNumber, "from-font", "auto", isArbitraryVariable, isArbitraryLength]
28777
- }],
28778
- /**
28779
- * Text Decoration Color
28780
- * @see https://tailwindcss.com/docs/text-decoration-color
28781
- */
28782
- "text-decoration-color": [{
28783
- decoration: scaleColor()
28784
- }],
28785
- /**
28786
- * Text Underline Offset
28787
- * @see https://tailwindcss.com/docs/text-underline-offset
28788
- */
28789
- "underline-offset": [{
28790
- "underline-offset": [isNumber, "auto", isArbitraryVariable, isArbitraryValue]
28791
- }],
28792
- /**
28793
- * Text Transform
28794
- * @see https://tailwindcss.com/docs/text-transform
28795
- */
28796
- "text-transform": ["uppercase", "lowercase", "capitalize", "normal-case"],
28797
- /**
28798
- * Text Overflow
28799
- * @see https://tailwindcss.com/docs/text-overflow
28800
- */
28801
- "text-overflow": ["truncate", "text-ellipsis", "text-clip"],
28802
- /**
28803
- * Text Wrap
28804
- * @see https://tailwindcss.com/docs/text-wrap
28805
- */
28806
- "text-wrap": [{
28807
- text: ["wrap", "nowrap", "balance", "pretty"]
28808
- }],
28809
- /**
28810
- * Text Indent
28811
- * @see https://tailwindcss.com/docs/text-indent
28812
- */
28813
- indent: [{
28814
- indent: scaleUnambiguousSpacing()
28815
- }],
28816
- /**
28817
- * Vertical Alignment
28818
- * @see https://tailwindcss.com/docs/vertical-align
28819
- */
28820
- "vertical-align": [{
28821
- align: ["baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", isArbitraryVariable, isArbitraryValue]
28822
- }],
28823
- /**
28824
- * Whitespace
28825
- * @see https://tailwindcss.com/docs/whitespace
28826
- */
28827
- whitespace: [{
28828
- whitespace: ["normal", "nowrap", "pre", "pre-line", "pre-wrap", "break-spaces"]
28829
- }],
28830
- /**
28831
- * Word Break
28832
- * @see https://tailwindcss.com/docs/word-break
28833
- */
28834
- break: [{
28835
- break: ["normal", "words", "all", "keep"]
28836
- }],
28837
- /**
28838
- * Overflow Wrap
28839
- * @see https://tailwindcss.com/docs/overflow-wrap
28840
- */
28841
- wrap: [{
28842
- wrap: ["break-word", "anywhere", "normal"]
28843
- }],
28844
- /**
28845
- * Hyphens
28846
- * @see https://tailwindcss.com/docs/hyphens
28847
- */
28848
- hyphens: [{
28849
- hyphens: ["none", "manual", "auto"]
28850
- }],
28851
- /**
28852
- * Content
28853
- * @see https://tailwindcss.com/docs/content
28854
- */
28855
- content: [{
28856
- content: ["none", isArbitraryVariable, isArbitraryValue]
28857
- }],
28858
- // -------------------
28859
- // --- Backgrounds ---
28860
- // -------------------
28861
- /**
28862
- * Background Attachment
28863
- * @see https://tailwindcss.com/docs/background-attachment
28864
- */
28865
- "bg-attachment": [{
28866
- bg: ["fixed", "local", "scroll"]
28867
- }],
28868
- /**
28869
- * Background Clip
28870
- * @see https://tailwindcss.com/docs/background-clip
28871
- */
28872
- "bg-clip": [{
28873
- "bg-clip": ["border", "padding", "content", "text"]
28874
- }],
28875
- /**
28876
- * Background Origin
28877
- * @see https://tailwindcss.com/docs/background-origin
28878
- */
28879
- "bg-origin": [{
28880
- "bg-origin": ["border", "padding", "content"]
28881
- }],
28882
- /**
28883
- * Background Position
28884
- * @see https://tailwindcss.com/docs/background-position
28885
- */
28886
- "bg-position": [{
28887
- bg: scaleBgPosition()
28888
- }],
28889
- /**
28890
- * Background Repeat
28891
- * @see https://tailwindcss.com/docs/background-repeat
28892
- */
28893
- "bg-repeat": [{
28894
- bg: scaleBgRepeat()
28895
- }],
28896
- /**
28897
- * Background Size
28898
- * @see https://tailwindcss.com/docs/background-size
28899
- */
28900
- "bg-size": [{
28901
- bg: scaleBgSize()
28902
- }],
28903
- /**
28904
- * Background Image
28905
- * @see https://tailwindcss.com/docs/background-image
28906
- */
28907
- "bg-image": [{
28908
- bg: ["none", {
28909
- linear: [{
28910
- to: ["t", "tr", "r", "br", "b", "bl", "l", "tl"]
28911
- }, isInteger, isArbitraryVariable, isArbitraryValue],
28912
- radial: ["", isArbitraryVariable, isArbitraryValue],
28913
- conic: [isInteger, isArbitraryVariable, isArbitraryValue]
28914
- }, isArbitraryVariableImage, isArbitraryImage]
28915
- }],
28916
- /**
28917
- * Background Color
28918
- * @see https://tailwindcss.com/docs/background-color
28919
- */
28920
- "bg-color": [{
28921
- bg: scaleColor()
28922
- }],
28923
- /**
28924
- * Gradient Color Stops From Position
28925
- * @see https://tailwindcss.com/docs/gradient-color-stops
28926
- */
28927
- "gradient-from-pos": [{
28928
- from: scaleGradientStopPosition()
28929
- }],
28930
- /**
28931
- * Gradient Color Stops Via Position
28932
- * @see https://tailwindcss.com/docs/gradient-color-stops
28933
- */
28934
- "gradient-via-pos": [{
28935
- via: scaleGradientStopPosition()
28936
- }],
28937
- /**
28938
- * Gradient Color Stops To Position
28939
- * @see https://tailwindcss.com/docs/gradient-color-stops
28940
- */
28941
- "gradient-to-pos": [{
28942
- to: scaleGradientStopPosition()
28943
- }],
28944
- /**
28945
- * Gradient Color Stops From
28946
- * @see https://tailwindcss.com/docs/gradient-color-stops
28947
- */
28948
- "gradient-from": [{
28949
- from: scaleColor()
28950
- }],
28951
- /**
28952
- * Gradient Color Stops Via
28953
- * @see https://tailwindcss.com/docs/gradient-color-stops
28954
- */
28955
- "gradient-via": [{
28956
- via: scaleColor()
28957
- }],
28958
- /**
28959
- * Gradient Color Stops To
28960
- * @see https://tailwindcss.com/docs/gradient-color-stops
28961
- */
28962
- "gradient-to": [{
28963
- to: scaleColor()
28964
- }],
28965
- // ---------------
28966
- // --- Borders ---
28967
- // ---------------
28968
- /**
28969
- * Border Radius
28970
- * @see https://tailwindcss.com/docs/border-radius
28971
- */
28972
- rounded: [{
28973
- rounded: scaleRadius()
28974
- }],
28975
- /**
28976
- * Border Radius Start
28977
- * @see https://tailwindcss.com/docs/border-radius
28978
- */
28979
- "rounded-s": [{
28980
- "rounded-s": scaleRadius()
28981
- }],
28982
- /**
28983
- * Border Radius End
28984
- * @see https://tailwindcss.com/docs/border-radius
28985
- */
28986
- "rounded-e": [{
28987
- "rounded-e": scaleRadius()
28988
- }],
28989
- /**
28990
- * Border Radius Top
28991
- * @see https://tailwindcss.com/docs/border-radius
28992
- */
28993
- "rounded-t": [{
28994
- "rounded-t": scaleRadius()
28995
- }],
28996
- /**
28997
- * Border Radius Right
28998
- * @see https://tailwindcss.com/docs/border-radius
28999
- */
29000
- "rounded-r": [{
29001
- "rounded-r": scaleRadius()
29002
- }],
29003
- /**
29004
- * Border Radius Bottom
29005
- * @see https://tailwindcss.com/docs/border-radius
29006
- */
29007
- "rounded-b": [{
29008
- "rounded-b": scaleRadius()
29009
- }],
29010
- /**
29011
- * Border Radius Left
29012
- * @see https://tailwindcss.com/docs/border-radius
29013
- */
29014
- "rounded-l": [{
29015
- "rounded-l": scaleRadius()
29016
- }],
29017
- /**
29018
- * Border Radius Start Start
29019
- * @see https://tailwindcss.com/docs/border-radius
29020
- */
29021
- "rounded-ss": [{
29022
- "rounded-ss": scaleRadius()
29023
- }],
29024
- /**
29025
- * Border Radius Start End
29026
- * @see https://tailwindcss.com/docs/border-radius
29027
- */
29028
- "rounded-se": [{
29029
- "rounded-se": scaleRadius()
29030
- }],
29031
- /**
29032
- * Border Radius End End
29033
- * @see https://tailwindcss.com/docs/border-radius
29034
- */
29035
- "rounded-ee": [{
29036
- "rounded-ee": scaleRadius()
29037
- }],
29038
- /**
29039
- * Border Radius End Start
29040
- * @see https://tailwindcss.com/docs/border-radius
29041
- */
29042
- "rounded-es": [{
29043
- "rounded-es": scaleRadius()
29044
- }],
29045
- /**
29046
- * Border Radius Top Left
29047
- * @see https://tailwindcss.com/docs/border-radius
29048
- */
29049
- "rounded-tl": [{
29050
- "rounded-tl": scaleRadius()
29051
- }],
29052
- /**
29053
- * Border Radius Top Right
29054
- * @see https://tailwindcss.com/docs/border-radius
29055
- */
29056
- "rounded-tr": [{
29057
- "rounded-tr": scaleRadius()
29058
- }],
29059
- /**
29060
- * Border Radius Bottom Right
29061
- * @see https://tailwindcss.com/docs/border-radius
29062
- */
29063
- "rounded-br": [{
29064
- "rounded-br": scaleRadius()
29065
- }],
29066
- /**
29067
- * Border Radius Bottom Left
29068
- * @see https://tailwindcss.com/docs/border-radius
29069
- */
29070
- "rounded-bl": [{
29071
- "rounded-bl": scaleRadius()
29072
- }],
29073
- /**
29074
- * Border Width
29075
- * @see https://tailwindcss.com/docs/border-width
29076
- */
29077
- "border-w": [{
29078
- border: scaleBorderWidth()
29079
- }],
29080
- /**
29081
- * Border Width X
29082
- * @see https://tailwindcss.com/docs/border-width
29083
- */
29084
- "border-w-x": [{
29085
- "border-x": scaleBorderWidth()
29086
- }],
29087
- /**
29088
- * Border Width Y
29089
- * @see https://tailwindcss.com/docs/border-width
29090
- */
29091
- "border-w-y": [{
29092
- "border-y": scaleBorderWidth()
29093
- }],
29094
- /**
29095
- * Border Width Start
29096
- * @see https://tailwindcss.com/docs/border-width
29097
- */
29098
- "border-w-s": [{
29099
- "border-s": scaleBorderWidth()
29100
- }],
29101
- /**
29102
- * Border Width End
29103
- * @see https://tailwindcss.com/docs/border-width
29104
- */
29105
- "border-w-e": [{
29106
- "border-e": scaleBorderWidth()
29107
- }],
29108
- /**
29109
- * Border Width Top
29110
- * @see https://tailwindcss.com/docs/border-width
29111
- */
29112
- "border-w-t": [{
29113
- "border-t": scaleBorderWidth()
29114
- }],
29115
- /**
29116
- * Border Width Right
29117
- * @see https://tailwindcss.com/docs/border-width
29118
- */
29119
- "border-w-r": [{
29120
- "border-r": scaleBorderWidth()
29121
- }],
29122
- /**
29123
- * Border Width Bottom
29124
- * @see https://tailwindcss.com/docs/border-width
29125
- */
29126
- "border-w-b": [{
29127
- "border-b": scaleBorderWidth()
29128
- }],
29129
- /**
29130
- * Border Width Left
29131
- * @see https://tailwindcss.com/docs/border-width
29132
- */
29133
- "border-w-l": [{
29134
- "border-l": scaleBorderWidth()
29135
- }],
29136
- /**
29137
- * Divide Width X
29138
- * @see https://tailwindcss.com/docs/border-width#between-children
29139
- */
29140
- "divide-x": [{
29141
- "divide-x": scaleBorderWidth()
29142
- }],
29143
- /**
29144
- * Divide Width X Reverse
29145
- * @see https://tailwindcss.com/docs/border-width#between-children
29146
- */
29147
- "divide-x-reverse": ["divide-x-reverse"],
29148
- /**
29149
- * Divide Width Y
29150
- * @see https://tailwindcss.com/docs/border-width#between-children
29151
- */
29152
- "divide-y": [{
29153
- "divide-y": scaleBorderWidth()
29154
- }],
29155
- /**
29156
- * Divide Width Y Reverse
29157
- * @see https://tailwindcss.com/docs/border-width#between-children
29158
- */
29159
- "divide-y-reverse": ["divide-y-reverse"],
29160
- /**
29161
- * Border Style
29162
- * @see https://tailwindcss.com/docs/border-style
29163
- */
29164
- "border-style": [{
29165
- border: [...scaleLineStyle(), "hidden", "none"]
29166
- }],
29167
- /**
29168
- * Divide Style
29169
- * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style
29170
- */
29171
- "divide-style": [{
29172
- divide: [...scaleLineStyle(), "hidden", "none"]
29173
- }],
29174
- /**
29175
- * Border Color
29176
- * @see https://tailwindcss.com/docs/border-color
29177
- */
29178
- "border-color": [{
29179
- border: scaleColor()
29180
- }],
29181
- /**
29182
- * Border Color X
29183
- * @see https://tailwindcss.com/docs/border-color
29184
- */
29185
- "border-color-x": [{
29186
- "border-x": scaleColor()
29187
- }],
29188
- /**
29189
- * Border Color Y
29190
- * @see https://tailwindcss.com/docs/border-color
29191
- */
29192
- "border-color-y": [{
29193
- "border-y": scaleColor()
29194
- }],
29195
- /**
29196
- * Border Color S
29197
- * @see https://tailwindcss.com/docs/border-color
29198
- */
29199
- "border-color-s": [{
29200
- "border-s": scaleColor()
29201
- }],
29202
- /**
29203
- * Border Color E
29204
- * @see https://tailwindcss.com/docs/border-color
29205
- */
29206
- "border-color-e": [{
29207
- "border-e": scaleColor()
29208
- }],
29209
- /**
29210
- * Border Color Top
29211
- * @see https://tailwindcss.com/docs/border-color
29212
- */
29213
- "border-color-t": [{
29214
- "border-t": scaleColor()
29215
- }],
29216
- /**
29217
- * Border Color Right
29218
- * @see https://tailwindcss.com/docs/border-color
29219
- */
29220
- "border-color-r": [{
29221
- "border-r": scaleColor()
29222
- }],
29223
- /**
29224
- * Border Color Bottom
29225
- * @see https://tailwindcss.com/docs/border-color
29226
- */
29227
- "border-color-b": [{
29228
- "border-b": scaleColor()
29229
- }],
29230
- /**
29231
- * Border Color Left
29232
- * @see https://tailwindcss.com/docs/border-color
29233
- */
29234
- "border-color-l": [{
29235
- "border-l": scaleColor()
29236
- }],
29237
- /**
29238
- * Divide Color
29239
- * @see https://tailwindcss.com/docs/divide-color
29240
- */
29241
- "divide-color": [{
29242
- divide: scaleColor()
29243
- }],
29244
- /**
29245
- * Outline Style
29246
- * @see https://tailwindcss.com/docs/outline-style
29247
- */
29248
- "outline-style": [{
29249
- outline: [...scaleLineStyle(), "none", "hidden"]
29250
- }],
29251
- /**
29252
- * Outline Offset
29253
- * @see https://tailwindcss.com/docs/outline-offset
29254
- */
29255
- "outline-offset": [{
29256
- "outline-offset": [isNumber, isArbitraryVariable, isArbitraryValue]
29257
- }],
29258
- /**
29259
- * Outline Width
29260
- * @see https://tailwindcss.com/docs/outline-width
29261
- */
29262
- "outline-w": [{
29263
- outline: ["", isNumber, isArbitraryVariableLength, isArbitraryLength]
29264
- }],
29265
- /**
29266
- * Outline Color
29267
- * @see https://tailwindcss.com/docs/outline-color
29268
- */
29269
- "outline-color": [{
29270
- outline: scaleColor()
29271
- }],
29272
- // ---------------
29273
- // --- Effects ---
29274
- // ---------------
29275
- /**
29276
- * Box Shadow
29277
- * @see https://tailwindcss.com/docs/box-shadow
29278
- */
29279
- shadow: [{
29280
- shadow: [
29281
- // Deprecated since Tailwind CSS v4.0.0
29282
- "",
29283
- "none",
29284
- themeShadow,
29285
- isArbitraryVariableShadow,
29286
- isArbitraryShadow
29287
- ]
29288
- }],
29289
- /**
29290
- * Box Shadow Color
29291
- * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color
29292
- */
29293
- "shadow-color": [{
29294
- shadow: scaleColor()
29295
- }],
29296
- /**
29297
- * Inset Box Shadow
29298
- * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow
29299
- */
29300
- "inset-shadow": [{
29301
- "inset-shadow": ["none", themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]
29302
- }],
29303
- /**
29304
- * Inset Box Shadow Color
29305
- * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color
29306
- */
29307
- "inset-shadow-color": [{
29308
- "inset-shadow": scaleColor()
29309
- }],
29310
- /**
29311
- * Ring Width
29312
- * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring
29313
- */
29314
- "ring-w": [{
29315
- ring: scaleBorderWidth()
29316
- }],
29317
- /**
29318
- * Ring Width Inset
29319
- * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings
29320
- * @deprecated since Tailwind CSS v4.0.0
29321
- * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
29322
- */
29323
- "ring-w-inset": ["ring-inset"],
29324
- /**
29325
- * Ring Color
29326
- * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color
29327
- */
29328
- "ring-color": [{
29329
- ring: scaleColor()
29330
- }],
29331
- /**
29332
- * Ring Offset Width
29333
- * @see https://v3.tailwindcss.com/docs/ring-offset-width
29334
- * @deprecated since Tailwind CSS v4.0.0
29335
- * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
29336
- */
29337
- "ring-offset-w": [{
29338
- "ring-offset": [isNumber, isArbitraryLength]
29339
- }],
29340
- /**
29341
- * Ring Offset Color
29342
- * @see https://v3.tailwindcss.com/docs/ring-offset-color
29343
- * @deprecated since Tailwind CSS v4.0.0
29344
- * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
29345
- */
29346
- "ring-offset-color": [{
29347
- "ring-offset": scaleColor()
29348
- }],
29349
- /**
29350
- * Inset Ring Width
29351
- * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring
29352
- */
29353
- "inset-ring-w": [{
29354
- "inset-ring": scaleBorderWidth()
29355
- }],
29356
- /**
29357
- * Inset Ring Color
29358
- * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color
29359
- */
29360
- "inset-ring-color": [{
29361
- "inset-ring": scaleColor()
29362
- }],
29363
- /**
29364
- * Text Shadow
29365
- * @see https://tailwindcss.com/docs/text-shadow
29366
- */
29367
- "text-shadow": [{
29368
- "text-shadow": ["none", themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]
29369
- }],
29370
- /**
29371
- * Text Shadow Color
29372
- * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color
29373
- */
29374
- "text-shadow-color": [{
29375
- "text-shadow": scaleColor()
29376
- }],
29377
- /**
29378
- * Opacity
29379
- * @see https://tailwindcss.com/docs/opacity
29380
- */
29381
- opacity: [{
29382
- opacity: [isNumber, isArbitraryVariable, isArbitraryValue]
29383
- }],
29384
- /**
29385
- * Mix Blend Mode
29386
- * @see https://tailwindcss.com/docs/mix-blend-mode
29387
- */
29388
- "mix-blend": [{
29389
- "mix-blend": [...scaleBlendMode(), "plus-darker", "plus-lighter"]
29390
- }],
29391
- /**
29392
- * Background Blend Mode
29393
- * @see https://tailwindcss.com/docs/background-blend-mode
29394
- */
29395
- "bg-blend": [{
29396
- "bg-blend": scaleBlendMode()
29397
- }],
29398
- /**
29399
- * Mask Clip
29400
- * @see https://tailwindcss.com/docs/mask-clip
29401
- */
29402
- "mask-clip": [{
29403
- "mask-clip": ["border", "padding", "content", "fill", "stroke", "view"]
29404
- }, "mask-no-clip"],
29405
- /**
29406
- * Mask Composite
29407
- * @see https://tailwindcss.com/docs/mask-composite
29408
- */
29409
- "mask-composite": [{
29410
- mask: ["add", "subtract", "intersect", "exclude"]
29411
- }],
29412
- /**
29413
- * Mask Image
29414
- * @see https://tailwindcss.com/docs/mask-image
29415
- */
29416
- "mask-image-linear-pos": [{
29417
- "mask-linear": [isNumber]
29418
- }],
29419
- "mask-image-linear-from-pos": [{
29420
- "mask-linear-from": scaleMaskImagePosition()
29421
- }],
29422
- "mask-image-linear-to-pos": [{
29423
- "mask-linear-to": scaleMaskImagePosition()
29424
- }],
29425
- "mask-image-linear-from-color": [{
29426
- "mask-linear-from": scaleColor()
29427
- }],
29428
- "mask-image-linear-to-color": [{
29429
- "mask-linear-to": scaleColor()
29430
- }],
29431
- "mask-image-t-from-pos": [{
29432
- "mask-t-from": scaleMaskImagePosition()
29433
- }],
29434
- "mask-image-t-to-pos": [{
29435
- "mask-t-to": scaleMaskImagePosition()
29436
- }],
29437
- "mask-image-t-from-color": [{
29438
- "mask-t-from": scaleColor()
29439
- }],
29440
- "mask-image-t-to-color": [{
29441
- "mask-t-to": scaleColor()
29442
- }],
29443
- "mask-image-r-from-pos": [{
29444
- "mask-r-from": scaleMaskImagePosition()
29445
- }],
29446
- "mask-image-r-to-pos": [{
29447
- "mask-r-to": scaleMaskImagePosition()
29448
- }],
29449
- "mask-image-r-from-color": [{
29450
- "mask-r-from": scaleColor()
29451
- }],
29452
- "mask-image-r-to-color": [{
29453
- "mask-r-to": scaleColor()
29454
- }],
29455
- "mask-image-b-from-pos": [{
29456
- "mask-b-from": scaleMaskImagePosition()
29457
- }],
29458
- "mask-image-b-to-pos": [{
29459
- "mask-b-to": scaleMaskImagePosition()
29460
- }],
29461
- "mask-image-b-from-color": [{
29462
- "mask-b-from": scaleColor()
29463
- }],
29464
- "mask-image-b-to-color": [{
29465
- "mask-b-to": scaleColor()
29466
- }],
29467
- "mask-image-l-from-pos": [{
29468
- "mask-l-from": scaleMaskImagePosition()
29469
- }],
29470
- "mask-image-l-to-pos": [{
29471
- "mask-l-to": scaleMaskImagePosition()
29472
- }],
29473
- "mask-image-l-from-color": [{
29474
- "mask-l-from": scaleColor()
29475
- }],
29476
- "mask-image-l-to-color": [{
29477
- "mask-l-to": scaleColor()
29478
- }],
29479
- "mask-image-x-from-pos": [{
29480
- "mask-x-from": scaleMaskImagePosition()
29481
- }],
29482
- "mask-image-x-to-pos": [{
29483
- "mask-x-to": scaleMaskImagePosition()
29484
- }],
29485
- "mask-image-x-from-color": [{
29486
- "mask-x-from": scaleColor()
29487
- }],
29488
- "mask-image-x-to-color": [{
29489
- "mask-x-to": scaleColor()
29490
- }],
29491
- "mask-image-y-from-pos": [{
29492
- "mask-y-from": scaleMaskImagePosition()
29493
- }],
29494
- "mask-image-y-to-pos": [{
29495
- "mask-y-to": scaleMaskImagePosition()
29496
- }],
29497
- "mask-image-y-from-color": [{
29498
- "mask-y-from": scaleColor()
29499
- }],
29500
- "mask-image-y-to-color": [{
29501
- "mask-y-to": scaleColor()
29502
- }],
29503
- "mask-image-radial": [{
29504
- "mask-radial": [isArbitraryVariable, isArbitraryValue]
29505
- }],
29506
- "mask-image-radial-from-pos": [{
29507
- "mask-radial-from": scaleMaskImagePosition()
29508
- }],
29509
- "mask-image-radial-to-pos": [{
29510
- "mask-radial-to": scaleMaskImagePosition()
29511
- }],
29512
- "mask-image-radial-from-color": [{
29513
- "mask-radial-from": scaleColor()
29514
- }],
29515
- "mask-image-radial-to-color": [{
29516
- "mask-radial-to": scaleColor()
29517
- }],
29518
- "mask-image-radial-shape": [{
29519
- "mask-radial": ["circle", "ellipse"]
29520
- }],
29521
- "mask-image-radial-size": [{
29522
- "mask-radial": [{
29523
- closest: ["side", "corner"],
29524
- farthest: ["side", "corner"]
29525
- }]
29526
- }],
29527
- "mask-image-radial-pos": [{
29528
- "mask-radial-at": scalePosition()
29529
- }],
29530
- "mask-image-conic-pos": [{
29531
- "mask-conic": [isNumber]
29532
- }],
29533
- "mask-image-conic-from-pos": [{
29534
- "mask-conic-from": scaleMaskImagePosition()
29535
- }],
29536
- "mask-image-conic-to-pos": [{
29537
- "mask-conic-to": scaleMaskImagePosition()
29538
- }],
29539
- "mask-image-conic-from-color": [{
29540
- "mask-conic-from": scaleColor()
29541
- }],
29542
- "mask-image-conic-to-color": [{
29543
- "mask-conic-to": scaleColor()
29544
- }],
29545
- /**
29546
- * Mask Mode
29547
- * @see https://tailwindcss.com/docs/mask-mode
29548
- */
29549
- "mask-mode": [{
29550
- mask: ["alpha", "luminance", "match"]
29551
- }],
29552
- /**
29553
- * Mask Origin
29554
- * @see https://tailwindcss.com/docs/mask-origin
29555
- */
29556
- "mask-origin": [{
29557
- "mask-origin": ["border", "padding", "content", "fill", "stroke", "view"]
29558
- }],
29559
- /**
29560
- * Mask Position
29561
- * @see https://tailwindcss.com/docs/mask-position
29562
- */
29563
- "mask-position": [{
29564
- mask: scaleBgPosition()
29565
- }],
29566
- /**
29567
- * Mask Repeat
29568
- * @see https://tailwindcss.com/docs/mask-repeat
29569
- */
29570
- "mask-repeat": [{
29571
- mask: scaleBgRepeat()
29572
- }],
29573
- /**
29574
- * Mask Size
29575
- * @see https://tailwindcss.com/docs/mask-size
29576
- */
29577
- "mask-size": [{
29578
- mask: scaleBgSize()
29579
- }],
29580
- /**
29581
- * Mask Type
29582
- * @see https://tailwindcss.com/docs/mask-type
29583
- */
29584
- "mask-type": [{
29585
- "mask-type": ["alpha", "luminance"]
29586
- }],
29587
- /**
29588
- * Mask Image
29589
- * @see https://tailwindcss.com/docs/mask-image
29590
- */
29591
- "mask-image": [{
29592
- mask: ["none", isArbitraryVariable, isArbitraryValue]
29593
- }],
29594
- // ---------------
29595
- // --- Filters ---
29596
- // ---------------
29597
- /**
29598
- * Filter
29599
- * @see https://tailwindcss.com/docs/filter
29600
- */
29601
- filter: [{
29602
- filter: [
29603
- // Deprecated since Tailwind CSS v3.0.0
29604
- "",
29605
- "none",
29606
- isArbitraryVariable,
29607
- isArbitraryValue
29608
- ]
29609
- }],
29610
- /**
29611
- * Blur
29612
- * @see https://tailwindcss.com/docs/blur
29613
- */
29614
- blur: [{
29615
- blur: scaleBlur()
29616
- }],
29617
- /**
29618
- * Brightness
29619
- * @see https://tailwindcss.com/docs/brightness
29620
- */
29621
- brightness: [{
29622
- brightness: [isNumber, isArbitraryVariable, isArbitraryValue]
29623
- }],
29624
- /**
29625
- * Contrast
29626
- * @see https://tailwindcss.com/docs/contrast
29627
- */
29628
- contrast: [{
29629
- contrast: [isNumber, isArbitraryVariable, isArbitraryValue]
29630
- }],
29631
- /**
29632
- * Drop Shadow
29633
- * @see https://tailwindcss.com/docs/drop-shadow
29634
- */
29635
- "drop-shadow": [{
29636
- "drop-shadow": [
29637
- // Deprecated since Tailwind CSS v4.0.0
29638
- "",
29639
- "none",
29640
- themeDropShadow,
29641
- isArbitraryVariableShadow,
29642
- isArbitraryShadow
29643
- ]
29644
- }],
29645
- /**
29646
- * Drop Shadow Color
29647
- * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color
29648
- */
29649
- "drop-shadow-color": [{
29650
- "drop-shadow": scaleColor()
29651
- }],
29652
- /**
29653
- * Grayscale
29654
- * @see https://tailwindcss.com/docs/grayscale
29655
- */
29656
- grayscale: [{
29657
- grayscale: ["", isNumber, isArbitraryVariable, isArbitraryValue]
29658
- }],
29659
- /**
29660
- * Hue Rotate
29661
- * @see https://tailwindcss.com/docs/hue-rotate
29662
- */
29663
- "hue-rotate": [{
29664
- "hue-rotate": [isNumber, isArbitraryVariable, isArbitraryValue]
29665
- }],
29666
- /**
29667
- * Invert
29668
- * @see https://tailwindcss.com/docs/invert
29669
- */
29670
- invert: [{
29671
- invert: ["", isNumber, isArbitraryVariable, isArbitraryValue]
29672
- }],
29673
- /**
29674
- * Saturate
29675
- * @see https://tailwindcss.com/docs/saturate
29676
- */
29677
- saturate: [{
29678
- saturate: [isNumber, isArbitraryVariable, isArbitraryValue]
29679
- }],
29680
- /**
29681
- * Sepia
29682
- * @see https://tailwindcss.com/docs/sepia
29683
- */
29684
- sepia: [{
29685
- sepia: ["", isNumber, isArbitraryVariable, isArbitraryValue]
29686
- }],
29687
- /**
29688
- * Backdrop Filter
29689
- * @see https://tailwindcss.com/docs/backdrop-filter
29690
- */
29691
- "backdrop-filter": [{
29692
- "backdrop-filter": [
29693
- // Deprecated since Tailwind CSS v3.0.0
29694
- "",
29695
- "none",
29696
- isArbitraryVariable,
29697
- isArbitraryValue
29698
- ]
29699
- }],
29700
- /**
29701
- * Backdrop Blur
29702
- * @see https://tailwindcss.com/docs/backdrop-blur
29703
- */
29704
- "backdrop-blur": [{
29705
- "backdrop-blur": scaleBlur()
29706
- }],
29707
- /**
29708
- * Backdrop Brightness
29709
- * @see https://tailwindcss.com/docs/backdrop-brightness
29710
- */
29711
- "backdrop-brightness": [{
29712
- "backdrop-brightness": [isNumber, isArbitraryVariable, isArbitraryValue]
29713
- }],
29714
- /**
29715
- * Backdrop Contrast
29716
- * @see https://tailwindcss.com/docs/backdrop-contrast
29717
- */
29718
- "backdrop-contrast": [{
29719
- "backdrop-contrast": [isNumber, isArbitraryVariable, isArbitraryValue]
29720
- }],
29721
- /**
29722
- * Backdrop Grayscale
29723
- * @see https://tailwindcss.com/docs/backdrop-grayscale
29724
- */
29725
- "backdrop-grayscale": [{
29726
- "backdrop-grayscale": ["", isNumber, isArbitraryVariable, isArbitraryValue]
29727
- }],
29728
- /**
29729
- * Backdrop Hue Rotate
29730
- * @see https://tailwindcss.com/docs/backdrop-hue-rotate
29731
- */
29732
- "backdrop-hue-rotate": [{
29733
- "backdrop-hue-rotate": [isNumber, isArbitraryVariable, isArbitraryValue]
29734
- }],
29735
- /**
29736
- * Backdrop Invert
29737
- * @see https://tailwindcss.com/docs/backdrop-invert
29738
- */
29739
- "backdrop-invert": [{
29740
- "backdrop-invert": ["", isNumber, isArbitraryVariable, isArbitraryValue]
29741
- }],
29742
- /**
29743
- * Backdrop Opacity
29744
- * @see https://tailwindcss.com/docs/backdrop-opacity
29745
- */
29746
- "backdrop-opacity": [{
29747
- "backdrop-opacity": [isNumber, isArbitraryVariable, isArbitraryValue]
29748
- }],
29749
- /**
29750
- * Backdrop Saturate
29751
- * @see https://tailwindcss.com/docs/backdrop-saturate
29752
- */
29753
- "backdrop-saturate": [{
29754
- "backdrop-saturate": [isNumber, isArbitraryVariable, isArbitraryValue]
29755
- }],
29756
- /**
29757
- * Backdrop Sepia
29758
- * @see https://tailwindcss.com/docs/backdrop-sepia
29759
- */
29760
- "backdrop-sepia": [{
29761
- "backdrop-sepia": ["", isNumber, isArbitraryVariable, isArbitraryValue]
29762
- }],
29763
- // --------------
29764
- // --- Tables ---
29765
- // --------------
29766
- /**
29767
- * Border Collapse
29768
- * @see https://tailwindcss.com/docs/border-collapse
29769
- */
29770
- "border-collapse": [{
29771
- border: ["collapse", "separate"]
29772
- }],
29773
- /**
29774
- * Border Spacing
29775
- * @see https://tailwindcss.com/docs/border-spacing
29776
- */
29777
- "border-spacing": [{
29778
- "border-spacing": scaleUnambiguousSpacing()
29779
- }],
29780
- /**
29781
- * Border Spacing X
29782
- * @see https://tailwindcss.com/docs/border-spacing
29783
- */
29784
- "border-spacing-x": [{
29785
- "border-spacing-x": scaleUnambiguousSpacing()
29786
- }],
29787
- /**
29788
- * Border Spacing Y
29789
- * @see https://tailwindcss.com/docs/border-spacing
29790
- */
29791
- "border-spacing-y": [{
29792
- "border-spacing-y": scaleUnambiguousSpacing()
29793
- }],
29794
- /**
29795
- * Table Layout
29796
- * @see https://tailwindcss.com/docs/table-layout
29797
- */
29798
- "table-layout": [{
29799
- table: ["auto", "fixed"]
29800
- }],
29801
- /**
29802
- * Caption Side
29803
- * @see https://tailwindcss.com/docs/caption-side
29804
- */
29805
- caption: [{
29806
- caption: ["top", "bottom"]
29807
- }],
29808
- // ---------------------------------
29809
- // --- Transitions and Animation ---
29810
- // ---------------------------------
29811
- /**
29812
- * Transition Property
29813
- * @see https://tailwindcss.com/docs/transition-property
29814
- */
29815
- transition: [{
29816
- transition: ["", "all", "colors", "opacity", "shadow", "transform", "none", isArbitraryVariable, isArbitraryValue]
29817
- }],
29818
- /**
29819
- * Transition Behavior
29820
- * @see https://tailwindcss.com/docs/transition-behavior
29821
- */
29822
- "transition-behavior": [{
29823
- transition: ["normal", "discrete"]
29824
- }],
29825
- /**
29826
- * Transition Duration
29827
- * @see https://tailwindcss.com/docs/transition-duration
29828
- */
29829
- duration: [{
29830
- duration: [isNumber, "initial", isArbitraryVariable, isArbitraryValue]
29831
- }],
29832
- /**
29833
- * Transition Timing Function
29834
- * @see https://tailwindcss.com/docs/transition-timing-function
29835
- */
29836
- ease: [{
29837
- ease: ["linear", "initial", themeEase, isArbitraryVariable, isArbitraryValue]
29838
- }],
29839
- /**
29840
- * Transition Delay
29841
- * @see https://tailwindcss.com/docs/transition-delay
29842
- */
29843
- delay: [{
29844
- delay: [isNumber, isArbitraryVariable, isArbitraryValue]
29845
- }],
29846
- /**
29847
- * Animation
29848
- * @see https://tailwindcss.com/docs/animation
29849
- */
29850
- animate: [{
29851
- animate: ["none", themeAnimate, isArbitraryVariable, isArbitraryValue]
29852
- }],
29853
- // ------------------
29854
- // --- Transforms ---
29855
- // ------------------
29856
- /**
29857
- * Backface Visibility
29858
- * @see https://tailwindcss.com/docs/backface-visibility
29859
- */
29860
- backface: [{
29861
- backface: ["hidden", "visible"]
29862
- }],
29863
- /**
29864
- * Perspective
29865
- * @see https://tailwindcss.com/docs/perspective
29866
- */
29867
- perspective: [{
29868
- perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]
29869
- }],
29870
- /**
29871
- * Perspective Origin
29872
- * @see https://tailwindcss.com/docs/perspective-origin
29873
- */
29874
- "perspective-origin": [{
29875
- "perspective-origin": scalePositionWithArbitrary()
29876
- }],
29877
- /**
29878
- * Rotate
29879
- * @see https://tailwindcss.com/docs/rotate
29880
- */
29881
- rotate: [{
29882
- rotate: scaleRotate()
29883
- }],
29884
- /**
29885
- * Rotate X
29886
- * @see https://tailwindcss.com/docs/rotate
29887
- */
29888
- "rotate-x": [{
29889
- "rotate-x": scaleRotate()
29890
- }],
29891
- /**
29892
- * Rotate Y
29893
- * @see https://tailwindcss.com/docs/rotate
29894
- */
29895
- "rotate-y": [{
29896
- "rotate-y": scaleRotate()
29897
- }],
29898
- /**
29899
- * Rotate Z
29900
- * @see https://tailwindcss.com/docs/rotate
29901
- */
29902
- "rotate-z": [{
29903
- "rotate-z": scaleRotate()
29904
- }],
29905
- /**
29906
- * Scale
29907
- * @see https://tailwindcss.com/docs/scale
29908
- */
29909
- scale: [{
29910
- scale: scaleScale()
29911
- }],
29912
- /**
29913
- * Scale X
29914
- * @see https://tailwindcss.com/docs/scale
29915
- */
29916
- "scale-x": [{
29917
- "scale-x": scaleScale()
29918
- }],
29919
- /**
29920
- * Scale Y
29921
- * @see https://tailwindcss.com/docs/scale
29922
- */
29923
- "scale-y": [{
29924
- "scale-y": scaleScale()
29925
- }],
29926
- /**
29927
- * Scale Z
29928
- * @see https://tailwindcss.com/docs/scale
29929
- */
29930
- "scale-z": [{
29931
- "scale-z": scaleScale()
29932
- }],
29933
- /**
29934
- * Scale 3D
29935
- * @see https://tailwindcss.com/docs/scale
29936
- */
29937
- "scale-3d": ["scale-3d"],
29938
- /**
29939
- * Skew
29940
- * @see https://tailwindcss.com/docs/skew
29941
- */
29942
- skew: [{
29943
- skew: scaleSkew()
29944
- }],
29945
- /**
29946
- * Skew X
29947
- * @see https://tailwindcss.com/docs/skew
29948
- */
29949
- "skew-x": [{
29950
- "skew-x": scaleSkew()
29951
- }],
29952
- /**
29953
- * Skew Y
29954
- * @see https://tailwindcss.com/docs/skew
29955
- */
29956
- "skew-y": [{
29957
- "skew-y": scaleSkew()
29958
- }],
29959
- /**
29960
- * Transform
29961
- * @see https://tailwindcss.com/docs/transform
29962
- */
29963
- transform: [{
29964
- transform: [isArbitraryVariable, isArbitraryValue, "", "none", "gpu", "cpu"]
29965
- }],
29966
- /**
29967
- * Transform Origin
29968
- * @see https://tailwindcss.com/docs/transform-origin
29969
- */
29970
- "transform-origin": [{
29971
- origin: scalePositionWithArbitrary()
29972
- }],
29973
- /**
29974
- * Transform Style
29975
- * @see https://tailwindcss.com/docs/transform-style
29976
- */
29977
- "transform-style": [{
29978
- transform: ["3d", "flat"]
29979
- }],
29980
- /**
29981
- * Translate
29982
- * @see https://tailwindcss.com/docs/translate
29983
- */
29984
- translate: [{
29985
- translate: scaleTranslate()
29986
- }],
29987
- /**
29988
- * Translate X
29989
- * @see https://tailwindcss.com/docs/translate
29990
- */
29991
- "translate-x": [{
29992
- "translate-x": scaleTranslate()
29993
- }],
29994
- /**
29995
- * Translate Y
29996
- * @see https://tailwindcss.com/docs/translate
29997
- */
29998
- "translate-y": [{
29999
- "translate-y": scaleTranslate()
30000
- }],
30001
- /**
30002
- * Translate Z
30003
- * @see https://tailwindcss.com/docs/translate
30004
- */
30005
- "translate-z": [{
30006
- "translate-z": scaleTranslate()
30007
- }],
30008
- /**
30009
- * Translate None
30010
- * @see https://tailwindcss.com/docs/translate
30011
- */
30012
- "translate-none": ["translate-none"],
30013
- // ---------------------
30014
- // --- Interactivity ---
30015
- // ---------------------
30016
- /**
30017
- * Accent Color
30018
- * @see https://tailwindcss.com/docs/accent-color
30019
- */
30020
- accent: [{
30021
- accent: scaleColor()
30022
- }],
30023
- /**
30024
- * Appearance
30025
- * @see https://tailwindcss.com/docs/appearance
30026
- */
30027
- appearance: [{
30028
- appearance: ["none", "auto"]
30029
- }],
30030
- /**
30031
- * Caret Color
30032
- * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
30033
- */
30034
- "caret-color": [{
30035
- caret: scaleColor()
30036
- }],
30037
- /**
30038
- * Color Scheme
30039
- * @see https://tailwindcss.com/docs/color-scheme
30040
- */
30041
- "color-scheme": [{
30042
- scheme: ["normal", "dark", "light", "light-dark", "only-dark", "only-light"]
30043
- }],
30044
- /**
30045
- * Cursor
30046
- * @see https://tailwindcss.com/docs/cursor
30047
- */
30048
- cursor: [{
30049
- cursor: ["auto", "default", "pointer", "wait", "text", "move", "help", "not-allowed", "none", "context-menu", "progress", "cell", "crosshair", "vertical-text", "alias", "copy", "no-drop", "grab", "grabbing", "all-scroll", "col-resize", "row-resize", "n-resize", "e-resize", "s-resize", "w-resize", "ne-resize", "nw-resize", "se-resize", "sw-resize", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "zoom-in", "zoom-out", isArbitraryVariable, isArbitraryValue]
30050
- }],
30051
- /**
30052
- * Field Sizing
30053
- * @see https://tailwindcss.com/docs/field-sizing
30054
- */
30055
- "field-sizing": [{
30056
- "field-sizing": ["fixed", "content"]
30057
- }],
30058
- /**
30059
- * Pointer Events
30060
- * @see https://tailwindcss.com/docs/pointer-events
30061
- */
30062
- "pointer-events": [{
30063
- "pointer-events": ["auto", "none"]
30064
- }],
30065
- /**
30066
- * Resize
30067
- * @see https://tailwindcss.com/docs/resize
30068
- */
30069
- resize: [{
30070
- resize: ["none", "", "y", "x"]
30071
- }],
30072
- /**
30073
- * Scroll Behavior
30074
- * @see https://tailwindcss.com/docs/scroll-behavior
30075
- */
30076
- "scroll-behavior": [{
30077
- scroll: ["auto", "smooth"]
30078
- }],
30079
- /**
30080
- * Scroll Margin
30081
- * @see https://tailwindcss.com/docs/scroll-margin
30082
- */
30083
- "scroll-m": [{
30084
- "scroll-m": scaleUnambiguousSpacing()
30085
- }],
30086
- /**
30087
- * Scroll Margin X
30088
- * @see https://tailwindcss.com/docs/scroll-margin
30089
- */
30090
- "scroll-mx": [{
30091
- "scroll-mx": scaleUnambiguousSpacing()
30092
- }],
30093
- /**
30094
- * Scroll Margin Y
30095
- * @see https://tailwindcss.com/docs/scroll-margin
30096
- */
30097
- "scroll-my": [{
30098
- "scroll-my": scaleUnambiguousSpacing()
30099
- }],
30100
- /**
30101
- * Scroll Margin Start
30102
- * @see https://tailwindcss.com/docs/scroll-margin
30103
- */
30104
- "scroll-ms": [{
30105
- "scroll-ms": scaleUnambiguousSpacing()
30106
- }],
30107
- /**
30108
- * Scroll Margin End
30109
- * @see https://tailwindcss.com/docs/scroll-margin
30110
- */
30111
- "scroll-me": [{
30112
- "scroll-me": scaleUnambiguousSpacing()
30113
- }],
30114
- /**
30115
- * Scroll Margin Top
30116
- * @see https://tailwindcss.com/docs/scroll-margin
30117
- */
30118
- "scroll-mt": [{
30119
- "scroll-mt": scaleUnambiguousSpacing()
30120
- }],
30121
- /**
30122
- * Scroll Margin Right
30123
- * @see https://tailwindcss.com/docs/scroll-margin
30124
- */
30125
- "scroll-mr": [{
30126
- "scroll-mr": scaleUnambiguousSpacing()
30127
- }],
30128
- /**
30129
- * Scroll Margin Bottom
30130
- * @see https://tailwindcss.com/docs/scroll-margin
30131
- */
30132
- "scroll-mb": [{
30133
- "scroll-mb": scaleUnambiguousSpacing()
30134
- }],
30135
- /**
30136
- * Scroll Margin Left
30137
- * @see https://tailwindcss.com/docs/scroll-margin
30138
- */
30139
- "scroll-ml": [{
30140
- "scroll-ml": scaleUnambiguousSpacing()
30141
- }],
30142
- /**
30143
- * Scroll Padding
30144
- * @see https://tailwindcss.com/docs/scroll-padding
30145
- */
30146
- "scroll-p": [{
30147
- "scroll-p": scaleUnambiguousSpacing()
30148
- }],
30149
- /**
30150
- * Scroll Padding X
30151
- * @see https://tailwindcss.com/docs/scroll-padding
30152
- */
30153
- "scroll-px": [{
30154
- "scroll-px": scaleUnambiguousSpacing()
30155
- }],
30156
- /**
30157
- * Scroll Padding Y
30158
- * @see https://tailwindcss.com/docs/scroll-padding
30159
- */
30160
- "scroll-py": [{
30161
- "scroll-py": scaleUnambiguousSpacing()
30162
- }],
30163
- /**
30164
- * Scroll Padding Start
30165
- * @see https://tailwindcss.com/docs/scroll-padding
30166
- */
30167
- "scroll-ps": [{
30168
- "scroll-ps": scaleUnambiguousSpacing()
30169
- }],
30170
- /**
30171
- * Scroll Padding End
30172
- * @see https://tailwindcss.com/docs/scroll-padding
30173
- */
30174
- "scroll-pe": [{
30175
- "scroll-pe": scaleUnambiguousSpacing()
30176
- }],
30177
- /**
30178
- * Scroll Padding Top
30179
- * @see https://tailwindcss.com/docs/scroll-padding
30180
- */
30181
- "scroll-pt": [{
30182
- "scroll-pt": scaleUnambiguousSpacing()
30183
- }],
30184
- /**
30185
- * Scroll Padding Right
30186
- * @see https://tailwindcss.com/docs/scroll-padding
30187
- */
30188
- "scroll-pr": [{
30189
- "scroll-pr": scaleUnambiguousSpacing()
30190
- }],
30191
- /**
30192
- * Scroll Padding Bottom
30193
- * @see https://tailwindcss.com/docs/scroll-padding
30194
- */
30195
- "scroll-pb": [{
30196
- "scroll-pb": scaleUnambiguousSpacing()
30197
- }],
30198
- /**
30199
- * Scroll Padding Left
30200
- * @see https://tailwindcss.com/docs/scroll-padding
30201
- */
30202
- "scroll-pl": [{
30203
- "scroll-pl": scaleUnambiguousSpacing()
30204
- }],
30205
- /**
30206
- * Scroll Snap Align
30207
- * @see https://tailwindcss.com/docs/scroll-snap-align
30208
- */
30209
- "snap-align": [{
30210
- snap: ["start", "end", "center", "align-none"]
30211
- }],
30212
- /**
30213
- * Scroll Snap Stop
30214
- * @see https://tailwindcss.com/docs/scroll-snap-stop
30215
- */
30216
- "snap-stop": [{
30217
- snap: ["normal", "always"]
30218
- }],
30219
- /**
30220
- * Scroll Snap Type
30221
- * @see https://tailwindcss.com/docs/scroll-snap-type
30222
- */
30223
- "snap-type": [{
30224
- snap: ["none", "x", "y", "both"]
30225
- }],
30226
- /**
30227
- * Scroll Snap Type Strictness
30228
- * @see https://tailwindcss.com/docs/scroll-snap-type
30229
- */
30230
- "snap-strictness": [{
30231
- snap: ["mandatory", "proximity"]
30232
- }],
30233
- /**
30234
- * Touch Action
30235
- * @see https://tailwindcss.com/docs/touch-action
30236
- */
30237
- touch: [{
30238
- touch: ["auto", "none", "manipulation"]
30239
- }],
30240
- /**
30241
- * Touch Action X
30242
- * @see https://tailwindcss.com/docs/touch-action
30243
- */
30244
- "touch-x": [{
30245
- "touch-pan": ["x", "left", "right"]
30246
- }],
30247
- /**
30248
- * Touch Action Y
30249
- * @see https://tailwindcss.com/docs/touch-action
30250
- */
30251
- "touch-y": [{
30252
- "touch-pan": ["y", "up", "down"]
30253
- }],
30254
- /**
30255
- * Touch Action Pinch Zoom
30256
- * @see https://tailwindcss.com/docs/touch-action
30257
- */
30258
- "touch-pz": ["touch-pinch-zoom"],
30259
- /**
30260
- * User Select
30261
- * @see https://tailwindcss.com/docs/user-select
30262
- */
30263
- select: [{
30264
- select: ["none", "text", "all", "auto"]
30265
- }],
30266
- /**
30267
- * Will Change
30268
- * @see https://tailwindcss.com/docs/will-change
30269
- */
30270
- "will-change": [{
30271
- "will-change": ["auto", "scroll", "contents", "transform", isArbitraryVariable, isArbitraryValue]
30272
- }],
30273
- // -----------
30274
- // --- SVG ---
30275
- // -----------
30276
- /**
30277
- * Fill
30278
- * @see https://tailwindcss.com/docs/fill
30279
- */
30280
- fill: [{
30281
- fill: ["none", ...scaleColor()]
30282
- }],
30283
- /**
30284
- * Stroke Width
30285
- * @see https://tailwindcss.com/docs/stroke-width
30286
- */
30287
- "stroke-w": [{
30288
- stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]
30289
- }],
30290
- /**
30291
- * Stroke
30292
- * @see https://tailwindcss.com/docs/stroke
30293
- */
30294
- stroke: [{
30295
- stroke: ["none", ...scaleColor()]
30296
- }],
30297
- // ---------------------
30298
- // --- Accessibility ---
30299
- // ---------------------
30300
- /**
30301
- * Forced Color Adjust
30302
- * @see https://tailwindcss.com/docs/forced-color-adjust
30303
- */
30304
- "forced-color-adjust": [{
30305
- "forced-color-adjust": ["auto", "none"]
30306
- }]
30307
- },
30308
- conflictingClassGroups: {
30309
- overflow: ["overflow-x", "overflow-y"],
30310
- overscroll: ["overscroll-x", "overscroll-y"],
30311
- inset: ["inset-x", "inset-y", "start", "end", "top", "right", "bottom", "left"],
30312
- "inset-x": ["right", "left"],
30313
- "inset-y": ["top", "bottom"],
30314
- flex: ["basis", "grow", "shrink"],
30315
- gap: ["gap-x", "gap-y"],
30316
- p: ["px", "py", "ps", "pe", "pt", "pr", "pb", "pl"],
30317
- px: ["pr", "pl"],
30318
- py: ["pt", "pb"],
30319
- m: ["mx", "my", "ms", "me", "mt", "mr", "mb", "ml"],
30320
- mx: ["mr", "ml"],
30321
- my: ["mt", "mb"],
30322
- size: ["w", "h"],
30323
- "font-size": ["leading"],
30324
- "fvn-normal": ["fvn-ordinal", "fvn-slashed-zero", "fvn-figure", "fvn-spacing", "fvn-fraction"],
30325
- "fvn-ordinal": ["fvn-normal"],
30326
- "fvn-slashed-zero": ["fvn-normal"],
30327
- "fvn-figure": ["fvn-normal"],
30328
- "fvn-spacing": ["fvn-normal"],
30329
- "fvn-fraction": ["fvn-normal"],
30330
- "line-clamp": ["display", "overflow"],
30331
- rounded: ["rounded-s", "rounded-e", "rounded-t", "rounded-r", "rounded-b", "rounded-l", "rounded-ss", "rounded-se", "rounded-ee", "rounded-es", "rounded-tl", "rounded-tr", "rounded-br", "rounded-bl"],
30332
- "rounded-s": ["rounded-ss", "rounded-es"],
30333
- "rounded-e": ["rounded-se", "rounded-ee"],
30334
- "rounded-t": ["rounded-tl", "rounded-tr"],
30335
- "rounded-r": ["rounded-tr", "rounded-br"],
30336
- "rounded-b": ["rounded-br", "rounded-bl"],
30337
- "rounded-l": ["rounded-tl", "rounded-bl"],
30338
- "border-spacing": ["border-spacing-x", "border-spacing-y"],
30339
- "border-w": ["border-w-x", "border-w-y", "border-w-s", "border-w-e", "border-w-t", "border-w-r", "border-w-b", "border-w-l"],
30340
- "border-w-x": ["border-w-r", "border-w-l"],
30341
- "border-w-y": ["border-w-t", "border-w-b"],
30342
- "border-color": ["border-color-x", "border-color-y", "border-color-s", "border-color-e", "border-color-t", "border-color-r", "border-color-b", "border-color-l"],
30343
- "border-color-x": ["border-color-r", "border-color-l"],
30344
- "border-color-y": ["border-color-t", "border-color-b"],
30345
- translate: ["translate-x", "translate-y", "translate-none"],
30346
- "translate-none": ["translate", "translate-x", "translate-y", "translate-z"],
30347
- "scroll-m": ["scroll-mx", "scroll-my", "scroll-ms", "scroll-me", "scroll-mt", "scroll-mr", "scroll-mb", "scroll-ml"],
30348
- "scroll-mx": ["scroll-mr", "scroll-ml"],
30349
- "scroll-my": ["scroll-mt", "scroll-mb"],
30350
- "scroll-p": ["scroll-px", "scroll-py", "scroll-ps", "scroll-pe", "scroll-pt", "scroll-pr", "scroll-pb", "scroll-pl"],
30351
- "scroll-px": ["scroll-pr", "scroll-pl"],
30352
- "scroll-py": ["scroll-pt", "scroll-pb"],
30353
- touch: ["touch-x", "touch-y", "touch-pz"],
30354
- "touch-x": ["touch"],
30355
- "touch-y": ["touch"],
30356
- "touch-pz": ["touch"]
30357
- },
30358
- conflictingClassGroupModifiers: {
30359
- "font-size": ["leading"]
30360
- },
30361
- orderSensitiveModifiers: ["*", "**", "after", "backdrop", "before", "details-content", "file", "first-letter", "first-line", "marker", "placeholder", "selection"]
30362
- };
30363
- };
30364
- const twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
30365
- function cn(...inputs) {
30366
- return twMerge(clsx(inputs));
30367
- }
30368
27401
  function fetchImageAsDataUrl(src) {
30369
27402
  return new Promise((resolve, reject) => {
30370
27403
  const img = new Image();
@@ -30428,67 +27461,6 @@ function findPlaceForNewElements(appState, elements, newElements) {
30428
27461
  });
30429
27462
  return ret;
30430
27463
  }
30431
- function FloatingMenuContainer({
30432
- containerClassname,
30433
- children
30434
- }) {
30435
- const [excalidrawAPI] = useAtom$1(excalidrawApiAtom);
30436
- const [pos, setPos] = useState(null);
30437
- const [selectKey, setSelectKey] = useState("");
30438
- useEffect(() => {
30439
- if (!excalidrawAPI) {
30440
- return;
30441
- }
30442
- const unsub = excalidrawAPI.onChange((elements, appState, files) => {
30443
- const selectedIds = appState.selectedElementIds;
30444
- if (Object.keys(selectedIds).length === 0) {
30445
- setPos(null);
30446
- return;
30447
- }
30448
- const selectedElements = elements.filter(
30449
- (element) => selectedIds[element.id]
30450
- );
30451
- if (selectedElements.some((element) => element.type === "embeddable")) {
30452
- setPos(null);
30453
- return;
30454
- }
30455
- const leftX = selectedElements.reduce(
30456
- (acc, element) => Math.min(acc, element.x),
30457
- Infinity
30458
- );
30459
- const bottomY = selectedElements.reduce(
30460
- (acc, element) => Math.max(acc, element.y + element.height),
30461
- -Infinity
30462
- );
30463
- const scrollX = appState.scrollX;
30464
- const scrollY = appState.scrollY;
30465
- const zoom = appState.zoom.value;
30466
- const offsetX = (scrollX + leftX) * zoom;
30467
- const offsetY = (scrollY + bottomY) * zoom;
30468
- setPos({ x: offsetX, y: offsetY });
30469
- setSelectKey(Object.keys(selectedIds).join(","));
30470
- });
30471
- return unsub;
30472
- }, [excalidrawAPI]);
30473
- if (!pos) {
30474
- return null;
30475
- }
30476
- return /* @__PURE__ */ jsx(
30477
- "div",
30478
- {
30479
- className: cn(
30480
- "floating-menu absolute translate-y-4 z-100000",
30481
- containerClassname
30482
- ),
30483
- style: {
30484
- left: pos.x,
30485
- top: pos.y
30486
- },
30487
- children
30488
- },
30489
- selectKey
30490
- );
30491
- }
30492
27464
  function ApiFactory() {
30493
27465
  const excalidrawAPI = useAtomValue$1(excalidrawApiAtom);
30494
27466
  const setApi = useSetAtom$1(apiAtom);
@@ -30539,7 +27511,7 @@ function ApiFactory() {
30539
27511
  elements: [...currentElements, ...els]
30540
27512
  });
30541
27513
  excalidrawAPI.scrollToContent(els, {
30542
- animate: true
27514
+ animate: currentElements.length === 0 ? false : true
30543
27515
  });
30544
27516
  };
30545
27517
  setApi({
@@ -30768,7 +27740,7 @@ function ApiFactory() {
30768
27740
  }, [excalidrawAPI, setApi]);
30769
27741
  return null;
30770
27742
  }
30771
- function XCanvas({ registerApi, floatingMenu, ...rest }) {
27743
+ function XCanvas({ registerApi, ...rest }) {
30772
27744
  const [api] = useAtom$1(apiAtom);
30773
27745
  useEffect(() => {
30774
27746
  if (api && registerApi) {
@@ -30784,8 +27756,7 @@ function XCanvas({ registerApi, floatingMenu, ...rest }) {
30784
27756
  }, [api, registerApi]);
30785
27757
  return /* @__PURE__ */ jsxs("div", { className: "w-full h-full relative overflow-hidden", children: [
30786
27758
  /* @__PURE__ */ jsx(CustomExcalidraw, { ...rest }),
30787
- /* @__PURE__ */ jsx(ApiFactory, {}),
30788
- /* @__PURE__ */ jsx(FloatingMenuContainer, { children: floatingMenu })
27759
+ /* @__PURE__ */ jsx(ApiFactory, {})
30789
27760
  ] });
30790
27761
  }
30791
27762
  export {
@@ -30826,7 +27797,7 @@ export {
30826
27797
  k as o,
30827
27798
  p,
30828
27799
  iC$1 as q,
30829
- r$1 as r,
27800
+ r,
30830
27801
  s,
30831
27802
  t,
30832
27803
  u,