Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v0.3.0 #486

Merged
merged 44 commits into from
Aug 22, 2014
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
3d8e00e
Introduce new architecture
masayuki0812 Jun 29, 2014
566f1e2
Define concat in grant task
masayuki0812 Jun 29, 2014
7e59cb1
Refactor
masayuki0812 Jul 22, 2014
c770dad
Refactor
masayuki0812 Jul 26, 2014
d5d85c7
Fix jshint
masayuki0812 Jul 26, 2014
2d676fb
Merge diff to master
masayuki0812 Jul 26, 2014
476aa98
Make arc plugable
masayuki0812 Jul 27, 2014
841f76b
Make subchart plugable
masayuki0812 Jul 27, 2014
c649a1c
Use closure variables for minify
masayuki0812 Jul 27, 2014
f720eb3
Refactor config
masayuki0812 Jul 29, 2014
4fee43b
Refactor for minify
masayuki0812 Jul 30, 2014
7e3d23d
Modify hasType interface
masayuki0812 Jul 31, 2014
07b31a8
Revert "Modify hasType interface"
masayuki0812 Jul 31, 2014
f9b46bb
Revert "Refactor for minify"
masayuki0812 Jul 31, 2014
63edd6d
Ref CLASS key
masayuki0812 Jul 31, 2014
e2a31ff
Refactor hasType
masayuki0812 Jul 31, 2014
39afb5e
Fix trivial
masayuki0812 Jul 31, 2014
6ea5dbc
Fix class ref name
masayuki0812 Jul 31, 2014
47e95ec
Refactor init of internal params
masayuki0812 Jul 31, 2014
6fd0279
Remove inner y axis
masayuki0812 Jul 31, 2014
26638a3
Make plugable legend
masayuki0812 Aug 1, 2014
06f36e0
Make plugble zoom
masayuki0812 Aug 1, 2014
fe5a71a
Separete src files
masayuki0812 Aug 1, 2014
3aae9ba
Fix gauge
masayuki0812 Aug 1, 2014
bc8226a
Fix bugs
masayuki0812 Aug 2, 2014
da90124
Enable additional config
masayuki0812 Aug 4, 2014
3ce01be
Fix trivial
masayuki0812 Aug 4, 2014
a0801cb
Merge master fix
masayuki0812 Aug 9, 2014
1d105c1
Update c3.js and c3.min.js
masayuki0812 Aug 9, 2014
8e9bd1a
Separate axis
masayuki0812 Aug 15, 2014
991edd3
Modularize grid
masayuki0812 Aug 16, 2014
248324d
Fix position of data label on flow
masayuki0812 Aug 16, 2014
2fa6a3b
Remove isFunction
masayuki0812 Aug 16, 2014
1e6867a
Modularize region
masayuki0812 Aug 16, 2014
55c1a2a
Modularize text
masayuki0812 Aug 16, 2014
5ef894a
Modularize bar
masayuki0812 Aug 16, 2014
1669ec4
Fix tick format for timeseries
masayuki0812 Aug 16, 2014
f2f7545
Modularize line, area and circle
masayuki0812 Aug 16, 2014
0516616
Modularize event rect
masayuki0812 Aug 17, 2014
0b4a324
Use bind instead of my function
masayuki0812 Aug 17, 2014
adbfd48
Separate api
masayuki0812 Aug 17, 2014
a6ab889
Modularize api.flow
masayuki0812 Aug 17, 2014
24e06dd
Move transformTo to api.transform.js
masayuki0812 Aug 17, 2014
ae7bc0c
Fix updateSize
masayuki0812 Aug 19, 2014
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Use bind instead of my function
  • Loading branch information
