{"version":3,"file":"grainsize.cjs","sources":["../src/grainsize.ts"],"sourcesContent":["import { scaleLinear, scaleOrdinal } from \"d3-scale\";\nimport { useColumnLayout } from \"./context\";\nimport h from \"@macrostrat/hyper\";\n\nconst grainSizes = [\"ms\", \"s\", \"vf\", \"f\", \"m\", \"c\", \"vc\", \"p\"];\nconst createGrainsizeScale = function (range) {\n  /** A basic grainsize scale that will work in many situations */\n\n  const scale = scaleLinear()\n    .domain([0, grainSizes.length - 1])\n    .range(range);\n  const tickPositions = grainSizes.map((d, i) => scale(i));\n  return scaleOrdinal().domain(grainSizes).range(tickPositions);\n};\n\nfunction GrainsizeAxis({ height = 20 }) {\n  const { grainsizeScale: gs, pixelHeight } = useColumnLayout();\n  if (gs == null) {\n    throw \"GrainsizeAxis must be a child of a GrainsizeScaleProvider\";\n  }\n  const sizes = (gs as any).domain();\n\n  // check length of sizes and rotate labels if necessary\n  let strlen = sizes.reduce((acc, d) => acc + d.length, 0) / sizes.length;\n  let className = \"\";\n  if (strlen > 2) {\n    className = \"rotated\";\n  }\n\n  return h(\n    \"g.grainsize.axis\",\n    { className },\n    sizes.map((d) => {\n      return h(\"g.tick\", { transform: `translate(${gs(d)} 0)`, key: d }, [\n        h(\"text.top\", { y: 0 }, d),\n        h(\n          \"text.bottom\",\n          { y: pixelHeight, style: { transformOrigin: `0 ${pixelHeight}px` } },\n          d,\n        ),\n        h(\"line\", { y1: 0, x1: 0, x2: 0, y2: pixelHeight }),\n      ]);\n    }),\n  );\n}\n\nexport { GrainsizeAxis, grainSizes, createGrainsizeScale };\n"],"names":["scaleLinear","scaleOrdinal","useColumnLayout","h"],"mappings":";;;;;;;AAIA,MAAM,aAAa,CAAC,MAAM,KAAK,MAAM,KAAK,KAAK,KAAK,MAAM,GAAG;AAC7D,MAAM,uBAAuB,SAAU,OAAO;AAG5C,QAAM,QAAQA,QAAAA,cACX,OAAO,CAAC,GAAG,WAAW,SAAS,CAAC,CAAC,EACjC,MAAM,KAAK;AACd,QAAM,gBAAgB,WAAW,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;AACvD,SAAOC,QAAAA,eAAe,OAAO,UAAU,EAAE,MAAM,aAAa;AAC9D;AAEA,SAAS,cAAc,EAAE,SAAS,MAAM;AACtC,QAAM,EAAE,gBAAgB,IAAI,YAAA,IAAgBC,OAAAA,gBAAA;AAC5C,MAAI,MAAM,MAAM;AACd,UAAM;AAAA,EACR;AACA,QAAM,QAAS,GAAW,OAAA;AAG1B,MAAI,SAAS,MAAM,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM;AACjE,MAAI,YAAY;AAChB,MAAI,SAAS,GAAG;AACd,gBAAY;AAAA,EACd;AAEA,SAAOC,WAAAA;AAAAA,IACL;AAAA,IACA,EAAE,UAAA;AAAA,IACF,MAAM,IAAI,CAAC,MAAM;AACf,aAAOA,mBAAE,UAAU,EAAE,WAAW,aAAa,GAAG,CAAC,CAAC,OAAO,KAAK,EAAA,GAAK;AAAA,QACjEA,WAAAA,QAAE,YAAY,EAAE,GAAG,EAAA,GAAK,CAAC;AAAA,QACzBA,WAAAA;AAAAA,UACE;AAAA,UACA,EAAE,GAAG,aAAa,OAAO,EAAE,iBAAiB,KAAK,WAAW,OAAK;AAAA,UACjE;AAAA,QAAA;AAAA,QAEFA,WAAAA,QAAE,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,YAAA,CAAa;AAAA,MAAA,CACnD;AAAA,IACH,CAAC;AAAA,EAAA;AAEL;;;;"}