# Copied from
# https://github.com/plotly/plotly.js/blob/master/src/components/colorscale/scales.js
_plotlyjs_scales = {
    "Greys": [[0, "rgb(0,0,0)"], [1, "rgb(255,255,255)"]],
    "YlGnBu": [
        [0, "rgb(8,29,88)"],
        [0.125, "rgb(37,52,148)"],
        [0.25, "rgb(34,94,168)"],
        [0.375, "rgb(29,145,192)"],
        [0.5, "rgb(65,182,196)"],
        [0.625, "rgb(127,205,187)"],
        [0.75, "rgb(199,233,180)"],
        [0.875, "rgb(237,248,217)"],
        [1, "rgb(255,255,217)"],
    ],
    "Greens": [
        [0, "rgb(0,68,27)"],
        [0.125, "rgb(0,109,44)"],
        [0.25, "rgb(35,139,69)"],
        [0.375, "rgb(65,171,93)"],
        [0.5, "rgb(116,196,118)"],
        [0.625, "rgb(161,217,155)"],
        [0.75, "rgb(199,233,192)"],
        [0.875, "rgb(229,245,224)"],
        [1, "rgb(247,252,245)"],
    ],
    "YlOrRd": [
        [0, "rgb(128,0,38)"],
        [0.125, "rgb(189,0,38)"],
        [0.25, "rgb(227,26,28)"],
        [0.375, "rgb(252,78,42)"],
        [0.5, "rgb(253,141,60)"],
        [0.625, "rgb(254,178,76)"],
        [0.75, "rgb(254,217,118)"],
        [0.875, "rgb(255,237,160)"],
        [1, "rgb(255,255,204)"],
    ],
    "Bluered": [[0, "rgb(0,0,255)"], [1, "rgb(255,0,0)"]],
    # modified RdBu based on
    # http:#www.kennethmoreland.com/color-maps/
    "RdBu": [
        [0, "rgb(5,10,172)"],
        [0.35, "rgb(106,137,247)"],
        [0.5, "rgb(190,190,190)"],
        [0.6, "rgb(220,170,132)"],
        [0.7, "rgb(230,145,90)"],
        [1, "rgb(178,10,28)"],
    ],
    # Scale for non-negative numeric values
    "Reds": [
        [0, "rgb(220,220,220)"],
        [0.2, "rgb(245,195,157)"],
        [0.4, "rgb(245,160,105)"],
        [1, "rgb(178,10,28)"],
    ],
    # Scale for non-positive numeric values
    "Blues": [
        [0, "rgb(5,10,172)"],
        [0.35, "rgb(40,60,190)"],
        [0.5, "rgb(70,100,245)"],
        [0.6, "rgb(90,120,245)"],
        [0.7, "rgb(106,137,247)"],
        [1, "rgb(220,220,220)"],
    ],
    "Picnic": [
        [0, "rgb(0,0,255)"],
        [0.1, "rgb(51,153,255)"],
        [0.2, "rgb(102,204,255)"],
        [0.3, "rgb(153,204,255)"],
        [0.4, "rgb(204,204,255)"],
        [0.5, "rgb(255,255,255)"],
        [0.6, "rgb(255,204,255)"],
        [0.7, "rgb(255,153,255)"],
        [0.8, "rgb(255,102,204)"],
        [0.9, "rgb(255,102,102)"],
        [1, "rgb(255,0,0)"],
    ],
    "Rainbow": [
        [0, "rgb(150,0,90)"],
        [0.125, "rgb(0,0,200)"],
        [0.25, "rgb(0,25,255)"],
        [0.375, "rgb(0,152,255)"],
        [0.5, "rgb(44,255,150)"],
        [0.625, "rgb(151,255,0)"],
        [0.75, "rgb(255,234,0)"],
        [0.875, "rgb(255,111,0)"],
        [1, "rgb(255,0,0)"],
    ],
    "Portland": [
        [0, "rgb(12,51,131)"],
        [0.25, "rgb(10,136,186)"],
        [0.5, "rgb(242,211,56)"],
        [0.75, "rgb(242,143,56)"],
        [1, "rgb(217,30,30)"],
    ],
    "Jet": [
        [0, "rgb(0,0,131)"],
        [0.125, "rgb(0,60,170)"],
        [0.375, "rgb(5,255,255)"],
        [0.625, "rgb(255,255,0)"],
        [0.875, "rgb(250,0,0)"],
        [1, "rgb(128,0,0)"],
    ],
    "Hot": [
        [0, "rgb(0,0,0)"],
        [0.3, "rgb(230,0,0)"],
        [0.6, "rgb(255,210,0)"],
        [1, "rgb(255,255,255)"],
    ],
    "Blackbody": [
        [0, "rgb(0,0,0)"],
        [0.2, "rgb(230,0,0)"],
        [0.4, "rgb(230,210,0)"],
        [0.7, "rgb(255,255,255)"],
        [1, "rgb(160,200,255)"],
    ],
    "Earth": [
        [0, "rgb(0,0,130)"],
        [0.1, "rgb(0,180,180)"],
        [0.2, "rgb(40,210,40)"],
        [0.4, "rgb(230,230,50)"],
        [0.6, "rgb(120,70,20)"],
        [1, "rgb(255,255,255)"],
    ],
    "Electric": [
        [0, "rgb(0,0,0)"],
        [0.15, "rgb(30,0,100)"],
        [0.4, "rgb(120,0,100)"],
        [0.6, "rgb(160,90,0)"],
        [0.8, "rgb(230,200,0)"],
        [1, "rgb(255,250,220)"],
    ],
    "Viridis": [
        [0, "#440154"],
        [0.06274509803921569, "#48186a"],
        [0.12549019607843137, "#472d7b"],
        [0.18823529411764706, "#424086"],
        [0.25098039215686274, "#3b528b"],
        [0.3137254901960784, "#33638d"],
        [0.3764705882352941, "#2c728e"],
        [0.4392156862745098, "#26828e"],
        [0.5019607843137255, "#21918c"],
        [0.5647058823529412, "#1fa088"],
        [0.6274509803921569, "#28ae80"],
        [0.6901960784313725, "#3fbc73"],
        [0.7529411764705882, "#5ec962"],
        [0.8156862745098039, "#84d44b"],
        [0.8784313725490196, "#addc30"],
        [0.9411764705882353, "#d8e219"],
        [1, "#fde725"],
    ],
    "Cividis": [
        [0.000000, "rgb(0,32,76)"],
        [0.058824, "rgb(0,42,102)"],
        [0.117647, "rgb(0,52,110)"],
        [0.176471, "rgb(39,63,108)"],
        [0.235294, "rgb(60,74,107)"],
        [0.294118, "rgb(76,85,107)"],
        [0.352941, "rgb(91,95,109)"],
        [0.411765, "rgb(104,106,112)"],
        [0.470588, "rgb(117,117,117)"],
        [0.529412, "rgb(131,129,120)"],
        [0.588235, "rgb(146,140,120)"],
        [0.647059, "rgb(161,152,118)"],
        [0.705882, "rgb(176,165,114)"],
        [0.764706, "rgb(192,177,109)"],
        [0.823529, "rgb(209,191,102)"],
        [0.882353, "rgb(225,204,92)"],
        [0.941176, "rgb(243,219,79)"],
        [1.000000, "rgb(255,233,69)"],
    ],
}

# Create variable named after each scale that contains the sequence of colors only
for scale_name, scale_pairs in _plotlyjs_scales.items():
    scale_sequence = [c[1] for c in scale_pairs]
    exec(
        "{scale_name} = {scale_sequence}".format(
            scale_name=scale_name, scale_sequence=scale_sequence
        )
    )

# Prefix variable names with _ so that they will not be added to the swatches
_contents = dict(globals())
for _k, _cols in _contents.items():
    if _k.startswith("_") or _k == "swatches" or _k.endswith("_r"):
        continue
    globals()[_k + "_r"] = _cols[::-1]
