--- package/.fatherrc.js (excerpt) ---
import { visualizer } from 'rollup-plugin-visualizer';
const isBundleVis = !!process.env.BUNDLE_VIS;
export default process.env.CI && process.env.CI === 'true'
? {}
: {
umd: {
name: 'F2',
file: 'index',
minFile: true,
},
// entry: ['src/index.ts', 'src/jsx/jsx-runtime.ts'],
entry: ['src/index.ts'],
overridesByEntry: {
'src/index.ts': {
umd: { name: 'F2', file: 'index' },
},
// for weixin miniapp
// 'src/jsx/jsx-runtime.ts': {
// umd: { name: 'F2JSXRuntime', file: 'jsx-runtime' },
// },
},
typescriptOpts: {
tsconfigOverride: {
compilerOptions: {
target: 'es5',
},
},
},
extraBabelPlugins: [[
"search-and-replace",
{
"rules": [
{
"search": "VERSION",
"searchTemplateStrings": true,
"replace": require('../../lerna.json').version
}
]
}
]],
extraRollupPlugins: [...(isBundleVis ? [visualizer()] : [])],
};
--- package.json (entry) ---
{
"name": "@antv/f2",
"version": "5.14.0",
"description": "Charts for mobile visualization.",
"keywords": [
"antv",
"f2",
"chart",
"charts",
"mobile",
"visualization",
"data visualization",
"canvas",
"2d draw",
"mobile visualization",
"interactive"
],
"homepage": "https://f2.antv.vision/",
"bugs": {
"url": "https://github.com/antvis/f2/issues"
},
"repository": {
"type": "git",
"url": "https://github.com/antvis/f2"
},
"license": "MIT",
"author": "https://github.com/orgs/antvis/people",
"sideEffects": false,
"main": "lib/index.js",
"unpkg": "dist/index.min.js",
"module": "es/index.js",
"types": "es/index.d.ts",
"dependencies": {
"@antv/event-emitter": "^0.1.2",
"@antv/f-engine": "^1.3.1",
"@antv/f-lottie": "^1.0.1",
"@antv/util": "^3.0.6",
"@babel/runtime": "^7.12.5",
"d3-cloud": "~1.2.5",
"fecha": "~4.2.0",
"gl-matrix": "^3.1.0",
"tslib": "^2.3.1",
"type-fest": "^3.5.0"
},
"devDependencies": {
"@antv/g-mobile-svg": "~0.10.0"
},
"miniprogram": "dist",
"gitHead": "a9a4c397f067aafad8c050d370b8081efca9d199"
}
--- index.js (entry) ---
export {default as interpolate} from "./value.js";
export {default as interpolateArray} from "./array.js";
export {default as interpolateBasis} from "./basis.js";
export {default as interpolateBasisClosed} from "./basisClosed.js";
export {default as interpolateDate} from "./date.js";
export {default as interpolateDiscrete} from "./discrete.js";
export {default as interpolateHue} from "./hue.js";
export {default as interpolateNumber} from "./number.js";
export {default as interpolateNumberArray} from "./numberArray.js";
export {default as interpolateObject} from "./object.js";
export {default as interpolateRound} from "./round.js";
export {default as interpolateString} from "./string.js";
export {interpolateTransformCss, interpolateTransformSvg} from "./transform/index.js";
export {default as interpolateZoom} from "./zoom.js";
export {default as interpolateRgb, rgbBasis as interpolateRgbBasis, rgbBasisClosed as interpolateRgbBasisClosed} from "./rgb.js";
export {default as interpolateHsl, hslLong as interpolateHslLong} from "./hsl.js";
export {default as interpolateLab} from "./lab.js";
export {default as interpolateHcl, hclLong as interpolateHclLong} from "./hcl.js";
export {defaul
--- bundled output (OSV-MAL flagged — LLM scope expansion) ---
--- jsx-dev-runtime.js (bundled) ---
export * from '@antv/f-engine/jsx-dev-runtime';
--- jsx-runtime.js (bundled) ---
export * from '@antv/f-engine/jsx-runtime';
--- lib/deps/f2-scale/src/util/d3-linear.js (bundled) ---
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.D3Linear = void 0;
exports.default = d3Linear;
function d3Linear(cfg) {
var min = cfg.min,
max = cfg.max,
nice = cfg.nice,
tickCount = cfg.tickCount;
var linear = new D3Linear();
linear.domain([min, max]);
if (nice) {
linear.nice(tickCount);
}
return linear.ticks(tickCount);
}
var DEFAULT_COUNT = 5;
var e10 = Math.sqrt(50);
var e5 = Math.sqrt(10);
var e2 = Math.sqrt(2);
// https://github.com/d3/d3-scale
var D3Linear = exports.D3Linear = /** @class */function () {
function D3Linear() {
this._domain = [0, 1];
}
D3Linear.prototype.domain = function (domain) {
if (domain) {
this._domain = Array.from(domain, Number);
return this;
}
return this._domain.slice();
};
D3Linear.prototype.nice = function (count) {
var _a, _b;
if (count === void 0) {
count = DEFAULT_COUNT;
}
var d = this._domain.slice();
var i0 = 0;
var i1 = this._domain.length - 1;
var start = this._domain[i0];
var stop = this._domain[i1];
var step;
if (stop < start) {
_a = [stop, start], start = _a[0], stop = _a[1];
_b = [i1, i0], i0 = _b[0], i1 = _b[1];
}
step = tickIncrement(start, stop, count);
if (step > 0) {
start = Math.floor(start / step) * step;
stop = Math.ceil(stop / step) * step;
step = tickIncrement(start, stop, count);
} else if (step < 0) {
start = Math.ceil(start * step) / step;
stop = Math.floor(stop * step) / step;
step = tickIncrement(start, stop, count);
}
if (step > 0) {
d[i0] = Math.floor(start / step) * step;
d[i1] = Math.ceil(stop / step) * step;
this.domain(d);
} else if (step < 0) {
d[i0] = Math.ceil(start * step) / step;
d[i1] = Math.floor(stop * step) / step;
this.domain(d);
}
return this;
};
D3Linear.prototype.ticks = function (count) {
if (count === void 0) {
--- lib/deps/f2-scale/src/util/pretty-number.js (bundled) ---
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.prettyNumber = prettyNumber;
// 为了解决 js 运算的精度问题
function prettyNumber(n) {
return Math.abs(n) < 1e-15 ? n : parseFloat(n.toFixed(15));
}
--- lib/deps/f2-scale/src/tick-method/d3-linear.js (bundled) ---
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = d3LinearTickMethod;
var _util = require("@antv/util");
var _d3Linear = _interopRequireDefault(require("../util/d3-linear"));
var _interval = _interopRequireDefault(require("../util/interval"));
var _strictLimit = _interopRequireDefault(require("../util/strict-limit"));
function d3LinearTickMethod(cfg) {
var min = cfg.min,
max = cfg.max,
tickInterval = cfg.tickInterval,
minLimit = cfg.minLimit,
maxLimit = cfg.maxLimit;
var ticks = (0, _d3Linear.default)(cfg);
if (!(0, _util.isNil)(minLimit) || !(0, _util.isNil)(maxLimit)) {
return (0, _strictLimit.default)(cfg, (0, _util.head)(ticks), (0, _util.last)(ticks));
}
if (tickInterval) {
return (0, _interval.default)(min, max, tickInterval).ticks;
}
return ticks;
}
--- lib/deps/f2-scale/src/tick-method/r-prettry.js (bundled) ---
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = linearPretty;
var _util = require("@antv/util");
var _interval = _interopRequireDefault(require("../util/interval"));
var _pretty = _interopRequireDefault(require("../util/pretty"));
var _strictLimit = _interopRequireDefault(require("../util/strict-limit"));
/**
* 计算线性的 ticks,使用 R's pretty 方法
* @param cfg 度量的配置项
* @returns 计算后的 ticks
*/
function linearPretty(cfg) {
var min = cfg.min,
max = cfg.max,
tickCount = cfg.tickCount,
tickInterval = cfg.tickInterval,
minLimit = cfg.minLimit,
maxLimit = cfg.maxLimit;
var ticks = (0, _pretty.default)(min, max, tickCount).ticks;
if (!(0, _util.isNil)(minLimit) || !(0, _util.isNil)(maxLimit)) {
return (0, _strictLimit.default)(cfg, (0, _util.head)(ticks), (0, _util.last)(ticks));
}
if (tickInterval) {
return (0, _interval.default)(min, max, tickInterval).ticks;
}
return ticks;
}
--- lib/deps/f2-scale/src/tick-method/time-pretty.js (bundled) ---
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = timePretty;
var _time = require("../util/time");
function getYear(date) {
return new Date(date).getFullYear();
}
function createYear(year) {
return new Date(year, 0, 1).getTime();
}
function getMonth(date) {
return new Date(date).getMonth();
}
function diffMonth(min, max) {
var minYear = getYear(min);
var maxYear = getYear(max);
var minMonth = getMonth(min);
var maxMonth = getMonth(max);
return (maxYear - minYear) * 12 + (maxMonth - minMonth) % 12;
}
function creatMonth(year, month) {
return new Date(year, month, 1).getTime();
}
function diffDay(min, max) {
return Math.ceil((max - min) / _time.DAY);
}
function diffHour(min, max) {
return Math.ceil((max - min) / _time.HOUR);
}
function diffMinus(min, max) {
return Math.ceil((max - min) / (60 * 1000));
}
/**
* 计算 time 的 ticks,对 month, year 进行 pretty 处理
* @param cfg 度量的配置项
* @returns 计算后的 ticks
*/
function timePretty(cfg) {
var min = cfg.min,
max = cfg.max,
minTickInterval = cfg.minTickInterval,
tickCount = cfg.tickCount;
var tickInterval = cfg.tickInterval;
var ticks = [];
// 指定 tickInterval 后 tickCount 不生效,需要重新计算
if (!tickInterval) {
tickInterval = (max - min) / tickCount;
// 如果设置了最小间距,则使用最小间距
if (minTickInterval && tickInterval < minTickInterval) {
tickInterval = minTickInterval;
}
}
tickInterval = Math.max(Math.floor((max - min) / (Math.pow(2, 12) - 1)), tickInterval);
var minYear = getYear(min);
// 如果间距大于 1 年,则将开始日期从整年开始
if (tickInterval > _time.YEAR) {
var maxYear = getYear(max);
var yearInterval = Math.ceil(tickInterval / _time.YEAR);
for (var i = minYear; i <= maxYear + yearInterval; i = i + yearInterval) {
ticks.push(createYear(i));
}
} else if (tickInterval > _time.MONTH) {
// 大于月时
var monthInterval = Math.ceil(tickInterval / _time.MONTH);
var mmMoth = getMonth(min);
var dMonths = diffMonth(mi