text.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { baseGeometryChannels, basePostInference, basePreInference, createBandOffset, tooltip2d, visualMark, } from './utils';
  2. export const Text = (options) => {
  3. const { cartesian = false } = options;
  4. if (cartesian)
  5. return visualMark;
  6. return ((index, scale, value, coordinate) => {
  7. const { x: X, y: Y } = value;
  8. const offset = createBandOffset(scale, value, options);
  9. const P = Array.from(index, (i) => {
  10. const p = [+X[i], +Y[i]];
  11. return [coordinate.map(offset(p, i))];
  12. });
  13. return [index, P];
  14. });
  15. };
  16. const shapes = ['text', 'badge'];
  17. Text.props = {
  18. defaultShape: 'text',
  19. defaultLabelShape: 'label',
  20. composite: false,
  21. channels: [
  22. ...baseGeometryChannels({ shapes }),
  23. { name: 'x', required: true },
  24. { name: 'y', required: true },
  25. { name: 'text', scale: 'identity' },
  26. { name: 'fontSize' },
  27. { name: 'rotate' },
  28. ],
  29. preInference: [
  30. ...basePreInference(),
  31. { type: 'maybeTuple' },
  32. { type: 'maybeVisualPosition' },
  33. ],
  34. postInference: [...basePostInference(), ...tooltip2d()],
  35. };
  36. //# sourceMappingURL=text.js.map