11cb0ef41Sopenharmony_ciconst CHAR_THRESHOLD = 68; // Around 68 characters, we have to take into
21cb0ef41Sopenharmony_ci//                            account the left column that appears on screen
31cb0ef41Sopenharmony_ci//                            wider than 1024px.
41cb0ef41Sopenharmony_ci
51cb0ef41Sopenharmony_ciconst ESTIMATED_CHAR_WIDTH = 8; // If the root element font-size is 16px (default value), 1ch is 7.8025px.
61cb0ef41Sopenharmony_ciconst TOGGLE_WIDTH = 142; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L954
71cb0ef41Sopenharmony_ci
81cb0ef41Sopenharmony_ciconst PRE_MARGIN_LEFT = 16; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L516
91cb0ef41Sopenharmony_ciconst PRE_MARGIN_RIGHT = 16; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L516
101cb0ef41Sopenharmony_ciconst PRE_PADDING_LEFT = 16; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L513
111cb0ef41Sopenharmony_ciconst PRE_PADDING_RIGHT = 16; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L513
121cb0ef41Sopenharmony_ci
131cb0ef41Sopenharmony_ci
141cb0ef41Sopenharmony_ciconst COLUMN_RIGHT_MARGIN_LEFT_LARGE_SCREEN = 234; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L653
151cb0ef41Sopenharmony_ciconst COLUMN_RIGHT_MARGIN_LEFT_SMALL_SCREEN = 0; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L906
161cb0ef41Sopenharmony_ciconst COLUMN_RIGHT_MARGIN_RIGHT_LARGE_SCREEN = 0;
171cb0ef41Sopenharmony_ciconst COLUMN_RIGHT_MARGIN_RIGHT_SMALL_SCREEN = 0;
181cb0ef41Sopenharmony_ciconst COLUMN_RIGHT_PADDING_LEFT_LARGE_SCREEN = 24; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L655
191cb0ef41Sopenharmony_ciconst COLUMN_RIGHT_PADDING_LEFT_SMALL_SCREEN = 8; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L907
201cb0ef41Sopenharmony_ciconst COLUMN_RIGHT_PADDING_RIGHT_LARGE_SCREEN = 32; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L654
211cb0ef41Sopenharmony_ciconst COLUMN_RIGHT_PADDING_RIGHT_SMALL_SCREEN = 8; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L908
221cb0ef41Sopenharmony_ci
231cb0ef41Sopenharmony_ciconst getMarginLeft = (charCount) =>
241cb0ef41Sopenharmony_ci  (charCount > CHAR_THRESHOLD ?
251cb0ef41Sopenharmony_ci    COLUMN_RIGHT_MARGIN_LEFT_LARGE_SCREEN :
261cb0ef41Sopenharmony_ci    COLUMN_RIGHT_MARGIN_LEFT_SMALL_SCREEN) + PRE_MARGIN_LEFT;
271cb0ef41Sopenharmony_ciconst getPaddingLeft = (charCount) =>
281cb0ef41Sopenharmony_ci  (charCount > CHAR_THRESHOLD ?
291cb0ef41Sopenharmony_ci    COLUMN_RIGHT_PADDING_LEFT_LARGE_SCREEN :
301cb0ef41Sopenharmony_ci    COLUMN_RIGHT_PADDING_LEFT_SMALL_SCREEN) + PRE_PADDING_LEFT;
311cb0ef41Sopenharmony_ciconst getPaddingRight = (charCount) =>
321cb0ef41Sopenharmony_ci  (charCount > CHAR_THRESHOLD ?
331cb0ef41Sopenharmony_ci    COLUMN_RIGHT_PADDING_RIGHT_LARGE_SCREEN :
341cb0ef41Sopenharmony_ci    COLUMN_RIGHT_PADDING_RIGHT_SMALL_SCREEN) + PRE_PADDING_RIGHT;
351cb0ef41Sopenharmony_ciconst getMarginRight = (charCount) =>
361cb0ef41Sopenharmony_ci  (charCount > CHAR_THRESHOLD ?
371cb0ef41Sopenharmony_ci    COLUMN_RIGHT_MARGIN_RIGHT_LARGE_SCREEN :
381cb0ef41Sopenharmony_ci    COLUMN_RIGHT_MARGIN_RIGHT_SMALL_SCREEN) + PRE_MARGIN_RIGHT;
391cb0ef41Sopenharmony_ci
401cb0ef41Sopenharmony_ci
411cb0ef41Sopenharmony_ciexport default function buildCSSForFlavoredJS(dynamicSizes) {
421cb0ef41Sopenharmony_ci  if (dynamicSizes == null || dynamicSizes.length === 0) return '';
431cb0ef41Sopenharmony_ci
441cb0ef41Sopenharmony_ci  return `<style>${Array.from(dynamicSizes, (charCount) =>
451cb0ef41Sopenharmony_ci    `@media(max-width:${getMarginLeft(charCount) + getPaddingLeft(charCount) +
461cb0ef41Sopenharmony_ci                        charCount * ESTIMATED_CHAR_WIDTH + TOGGLE_WIDTH +
471cb0ef41Sopenharmony_ci                        getPaddingRight(charCount) + getMarginRight(charCount)}px){` +
481cb0ef41Sopenharmony_ci      `.with-${charCount}-chars>.js-flavor-selector{` +
491cb0ef41Sopenharmony_ci        'float:none;' +
501cb0ef41Sopenharmony_ci        'margin:0 0 1em auto;' +
511cb0ef41Sopenharmony_ci      '}' +
521cb0ef41Sopenharmony_ci    '}').join('')}</style>`;
531cb0ef41Sopenharmony_ci}
54