UNPKG

tav-ui

Version:
79 lines (77 loc) 2.73 kB
const DEFAULT_LABEL_MAX_WIDTH = 12 * 2 + 3 * 2; const DEFAULT_DIVIDER_WIDTH = 16 + 1; const DEFAULT_PADDING = 10; const DEFAULT_CONTENT_MAX_WIDTH = DEFAULT_LABEL_MAX_WIDTH * 3 + DEFAULT_DIVIDER_WIDTH * 2; const DEFAULT_CONTENT_MIN_WIDTH = DEFAULT_LABEL_MAX_WIDTH; const DEFAULT_MORE_BUTTON_WIDTH = 3 * 3; function useCanvasCalcContent() { let canvas = document.createElement("canvas"); const ctx = canvas.getContext("2d"); const DEFAULT_FONT = `normal 12px -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"`; function calcContent(content, font = DEFAULT_FONT) { if (ctx) { ctx.font = font; const { width = 0 } = ctx.measureText(content); return Math.ceil(width) + 0.5; } return 0; } function clearCalcContentCanvas() { canvas?.remove(); canvas = null; } return { calcContent, clearCalcContentCanvas }; } function isOverMaxWidth(actions, calcFn) { if (!actions) return false; const getTotal = (_actions) => { return _actions.reduce((total, action, idx) => { if (action.label) { total += calcFn ? calcFn(action.label) : 0; } else { total += 0; } if (idx !== _actions.length - 1) { total += DEFAULT_DIVIDER_WIDTH; } return total; }, 0); }; return getTotal(actions) > DEFAULT_CONTENT_MAX_WIDTH; } function useColumnActionAutoWidth(actions, labelMaxLength, calcFn) { if (!actions) return void 0; const getTotal = (_actions) => { return _actions.reduce((total, action, idx) => { if (action.label) { total += calcFn ? calcFn(action.label) : 0; } else { total += 0; } if (idx !== _actions.length - 1) { total += DEFAULT_DIVIDER_WIDTH; } else { total += DEFAULT_PADDING * 2; } return total; }, 0); }; const actionsDefault = actions.map((action) => ({ label: action.label })); const handledActions = JSON.parse(JSON.stringify(actionsDefault)); if (handledActions.length <= labelMaxLength) { const total = getTotal(handledActions); return total < DEFAULT_CONTENT_MIN_WIDTH + DEFAULT_PADDING * 2 ? DEFAULT_CONTENT_MIN_WIDTH + DEFAULT_PADDING * 2 : total; } else { const contentActions = handledActions.slice(0, 2); let total = getTotal(contentActions); total += DEFAULT_MORE_BUTTON_WIDTH + DEFAULT_DIVIDER_WIDTH; return total < DEFAULT_CONTENT_MIN_WIDTH + DEFAULT_PADDING * 2 ? DEFAULT_CONTENT_MIN_WIDTH + DEFAULT_PADDING * 2 : total; } } export { isOverMaxWidth, useCanvasCalcContent, useColumnActionAutoWidth }; //# sourceMappingURL=useColumnAutoWidth2.mjs.map