// Calculate widths, save all variables to instance // ------------------------------------------------------------------------------- // @param $calcKey [Values...] : breakpoint key // @param $calcSpan [Values...] : span // @param $calcContext [Values...] : context // @param $calcGutter [Values...] : gutter // @param $calcShift [Values...] : shift // @param $i [Index] : index if variable length is > 1 // ------------------------------------------------------------------------------- // @output [Styles...] // Calculates width and margins based on passed arguments @mixin calcFlint ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $i: NULL) { @if $i != NULL { @if length($calcKey) > 1 { $calcKey: nth($calcKey, $i); } @if length($calcSpan) > 1 { $calcSpan: nth($calcSpan, $i); } @if length($calcContext) > 1 { $calcContext: nth($calcContext, $i); } @if length($calcGutter) > 1 { $calcGutter: nth($calcGutter, $i); } @if length($calcShift) > 1 { $calcShift: nth($calcShift, $i); } } @if $calcShift != NULL and $calcContext == NULL { @if $calcGutter == NULL and get-value(settings, gutter) != false { // Save to variables for instance creation $outputWidth: (calc-width($calcKey, $calcSpan)) - ((calc-margin($calcKey, $calcSpan))*2); $outputMarginRight: calc-margin($calcKey, $calcSpan); $outputMarginLeft: ( if( $calcShift > 0, (calc-margin($calcKey, $calcSpan)) + (calc-width($calcKey, $calcShift)), (calc-margin($calcKey, -$calcSpan)) + (calc-width($calcKey, $calcShift)) )); // Output styles width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; // Create new instance for memoization @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); // If debug mode, print instance @include debugPrintInstance($calcKey); } @else if $calcGutter == "alpha" and get-value(settings, gutter) != false { $outputWidth: (calc-width($calcKey, $calcSpan)) - (calc-margin($calcKey, $calcSpan)); $outputMarginRight: calc-margin($calcKey, $calcSpan); $outputMarginLeft: ( if( $calcShift > 0, calc-width($calcKey, $calcShift), calc-width($calcKey, $calcShift) )); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } @else if $calcGutter == "omega" and get-value(settings, gutter) != false { $outputWidth: (calc-width($calcKey, $calcSpan)) - ((calc-margin($calcKey, $calcSpan))); $outputMarginRight: 0; $outputMarginLeft: ( if( $calcShift > 0, (calc-margin($calcKey, $calcSpan)) + (calc-width($calcKey, $calcShift)), (calc-margin($calcKey, -$calcSpan)) + (calc-width($calcKey, $calcShift)) )); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } @else if $calcGutter == "row" or get-value(settings, gutter) == false { $outputWidth: (calc-width($calcKey, $calcSpan)); $outputMarginRight: 0; $outputMarginLeft: ( if( $calcShift > 0, calc-width($calcKey, $calcShift), calc-width($calcKey, $calcShift) )); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } } @else if $calcContext != NULL { // Check if context of parent instance exists $exists: family-instance-exists($calcKey); @if $calcShift != NULL { @if $calcGutter == NULL and get-value(settings, gutter) != false { // Check if context is set to auto @if $calcContext == "auto" { // Did it exist? @if $exists != false { $outputWidth: (calc-width($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span)))) - ((calc-margin($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span))))*2); $outputMarginRight: calc-margin($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span))); $outputMarginLeft: ( if( $calcShift > 0, (calc-margin($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span)))) + (calc-width($calcKey, $calcShift, to-number(get-instance-value($calcKey, span)))), (calc-margin($calcKey, -$calcSpan, to-number(get-instance-value($calcKey, span)))) + (calc-width($calcKey, $calcShift, to-number(get-instance-value($calcKey, span)))) )); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } @else { // Else warn that context should not be set to `auto` @warn "You set context to `#{$calcContext}`, but a parent instance could not be found for `#{selector_string()}`"; } // Output styles normally if not set to auto } @else { $outputWidth: (calc-width($calcKey, $calcSpan, $calcContext)) - ((calc-margin($calcKey, $calcSpan, $calcContext))*2); $outputMarginRight: calc-margin($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span))); $outputMarginLeft: ( if( $calcShift > 0, (calc-margin($calcKey, $calcSpan, $calcContext)) + (calc-width($calcKey, $calcShift, $calcContext)), (calc-margin($calcKey, -$calcSpan, $calcContext)) + (calc-width($calcKey, $calcShift, $calcContext)) )); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } } @else if $calcGutter == "alpha" and get-value(settings, gutter) != false { @if $calcContext == "auto" { @if $exists != false { $outputWidth: (calc-width($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span)))) - (calc-margin($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span)))); $outputMarginRight: calc-margin($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span))); $outputMarginLeft: ( if( $calcShift > 0, calc-width($calcKey, $calcShift, to-number(get-instance-value($calcKey, span))), calc-width($calcKey, $calcShift, to-number(get-instance-value($calcKey, span))) )); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } @else { @warn "You set context to `#{$calcContext}`, but a parent instance could not be found for `#{selector_string()}`"; } } @else { $outputWidth: (calc-width($calcKey, $calcSpan, $calcContext)) - (calc-margin($calcKey, $calcSpan, $calcContext)); $outputMarginRight: calc-margin($calcKey, $calcSpan, $calcContext); $outputMarginLeft: ( if( $calcShift > 0, calc-width($calcKey, $calcShift, $calcContext), calc-width($calcKey, $calcShift, $calcContext) )); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } } @else if $calcGutter == "omega" and get-value(settings, gutter) != false { @if $calcContext == "auto" { @if $exists != false { $outputWidth: (calc-width($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span)))) - ((calc-margin($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span))))); $outputMarginRight: 0; $outputMarginLeft: ( if( $calcShift > 0, (calc-margin($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span)))) + (calc-width($calcKey, $calcShift, to-number(get-instance-value($calcKey, span)))), (calc-margin($calcKey, -$calcSpan, to-number(get-instance-value($calcKey, span)))) + (calc-width($calcKey, $calcShift, to-number(get-instance-value($calcKey, span)))) )); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } @else { @warn "You set context to `#{$calcContext}`, but a parent instance could not be found for `#{selector_string()}`"; } } @else { $outputWidth: (calc-width($calcKey, $calcSpan, $calcContext)) - ((calc-margin($calcKey, $calcSpan, $calcContext))); $outputMarginRight: 0; $outputMarginLeft: ( if( $calcShift > 0, (calc-margin($calcKey, $calcSpan, $calcContext)) + (calc-width($calcKey, $calcShift, $calcContext)), (calc-margin($calcKey, -$calcSpan, $calcContext)) + (calc-width($calcKey, $calcShift, $calcContext)) )); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } } @else if $calcGutter == "row" or get-value(settings, gutter) == false { @if $calcContext == "auto" { @if $exists != false { $outputWidth: (calc-width($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span)))); $outputMarginRight: 0; $outputMarginLeft: ( if( $calcShift > 0, calc-width($calcKey, $calcShift, to-number(get-instance-value($calcKey, span))), calc-width($calcKey, $calcShift, to-number(get-instance-value($calcKey, span))) )); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } @else { @warn "You set context to `#{$calcContext}`, but a parent instance could not be found for `#{selector_string()}`"; } } @else { $outputWidth: (calc-width($calcKey, $calcSpan, $calcContext)); $outputMarginRight: 0; $outputMarginLeft: ( if( $calcShift > 0, calc-width($calcKey, $calcShift, $calcContext), calc-width($calcKey, $calcShift, $calcContext) )); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } } } @else { @if $calcGutter == NULL and get-value(settings, gutter) != false { // Check if context is set to auto @if $calcContext == "auto" { // Did it exist? @if $exists != false { $outputWidth: (calc-width($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span)))) - ((calc-margin($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span))))*2); $outputMarginRight: calc-margin($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span))); $outputMarginLeft: calc-margin($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span))); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } @else { // Else warn that context should not be set to `auto` @warn "You set context to `#{$calcContext}`, but a parent instance could not be found for `#{selector_string()}`"; } // Output styles normally if not set to auto } @else { $outputWidth: (calc-width($calcKey, $calcSpan, $calcContext)) - ((calc-margin($calcKey, $calcSpan, $calcContext))*2); $outputMarginRight: calc-margin($calcKey, $calcSpan, $calcContext); $outputMarginLeft: calc-margin($calcKey, $calcSpan, $calcContext); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } } @else if $calcGutter == "alpha" and get-value(settings, gutter) != false { @if $calcContext == "auto" { @if $exists != false { $outputWidth: (calc-width($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span)))) - (calc-margin($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span)))); $outputMarginRight: calc-margin($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span))); $outputMarginLeft: 0; width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } @else { @warn "You set context to `#{$calcContext}`, but a parent instance could not be found for `#{selector_string()}`"; } } @else { $outputWidth: (calc-width($calcKey, $calcSpan, $calcContext)) - (calc-margin($calcKey, $calcSpan, $calcContext)); $outputMarginRight: calc-margin($calcKey, $calcSpan, $calcContext); $outputMarginLeft: 0; width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } } @else if $calcGutter == "omega" and get-value(settings, gutter) != false { @if $calcContext == "auto" { @if $exists != false { $outputWidth: (calc-width($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span)))) - (calc-margin($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span)))); $outputMarginRight: 0; $outputMarginLeft: calc-margin($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span))); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } @else { @warn "You set context to `#{$calcContext}`, but a parent instance could not be found for `#{selector_string()}`"; } } @else { $outputWidth: (calc-width($calcKey, $calcSpan, $calcContext)) - (calc-margin($calcKey, $calcSpan, $calcContext)); $outputMarginRight: 0; $outputMarginLeft: calc-margin($calcKey, $calcSpan, $calcContext); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } } @else if $calcGutter == "row" or get-value(settings, gutter) == false { @if $calcContext == "auto" { @if $exists != false { $outputWidth: calc-width($calcKey, $calcSpan, to-number(get-instance-value($calcKey, span))); $outputMarginRight: 0; $outputMarginLeft: 0; width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } @else { @warn "You set context to `#{$calcContext}`, but a parent instance could not be found for `#{selector_string()}`"; } } @else { $outputWidth: calc-width($calcKey, $calcSpan, $calcContext); $outputMarginRight: 0; $outputMarginLeft: 0; width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } } } } @else { @if $calcGutter == NULL and get-value(settings, gutter) != false { $outputWidth: (calc-width($calcKey, $calcSpan)) - ((calc-margin($calcKey, $calcSpan))*2); $outputMarginRight: calc-margin($calcKey, $calcSpan); $outputMarginLeft: calc-margin($calcKey, $calcSpan); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } @else if $calcGutter == "alpha" and get-value(settings, gutter) != false { $outputWidth: (calc-width($calcKey, $calcSpan)) - (calc-margin($calcKey, $calcSpan)); $outputMarginRight: calc-margin($calcKey, $calcSpan); $outputMarginLeft: 0; width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } @else if $calcGutter == "omega" and get-value(settings, gutter) != false { $outputWidth: (calc-width($calcKey, $calcSpan)) - (calc-margin($calcKey, $calcSpan)); $outputMarginRight: 0; $outputMarginLeft: calc-margin($calcKey, $calcSpan); width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } @else if $calcGutter == "row" or get-value(settings, gutter) == false { $outputWidth: calc-width($calcKey, $calcSpan); $outputMarginRight: 0; $outputMarginLeft: 0; width: $outputWidth; margin-right: $outputMarginRight; margin-left: $outputMarginLeft; @content; @include newInstance ($calcKey, $calcSpan, $calcContext, $calcGutter, $calcShift, $outputWidth, $outputMarginRight, $outputMarginLeft); @include debugPrintInstance($calcKey); } } }