{"version":3,"file":"stylesheets/5271.css?h=74708e74bfbe8bda2b2c","mappings":"AACA,yBACI,qDACA,qGACA,UACA,SACA,4BACI,gBACA,kCACI,2BAEJ,iCACI,kBCXZ,oBAEI,4EACA,gBCHJ,0CDCI,qDACA,4BCEA,CAJJ,sBAEI,wEACA,kCACA,8CAEA,iCACI,YACA,iBAGJ,mCACI,qDACA,qGACA,kCACA,iEACA,QACA,WACA,wBAEA,yCACI,iBAGJ,yCACI,mDACA,YACA,0CACA,gBAEJ,0CACI,oCACA,6BACA,YACA,WACA,eAEA,8CACI,sBCtChB,kBACI,mDAEA,yBACI,qDACA,qGACA,gBACA,MACA,yCACA,iBACA,0CACA,kBAEA,kDACI,mDAEJ,sCACI,WACA,YACA,YACA,6BACA,eAGR,4CAEI,4EACA,6EACA,kBACA,yBAGR,gEAPQ,qDACA,4BAUJ,CAJJ,oBAEI,wEACA,kCACA,gBAEA,uCACI,qDACA,yGACA,YACA,iBACA,8BACA,6BACA,sBACA,iBACA,YACA,eAEA,gDACI,0CACA,oCACA,gBAEJ,gDACI,eAEJ,2CACI,cAEJ,4CACI,WACA,gBACA,oBACA,qBACA,4BClEZ,mBACI,kBACA,iDACI,eAGR,wBACI,gBACA,gBACA,uCACI,WAEJ,mCACI,gBAEJ,4BACI,sBAEJ,6BACI,wBACA,qBACA,gBACA,uBACA,YACA,mBACA,mBCzBR,uCACI,qDACA,qGACA,YACA,qEACI,gBACA,gBACA,gBACA,iBACA,kBACA,gDACA,gBAKR,wBACI,qEACI,cAGR,wBACI,qEACI,gBACA,iBCxBR,+BACI,cACA,eACA,sCACI,cACA,YAEJ,oCACI,oDACA,0CACA,iBACA,qBACA,eACA,iBACA,gBACA,yBACA,gBACA,uBACA,iBACA,sBACA,mBCmOR,wBACA,qBACA,CCtPI,+DACI,eAIR,kDACI,UACA,gBACA,0CAEI,sEACI,mDAEJ,uDACI,cACA,YAEJ,2DACI,sCAKZ,0DACI,UACA,gBACA,0CAEI,8EACI,mDAGJ,mEACI,sCAEJ,+DACI,cACA,YAKZ,uDACI,eACA,iBACA,uBACA,wBAGI,6DACI,iBCtCE,CDqCN,gEACI,oBCtCE,CDqCN,oEACI,oBCtCE,CDqCN,oEACI,oBCtCE,CDqCN,kEACI,oBCtCE,CDqCN,iEACI,oBCtCE,CDqCN,gEACI,oBCtCE,CDqCN,+DACI,oBCtCE,CDqCN,+DACI,oBCtCE,CDqCN,mEACI,oBCtCE,CDqCN,mEACI,oBCtCE,CDqCN,wEACI,oBCtCE,CDqCN,kEACI,oBCtCE,CDqCN,oEACI,oBCtCE,CDqCN,qEACI,oBCtCE,CDqCN,mEACI,oBCtCE,CD0CV,wHAEI,mBAMA,6FACI","sources":["webpack://@studip/core/./resources/vue/components/file-chooser/FileChooserBreadcrumb.vue","webpack://@studip/core/./resources/vue/components/file-chooser/FileChooserEmpty.vue","webpack://@studip/core/./resources/vue/components/file-chooser/FileChooserToolbar.vue","webpack://@studip/core/./resources/vue/components/file-chooser/FileChooserBox.vue","webpack://@studip/core/./resources/vue/components/file-chooser/FileChooserTree.vue","webpack://@studip/core/./resources/vue/components/file-chooser/FileChooserDialog.vue","webpack://@studip/core/./resources/vue/components/StudipFileChooser.vue","webpack://@studip/core/./resources/vue/components/StudipIdentImage.vue","webpack://@studip/core/./resources/assets/stylesheets/scss/courseware/blocks/table-of-contents.scss","webpack://@studip/core/./resources/assets/stylesheets/scss/courseware/variables.scss"],"sourcesContent":["\n.file-chooser-breadcrumb {\n    display: flex;\n    flex-direction: row;\n    padding: 0;\n    margin: 0;\n    li {\n        list-style: none;\n        a img {\n            vertical-align: text-bottom;\n        }\n        span {\n            padding: 0 4px 0 0;\n        }\n    }\n}\n","\n.file-chooser-empty {\n    display: flex;\n    flex-direction: column;\n    margin: 1em auto;\n}\n","\n.file-chooser-toolbar {\n    display: flex;\n    flex-direction: row;\n    flex-wrap: wrap;\n    border-top: solid thin var(--content-color-40);\n\n    &.with-table {\n        border: none;\n        margin-top: -16px;\n    }\n\n    .inline-form {\n        display: flex;\n        flex-direction: row;\n        flex-wrap: wrap;\n        justify-content: start;\n        gap: 4px;\n        width: 100%;\n        margin: 0.8em 0.6em 0.8em 0;\n\n        label {\n            line-height: 30px;\n        }\n\n        input {\n            flex-grow: 1;\n            padding: 4px;\n            border: solid thin var(--content-color-40);\n            border-radius: 0;\n        }\n        button {\n            border: solid thin var(--base-color);\n            background-color: transparent;\n            height: 30px;\n            width: 30px;\n            cursor: pointer;\n\n            img {\n                vertical-align: middle;\n            }\n        }\n    }\n}\n","\n.file-chooser-box {\n    flex-grow: 1;\n\n    header {\n        display: flex;\n        flex-direction: row;\n        position: sticky;\n        top: 0;\n        background-color: var(--content-color-20);\n        padding: 0.5em 1em;\n        border: solid thin var(--content-color-40);\n        margin-bottom: 1em;\n\n        .file-chooser-breadcrumb {\n            flex-grow: 1;\n        }\n        .toggle-view {\n            width: 20px;\n            height: 20px;\n            border: none;\n            background-color: transparent;\n            cursor: pointer;\n        }\n    }\n    .file-chooser-box-content {\n        display: flex;\n        flex-direction: column;\n        justify-content: space-between;\n        overflow-y: scroll;\n        height: calc(100% - 36px);\n    }\n}\n.file-chooser-items {\n    display: flex;\n    flex-direction: row;\n    flex-wrap: wrap;\n    overflow-y: auto;\n\n    .file-chooser-item {\n        display: flex;\n        flex-direction: column;\n        width: 104px;\n        min-height: 104px;\n        border: solid thin transparent;\n        background-color: transparent;\n        word-break: break-word;\n        margin: 0 4px 4px 4px;\n        padding: 4px;\n        cursor: pointer;\n\n        &.selected {\n            background-color: var(--activity-color-20);\n            border: solid thin var(--base-color);\n            font-weight: 700;\n        }\n        &.disabled {\n            cursor: default;\n        }\n        img {\n            margin: 0 auto;\n        }\n        span {\n            width: 100%;\n            overflow: hidden;\n            display: -webkit-box;\n            -webkit-line-clamp: 2;\n            -webkit-box-orient: vertical;\n        }\n    }\n}\n","\n.file-chooser-tree {\n    padding-left: 18px;\n    &.file-chooser-tree-first-level {\n        padding-left: 0;\n    }\n}\n.file-chooser-tree-item {\n    list-style: none;\n    padding: 2px 0 0 0;\n    .folder-toggle {\n        width: 16px;\n    }\n    a.selected {\n        font-weight: 700;\n    }\n    img {\n        vertical-align: middle;\n    }\n    span {\n        width: calc(100% - 46px);\n        display: inline-block;\n        overflow: hidden;\n        text-overflow: ellipsis;\n        height: 16px;\n        white-space: nowrap;\n        vertical-align: sub;\n    }\n}\n","\n.file-chooser-content {\n    display: flex;\n    flex-direction: row;\n    height: 100%;\n    .file-chooser-folder-selector {\n        min-width: 270px;\n        max-width: 270px;\n        list-style: none;\n        margin: 0 1em 0 0;\n        padding: 0 1em 0 0;\n        border-right: solid thin var(--content-color-40);\n        overflow-y: auto;\n    }\n}\n\n\n@media (max-width: 580px) {\n    .file-chooser-content .file-chooser-folder-selector {\n        display: none;\n    }\n}\n@media (max-width: 768px) {\n    .file-chooser-content .file-chooser-folder-selector {\n        min-width: 130px;\n        max-width: 130px;\n    }\n}\n\n","\n.file-chooser {\n    text-indent: 0;\n    max-width: 48em;\n    button {\n        margin: 0.5ex 0 0.5ex 0;\n        width: 150px;\n    }\n    span {\n        box-sizing: border-box;\n        border: solid thin var(--content-color-40);\n        border-left: none;\n        display: inline-block;\n        font-size: 14px;\n        line-height: 130%;\n        min-width: 100px;\n        width: calc(100% - 150px);\n        overflow: hidden;\n        text-overflow: ellipsis;\n        padding: 5px 15px;\n        vertical-align: middle;\n        white-space: nowrap;\n    }\n}\n","<template>\n    <canvas v-show=\"showCanvas\" ref=\"canvas\"></canvas>\n</template>\n\n<script>\nexport default {\n    name: 'studip-ident-image',\n    props: {\n        value: {\n            type: String,\n        },\n        showCanvas: {\n            type: Boolean,\n            default: false,\n        },\n        baseColor: {\n            type: String, // hex color\n        },\n        pattern: {\n            type: String,\n            required: true,\n        },\n        width: {\n            type: Number,\n            default: 1080,\n        },\n        height: {\n            type: Number,\n            default: 720,\n        },\n        shapesMin: {\n            type: Number,\n            default: 5,\n        },\n        shapesMax: {\n            type: Number,\n            default: 8,\n        },\n    },\n    data() {\n        return {\n            random: null,\n            ellipse: null,\n        };\n    },\n    methods: {\n        randint(min, max) {\n            return Math.floor(this.random() * (max - min) + min);\n        },\n        renderIdentimage() {\n            let canvas = this.$refs.canvas;\n            canvas.width = this.width;\n            canvas.height = this.height;\n\n            const minSize = Math.min(this.width, this.height) * 0.2;\n            const ctx = canvas.getContext('2d');\n            const backgroundHSL = this.hexToHSL(this.baseColor);\n            const numShape = this.randint(this.shapesMin, this.shapesMax);\n            const shapeSizes = [];\n\n            ctx.fillStyle = this.hexToRgbA(this.baseColor, 0.8);\n            ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n            const curveStart = this.randint(10, 70)/100 * this.height;\n            const curveEnd = this.randint(10, 70)/100 * this.height;\n            ctx.strokeStyle = `rgba(255, 255, 255, ${this.randint(50, 70) / 100})`;\n            const curvedistance = this.randint(20, 40);\n            const xFactor = this.randint(10, 45) / 100;\n            const yFactor = this.randint(10, 45) / 100;\n            for (let c = 0; c < numShape * 2; c++) {\n                ctx.beginPath();\n                ctx.moveTo(0, curveStart + curvedistance * c);\n                ctx.bezierCurveTo(this.width * xFactor, this.height * yFactor, this.width * (xFactor + 0.5), this.height * (yFactor + 0.5), this.width, curveEnd + curvedistance * c);\n                ctx.stroke();\n            }\n\n            for (let i = 0; i < numShape; i++) {\n                shapeSizes.push(this.randint(minSize*0.2, minSize*2) + minSize);\n            }\n\n            shapeSizes.sort((a, b) => {\n                return a < b ? 1 : a > b ? -1 : 0;\n            });\n\n            shapeSizes.forEach((shapeSizes, index) => {\n                const radius = shapeSizes / 2;\n                const [x, y] = this.createPointInEllipse(ctx);\n                const x_center = x * (this.width + radius / 2) - radius / 4;\n                const y_center = y * (this.height + radius / 2) - radius / 4;\n\n                ctx.fillStyle = `rgba(255, 255, 255, ${this.randint(10, 80) / 100})`;\n\n                ctx.beginPath();\n\n                if (index % 2 === 0) {\n                    ctx.arc(x_center, y_center, radius, 0, 2 * Math.PI);\n                } else {\n                    const size = radius;\n                    ctx.moveTo(x_center + size * Math.cos(0), y_center + size * Math.sin(0));\n\n                    for (let side = 0; side < 7; side++) {\n                        ctx.lineTo(\n                            x_center + size * Math.cos((side * 2 * Math.PI) / 6),\n                            y_center + size * Math.sin((side * 2 * Math.PI) / 6)\n                        );\n                    }\n                }\n\n                ctx.fill();\n            });\n\n            this.$emit('input', canvas.toDataURL());\n        },\n        createPointInEllipse(ctx) {\n            const x = this.random();\n            const y = this.random();\n\n            if (ctx.isPointInPath(this.ellipse, x, y)) {\n                return [x, y];\n            }\n\n            return this.createPointInEllipse(...arguments);\n        },\n\n        cyrb128(value) {\n            let h1 = 1779033703,\n                h2 = 3144134277,\n                h3 = 1013904242,\n                h4 = 2773480762;\n\n            for (let i = 0, k; i < value.length; i++) {\n                k = value.charCodeAt(i);\n                h1 = h2 ^ Math.imul(h1 ^ k, 597399067);\n                h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);\n                h3 = h4 ^ Math.imul(h3 ^ k, 951274213);\n                h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);\n            }\n\n            h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067);\n            h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233);\n            h3 = Math.imul(h1 ^ (h3 >>> 17), 951274213);\n            h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179);\n\n            return [(h1 ^ h2 ^ h3 ^ h4) >>> 0, (h2 ^ h1) >>> 0, (h3 ^ h1) >>> 0, (h4 ^ h1) >>> 0];\n        },\n        sfc32(a, b, c, d) {\n            return function () {\n                a >>>= 0;\n                b >>>= 0;\n                c >>>= 0;\n                d >>>= 0;\n                var t = (a + b) | 0;\n                a = b ^ (b >>> 9);\n                b = (c + (c << 3)) | 0;\n                c = (c << 21) | (c >>> 11);\n                d = (d + 1) | 0;\n                t = (t + d) | 0;\n                c = (c + t) | 0;\n\n                return (t >>> 0) / 4294967296;\n            };\n        },\n\n        hexToRGB(color) {\n            color = color.slice(1); // remove #\n            let val = parseInt(color, 16);\n            let r = val >> 16;\n            let g = (val >> 8) & 0x00ff;\n            let b = val & 0x0000ff;\n\n            if (g > 255) {\n                g = 255;\n            } else if (g < 0) {\n                g = 0;\n            }\n            if (b > 255) {\n                b = 255;\n            } else if (b < 0) {\n                b = 0;\n            }\n\n            return { r: r, g: g, b: b };\n        },\n        RGBToHSL(r, g, b) {\n            r /= 255;\n            g /= 255;\n            b /= 255;\n\n            let cmin = Math.min(r, g, b),\n                cmax = Math.max(r, g, b),\n                delta = cmax - cmin,\n                h = 0,\n                s = 0,\n                l = 0;\n            if (delta == 0) h = 0;\n            // Red is max\n            else if (cmax == r) h = ((g - b) / delta) % 6;\n            // Green is max\n            else if (cmax == g) h = (b - r) / delta + 2;\n            // Blue is max\n            else h = (r - g) / delta + 4;\n\n            h = Math.round(h * 60);\n\n            if (h < 0) h += 360;\n            l = (cmax + cmin) / 2;\n\n            s = delta == 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));\n\n            s = +(s * 100).toFixed(1);\n            l = +(l * 100).toFixed(1);\n\n            return { h: h, s: s, l: l };\n            // return 'hsl(' + h + ',' + s + '%,' + l + '%)';\n        },\n        hexToHSL(color) {\n            const RGB = this.hexToRGB(color);\n            return this.RGBToHSL(RGB.r, RGB.g, RGB.b);\n        },\n        hexToRgbA(hex, a){\n            const RGB = this.hexToRGB(hex);\n\n            return 'rgba(' + RGB.r + ',' + RGB.g + ',' + RGB.b + ',' + a +')';\n        },\n        init() {\n            const seed = this.cyrb128(this.pattern);\n            this.random = this.sfc32(...seed);\n            this.ellipse = new Path2D();\n            this.ellipse.ellipse(0.5, 0.5, 0.5, 0.5, 0, 0, Math.PI * 2);\n            this.renderIdentimage();\n        }\n    },\n    mounted() {\n        this.init();\n    },\n    watch: {\n        baseColor() {\n            this.init();\n        },\n    },\n};\n</script>\n<style scoped>\n  canvas {\n    background-color: #fff;\n  }\n</style>\n","@use '../../../mixins.scss' as *;\n@import '../variables.scss';\n\n.cw-block-table-of-contents {\n    .cw-block-content {\n        overflow: unset;\n    }\n}\n\n.cw-block-table-of-contents-list {\n    padding: 0;\n    list-style: none;\n    border: solid thin var(--content-color-40);\n    li {\n        &:not(:last-child) {\n            border-bottom: solid thin var(--dark-gray-color-30);\n        }\n        a {\n            display: block;\n            padding: 1em;\n        }\n        &:hover {\n            background-color: fade-out($dark-gray-color-75, 0.8);\n        }\n    }\n}\n\n.cw-block-table-of-contents-list-details {\n    padding: 0;\n    list-style: none;\n    border: solid thin var(--content-color-40);\n    li {\n        &:not(:last-child) {\n            border-bottom: solid thin var(--dark-gray-color-30);\n        }\n\n        &:hover {\n            background-color: fade-out($dark-gray-color-75, 0.8);\n        }\n        a {\n            display: block;\n            padding: 1em;\n        }\n    }\n}\n\n.cw-block-table-of-contents-title-box {\n    min-height: 3em;\n    padding-left: 1em;\n    border-left-width: 10px;\n    border-left-style: solid;\n\n    @each $name, $color in $tile-colors {\n        &.#{'' + $name} {\n            border-color: $color;\n        }\n    }\n\n    p,\n    p:hover {\n        color: var(--black);\n    }\n}\n\n.cw-container-colspan-half {\n    .cw-block-table-of-contents-tiles.cw-tiles {\n        .tile {\n            width: 267px;\n        }\n    }\n}\n","$element-icons: (\n    content: content2,\n    draft: category-draft,\n    task: category-task,\n    template: category-template,\n    oer: oer-campus,\n    other: category-others,\n    portfolio: category-portfolio\n);\n\n$tree-item-flag-icons: (\n    date: date,\n    write: community,\n    cant-read: lock-locked2,\n);\n\n$tile-colors: (\n    black: #000,\n    charcoal: #3c454e,\n    royal-purple: #8656a2,\n    iguana-green: #66b570,\n    queen-blue: #536d96,\n    verdigris: #41afaa,\n    mulberry: #bf5796,\n    pumpkin: #f26e00,\n    sunglow: #ffca5c,\n    apple-green: #8bbd40,\n    studip-blue: #28497c,\n    studip-lightblue: #e7ebf1,\n    studip-red: #d60000,\n    studip-green: #008512,\n    studip-yellow: #ffbd33,\n    studip-gray: #636a71,\n);\n\n$icon-colors:(\n    icon-white: #ffffff,\n    icon-black: #000000,\n    icon-red: #cb1800,\n    icon-blue: #24437c,\n    icon-green: #00962d,\n    icon-gray: #6e6e6e,\n    icon-yellow: #ffad00\n);\n$border-colors:(\n    white: #ffffff,\n    black: #000000,\n    studip-red: #cb1800,\n    studip-blue: #24437c,\n    studip-green: #00962d,\n    studip-gray: #6e6e6e,\n    studip-yellow: #ffad00\n);\n\n$blockadder-items: (\n    before-after: block-comparison,\n    canvas: block-canvas,\n    gallery: block-gallery,\n    image-map: block-imagemap,\n    audio: audio,\n    chart: vote,\n    code: computer,\n    confirm: accept,\n    date: date,\n    dialog-cards: dialog-cards,\n    document: file-text,\n    download: download,\n    embed: code,\n    folder: folder-full,\n    headline: block-eyecatcher,\n    iframe: door-enter,\n    lti: plugin,\n    key-point: exclaim-circle,\n    link: link-extern,\n    table-of-contents: table-of-contents,\n    text: edit,\n    timeline: date-cycle,\n    typewriter: block-typewriter,\n    video: video2,\n    biography-achievements: medal,\n    biography-career: ranking,\n    biography-personal-information: own-license,\n    biography-goals: radar\n);\n\n$containeradder-items: (\n    accordion: block-accordion,\n    list: view-list,\n    tabs: block-tabs,\n);\n\n$cw-wrapper-gap: 0.5em;\n\n$icons: (\n    accept,\n    add,\n    add-circle,\n    admin,\n    aladdin,\n    arr_1down,\n    arr_1left,\n    arr_1right,\n    arr_1up,\n    arr_2down,\n    arr_2left,\n    arr_2right,\n    arr_2up,\n    audio,\n    audio3,\n    billboard,\n    block-canvas,\n    block-comparison,\n    block-eyecatcher,\n    block-gallery,\n    block-gallery2,\n    block-imagemap,\n    brainstorm,\n    campusnavi,\n    chat2,\n    code,\n    community2,\n    computer,\n    consultation,\n    content,\n    courseware,\n    crown,\n    date-single,\n    decline,\n    decline-circle,\n    doctoral_cap,\n    download,\n    dropbox,\n    edit,\n    exclaim,\n    exclaim-circle,\n    export,\n    favorite,\n    filter,\n    globe,\n    graph,\n    group2,\n    group3,\n    group4,\n    home2,\n    info,\n    info-circle,\n    install,\n    institute,\n    key,\n    knife,\n    learnmodule,\n    lightbulb,\n    lightbulb2,\n    link2,\n    link3,\n    link-extern,\n    link-intern,\n    literature,\n    lock-locked,\n    lock-unlocked,\n    mail2,\n    medal,\n    metro,\n    microphone,\n    module,\n    network,\n    notification,\n    notification2,\n    opencast,\n    outer-space,\n    permalink,\n    person,\n    phone,\n    picture,\n    place,\n    plugin,\n    question,\n    question-circle,\n    ranking,\n    remove,\n    remove-circle,\n    resources,\n    roles,\n    schedule2,\n    search,\n    settings,\n    span-empty,\n    span-1quarter,\n    span-2quarter,\n    span-3quarter,\n    span-full,\n    spiral,\n    sport,\n    staple,\n    star,\n    star-empty,\n    star-halffull,\n    test,\n    tools,\n    topic,\n    ufo,\n    video2,\n    visibility-visible,\n    wizard\n);"],"names":[],"sourceRoot":""}