masayuki0812 committed Aug 17, 2014
commit 0b4a32408ea851e4b812f701bb017b4d2c8dafda
218 changes: 121 additions & 97 deletions c3.js

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions c3.min.js

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions src/api.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
c3_chart_fn.focus = function (targetId) {
var $$ = this.internal,
candidates = $$.svg.selectAll($$.selectorTarget(targetId)),
candidatesForNoneArc = candidates.filter(generateCall($$.isNoneArc, $$)),
candidatesForArc = candidates.filter(generateCall($$.isArc, $$));
candidatesForNoneArc = candidates.filter($$.isNoneArc.bind($$)),
candidatesForArc = candidates.filter($$.isArc.bind($$));
function focus(targets) {
$$.filterTargetsToShow(targets).transition().duration(100).style('opacity', 1);
}
Expand All @@ -19,8 +19,8 @@ c3_chart_fn.focus = function (targetId) {
c3_chart_fn.defocus = function (targetId) {
var $$ = this.internal,
candidates = $$.svg.selectAll($$.selectorTarget(targetId)),
candidatesForNoneArc = candidates.filter(generateCall($$.isNoneArc, $$)),
candidatesForArc = candidates.filter(generateCall($$.isArc, $$));
candidatesForNoneArc = candidates.filter($$.isNoneArc.bind($$)),
candidatesForArc = candidates.filter($$.isArc.bind($$));
function defocus(targets) {
$$.filterTargetsToShow(targets).transition().duration(100).style('opacity', 0.3);
}
Expand All @@ -36,8 +36,8 @@ c3_chart_fn.defocus = function (targetId) {
c3_chart_fn.revert = function (targetId) {
var $$ = this.internal,
candidates = $$.svg.selectAll($$.selectorTarget(targetId)),
candidatesForNoneArc = candidates.filter(generateCall($$.isNoneArc, $$)),
candidatesForArc = candidates.filter(generateCall($$.isArc, $$));
candidatesForNoneArc = candidates.filter($$.isNoneArc.bind($$)),
candidatesForArc = candidates.filter($$.isArc.bind($$));
function revert(targets) {
$$.filterTargetsToShow(targets).transition().duration(100).style('opacity', 1);
}
Expand Down
19 changes: 11 additions & 8 deletions src/arc.js
Original file line number Diff line number Diff line change
Expand Up @@ -193,14 +193,17 @@ c3_chart_internal_fn.descByStartAngle = function (a, b) {
};

c3_chart_internal_fn.updateTargetsForArc = function (targets) {
var $$ = this, main = $$.main, mainPieUpdate, mainPieEnter;
var $$ = this, main = $$.main,
mainPieUpdate, mainPieEnter,
classChartArc = $$.classChartArc.bind($$),
classArcs = $$.classArcs.bind($$);
mainPieUpdate = main.select('.' + CLASS[_chartArcs]).selectAll('.' + CLASS[_chartArc])
.data($$.pie(targets))
.attr("class", generateCall($$.classChartArc, $$));
.attr("class", classChartArc);
mainPieEnter = mainPieUpdate.enter().append("g")
.attr("class", generateCall($$.classChartArc, $$));
.attr("class", classChartArc);
mainPieEnter.append('g')
.attr('class', generateCall($$.classArcs, $$));
.attr('class', classArcs);
mainPieEnter.append("text")
.attr("dy", $$.hasType('gauge') ? "-0.35em" : ".35em")
.style("opacity", 0)
Expand All @@ -225,9 +228,9 @@ c3_chart_internal_fn.redrawArc = function (duration, durationForExit, withTransf
var $$ = this, d3 = $$.d3, config = $$.config, main = $$.main,
mainArc;
mainArc = main.selectAll('.' + CLASS[_arcs]).selectAll('.' + CLASS[_arc])
.data(generateCall($$.arcData, $$));
.data($$.arcData.bind($$));
mainArc.enter().append('path')
.attr("class", generateCall($$.classArc, $$))
.attr("class", $$.classArc.bind($$))
.style("fill", function (d) { return $$.color(d.data); })
.style("cursor", function (d) { return config[__data_selection_isselectable](d) ? "pointer" : null; })
.style("opacity", 0)
Expand Down Expand Up @@ -314,8 +317,8 @@ c3_chart_internal_fn.redrawArc = function (duration, durationForExit, withTransf
main.selectAll('.' + CLASS[_chartArc]).select('text')
.style("opacity", 0)
.attr('class', function (d) { return $$.isGaugeType(d.data) ? CLASS[_gaugeValue] : ''; })
.text(generateCall($$.textForArcLabel, $$))
.attr("transform", generateCall($$.transformForArcLabel, $$))
.text($$.textForArcLabel.bind($$))
.attr("transform", $$.transformForArcLabel.bind($$))
.transition().duration(duration)
.style("opacity", function (d) { return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0; });
main.select('.' + CLASS[_chartArcsTitle])
Expand Down
30 changes: 15 additions & 15 deletions src/axis.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ c3_chart_internal_fn.initAxis = function () {
$$.axes.x.append("text")
.attr("class", CLASS[_axisXLabel])
.attr("transform", config[__axis_rotated] ? "rotate(-90)" : "")
.style("text-anchor", generateCall($$.textAnchorForXAxisLabel, $$));
.style("text-anchor", $$.textAnchorForXAxisLabel.bind($$));

$$.axes.y = main.append("g")
.attr("class", CLASS[_axis] + ' ' + CLASS[_axisY])
Expand All @@ -18,7 +18,7 @@ c3_chart_internal_fn.initAxis = function () {
$$.axes.y.append("text")
.attr("class", CLASS[_axisYLabel])
.attr("transform", config[__axis_rotated] ? "" : "rotate(-90)")
.style("text-anchor", generateCall($$.textAnchorForYAxisLabel, $$));
.style("text-anchor", $$.textAnchorForYAxisLabel.bind($$));

$$.axes.y2 = main.append("g")
.attr("class", CLASS[_axis] + ' ' + CLASS[_axisY2])
Expand All @@ -28,7 +28,7 @@ c3_chart_internal_fn.initAxis = function () {
$$.axes.y2.append("text")
.attr("class", CLASS[_axisY2Label])
.attr("transform", config[__axis_rotated] ? "" : "rotate(-90)")
.style("text-anchor", generateCall($$.textAnchorForY2AxisLabel, $$));
.style("text-anchor", $$.textAnchorForY2AxisLabel.bind($$));
};
c3_chart_internal_fn.getXAxis = function (scale, orient, tickFormat, tickValues) {
var $$ = this, config = $$.config,
Expand Down Expand Up @@ -265,20 +265,20 @@ c3_chart_internal_fn.updateAxisLabels = function (withTransition) {
axisYLabel = $$.main.select('.' + CLASS[_axisY] + ' .' + CLASS[_axisYLabel]),
axisY2Label = $$.main.select('.' + CLASS[_axisY2] + ' .' + CLASS[_axisY2Label]);
(withTransition ? axisXLabel.transition() : axisXLabel)
.attr("x", generateCall($$.xForXAxisLabel, $$))
.attr("dx", generateCall($$.dxForXAxisLabel, $$))
.attr("dy", generateCall($$.dyForXAxisLabel, $$))
.text(generateCall($$.textForXAxisLabel, $$));
.attr("x", $$.xForXAxisLabel.bind($$))
.attr("dx", $$.dxForXAxisLabel.bind($$))
.attr("dy", $$.dyForXAxisLabel.bind($$))
.text($$.textForXAxisLabel.bind($$));
(withTransition ? axisYLabel.transition() : axisYLabel)
.attr("x", generateCall($$.xForYAxisLabel, $$))
.attr("dx", generateCall($$.dxForYAxisLabel, $$))
.attr("dy", generateCall($$.dyForYAxisLabel, $$))
.text(generateCall($$.textForYAxisLabel, $$));
.attr("x", $$.xForYAxisLabel.bind($$))
.attr("dx", $$.dxForYAxisLabel.bind($$))
.attr("dy", $$.dyForYAxisLabel.bind($$))
.text($$.textForYAxisLabel.bind($$));
(withTransition ? axisY2Label.transition() : axisY2Label)
.attr("x", generateCall($$.xForY2AxisLabel, $$))
.attr("dx", generateCall($$.dxForY2AxisLabel, $$))
.attr("dy", generateCall($$.dyForY2AxisLabel, $$))
.text(generateCall($$.textForY2AxisLabel, $$));
.attr("x", $$.xForY2AxisLabel.bind($$))
.attr("dx", $$.dxForY2AxisLabel.bind($$))
.attr("dy", $$.dyForY2AxisLabel.bind($$))
.text($$.textForY2AxisLabel.bind($$));
};

c3_chart_internal_fn.getAxisPadding = function (padding, key, defaultValue, all) {
Expand Down
30 changes: 15 additions & 15 deletions src/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -404,9 +404,9 @@ c3_chart_internal_fn.redraw = function (options, transitions) {
var drawArea, drawBar, drawLine, xForText, yForText;
var duration, durationForExit, durationForAxis, waitForDraw;
var targetsToShow = $$.filterTargetsToShow($$.data.targets), tickValues, i, intervalForCulling;
var xv = generateCall($$.xv, $$),
cx = generateCall($$.config[__axis_rotated] ? $$.circleY : $$.circleX, $$),
cy = generateCall($$.config[__axis_rotated] ? $$.circleX : $$.circleY, $$);
var xv = $$.xv.bind($$),
cx = ($$.config[__axis_rotated] ? $$.circleY : $$.circleX).bind($$),
cy = ($$.config[__axis_rotated] ? $$.circleX : $$.circleY).bind($$);

options = options || {};
withY = getOption(options, "withY", true);
Expand Down Expand Up @@ -536,7 +536,7 @@ c3_chart_internal_fn.redraw = function (options, transitions) {

// circles for select
main.selectAll('.' + CLASS[_selectedCircles])
.filter(generateCall($$.isBarType, $$))
.filter($$.isBarType.bind($$))
.selectAll('circle')
.remove();

Expand Down Expand Up @@ -676,12 +676,12 @@ c3_chart_internal_fn.redraw = function (options, transitions) {
.attr('transform', null)
.attr('x', xForText)
.attr('y', yForText)
.style('fill-opacity', generateCall($$.opacityForText, $$));
.style('fill-opacity', $$.opacityForText.bind($$));
mainRegion
.attr('transform', null);
mainRegion.select('rect').filter($$.isRegionOnX)
.attr("x", generateCall($$.regionX, $$))
.attr("width", generateCall($$.regionWidth, $$));
.attr("x", $$.regionX.bind($$))
.attr("width", $$.regionWidth.bind($$));
$$.updateEventRect();

// callback for end of flow
Expand Down Expand Up @@ -831,15 +831,15 @@ c3_chart_internal_fn.updateSvgSize = function () {
.attr('width', $$.width)
.attr('height', $$.height);
$$.svg.select('#' + $$.clipIdForXAxis).select('rect')
.attr('x', generateCall($$.getXAxisClipX, $$))
.attr('y', generateCall($$.getXAxisClipY, $$))
.attr('width', generateCall($$.getXAxisClipWidth, $$))
.attr('height', generateCall($$.getXAxisClipHeight, $$));
.attr('x', $$.getXAxisClipX.bind($$))
.attr('y', $$.getXAxisClipY.bind($$))
.attr('width', $$.getXAxisClipWidth.bind($$))
.attr('height', $$.getXAxisClipHeight.bind($$));
$$.svg.select('#' + $$.clipIdForYAxis).select('rect')
.attr('x', generateCall($$.getYAxisClipX, $$))
.attr('y', generateCall($$.getYAxisClipY, $$))
.attr('width', generateCall($$.getYAxisClipWidth, $$))
.attr('height', generateCall($$.getYAxisClipHeight, $$));
.attr('x', $$.getYAxisClipX.bind($$))
.attr('y', $$.getYAxisClipY.bind($$))
.attr('width', $$.getYAxisClipWidth.bind($$))
.attr('height', $$.getYAxisClipHeight.bind($$));
$$.svg.select('.' + CLASS[_zoomRect])
.attr('width', $$.width)
.attr('height', $$.height);
Expand Down
13 changes: 7 additions & 6 deletions src/grid.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ c3_chart_internal_fn.redrawGrid = function (duration, withY) {
.attr('dy', -5)
.style("opacity", 0);
// update
yv = generateCall($$.yv, $$);
yv = $$.yv.bind($$);
$$.ygridLines.select('line')
.transition().duration(duration)
.attr("x1", config[__axis_rotated] ? yv : 0)
Expand All @@ -130,7 +130,7 @@ c3_chart_internal_fn.redrawGrid = function (duration, withY) {
}
};
c3_chart_internal_fn.addTransitionForGrid = function (transitions) {
var $$ = this, config = $$.config, xv = generateCall($$.xv, $$);
var $$ = this, config = $$.config, xv = $$.xv.bind($$);
transitions.push($$.xgridLines.select('line').transition()
.attr("x1", config[__axis_rotated] ? 0 : xv)
.attr("x2", config[__axis_rotated] ? $$.width : xv)
Expand All @@ -145,16 +145,17 @@ c3_chart_internal_fn.addTransitionForGrid = function (transitions) {
};
c3_chart_internal_fn.showXGridFocus = function (selectedData) {
var $$ = this, config = $$.config,
dataToShow = selectedData.filter(function (d) { return d && isValue(d.value); });
dataToShow = selectedData.filter(function (d) { return d && isValue(d.value); }),
focusEl = $$.main.selectAll('line.' + CLASS[_xgridFocus]),
xx = $$.xx.bind($$);
if (! config[__tooltip_show]) { return; }
// Hide when scatter plot exists
if ($$.hasType('scatter') || $$.hasArcType()) { return; }
var focusEl = $$.main.selectAll('line.' + CLASS[_xgridFocus]);
focusEl
.style("visibility", "visible")
.data([dataToShow[0]])
.attr(config[__axis_rotated] ? 'y1' : 'x1', generateCall($$.xx, $$))
.attr(config[__axis_rotated] ? 'y2' : 'x2', generateCall($$.xx, $$));
.attr(config[__axis_rotated] ? 'y1' : 'x1', xx)
.attr(config[__axis_rotated] ? 'y2' : 'x2', xx);
$$.smoothLines(focusEl, 'grid');
};
c3_chart_internal_fn.hideXGridFocus = function () {
Expand Down
2 changes: 1 addition & 1 deletion src/interaction.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ c3_chart_internal_fn.updateEventRect = function (eventRectUpdate) {
c3_chart_internal_fn.generateEventRectsForSingleX = function (eventRectEnter) {
var $$ = this, d3 = $$.d3, config = $$.config;
eventRectEnter.append("rect")
.attr("class", generateCall($$.classEvent, $$))
.attr("class", $$.classEvent.bind($$))
.style("cursor", config[__data_selection_enabled] && config[__data_selection_grouped] ? "pointer" : null)
.on('mouseover', function (d) {
var index = d.index, selectedData, newData;
Expand Down
16 changes: 10 additions & 6 deletions src/region.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,24 @@ c3_chart_internal_fn.redrawRegion = function (duration) {
$$.mainRegion = $$.main.select('.' + CLASS[_regions]).selectAll('.' + CLASS[_region])
.data(config[__regions]);
$$.mainRegion.enter().append('g')
.attr('class', generateCall($$.classRegion, $$))
.attr('class', $$.classRegion.bind($$))
.append('rect')
.style("fill-opacity", 0);
$$.mainRegion.exit().transition().duration(duration)
.style("opacity", 0)
.remove();
};
c3_chart_internal_fn.addTransitionForRegion = function (transitions) {
var $$ = this;
var $$ = this,
x = $$.regionX.bind($$),
y = $$.regionY.bind($$),
w = $$.regionWidth.bind($$),
h = $$.regionHeight.bind($$);
transitions.push($$.mainRegion.selectAll('rect').transition()
.attr("x", generateCall($$.regionX, $$))
.attr("y", generateCall($$.regionY, $$))
.attr("width", generateCall($$.regionWidth, $$))
.attr("height", generateCall($$.regionHeight, $$))
.attr("x", x)
.attr("y", y)
.attr("width", w)
.attr("height", h)
.style("fill-opacity", function (d) { return isValue(d.opacity) ? d.opacity : 0.1; }));
};
c3_chart_internal_fn.regionX = function (d) {
Expand Down
8 changes: 4 additions & 4 deletions src/selection.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
c3_chart_internal_fn.selectPoint = function (target, d, i) {
var $$ = this, config = $$.config,
cx = generateCall(config[__axis_rotated] ? $$.circleY : $$.circleX, $$),
cy = generateCall(config[__axis_rotated] ? $$.circleX : $$.circleY, $$);

cx = (config[__axis_rotated] ? $$.circleY : $$.circleX).bind($$),
cy = (config[__axis_rotated] ? $$.circleX : $$.circleY).bind($$),
r = $$.pointSelectR.bind($$);
config[__data_onselected].call($$.api, d, target.node());
// add selected-circle on low layer g
$$.main.select('.' + CLASS[_selectedCircles] + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS[_selectedCircle] + '-' + i)
Expand All @@ -14,7 +14,7 @@ c3_chart_internal_fn.selectPoint = function (target, d, i) {
.attr("stroke", function () { return $$.color(d); })
.attr("r", function (d) { return $$.pointSelectR(d) * 1.4; })
.transition().duration(100)
.attr("r", generateCall($$.pointSelectR, $$));
.attr("r", r);
};
c3_chart_internal_fn.unselectPoint = function (target, d, i) {
var $$ = this;
Expand Down
16 changes: 10 additions & 6 deletions src/shape.bar.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,19 @@ c3_chart_internal_fn.updateTargetsForBar = function (targets) {

};
c3_chart_internal_fn.redrawBar = function (durationForExit) {
var $$ = this, CLASS = $$.CLASS;
var $$ = this, CLASS = $$.CLASS,
barData = $$.barData.bind($$),
classBar = $$.classBar.bind($$),
initialOpacity = $$.initialOpacity.bind($$),
color = function (d) { return $$.color(d.id); };
$$.mainBar = $$.main.selectAll('.' + CLASS[_bars]).selectAll('.' + CLASS[_bar])
.data(generateCall($$.barData, $$));
.data(barData);
$$.mainBar.enter().append('path')
.attr("class", generateCall($$.classBar, $$))
.style("stroke", function (d) { return $$.color(d.id); })
.style("fill", function (d) { return $$.color(d.id); });
.attr("class", classBar)
.style("stroke", color)
.style("fill", color);
$$.mainBar
.style("opacity", generateCall($$.initialOpacity, $$));
.style("opacity", initialOpacity);
$$.mainBar.exit().transition().duration(durationForExit)
.style('opacity', 0)
.remove();
Expand Down
10 changes: 6 additions & 4 deletions src/shape.line.js
Original file line number Diff line number Diff line change
Expand Up @@ -306,17 +306,19 @@ c3_chart_internal_fn.getCircles = function (i, id) {
return (id ? $$.main.selectAll('.' + CLASS[_circles] + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS[_circle] + (isValue(i) ? '-' + i : ''));
};
c3_chart_internal_fn.expandCircles = function (i, id) {
var $$ = this;
var $$ = this,
r = $$.pointExpandedR.bind($$);
$$.getCircles(i, id)
.classed(CLASS[_EXPANDED], true)
.attr('r', generateCall($$.pointExpandedR, $$));
.attr('r', r);
};
c3_chart_internal_fn.unexpandCircles = function (i) {
var $$ = this;
var $$ = this,
r = $$.pointR.bind($$);
$$.getCircles(i)
.filter(function () { return $$.d3.select(this).classed(CLASS[_EXPANDED]); })
.classed(CLASS[_EXPANDED], false)
.attr('r', generateCall($$.pointR, $$));
.attr('r', r);
};
c3_chart_internal_fn.pointR = function (d) {
var $$ = this, config = $$.config;
Expand Down
Loading