[*.styl]
indent_size = 2
-[*.js]
-indent_size = 2
+;[*.js]
+;indent_size = 5
--- /dev/null
+<?php
+
+
+namespace App\Http\Controllers;
+
+
+use App\Models\Page;
+use Cubist\Backpack\app\Http\Controllers\CubistFrontController;
+use Cubist\Backpack\app\Magic\PageData;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Mail;
+
+class AjaxController extends CubistFrontController
+{
+ public function mailform(Request $request)
+ {
+ $data = $request->all();
+ /** @var PageData $page */
+ $page = Page::find($data['page'])->getPageData();
+
+ $validation = [];
+
+ foreach ($page->get('form') as $field) {
+ $v = [];
+ if ($field['mandatory']) {
+ $v[] = 'required';
+ }
+ if ($field['type'] == 'email') {
+ $v[] = 'email';
+ }
+ if (count($v)) {
+ $validation[$field['type']] = implode('|', $v);
+ }
+ }
+
+ $validatedData = $request->validate($validation);
+
+ $labels = ['firstname' => 'Prénom', 'name' => 'Nom', 'company' => 'Société', 'sku' => 'Numéro de série', 'ref' => 'Reference', 'email' => 'Adresse e-mail', 'message' => 'Message'];
+ $contents = [];
+ foreach ($labels as $key => $label) {
+
+ if (isset($validatedData[$key])) {
+ $contents[] = $label . ' : ' . $validatedData[$key];
+ }
+ }
+
+ Mail::raw(implode("\r\n", $contents), function ($message) use ($validatedData) {
+ $message->from(config('mail.from.address'), config('mail.from.name'));
+ $message->sender(config('mail.from.address'), config('mail.from.name'));
+ $message->replyTo($validatedData['email']);
+ $message->subject($validatedData['subject']);
+ });
+
+ echo 'ok :)';
+ }
+}
--- /dev/null
+<?php
+
+
+namespace App\Http\Controllers;
+
+
+class FormController
+{
+
+}
foreach ($myspecs as $spec) {
$specEntity = $allspecs[$spec];
+
$val = Json::decodeRecursive($this->{'s_' . Str::snake($specEntity->name)}, Json::TYPE_ARRAY);
$specValue = ' - ';
if ($specEntity->type == 'numeric' || $specEntity->type == 'numeric_list') {
$specValue = $specEntity->prefix;
- if ($specEntity->type == 'numeric_list') {
+ if ($specEntity->type == 'numeric_list' && is_array($val)) {
$specValue .= ' ' . implode(' ' . $specEntity->separator . ' ', $val);
} else {
$specValue = $val;
} else if ($specEntity->type == 'text') {
$specValue = trim($val);
} else if ($specEntity->type == 'range') {
+
$specValue = $val['first'] . ' ' . __('à') . ' ' . $val['second'] . ' ' . $specEntity->unit;
} else if ($specEntity->type == 'list') {
- $option=Json::decodeRecursive($specEntity->options, Json::TYPE_ARRAY)[$val];
- $locale=App::getLocale();
- if(!isset($option->$locale) || !$option->$locale){
- $specValue=$option->fr;
- }else{
- $specValue=$option->$locale;
+ $option = Json::decodeRecursive($specEntity->options, Json::TYPE_ARRAY)[$val];
+ $locale = App::getLocale();
+ if (!isset($option[$locale]) || !$option[$locale]) {
+ $specValue = $option['fr'];
+ } else {
+ $specValue = $option[$locale];
}
}
$res[$specEntity->label] = $specValue;
'label' => __('Réseaux Sociaux'),
'tab' => __('Réseaux Sociaux'),
]);
+
+ // === Forms
+ $this->addField([
+ 'name' => 'form_privacy',
+ 'type' => 'Markdown',
+ 'label' => 'Mention légale vie privée affichée sous les formulaires',
+ 'tab' => 'Formulaires',
+ ]);
}
}
try {
// Blade Include Aliases
Blade::include('partials.intro', 'intro'); // @intro()
+ Blade::include('partials.form', 'form'); // @form()
// BladeX Component Aliases
// Ref: https://docs.spatie.be/laravel-blade-x/v2/introduction
--- /dev/null
+<?php
+
+
+namespace App\SubForms;
+
+
+use Cubist\Backpack\app\Magic\SubForm;
+
+class FormField extends SubForm
+{
+ public function init()
+ {
+ parent::init();
+
+ $this->addField(['name' => 'type',
+ 'type' => 'SelectFromArray',
+ 'options' => ['firstname' => 'Prénom', 'name' => 'Nom', 'company' => 'Société', 'email' => 'Email', 'ref' => 'Référence', 'sku' => 'Numéro de série', 'subject' => 'Sujet', 'message' => 'Message'],
+ 'label' => 'Type de champ']);
+
+ $this->addField(['name' => 'mandatory',
+ 'type' => 'Checkbox',
+ 'label' => 'Obligatoire']);
+ }
+}
return false;
}
+ public function addForm()
+ {
+ $tab = 'Formulaire';
+
+ $this->addField(['name' => 'form',
+ 'type' => 'Textarea',
+ 'label' => 'Texte d\'introduction du formulaire',
+ 'tab' => $tab]);
+
+ $this->addField([
+ 'name' => 'form',
+ 'type' => 'BunchOfFieldsMultiple',
+ 'bunch' => 'App\SubForms\FormField',
+ 'label' => 'Champs du formulaire',
+ 'tab' => $tab,
+ ]);
+
+ $this->addField(['name' => 'form_confirmation',
+ 'type' => 'Text',
+ 'label' => 'Message de confirmation',
+ 'hint' => 'Affiché au visiteur une fois le formulaire envoyé',
+ 'tab' => $tab]);
+
+ $this->addField(['name' => 'form_destination',
+ 'type' => 'Tags',
+ 'label' => 'Destinataires du formulaire',
+ 'tab' => $tab]);
+
+ $this->addField(['name' => 'form_prefix',
+ 'type' => 'Text',
+ 'label' => 'Prefixe',
+ 'hint' => 'Apparaît au début du sujet de l\'email sous la forme : [Prefixe] Sujet de l\'email',
+ 'tab' => $tab]);
+
+
+ }
+
}
public function init()
{
parent::init();
- $this->addField(['name' => 'test',
- 'type' => 'Text',
- 'label' => 'Super !',
- 'tab' => 'Contenus'
- ]);
+
+ $this->addField(['name' => 'content',
+ 'type' => 'Markdown',
+ 'label' => 'Texte',
+ 'tab'=>'Contenus']);
+
+ $this->addForm();
}
}
namespace App\Templates;
-class Text extends Base
+use Cubist\Backpack\app\Template\TemplatePage;
+
+class Text extends TemplatePage
{
public function getName()
{
return 'Page de texte';
+
+ }
+
+ public function init()
+ {
+ parent::init(); // TODO: Change the autogenerated stub
+
+ $this->addField(['name' => 'content',
+ 'type' => 'Markdown',
+ 'label' => 'Contenus',
+ 'tab'=>'Contenus']);
}
}
"tailwindcss": "^1.0.4",
"vue": "^2.6.10",
"vue-slide-up-down": "^1.7.2",
- "vue-template-compiler": "^2.6.10"
+ "vue-template-compiler": "^2.6.10",
+ "parsleyjs": "^2.9.1"
}
}
try {
//window.Popper = require('popper.js').default;
window.$ = window.jQuery = require('jquery');
+ require('parsleyjs');
//require('bootstrap');
} catch (e) {}
--- /dev/null
+<template>
+
+</template>
+
+<script>
+ export default {
+ name: 'Form',
+ props:['required_fields','send','page_id','fields'],
+ methods: {
+ submit() {
+ this.errors = {};
+ axios.post('/mailform', this.fields).then(response => {
+ alert('Message sent!');
+ }).catch(error => {
+ if (error.response.status === 422) {
+ this.errors = error.response.data.errors || {};
+ }
+ });
+ },
+ }
+ }
+
+
+</script>
+
+<style scoped>
+
+</style>
--- /dev/null
+$(function () {
+ console.log('mailform.js loaded');
+ $.ajaxSetup({
+ headers: {
+ 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
+ }
+ });
+
+ $(document).on('submit', 'form.mailform', function () {
+ var form = $(this);
+ var button = $(this).find('button[type="submit"]');
+ button.text(button.data('sending'));
+ $.ajax({
+ url: $(this).attr('action'),
+ type: $(this).attr('method'),
+ data: $(this).serialize(),
+ success: function (response) {
+ $(form).closest('#contact-form').html('<p>' + $(form).data('confirmation') + '</p>');
+ },
+ });
+ return false;
+ });
+
+});
+
--- /dev/null
+$h3 = 24px
+$h2 = 36px
+$barlow = 'Barlow', sans-serif
+$muli = 'Muli', sans-serif
+$dark = #6B7287
+$lightgrey = #F7F8FC
+$darkblue = #152F4E
+$lightblue = #0EAADA
+$verylightgrey = #E7E9F3
+
+#contact-form
+ .form
+ input, textarea
+ border-radius 3px
+ color: $dark
+ padding 12px 10px
+
+ label
+ font-family: $barlow
+
+ .textarea
+ height 144px
+
+ &-endmessage
+ font-size: 14px
+
+ .btn-custom
+ padding 1.125rem 5.375rem
+
+ .mr-form
+ margin-right: 2.5vw
+
+ *:focus
+ outline-color $verylightgrey
-@include('cubist::head.htmldeclaration')
-<head>
- {{--@include('cubist::head.head')--}}
- <meta http-equiv="x-ua-compatible" content="ie=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
- <meta name="csrf-token" content="{{ csrf_token() }}">
-
+@prepend('stylesheets')
<link href="{{ mix('css/app.css') }}" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Barlow:500,600|Muli:400,700&display=swap" rel="stylesheet">
-</head>
+@endprepend
+
+@prepend('scripts')
+ <script src="{{ mix('/js/app.js') }}"></script>
+@endprepend
+
+@include('cubist::head.htmldeclaration')
+@include('cubist::head.head')
<body class="template-{{ $view_name }} {{ $body_class ?? '' }} font-body text-grey-dark">
@include('cubist::body.begin')
-
@php
//#### Generate temporary cart data
$cart_items = [];
@if(CubistMenu::get('breadcrumbs')->active())
<full-width padding="pt-1v pb-1v">
<content>
- {!! CubistMenu::get('breadcrumbs')->crumbMenu()->asDiv(['class' => 'breadcrumbs'], [], ['class' => 'breadcrumbs-item']) !!}
+ {!! CubistMenu::get('breadcrumbs')->crumbMenu()->asDiv(['class' => 'breadcrumbs'], [], ['class' => 'breadcrumbs-item']) !!}
</content>
</full-width>
@endif
<div class="body-overlay" @click="closeCart"></div>
</div>
-
-
-<script src="{{ mix('/js/app.js') }}"></script>
-
@include('cubist::body.end')
</body>
</html>
{{-- Product text --}}
<text-block class="product-detail-text sm:mt-6">
- {!! Markdown::parse($product->highlights) !!}
+ @markdown($product->highlights)
<p class="mt-4">
<a href="{{$product->getMediaUrl('technical_sheet','#emtpy')}}">
@if ($product->descriptions)
<tab name="{{ __('Description') }}">
- {!! Markdown::parse($product->descriptions) !!}
+ @markdown($product->descriptions)
</tab>
@endif
@if ($product->dimensions)
<tab name="{{ __('Dimensions') }}">
- {!! Markdown::parse($product->dimensions) !!}
+ @markdown($product->dimensions)
</tab>
@endif
@if ($product->options)
<tab name="{{ __('Options') }}">
- {!! Markdown::parse($product->options) !!}
+ @markdown($product->options)
</tab>
@endif
@if ($product->accessories)
<tab name="{{ __('Accessoires') }}">
- {!! Markdown::parse($product->accessories) !!}
+ @markdown($product->accessories)
</tab>
@endif
<div class="p-4">
<h3>{{$rel->name}}</h3>
<div class="text-sm">
- {!! Markdown::parse($rel->highlights) !!}
+ @markdown($rel->highlights)
</div>
<p class="mt-4">
<a href="{{$nav->findOneById('product/'.$rel->id)->getHref()}}">{{__('Voir la fiche produit')}}</a>
<div class="p-4">
<h3>{{$product->get('name')}}</h3>
<div class="text-sm">
- {!! Markdown::parse($product->highlights) !!}
+ @markdown($product->highlights)
</div>
<p class="mt-4">
<a href="{{$nav->findOneById('product/'.$product->id)->getHref()}}">Voir la fiche
@extends('layouts.app')
-@section('title' ,'Services')
+@section('content')
+ @intro(['padding' => 'pb-4v'])
+
+ <full-width padding="pb-4v">
+ <content>
+ <columns>
+ <column>
+ <text-block>
+ @markdown($page->content)
+ </text-block>
+
+ </column>
+ <column class="bg-grey-200 p-10">
+ @form
+ </column>
+ </columns>
+ </content>
+ </full-width>
+@endsection
<full-width padding="pb-4v">
<content>
- <columns>
- <column>
- <img src="{{ asset('storage/uploads/images/home-wing.jpg') }}" alt="">
- </column>
-
- <column>
- <text-block class="pt-2v" title_class="h1 overlap-left" :title="isset($name) ? ucfirst($name) : 'Lorem ipsum'">
-
- <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus aperiam aspernatur corporis dicta dolore, earum est et eum eveniet, harum minima non, pariatur perspiciatis possimus ratione repudiandae veniam voluptas. Aspernatur eius esse laudantium nostrum nulla?</p>
-
- <p>Sit amet, consectetur adipisicing elit. Aut cum dolores ratione vel. Alias exercitationem obcaecati quae! Accusantium alias, aspernatur atque autem beatae commodi delectus dolores esse, exercitationem facere illo itaque iusto libero magni natus nemo obcaecati odit officia quia quibusdam reiciendis soluta suscipit unde ut veritatis, voluptate voluptatibus.</p>
-
- <p><a href="#">En savoir plus</a></p>
- </text-block>
-
- </column>
- </columns>
+ @markdown($page->get('content'))
</content>
</full-width>
--- /dev/null
+@push('scripts')
+ <script src="{{ mix('/js/mailform.js') }}"></script>
+@endpush
+
+<div id="contact-form">
+ <div class="form flex flex-col">
+ <p class="form-info text-navy">{{$page->get('form_intro')}}</p>
+ <form class="flex flex-col text-navy mailform" action="/ajax/mailform" method="post"
+ data-confirmation="{{$page->get('form_confirmation')??__('Votre message a bien été envoyé')}}">
+ {{ csrf_field() }}
+ <input type="hidden" value="{{$page->get('id')}}" name="page">
+ @foreach($page->get('form') as $field)
+ @php
+ $required=$field['mandatory']?' required':'';
+ $asx=$field['mandatory']?' *':'';
+ @endphp
+ <label class="form-input flex flex-col mr-form">
+
+ @switch($field['type'])
+ @case('name')
+ {{__('Nom')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!} name="name">
+ @break
+
+ @case('firstname')
+ {{__('Prénom')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!} name="firstname">
+ @break
+
+ @case('company')
+ {{__('Société')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!} name="company">
+ @break
+
+ @case('email')
+ {{__('E-mail')}}{{$asx}} <input class="py-3 mt-3" type="email" {!! $required !!} name="email">
+ @break
+
+ @case('ref')
+ {{__('Référence')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!} name="ref">
+ @break
+
+ @case('sku')
+ {{__('Numéro de série')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!} name="sku">
+ @break
+
+ @case('subject')
+ {{__('Sujet')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!} name="subject">
+ @break
+
+ @case('message')
+ {{__('Message')}}{{$asx}} <textarea class="py-3 textarea mt-3" type="text"
+ {!! $required !!} name="message"></textarea>
+ @break
+ @endswitch
+ </label>
+ @endforeach
+
+ <div class="form-endmessage mt-5 text-grey-dark">
+ @markdown($global->get('form_privacy'))
+ </div>
+ <div class="flex justify-between items-center xs:flex-col-reverse">
+ <span class="text-grey-dark xs:self-start xs:mt-5">*{{__('Champs obligatoires')}}</span>
+ <button type="submit" class="btn btn-custom xs:w-full"
+ data-sending="{{__('Envoi en cours')}}">{{__('Envoyer')}}</button>
+ </div>
+ </form>
+ </div>
+</div>
// $name is the name of the page data to fetch. If it's not set, assume it is 'intro'
$name = $name ?? 'intro';
- $title = $page->get("$name.title", '');
+ $title = \Illuminate\Support\Str::ucfirst($page->get("$name.title", ''));
$image = $page->getImageURL("$name.image");
$class = $class ?? '';
$padding = $padding ?? null; // Pass null so it doesn't override default padding
<?php
-Route::get('{page}/{subs?}', ['uses' => 'PageController@catchall'])
+Route::any('{page}/{subs?}', 'PageController@catchall')
->where(['page' => '^(((?=(?!admin))(?=(?!\/)).))*$', 'subs' => '.*']);
*/
mix.browserSync({
- proxy: process.env.APP_URL,
- open: false // Don't automatically open a new tab when the watcher starts
+ proxy: process.env.APP_URL,
+ open: false // Don't automatically open a new tab when the watcher starts
});
mix.js('resources/js/app.js', 'public/js')
- .stylus('resources/styles/app.styl', 'public/css', {
+ .stylus('resources/styles/app.styl', 'public/css', {
use: [
require('rupture')()
]
}).options({
- postCss: [
- tailwindcss('tailwind.config.js'),
- require('lost'),
- ],
- // autoprefixer: {
- // options: {
- // grid: true, // Enable CSS grid prefixes for IE
- // }
- // }
- })
+ postCss: [
+ tailwindcss('tailwind.config.js'),
+ require('lost'),
+ ],
+ // autoprefixer: {
+ // options: {
+ // grid: true, // Enable CSS grid prefixes for IE
+ // }
+ // }
+})
.purgeCss({
- globs: [
- path.join(__dirname, 'vendor/cubist/**/*.php'), // Some classes (eg. nav) might be present only here
- ],
- whitelistPatterns: [/grid-.*/], // Don't purge the grid-* custom classes since they can be used dynamically
+ globs: [
+ path.join(__dirname, 'vendor/cubist/**/*.php'), // Some classes (eg. nav) might be present only here
+ ],
+ whitelistPatterns: [/grid-.*/], // Don't purge the grid-* custom classes since they can be used dynamically
});
+mix.js('resources/js/mailform.js', 'public/js');
+
// Enable unique hashed filenames when in production
if (mix.inProduction()) {
- mix.version();
+ mix.version();
}
safe-buffer "^5.0.1"
sha.js "^2.4.8"
-cross-env@^5.1:
+cross-env@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz#6ecd4c015d5773e614039ee529076669b9d126f2"
integrity sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
-glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.2:
+glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
version "7.1.4"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-jquery@^3.2:
+jquery@>=1.8.0, jquery@^3.2:
version "3.4.1"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2"
integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+parsleyjs@^2.9.1:
+ version "2.9.1"
+ resolved "https://registry.yarnpkg.com/parsleyjs/-/parsleyjs-2.9.1.tgz#fd79f7a1b1fe9138993b5e82f9bbc3e38fd3763d"
+ integrity sha512-2WSe+HsOZEPqXh9bFdi/vgWNQtGRRnAgS3v12qesMAabxVdLE7Oj7b+2UzcZ80eG23g1SxiMUH978Dk/wSkt+w==
+ dependencies:
+ jquery ">=1.8.0"
+
pascalcase@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
dependencies:
ret "~0.1.10"
-"safer-buffer@>= 2.1.2 < 3":
+"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
+semver@^6.0.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db"
+ integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==
+
semver@^6.1.0, semver@^6.1.1:
version "6.1.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-source-map@~0.7.2:
+source-map@^0.7.3:
version "0.7.3"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
lodash.clonedeep "^4.5.0"
when "~3.6.x"
-stylus@acidjazz/stylus#dev:
+"stylus@github:acidjazz/stylus#dev":
version "0.54.5"
resolved "https://codeload.github.com/acidjazz/stylus/tar.gz/f6d39f350166e15db4b662f287d1cdbdf88103e1"
dependencies:
css-parse "~2.0.0"
debug "~3.1.0"
- glob "~7.1.2"
+ glob "^7.1.3"
mkdirp "~0.5.x"
+ safer-buffer "^2.1.2"
sax "~1.2.4"
- source-map "~0.7.2"
+ semver "^6.0.0"
+ source-map "^0.7.3"
supports-color@^2.0.0:
version "2.0.0"